【一】头歌平台实验 | 您所在的位置:网站首页 › seg大学 › 【一】头歌平台实验 |
近年来,随着自然语言处理技术的日益成熟,开源实现的分词工具越来越多,如 Ansj 、盘古分词等。Jieba 是目前最好的 Python 中文分词组件。 本实训主要介绍 Jieba 模块的使用,并通过示例与实战,帮助大家掌握使用 Jieba 的方法。 第1关:中文分词工具——Jieba import jieba text = input() seg_list1 = '' seg_list2 = '' # 任务:采用jieba库函数,对text分别进行精确模式分词和搜索引擎模式分词, # 将分词结果分别保存到变量seg_list1和seg_list2中 # ********** Begin *********# seg_list1=jieba.cut(text,cut_all=False) seg_list2=jieba.cut_for_search(text) # ********** End **********# print("精确模式:"+'/'.join(seg_list1) +" 搜索引擎模式:"+ ' /'.join(seg_list2)) 相关知识 1、jieba的特点分词是自然语言处理中最基础的一个步骤。而 Jieba 分词是目前中文分词中一个比较好的工具。它包含有以下特性: 社区活跃。Jieba 在 Github 上已经有 17670 的 star 数目。社区活跃度高,代表着该项目会持续更新,实际生产实践中遇到的问题能够在社区反馈并得到解决,适合长期使用; 功能丰富。Jieba 其实并不是只有分词这一个功能,其是一个开源框架,提供了很多在分词之上的算法,如关键词提取、词性标注等; 提供多种编程语言实现。 Jieba 官方提供了 Python、C++、Go、R、iOS 等多平台多语言支持,不仅如此,还提供了很多热门社区项目的扩展插件,如 ElasticSearch、solr、lucene 等。在实际项目中,进行扩展十分容易; 使用简单。Jieba 的 API 总体来说并不多,且需要进行的配置并不复杂,方便上手。 2、jieba的分词原理Jieba 分词依靠中文词库,结合了基于规则和基于统计这两类方法。首先基于前缀词典进行词图扫描,前缀词典是指词典中的词按照前缀包含的顺序排列。如果将词看作节点,词和词之间的分词符看作边,那么一种分词方案则对应着从第一个字到最后一个字的一条分词路径。 因此,基于前缀词典可以快速构建包含全部可能分词结果的有向无环图,这个图中包含多条分词路径,有向是指全部的路径都始于第一个字、止于最后一个字,无环是指节点之间不构成闭环。基于标注语料,使用动态规划的方法可以找出最大概率路径,并将其作为最终的分词结果。 3、jieba分词的三种模式精确模式:试图将句子最精确地切开,适合文本分析; 全模式:把句子中所有可以成词的词语都扫描出来,速度非常快,但是不能解决歧义; 搜索引擎模式:在精确模式的基础上,对长词再次切分,提高召回率,适合用于搜索引擎分词。 4、使用 Jieba 库进行分词可使用jieba.cut(sentence, cut_all, HMM)和jieba.cut_for_search(sentence, HMM)方法进行分词,两者所返回的结构都是一个可迭代的 generator ,可使用 for 循环来获得分词后得到的每一个词语( 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 个参数: 需要分词的字符串( unicode 或 UTF-8 字符串、GBK 字符串); cut_all 参数:是否使用全模式,默认值为 False; HMM 参数:用来控制是否使用 HMM 模型,默认值为 True。 jieba.cut_for_search(sentence, HMM) 和 jieba.lcut_for_search(sentence, HMM)接受2个参数: 需要分词的字符串( unicode 或 UTF-8字符串、 GBK 字符串) HMM 参数:用来控制是否使用 HMM 模型,默认值为 True 代码示例: 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))输出结果: |
CopyRight 2018-2019 实验室设备网 版权所有 |