Python数据分析:NLTK
Natural Language Toolkit
-
nlp领域中最常用的一个Python库
-
开源项目
-
自带分类、分词等功能
-
强大的社区支持
-
语料库,语言的实际使用中真实出现过的语言材料
-
语料库安装
import nltk
nltk.download()
语料库
- nltk.corpus
分词(tokenize)
-
将句子拆分成具有语言语义学上意义的词
-
中英文分词区别
- 英文单词之间是以空格作为自然分界符
- 中文没有一个形式上的分界符,分词比英文复杂
-
中文分词工具,jieba
-
得到分词结果后,中英文的后续处理类似
特殊字符的分词
- 使用正则表达式处理
词形问题
- look,looked,looking
- 影响预料学习的准确度
- 词形归一化
词形归一化
-
stemming,词干提取,如将ing,ed去掉,只保留单词主干
-
lemmatization,词形归并,将单词的各种词形归并成一种形式,如am,is,are归并为be
-
NLTK中的stemmer
- porterstemmer,snowballstemmer,lancasterstemmer
-
NLTK中的lemma
- wordnetlemmatizer
-
指定词性可以更准确的进行lemma
词性标注
-
NLTK中的词性标注 nltk.word_tokenize()
-
停用词(stopwords)
- 为节省存储空间和提高搜索效率,NLP会自动过滤掉某些字或词
- 停用词都是人工输入、非自动化生成的,形成停用词表
-
分类
- 语言中的功能词
- 使用广泛的词汇词
-
中文停用词表
- 中文停用词表
- 哈工大停用词表
- 四川大学机器智能实验室停用词库
- 百度停用词库
-
使用NLTK去除停用词 stopwords.words()
文本预处理流程:
import nltk
from nltk.corpus import brown # 需要下载brown语料库
# 引用布朗大学的语料库
# 查看语料库包含的类别
print(brown.categories())
运行:
# 查看brown语料库
print('共有{}个句子'.format(len(brown.sents()