因为Nltk的分词功能具有一定的局限性,所以我们在对中文的进行分词时,需要使用一些靠谱的中文分词工具,笔者在此使用的是结巴分词。
结巴分词的安装和其他包的安装基本一致,使用pip即可,在安装好后我们将对其基本功能进行熟悉和使用;
1)分词功能:结巴分词的分词功能有【全模式】和【精确模式】两种
# -*-coding:utf-8 -*-
import jieba
list_all=jieba.cut("我是一个计算机系的学生",cut_all=True)#全模式
print("/".join(list_all))
list_default=jieba.cut("我是一个计算机系的学生",cut_all=False)#精确模式
print("/".join(list_default))
list_seach=jieba.cut_for_search("我是一个宁波工程学院计算机系的学生")#搜索模式
print(",".join(list_seach))
我们可以发现,全模式将显示所有被结巴分词词典含有的词,而精确模式则是在不改变原句的基础上按顺序
进行分词。而搜索模式则是适合用于搜索引擎构建倒排索引的分词,他的粒度也比较细。
2)词性标注:结巴分词还能在分词的同时对每个词的词性进行标注,从而达到减少无效词对研究的影响。
# - *-coding:utf-8
-*-
import
jieba.posseg as pseg
word=pseg.cut("我是一名宁波工程学院计科专业的学生")
for w in word:
print(w.word,w.flag)
我们可以看到输出结果中,单句被分成了各成个体的词,并且对每个词都进行了标注,那么在以后的单词提取中,我们也就有了一个筛选的条件,也就提高了分析的效率。
3)自定义词典的引入
为了更好地对以后的研究做准备,我们经常会对jieba词典中没有地词进行补充,虽然结巴分词具有一定地新词学习能力,但是人工地对词典进行丰富,也大大地提高了正确率;
自定义词典格式为 词 词频
词性 三者之间用空格隔开。例如正能量 1000
n。
# -*-coding:utf-8
-*-
import
jieba.posseg as pseg
import jieba
jieba.load_userdict("userdict.txt")#用来导入自定义词库
word=jieba.cut("我是一名很有正能量的学生")
print("/".join(word))
result=pseg.cut("我是一名很有正能量的学生")
for r in
result:
print((r.word,r.flag),end='')
未导入自定义词典:
我/是/一名/很/有/正/能量/的/学生
('我', 'r')('是',
'v')('一名', 'm')('很', 'd')('有', 'v')('正',
'd')('能量', 'n')('的', 'uj')('学生', 'n')
导入自定义词典后:
我/是/一名/很/有/正能量/的/学生
('我', 'r')('是', 'v')('一名', 'm')('很',
'd')('有', 'v')('正能量', 'n')('的',
'uj')('学生', 'n')
我们可以发现在导入词典后,正能量这个原本不存在的词也被结巴分词认定为一个完整的词,也就达到了我们的目的;
而如何达到准确分析一篇文章,则需要利用三者的关系,以及其他工具来进行研究;