文章目录
- jieba库
-
- 一、 简介
-
- 1、 是什么
- 2、 安装
- 二、 基本使用
-
- 1、 三种模式
- 2、 使用语法
-
- 2.1 对词组的基本操作
- 2.2 关键字提取
- 2.3 词性标注
- 2.4 返回词语在原文的起止位置
jieba库
一、 简介
1、 是什么
(1)jieba是优秀的中文分词第三方库
- 中文文本需要通过分词获得单个的词语
- jieba是优秀的中文分词第三方库,需要额外安装
- jieba库提供三种分词模式,最简单只需掌握一个函数
(2)jieba分词的原理
- jieba分词依靠中文词库
- 利用一个中文词库,确定汉字之间的关联概率
- 汉字间概率大的组成词组,形成分词结果
- 除了分词,用户还可以添加自定义的词组
2、 安装
pip install jieba
导入
import jieba
官方文档【https://github.com/fxsjy/jieba】
二、 基本使用
1、 三种模式
精确模式:
-
就是把一段文本精确地切分成若干个中文单词,若干个中文单词之间经过组合,就精确地还原之前的文本。其中不存在冗余单词
-
str = "你好呀,我叫李华!多多关照!" print(jieba.lcut(str))
全模式:
-
将一段文本中所有可能的词语都扫描出来,可能有一段文本,它可以切分成不同的模式,或者有不同的角度来切分变成不同的词语,在全模式下,jieba库会将各种不同的组合都挖掘出来。分词后的信息组合起来会有冗余,不再是原来的文本
-
str = "你好呀,我叫李华!多多关照!" print(jieba.lcut(str, cut_all=True))
搜索引擎模式:
-
在精确模式的基础上,对发现的那些长的词语,我们会对它再次切分,进而适合搜索引擎对短词语的索引和搜索。也有冗余
-
str = "你好呀,我叫李华!多多关照!" print(jieba.lcut_for_search(str))
2、 使用语法
2.1 对词组的基本操作
-
添加
-
str = "你好呀,我叫李华!多多关照!" jieba.add_word("你") print(jieba.lcut(str))
-
-
删除
-
str = "你好呀,我叫李华!多多关照!" jieba.del_word("李华") print(jieba.lcut(str))
-
-
加载自定义词典
-
str = "你好呀,我叫李华!多多关照!" jieba.load_userdict("./dict.txt") # 文件编码必须为 utf-8 print(jieba.lcut(str))
-
-
调整词出现的频率
-
str = "你好呀,我叫李华!多多关照!" jieba.suggest_freq(("李", "华"), True) print(jieba.lcut(str))
-
2.2 关键字提取
TFIDF算法
import jieba.analyse # 导包jieba.analyse.extract_tags(sentence, topK=20, withWeight=False,allowPOS=())
jieba.analyse.TFIDF(idf_path=None) # 创建一个新的 TFIDF 实例,idf_path是指指定 IDF 频率文件的路径
参数:
- sentence:要提取的文本
- topK:返回多少个具有最高TF/IDF权重的关键字。默认值为 20
- withWeight:是否返回关键字的TF/IDF权重。默认为假
- allowPOS:过滤包含POS(词性)的单词。空无过滤,可以选择
['ns', 'n', 'vn', 'v','nr']
TextRank算法
jieba.analyse.textrank(sentence, topK=20, withWeight=False, allowPOS=('ns', 'n', 'vn', 'v')) # 有默认词性
jieba.analyse.TextRank() # 新建自定义 TextRank 实例
2.3 词性标注
jieba.posseg.POSTokenizer(tokenizer=None)
新建自定义分词器,tokenizer 参数可指定内部使用的 jieba.Tokenizer 分词器
jieba.posseg.dt 为默认词性标注分词器
import jieba.possegstr = "你好呀,我叫李华!多多关照!"
pt = jieba.posseg.POSTokenizer()
print(pt.lcut(str)) # 得到 pair键值对,使用遍历取值
# print(jieba.posseg.cut(str)) # 作用一样
for i, k in ps.lcut(str):print(i, k)
2.4 返回词语在原文的起止位置
jieba.tokenize(arg, mode=None)
mode有搜索模式(search)和默认模式(default)
import jiebastr = "你好呀,我叫李华!多多关照!"
g = jieba.tokenize(str, mode="search") # 生成器
for i in g:print(i)