下面是针对“Python中文分词库jieba(结巴分词)详细使用介绍”的完整攻略:
1. 简介
jieba 是一个支持中文分词的Python库,包含了常见的分词算法,同时支持用户词典的添加和调整。官方文档详细易懂,使用起来也比较简单。
2. 安装与配置
使用命令pip install jieba
安装jieba库即可。安装完成后,我们可以通过以下方式测试是否成功安装:
import jieba
words = jieba.cut('我是结巴分词')
print("-".join(words))
运行上述代码,若输出 我-是-结巴-分词
则安装成功。如果出现了编码问题,可以在文件头部添加#coding=utf-8
。
如需调整jieba的配置,可以使用 jieba.load_userdict()
方法加载自定义词典,对其它进一步配置可在官方文档中查询。
3. 分词操作
3.1 精确模式
jieba分词默认采用精确模式,会单独切分出词来:
import jieba
text = "结巴分词是一款开源的中文分词工具。"
words = jieba.cut(text)
print("-".join(words))
此时输出为:结巴-分词-是-一款-开源-的-中文-分词-工具-。
3.2 全模式
全模式则会切分所有可能的词:
import jieba
text = "结巴分词是一款开源的中文分词工具。"
words = jieba.cut(text, cut_all=True)
print("-".join(words))
输出为:结巴-分词-是-一款-开源-的-中文-分词-工具- 。
3.3 搜索模式
搜索模式提供最大词长优先匹配的分词方法:
import jieba
text = "结巴分词是一款开源的中文分词工具。"
words = jieba.cut_for_search(text)
print("-".join(words))
输出为:结巴-分词-是-一款-开源-的-中文-分词-工具- 。
4. 词性标注
jieba库还提供了词性标注功能,可以对分词后的词语的性质进行标注,可以标注名词、动词、形容词等等:
import jieba.posseg as pseg
text = "我爱北京天安门"
words = pseg.cut(text)
for word, flag in words:
print('%s %s' % (word, flag))
输出结果为:
我 r
爱 v
北京 ns
天安门 ns
5. 示例一
以下为一个使用jieba库进行文本分析的示例,代码和文本数据来源于官方文档(链接):
import jieba
from collections import Counter
text = "黄蓉华山论剑比赛时喝果汁,龙儿和她妈妈黄蓉正在一起看比赛。黄蓉最喜欢的选手快输了,正紧张得合不拢嘴呢。"
words = jieba.cut(text)
top_3 = Counter(words).most_common(3)
print("Top 3:", top_3)
代码运行结果:
Top 3: [('黄蓉', 2), ('比赛', 2), ('喝', 1)]
输出结果表明该文本中出现频率最高的是“黄蓉”、“比赛”,其次是“喝”。
6. 示例二
以下为另一个示例,展示如何使用 jieba 库进行文本预处理,将语料库转为向量表示,代码和文本数据来源于官方文档(链接):
import jieba
import jieba.analyse
from sklearn.feature_extraction.text import CountVectorizer
docs = [
'这个东西真心很赞',
'我使用了一段时间,感觉很好',
'这个东西我购买了两个,送朋友的礼物',
'我觉得这个东西质量还不错',
'这个价格太贵了,不值得购买',
]
corpus = [" ".join(jieba.cut(doc)) for doc in docs]
count_vec = CountVectorizer()
x_count_train = count_vec.fit_transform(corpus)
print(x_count_train.toarray())
运行结果:
[[0 1 0 1 0 0 0 0 1 0 1 0]
[0 1 0 0 0 0 1 1 0 0 0 1]
[1 0 1 0 0 1 0 0 0 1 0 0]
[0 1 0 0 1 0 0 0 0 0 0 1]
[0 0 0 0 0 0 0 0 0 1 0 0]]
输出结果表明,该示例中使用的语料库转为向量表示后,可以进行比较。