jieba的主要功能是做中文分词,可以进行简单分词、并行分词、命令行分词,当然它的功能不限于此,目前还支持关键词提取、词性标注、词位置查询等。
更让人愉悦的是jieba虽然立足于python,但同样支持其他语言和平台,诸如:C++、Go、R、Rust、Node.js、PHP、 iOS、Android等。所以jieba能满足各类开发者的需求。
分词是自然语言处理中最基础的一个步骤。而 Jieba 分词是目前中文分词中一个比较好的工具。它包含有以下特性:
Jieba 分词依靠中文词库,结合了基于规则和基于统计这两类方法。首先基于前缀词典进行词图扫描,前缀词典是指词典中的词按照前缀包含的顺序排列。如果将词看作节点,词和词之间的分词符看作边,那么一种分词方案则对应着从第一个字到最后一个字的一条分词路径。
因此,基于前缀词典可以快速构建包含全部可能分词结果的有向无环图,这个图中包含多条分词路径,有向是指全部的路径都始于第一个字、止于最后一个字,无环是指节点之间不构成闭环。基于标注语料,使用动态规划的方法可以找出最大概率路径,并将其作为最终的分词结果。
可使用jieba.cut(sentence, cut_all, HMM)
和 jieba.cut_for_search(sentence, HMM)
方法进行分词,两者所返回的结构都是一个可迭代的 g e n e r a t o r generator generator ,可使用 f o r for for 循环来获得分词后得到的每一个词语 ( u n i c o d e ) ( unicode ) (unicode),或者直接使用 jieba.lcut(s,cut_all,HMM)
以及 jieba.lcut_for_search(sentence, HMM)
直接返回 list 。其中:
jieba.cut(sentence, cut_all, HMM)
和 jieba.lcut(s,cut_all,HMM)
接受 3 个参数:
jieba.cut_for_search(sentence, HMM)
和 jieba.lcut_for_search(sentence, HMM)
接受2个参数:
import jieba
seg_list = jieba.cut("我来到北京清华大学", cut_all=True)
print("Full Mode: " + "/ ".join(seg_list)) # 全模式
seg_list = jieba.cut("我来到北京清华大学", cut_all=False)
print("Default Mode: " + "/ ".join(seg_list)) # 精确模式
seg_list = jieba.cut("他来到了网易杭研大厦") # 默认是精确模式
print(", ".join(seg_list))
seg_list = jieba.cut_for_search("小明硕士毕业于中国科学院计算所,后在日本京都大学深造") # 搜索引擎模式
print(", ".join(seg_list))
对应的输出为:
Full Mode: 我/ 来到/ 北京/ 清华/ 清华大学/ 华大/ 大学
Default Mode: 我/ 来到/ 北京/ 清华大学
他, 来到, 了, 网易, 杭研, 大厦
小明, 硕士, 毕业, 于, 中国, 科学, 学院, 科学院, 中国科学院, 计算, 计算所, , 后, 在, 日本, 京都, 大学, 日本京都大学, 深造
测试输入:
我来自北京清华大学
预期输出:
精确模式:我/来自/北京/清华大学 搜索引擎模式:我 /来自 /北京 /清华 /华大 /大学 /清华大学
import jieba
text = input()
seg_list1 = ''
seg_list2 = ''
# 任务:采用jieba库函数,对text分别进行精确模式分词和搜索引擎模式分词
seg_list1 = jieba.cut(text,cut_all=False)
seg_list2 = jieba.cut_for_search(text)
print("精确模式:"+'/'.join(seg_list1) +" 搜索引擎模式:"+ ' /'.join(seg_list2))