jieba中文分词

jieba是目前最好的中文分词组件,主要有三个特性:

1.支持三种分词模式:精确模式,全模式,搜索引擎模式

2.支持频繁分词

3.支持自定义词典

1
2
3
4
5
6
7
8
9
10
11
jieba.cut()  #返回生成器
jieba.lcut() #返回列表
'''
cut_all:是否使用全模式,默认为False(精准模式:他/来自/安徽省)
HMM:是否使用隐马尔可夫模型,默认为True
'''
jieba.cut_for_search()
jieba.lcut_for_search()
'''搜索引擎模式
HMM:默认为True
'''

HMM模型

1
2
3
HMM模型,即隐马尔可夫模型,是一种基于概率的统计分析模型,用来描述一个系统隐性状态的转移和隐形状态的表现概率.在jieba中,对于未登录到词库的词,使用了基于汉字成词能力的HMM模型和Viterbi算法.
原理:
采用四个隐含状态,分别表示为单字成词,词组的开头,词组的中间,词组的结尾.通过标注好的分词训练集,可以得到HMM的各个参数,然后使用Viterbi算法来解释测试集,得到分词结果

添加自定义词典

1
2
3
4
5
6
7
8
9
10
11
词语  词频(可省略)  词性(可省略)
云计算 3
创新办 3 i
凯特琳 nz
#jieba本身自带新词识别能力,但自行添加新词可以保证更高的准确率
#载入词典,通常为txt格式文件
jieba.load_userdict(file_name)
#调整词典
jieba.add_word('石墨烯')
jieba.add_word('凯特琳',freq=42,tag='nz') # 设置词频和词性
jieba.del_word('ada') #删除自定义词语

关键词提取(IF-IDF和TextRank)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
IF-IDF是一种统计方法,用以评估一个词语对于一个文件集或一个语料库中的一份文件的重要程度.
原理:
一个词语在一篇文章中出现的次数越多,同时在所有文档中出现的次数越少,越能代表该文章
公式:TF*IDF
TF(term Frequency):词频,某一个给定的词语在改文件中出现的次数
tf = 在某一类中词条w出现的次数/该类中所有的词条数目
IDF(inverse document frequency,IDF)逆文件频率,如果包含词条的文件越少,则说明词条具有很好的类别区分能力
idf = log(语料库中的文档总数/(包含词条w的文档数+1))
jieba.analyse.extract_tags (基于TF-IDF)
'''参数
sentense:为待提取的文本
topK:为返回几个TF/IDF权重最大的关键词
withWeight:是否一并返回关键词权重,默认值为False
allowPOS:仅包括指定词性的词,默认值为空
'''
TextRank(基于pagerank)
jieba.analyse.textrank 参数和extract_tags一致

自定义语料库

1
2
3
关键词提取所使用的逆向文件频率(IDF)文本语料库和停用词(stop words)文本语料库可以切换成自定义语料库的路径
jieba.analyse.set_stop_words('stop_words.txt')
jieba.analyse.set_idf_path('idf.txt.big')

词性标注

1
jieba.posseg.cut(text)

返回词语在原文中的起止位置

1
jieba.tokenize()