jieba是一个Python语言实现的中文分词组件,jieba库是Python中一个重要的第三方中文分词函数库

  jieba是一个Python语言实现的中文分词组件,jieba库是Python中一个重要的第三方中文分词函数库

  1.jieba分词的安装

  Pip安装可以直接在cmd窗口中完成

  2.jieba分词的介绍

  街霸分词是目前较好的中文分词组件之一。杰霸分词支持三种分词模式(精准模式、全模式、搜索引擎模式),支持自定义词典(这在特定领域非常重要,有时需要根据领域的需要添加特定词典,以提高分词结果的质量)和繁体中文分词。

  3.jieba分词三种分词模式及使用例子

  jieba分词模块的主要方法是jieba.cut(),精确模式和全模式的区别在于参数的不同。

  (1)精确模式:精确切割文本,适用于文本分析。

  jieba.cut()方法中的CUT_ALL=False

  (2)全模式:从文本中提取所有能成词的词,速度快,但不能解决歧义问题。

  jieba.cut()方法中的CUT_ALL=True

  (3)搜索引擎模式:在精确模式的基础上,再次切分长词进行搜索。

  需要调用jieba.cut_for_search()方法。

  光看这些,看不出个所以然来。接下来,我将测试三种分词模式:

  Text=北京邮电大学是教育部直属全国重点大学,工业和信息化部共建,首批“211工程”建设

  try_words=jieba.cut(text,cut_all=True)

  打印(全模式分词结果: ,)。加入(try_words))

  try_words=jieba.cut(text,cut_all=False)

  打印(精确模式分割结果: ,)。加入(try_words))

  try _ words=jieba . cut _ for _ search(text)

  打印(搜索引擎模式分词结果: ,)。join(try_words))以上代码运行结果:

  全模式细分结果:北京,北京邮电大学,北京邮电大学,邮电大学,电大,大学,教育,教育部,直属,工业,和谐,信息,信息化,部,

  共建,第一批,提前批,211,工科,建设,全国,重点大学

  精确分词结果3360北京邮电大学是,教育部直属、工信部、部、共建、第一批、开展,“、211工程”、“建设、国家、重点、

  大学

  搜索引擎模式分词结果:北京,邮电,电大,大学,北京邮电大学,is,教育,教育部,直属,工业,和,信息,信息化,部,共建,第一批,进行,

  “,211,工科,“,建筑,国家,重点,大学相关推荐:《Python视频教程》

  通过分析上面代码的结果,我们可以看到,全模式分词是提取文本中的所有单词,单词呈现的窗口是允许重叠包含的。单词中的单词可以多次出现,但这种分词模式可能会有歧义。准确分词是指文本分割准确,构词法较长,没有构词法窗口的重叠和重复。这种分词模式产生歧义的概率比较小,但有可能是分词窗口过大,一些关键词不会单独出现在结果中。综上所述,这两种分词模式适用于不同的情况,要酌情选择。

  值得一提的是,这个例子中的“工业和信息化部”应该也是一个独立的术语,但是这个词在三种分词方法中都没有出现,所以需要通过手动添加词库来实现,放在下一部分。

  试试文中可能的歧义:

  “南京长江大桥是一座大桥”

  try_words=jieba.cut(text2,cut_all=True)

  打印(全模式分词结果: ,)。加入(try_words))

  try_words=jieba.cut(text2,cut_all=False)

  打印(精确模式分割结果: ,)。加入(try_words))

  try _ words=jieba . cut _ for _ search(text 2)

  打印(搜索引擎模式分词结果: ,)。join(try_words))这个例子中的文字是“南京长江大桥是一座桥”。我们希望提取的分词结果应该是:“南京长江大桥”,或者最后一个词应该是“

  南京市”和“长江大桥”两个词语,上述代码的运行结果为:

  

全模式分词结果:南京,南京市,京市,市长,长江,长江大桥,大桥,是,一座,大桥

分析结果:三种模式当中都没有出现我们的最佳预期(南京市长江大桥),反而在全模式和搜索引擎模式下的分词结果当中出现了歧义词(市长、京市),这跟我们的语境显然是无关的,这也恰好反映了全模式和搜索引擎模式分词的一个缺陷,也就是容易出现与语境无关的歧义词,而精确模式出现的比较少。

 

  至于为什么会出现上述情况,我在查阅相关资料之后,认为原因如下:

  中文分词的方法大致可以分为三类:

  基于字典、词库匹配的分词方法;基于词频度统计的分词方法和基于知识理解的分词方法(另外还有逐词遍历法,但是因为不论文本有多么短,词库多么大都要逐词遍历一遍,效率过低,所以说大部分情况不予采用)。一般的中文分词模块使用基于字典、词库的分词方法,全模式使用的策略为(设词典中最长词的长度为n):从字段的第一个字符开始,向后读取1,2,...n个字符,并且到词典当中去对应,如果能对应上,就将其取出来,这样就可以达到将所有可以成词的字段提取出来(并且有重复部分)的目的;而相应的,精确模式的分词策略则可能是尽可能将取词窗口扩大,也就是在可能含有重复的长度从1到n的这些词中,取最长的一个输出。

  (上述的“原因”只是我在使用分词模块的各个模式时的一点个人看法,不一定正确,对于项目也没有什么影响,毕竟我也没有去专门研究过源码。。。)

  4.jieba分词添加自定义的词典

  中文分词常常用于许多特定的语境,相应的也就需要添加一些特定语境下的词典,比如上一部分的“南京市长江大桥”就属于“地标建筑”之类的词典,如果分词将其分为“南京市”和“长江大桥”就有可能不能完全反映出原文本的重点(毕竟南京市的东西很多,长江大桥也不止南京市有),这种时候我们就需要添加自定义的词典来提高分词的质量。

  

jieba.add_word('工业和信息化部')

使用jieba模块的add_word()方法即可对其加入新的词,插入之后的分词结果如下:

 

  

全模式分词结果:北京,北京邮电,北京邮电大学,邮电,邮电大学,电大,大学,是,教育,教育部,直属,,,工业,工业和信息化部,信息,

主要的改变在于全模式和搜索引擎模式直接加入了这个词,而精确模式则是将新加词的子集词(姑且这么称呼)取代了,这也符合上一部分的假设。

 

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

相关文章阅读

  • python语言基本语句用法总结大全,python语言基本语句用法总结怎么写
  • python语言基本语句用法总结大全,python语言基本语句用法总结怎么写,python语言基本语句用法总结
  • python是一种什么类型的计算机语言,python语言是一种什么类型的编程语言
  • Python的保留字符,python语言中的保留字
  • python的指数e怎么表示,指数函数在python语言中怎么表示
  • python语言合法的变量命名,在python中变量的命名要注意哪些问题
  • python变量命名可以用中文吗,下面哪一个不是python语言合法的变量命名
  • Python分词库,用python语言中文分词第三方库jieba对文件data
  • python中复数类型的实部和虚部都是浮点数,python语言中,复数类型中实数部分和虚数部分
  • 用python语言判断一个数是否为素数,Python判断是不是素数
  • python语句变量命名规则,python语言命名变量规则
  • 简述python语言程序的特点,以下关于python语言技术特点
  • matlab中for循环的用法例子,python语言for循环语句
  • Python主网站,python语言的官方网站
  • 用python开发的软件有哪些,哪些工具可以使用python语言开发软件
  • 留言与评论(共有 条评论)
       
    验证码: