Python中文分词库jieba(结巴分词)详细使用介绍

  • Post category:Python

下面是针对“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]]

输出结果表明,该示例中使用的语料库转为向量表示后,可以进行比较。