中文分词库 jieba
Posted Python可视化编程机器学习OpenCV
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了中文分词库 jieba相关的知识,希望对你有一定的参考价值。
使用 python 的 jieba库可以将中文句子分割成一个一个词语, 在机器学习中,可用于生成中文的词向量。我们可以使用 pip 免费安装 jieba 库。
jieba 有三种分词模式:
精确模式
把文本精确的切分开,不存在冗余的词语。是最常用的模式。
全模式
把文本中所有可能的词语都扫描出来,有冗余。
搜索引擎模式
在精确模式的基础上,对长的词语再次切分,有冗余。
import jieba
#lcut()函数返回一个列表类型的分词结果
>>> jieba.lcut("中国是一个伟大的国家") #精确模式.第一次调用时会创建初始的分词词库
Building prefix dict from the default dictionary ...
Loading model from cache c:\Temp\jieba.cache
Loading model cost 0.771 seconds.
Prefix dict has been built succesfully.
['中国', '是', '一个', '伟大', '的', '国家']
"中国是一个伟大的国家", cut_all =True)#全模式 jieba.lcut(
['中国', '国是', '一个', '伟大', '的', '国家']
#'中国', '国是' 有冗余:‘国’字重复
"中华人民共和国是伟大的")#搜索引擎模式,有冗余,长词再次分割 > jieba.lcut_for_search(
['中华', '华人', '人民', '共和', '共和国', '中华人民共和国', '是', '伟大', '的']
我们还可以向jieba的分词词典加入自定义的词:
"雨女无瓜") > jieba.add_word(
"为何带面具?雨女无瓜") > jieba.lcut(
['为何', '带', '面具', '?', '雨女无瓜']
也可以删除分词词典中的某个词语:
"雨女无瓜") > jieba.del_word(
"为何带面具?雨女无瓜") > jieba.lcut(
['为何', '带', '面具', '?', '雨女', '无瓜']
下面的例子介绍了如何用结巴库统计《西游记》中各个词语出现的次数,看看谁是主要角色:
#中文词频统计
import jieba
with open(r"e:\西游记.txt", "r", encoding="utf-8") as f:
txt = f.read()
words = jieba.lcut(txt)
counts = {}
for word in words:
if len(word) == 1: #忽略标点符号和其它长度为1的词
continue
else:
counts[word] = counts.get(word, 0) +1
items = list(counts.items()) #字典转列表
items.sort(key = lambda x : x[1], reverse=True) #按词频降序排列
N=20
for i in range(N):# top N
word, count = items[i]
print("{0:<10}{1:>5}".format(word, count))
from matplotlib import pyplot as plt
plt.bar(range(0, 2*N,2), [x[1] for x in items[:N]], tick_label = [x[0] for x in items[:N]])
plt.title("《西游记》词频统计 \ntop 20", fontsize =18)
plt.show()
通过忽略一些虚词,合并一些同一角色的不同名字 可以对上述代码进行优化。
以上是关于中文分词库 jieba的主要内容,如果未能解决你的问题,请参考以下文章