前言
Jieba库是优秀的中文分词第三方库,中文文本需要通过分词获得单个的词语。
Jieba库的分词原理:利用一个中文词库,确定汉字之间的关联概率,汉字间概率大的组成词组,形成分词结果。除了分词,用户还可以添加自定义的词组。
分词模式
jieba,提供给了三种分词模式:
1)精确模式:就是把一段文本精确地切分成若干个中文单词,若干个中文单词之间经过组合,就精确地还原为之前的文本。其中不存在冗余单词。
2)全模式:将一段文本中所有可能的词语都扫描出来,可能有一段文本它可以切分成不同的模式,或者有不同的角度来切分变成不同的词语,在全模式下,Jieba库会将各种不同的组合都挖掘出来。分词后的信息再组合起来会有冗余,不再是原来的文本。
3)搜索引擎模式:在精确模式基础上,对发现的那些长的词语,我们会对它再次切分,进而适合搜索引擎对短词语的索引和搜索。也有冗余。
下载
pip install jieba/pip3 install jieba
主要的方法
jieba.cut
参数 | 说明 |
---|---|
sentence | 需要粉刺的字符串 |
cut_all | 是否开启全模式 |
HMM | 控制参数是否使用HMM模型 |
use_paddle | 用来控制是否使用paddle模式 |
方法返回的是一个可以迭代的生成器,可以使用for循环获取结果,也可通过list()转化为列表直接获取
# 默认模式 精准模式
strs = jieba.cut('我来到了北京清华大学')
print("默认的精准模式:", list(strs))
# 全模式
strs1 = jieba.cut('我来到了北京清华大学', cut_all=True)
print('全模式:', list(strs1))
jieba.cut_for_search
参数 | 说明 |
---|---|
sentence | 需要粉刺的字符串 |
HMM | 是否使用 HMM 模型 |
# 搜索引擎模式
strs2 = jieba.cut_for_search('我来到了北京大学')
print("搜索引擎模式:", list(strs2))
jieba.lcut 和 jieba.lcut_for_search
这两个方法和上面介绍的两个方法基本一致这里就不再赘述不同的是这两个方法返回的是list
str22 = jieba.lcut('我来到了北京大学')
print(str22)
str_list = jieba.lcut_for_search('我来到了北京大学')
print(str_list)
除了以上的功能以外jieba库还具有关键词提取的功能
关键词提取
jieba库在关键词提取上有两种算法: TF-IDF 算法
和TextRank 算法
基于 TF-IDF 算法的关键词抽取
jieba.analyse.extract_tags(sentence, topK=20, withWeight=False, allowPOS=())
方法 | 参数 |
---|---|
sentence | 需要提取的字符串 |
topK | 返回几个 TF/IDF 权重最大的关键词(默认为20) |
wirhWeight | 是否返回关键词呢的权重 |
allowPOS | 指定词性(默认为空也就是不指定) |
import jieba.analyse
f = open(r'D:\gitee代码托管\jiebastudy\模块二 样题2 .txt', 'r', encoding='utf-8')
data = f.read()
data_tfidf = jieba.analyse.extract_tags(data, topK=5,withWeight=True, allowPOS=('nr', 'ns',"n"))
print(data_tfidf)
返回值:
[('裙子', 0.5743548458513157), ('淑女', 0.5312639559052631), ('连衣裙', 0.5267819659947368), ('长裙', 0.5072630407857894), ('女装', 0.4061747265513158)]
基于 TextRank 算法的关键词抽取
jieba.analyse.textrank(sentence, topK=20, withWeight=False, allowPOS=())
方法 | 参数 |
---|---|
sentence | 需要提取的字符串 |
topK | 返回几个 TF/IDF 权重最大的关键词(默认为20) |
wirhWeight | 是否返回关键词呢的权重 |
allowPOS | 指定词性(默认为空也就是不指定) |
import jieba.analyse
f = open(r'D:\gitee代码托管\jiebastudy\模块二 样题2 .txt', 'r', encoding='utf-8')
data = f.read()
data_textrank = jieba.analyse.textrank(data, topK=5, withWeight=True, allowPOS=('nr', 'ns', "n"))
print(data_textrank)
返回值:
[('裙子', 1.0), ('长裙', 0.8850261879403326), ('连衣裙', 0.7873509466651294), ('淑女', 0.7685666878978411), ('商品', 0.7184127086119025)]
感谢观看,欢迎指正,仅个人笔记,如有侵权联系删除