nltk.获得文本语料和词汇资源

1.获取文本语料库

1.1古滕堡语料库

nltk.corpus.gutenberg.fileids()//古滕堡语料库文件标识符
emma = nltk.corpus.gutenberg.words('austen-emma.txt')
emma = nltk.Text(nltk.corpus.gutenberg.words('austen-emma.txt'))//我们调用了NLTK 中的corpus 包中的gutenberg 对象的words()函数
emma.concordance("surprize")//获取包含suprize得上下文
 
macbeth_sentences = gutenberg.sents('shakespeare-macbeth.txt')//sents()函数把文本划分成句子,其中每一个句子是一个词链表。

1.2网络和聊天文本

from nltk.corpus import webtext
from nltk.corpus import webtext
>>> for fileid in webtext.fileids():
... print (fileid, webtext.raw(fileid)[:65], '...')
from nltk.corpus import nps_chat
chatroom = nps_chat.posts('10-19-20s_706posts.
<think>好的,我现在需要回答用户关于自然语言处理中文本清洗代码所用库函数的具体作用的问题。用户特别提到了re、string、nltk.corpus.stopwordsnltk.stem.PorterStemmernltk.tokenize.word_tokenize这些库模块,需要解释它们在文本清洗中的用途。 首先,我要回忆一下这些库的基本功能。用户之前已经提供了示例代码,我需要结合这些代码来解释每个部分的作用。同时,用户引用了之前的回答中的内容,可能需要参考之前的引用内容来确保一致性。 从引用[1]中,用户提到了PorterStemmer的作用是词干提取,比如将fishing变成fish。引用[2]中展示了停用词标点符号的去除,使用了nltk的stopwordsword_tokenize,以及string模块处理标点。引用[3]则涉及nltk的词性标注,但当前问题可能不需要这部分,但需要确认是否有相关内容需要提及。 用户的问题是关于代码中每个库函数的具体作用,所以需要逐一分解: 1. re模块:用于正则表达式操作,处理文本中的特殊字符模式匹配。 2. string模块:提供字符串常量处理函数,比如标点符号集合。 3. nltk.corpus.stopwords:停用词列表,用于过滤常见无意义词汇。 4. nltk.stem.PorterStemmer:词干提取,将词汇还原为词根形式。 5. nltk.tokenize.word_tokenize:分词功能,将文本拆分为单词或标记。 接下来,需要详细解释每个部分在文本清洗流程中的具体应用。例如,re.sub用于替换或删除不需要的字符,stopwords用于过滤停用词,PorterStemmer进行词干提取以减少词汇变形的影响,word_tokenize将文本分割成单词等。 同时,需要注意用户可能对中英文处理的不同有疑问,比如停用词默认是英文,处理中文时需要自定义。这在之前的引用[2]中已经提到,所以需要在解释时指出这一点,并给出建议。 另外,用户可能想知道这些步骤的顺序必要性,比如为什么先处理特殊字符再分词,停用词过滤词干提取的顺序等。需要简要说明流程的逻辑。 还需要注意代码中的实际例子,比如在示例代码中,正则表达式去除了特殊字符,转换为小写,然后分词,接着过滤停用词词干提取。每个步骤的作用需要明确说明。 可能还需要提到异常处理部分,但用户主要关注的是库函数的作用,所以这部分可能不需要深入,除非有相关函数涉及。 最后,要确保回答结构清晰,分点解释每个库函数,并说明它们在文本清洗中的具体应用重要性。同时,结合用户提供的引用内容,保持回答的一致性准确性。</think>### Python文本清洗工具库详解 以下是自然语言处理文本清洗中关键库函数的作用解析,结合代码示例说明其在流程中的具体应用: #### 一、正则表达式模块 (`re`) **核心作用**:模式匹配与替换 - **文本清洗应用**: ```python text = re.sub(r'[^\w\s]|_', '', text) # 删除特殊符号 ``` - 删除URL链接:`re.sub(r'http\S+', '', text)` - 处理数字变形:`re.sub(r'\d+', '<NUM>', text)`(将数字统一标记) - 清除HTML标签:`re.sub(r'<.*?>', '', text)` - **正则符号说明**: - `\w` 匹配字母/数字/下划线 - `\s` 匹配空白字符 - `^` 表示取反集合 #### 二、字符串处理模块 (`string`) **核心作用**:提供标准字符集合 - **标点处理应用**: ```python text = text.translate(str.maketrans('', '', string.punctuation)) ``` - `string.punctuation` 包含所有英文标点符号:`!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~` - **中文适配**:需自定义符号集 `chinese_punc = '“”‘’(),。!?;:·《》【】`[^2] #### 三、停用词处理 (`nltk.corpus.stopwords`) **核心作用**:过滤无意义高频词 - **应用示例**: ```python filtered_words = [w for w in words if w not in stop_words] ``` - **英文默认列表**:包含"the", "is", "and"等179个词 - **中文适配方案**: ```python cn_stopwords = set(line.strip() for line in open('chinese_stopwords.txt')) ``` #### 四、词干提取器 (`nltk.stem.PorterStemmer`) **核心作用**:词汇形态归一化 - **处理示例**: ```python stemmer.stem('running') → 'run' stemmer.stem('happily') → 'happili' ``` - **算法特性**:基于Porter算法逐步剥离后缀,可能产生非常规词根 - **替代方案**:`WordNetLemmatizer`需要词性标注支持,结果更准确[^1] #### 五、分词器 (`nltk.tokenize.word_tokenize`) **核心作用**:文本结构化处理 - **处理差异**: ```python word_tokenize("Can't stop!") → ['Ca', "n't", 'stop', '!'] # 英文智能分割 word_tokenize("自然语言处理") → ['自然', '语言', '处理'] # 中文需安装分词器 ``` - **中文增强方案**: ```python import jieba jieba.lcut("自然语言处理") # ['自然语言', '处理'] ``` #### 六、组合应用流程 典型清洗流程与工具对应关系: ``` 原始文本 → re.sub(清洗符号) → string.lower(标准化) → word_tokenize(结构化) → stopwords(降噪) → PorterStemmer(归一化) ``` #### 七、工具选型建议 | 工具类型 | 英文处理推荐 | 中文处理推荐 | |-----------------|---------------------|---------------------| | 分词工具 | word_tokenize | jieba/pkuseg | | 停用词表 | nltk.corpus.stopwords | 百度/哈工大停用词表 | | 词形处理 | PorterStemmer | 同义词词林 | 通过合理组合这些工具,可以构建适应不同语种业务场景的文本清洗流水线。实际应用中建议根据语料特点调整处理顺序,例如法律文本需优先处理特殊符号,社交媒体文本需加强网络用语过滤。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值