中文分词库 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.cacheLoading model cost 0.771 seconds.Prefix dict has been built succesfully.['中国', '是', '一个', '伟大', '的', '国家']
>>> jieba.lcut("中国是一个伟大的国家", cut_all =True)#全模式['中国', '国是', '一个', '伟大', '的', '国家']#'中国', '国是' 有冗余:‘国’字重复
>>> jieba.lcut_for_search("中华人民共和国是伟大的")#搜索引擎模式,有冗余,长词再次分割['中华', '华人', '人民', '共和', '共和国', '中华人民共和国', '是', '伟大', '的']


我们还可以向jieba的分词词典加入自定义的词:

>>> jieba.add_word("雨女无瓜")>>> jieba.lcut("为何带面具?雨女无瓜")['为何', '带', '面具', '?', '雨女无瓜']

也可以删除分词词典中的某个词语:

>>> jieba.del_word("雨女无瓜")>>> jieba.lcut("为何带面具?雨女无瓜")['为何', '带', '面具', '?', '雨女', '无瓜']


    下面的例子介绍了如何用结巴库统计《西游记》中各个词语出现的次数,看看谁是主要角色:

#中文词频统计import jiebawith 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) +1items = list(counts.items()) #字典转列表items.sort(key = lambda x : x[1], reverse=True) #按词频降序排列N=20for i in range(N):# top N word, count = items[i] print("{0:<10}{1:>5}".format(word, count))from matplotlib import pyplot as pltplt.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的主要内容,如果未能解决你的问题,请参考以下文章

运用jieba库分词

优秀的中文分词jieba库

jieba库分词统计

Python中文分词库——jieba的用法

中文分词库 jieba

jieba库分词词频统计