电商| 物流| 科技| 创业| 经商| 运营| 科普| 财经| 文娱| AI| 物联| 品牌| 会议| 政策| 时尚| 健康| 家居| 金融| 农业| 汽车| 房产| 百科| 生活| 游戏| 管理| 快讯
 
首页 » 资讯 » 科技 » NLP入门干货:手把手教你3种中文规则分词方法

NLP入门干货:手把手教你3种中文规则分词方法

放大字体  缩小字体 时间:2020-10-29 08:21    热度:208
在自然语言理解中,词(token)是最小的能够独立活动的有意义的语言成分。将词确定下来是理解自然语言的第一步,只有跨越了这一步。。。

在自然语言理解中,词(token)是最小的能够独立活动的有意义的语言成分。将词确定下来是理解自然语言的第一步,只有跨越了这一步,中文才能像英文那样过渡到短语划分、概念抽取以及主题分析,以至自然语言理解,最终达到智能计算的最高境界。因此,每个NLP工作者都应掌握分词技术。

1. 分词的概念和分类

“词”这个概念一直是汉语言学界纠缠不清而又挥之不去的问题。“词是什么”(词的抽象定义)和“什么是词”(词的具体界定)这两个基本问题迄今为止也未能有一个权威、明确的表述,当今更是没有一份令大家公认的词表。

问题的主要难点在于汉语结构与印欧体系语种差异甚大,对词的构成边界很难进行界定。比如在英语中,单词本身就是“词”的表达,一篇英文文章的格式就是“单词”加分隔符(空格)。

而在汉语中,词以字为基本单位,但是一篇文章的语义表达却仍然是以词来划分。因此,需要针对中文汉字,将其按照一定的方式进行组织,分成不同的词。

中文分词是让计算机自动识别出句子中的词,然后在词间加入边界标记符。这个过程看似简单,然而实践起来要复杂得多,主要困难在于分词歧义。

下面以NLP分词的经典场景为例进行说明,短语“结婚的和尚未结婚的”,应该分词为“结婚/的/和/尚未/结婚/的”,还是“结婚/的/和尚/未/结婚/的”呢?对于这个问题,机器很难处理。此外,像未登录词、分词粒度粗细等都是影响分词效果的重要因素。

自中文自动分词被提出以来,历经近30年的探索,先后出现了很多分词方法,可主要归纳为规则分词、统计分词和混合分词(规则+统计)这3个流派。最近这几年又兴起了以深度学习的方式进行分词,比如BILSTM+CRF。

规则分词是最早兴起的方法,主要通过人工设立词库,按照一定方式进行匹配切分,其实现简单高效,但对没有录入词库的新词很难进行处理。

随后统计机器学习技术兴起,应用于分词任务上就有了统计分词方法。该方法能够较好地应对新词发现等特殊场景。然而在实践中,单纯的统计分词也有其缺陷:太过依赖语料的质量。因此实践中多是采用规则分词和统计分词这两种方法的结合,即混合分词。

2. 规则分词

基于规则的分词是一种机械分词方法,需要不断维护和更新词典,在切分语句时,将语句的每个字符串与词表中的每个词进行逐一匹配,找到则切分,找不到则不予切分。

按照匹配划分,主要有正向最大匹配、逆向最大匹配以及双向最大匹配这3种切分方法。

1. 正向最大匹配

正向最大匹配(Maximum Match)通常简称为MM法,其执行过程如下所示。

从左向右取待切分汉语句的m个字符作为匹配字段,m为机器词典中最长词条的字符数。 查找机器词典并进行匹配。若匹配成功,则将这个匹配字段作为一个词切分出来。若匹配不成功,则将这个匹配字段的最后一个字去掉,剩下的字符串作为新的匹配字段,进行再次匹配,重复以上过程,直到切分出所有词为止。

比如我们现在有个词典,最长词的长度为5,词典中存在“南京市长”“长江大桥”和“大桥”3个词。

现采用正向最大匹配对句子“南京市长江大桥”进行分词,那么首先从句子中取出前5个字“南京市长江”,发现词典中没有该词,于是缩小长度,取前4个字“南京市长”,词典中存在该词,于是该词被确认切分。

再将剩下的“江大桥”按照同样方式切分,得到“江”“大桥”,最终分为“南京市长”“江”“大桥”3个词。显然,这种结果不是我们所希望的。正向最大匹配法示例代码如下。

class MM(object):     def __init__(self):         self.window_size = 3      def cut(self,text):         result=[]         index=0         text_length = len(text)         dic = ['研究','研究生','生命','起源']         while text_length > index:             for size in range(self.window_size+index,index,-1):#4,0,-1                 piece = text[index:size]                 if piece in dic:                     index = size-1                     break             indexindex = index + 1             result.append(piece)         return result 

分词的结果如下所示,这个结果并不能让人满意。

text = '研究生命的起源' tokenizer = MM() print(tokenizer.cut(text)) 

输出结果如下所示。

['研究生', '命', '的', '起源'] 

2. 逆向最大匹配

逆向最大匹配简称为RMM法。RMM法的基本原理与MM法大致相同,不同的是分词切分的方向与MM法相反。

逆向最大匹配法从被处理文档的末端开始匹配扫描,每次取最末端的m个字符(m为词典中最长词数)作为匹配字段,若匹配失败,则去掉匹配字段最前面的一个字,继续匹配。相应地,它使用的分词词典是逆序词典,其中的每个词条都将按逆序方式存放。

在实际处理时,先将文档进行倒排处理,生成逆序文档。然后,根据逆序词典,对逆序文档用正向最大匹配法处理即可。

由于汉语中偏正结构较多,若从后向前匹配,可以适当提高精确度。所以,逆向最大匹配法比正向最大匹配法的误差要小。

统计结果表明,单纯使用正向最大匹配的错误率为1/169,单纯使用逆向最大匹配的错误率为1/245。比如之前的“南京市长江大桥”,按照逆向最大匹配,最终得到“南京市”“长江大桥”的分词结果。

当然,如此切分并不代表完全正确,可能有个叫“江大桥”的“南京市长”也说不定。逆向最大匹配法示例代码如下。

class RMM(object):     def __init__(self):         self.window_size = 3      def cut(self, text):         result = []         index = len(text)         dic = ['研究', '研究生', '生命', '命', '的', '起源']         while index > 0:             for size in range(index-self.window_size ,index):                 piece = text[size:index]                 if piece in dic:                     index = size + 1                     break             indexindex = index - 1             result.append(piece)         result.reverse()         return result 

分词的结果如下所示,这个结果就很准确了。

text = '研究生命的起源' tokenizer = RMM() print(tokenizer.cut(text)) 

输出结果如下所示。

['研究', '生命', '的', '起源'] 

3. 双向最大匹配

双向最大匹配法是将正向最大匹配法得到的分词结果和逆向最大匹配法得到的结果进行比较,然后按照最大匹配原则,选取词数切分最少的作为结果。

据Sun M.S.和Benjamin K.T.研究表明,对于中文中90.0%左右的句子,正向最大匹配和逆向最大匹配的切分结果完全重合且正确,只有大概9.0%的句子采用两种切分方法得到的结果不一样,但其中必有一个是正确的(歧义检测成功),只有不到1.0%的句子,或者正向最大匹配和逆向最大匹配的切分结果虽重合却都是错的,或者正向最大匹配和逆向最大匹配的切分结果不同但两个都不对(歧义检测失败)。这正是双向最大匹配法在实用中文信息处理系统中得以广泛使用的原因所在。

前面列举的“南京市长江大桥”采用双向最大匹配法进行切分,中间产生“南京市/ 江/ 大桥”和“南京市/ 长江大桥”两种结果,最终选取词数较少的“南京市/ 长江大桥”这一结果。

双向最大匹配的规则如下所示。

(1) 如果正反向分词结果词数不同,则取分词数量较少的那个结果(上例:“南京市/江/大桥”的分词数量为3,而“南京市/长江大桥”的分词数量为2,所以返回分词数量为2的结果)。

(2) 如果分词结果词数相同,则:

分词结果相同,就说明没有歧义,可返回任意一个结果。 分词结果不同,返回其中单字较少的那个。比如前文示例代码中,正向最大匹配返回的结果为“['研究生', '命', '的', '起源']”,其中单字个数为2个;而逆向最大匹配返回的结果为“['研究', '生命', '的', '起源']”,其中单字个数为1。所以返回的是逆向最大匹配的结果。

参考代码如下所示。

#统计单字成词的个数 def count_singlechar(word_list):     return sum(1 for word in word_list if len(word) == 1)  def bidirectional_segment(text):     mm = MM() rmm = RMM()     f = mm.cut(text)     b = rmm.cut(text)     if (len(f) < len(b)):         return f     elif (len(f) > len(b)):         return b     else:         if (count_singlechar(f) >= count_singlechar(b)):             return b         else:             return f 

最后我们验证一下效果。

print(bidirectional_segment('研究生命的起源')) 

输出结果为:

['研究', '生命', '的', '起源'] 

基于规则的分词一般都较为简单高效,但是词典的维护面临很庞大的工作量。在网络发达的今天,网络新词层出不穷,很难通过词典覆盖所有词。另外,词典分词也无法区分歧义以及无法召回新词。

在实际项目中,我们是否会考虑使用规则分词?

虽然使用规则分词的分词准确率看上去非常高,但是规则分词有几个特别大的问题:

不断维护词典是非常烦琐的,新词总是层出不穷,人工维护费时费力; 随着词典中条目数的增加,执行效率变得越来越低; 无法解决歧义问题。  

关于NLP入门干货:手把手教你3种中文规则分词方法的要点介绍,希望对大家了解NLP入门干货:手把手教你3种中文规则分词方法有所帮助,如有侵权,联系我们37442552@qq.com。
 
你可能感兴趣:
 
芬兰政府指责微软对诺基亚始乱终弃 承诺一个都

2016-05-28

本周早些时候,微软宣称它将会裁减1850个工作岗位,其中有1350个工作位于芬兰。人们认为微软裁员之举预示着该公司新手机开发工作的终结。据外电报道,芬兰政…

三星最新发布的C5酷似iPhone 6 售价只有后者一半
三星最新发布的C5酷似iPhone 6 售价只有后者一

2016-05-28 三星 C5

三星最新发布的C5酷似iPhone 6 售价只有后者一半;三星周四在中国市场发布的最新款智能手机C5酷似苹果iPhone 6和6S。

苹果下架腾讯全系产品只是虚惊一场 淘宝、京东

2016-05-29 苹果 腾讯 APP

苹果下架腾讯全系产品只是虚惊一场 淘宝、京东等APP也未能幸免;苹果下架腾讯全系产品,搜索出现大面积瘫痪,淘宝、京东等APP也未能幸免。据了解,腾讯也曾因…

华为为何要在此时向三星发起专利战?背后的原因究竟是什么?
华为为何要在此时向三星发起专利战?背后的原因

2016-05-29 华为 三星 专利

华为为何要在此时向三星发起专利战?背后的原因究竟是什么?作为中国企业的华为,其在专利,尤其是与通信相关的专利的申请和积累在全球均名列前茅。而华为之…

2016中国互联网大会时间地点主题 互联网大会有何亮点?
2016中国互联网大会时间地点主题 互联网大会有

2016-06-02 2016 中国 互联网 大会

 由中国互联网协会主办的2016(第十五届)中国互联网大会将于6月21-23日在北京国际会议中心举行。本届大会主题为“繁荣网络经济 建设网络强国”。

Facebook周四下架了突发新闻通知应用Notify
Facebook周四下架了突发新闻通知应用Notify

2016-06-04 Facebook Notify

Facebook周四下架了突发新闻通知应用Notify;Facebook发言人在发给科技博客The Verge的声明中表示,Notify采用的技术将集成到Messenger中,所以内容发布商可…

阿里回应被SEC问询 马云:那并不代表公司有问题

2016-06-04

近期,阿里巴巴接受美国证券交易委员会问询,16年来日本软银集团首度出售手中阿里股份,阿里股价震荡,相关消息持续引发关注。2

iphone7上市时间确定 国行或5288元起售

2016-06-04

根据国外网站PC-Tablet的报导称,苹果仍将下一代iPhone的发布时刻定在今年9月份,至于详细日期则为美国当地时刻9月9日或9月16日

印度最大手机厂商明年来华抢市场 有戏吗?

2016-06-04

Micromax联合创始人维卡斯贾因(VikasJain)当天在香港举办的一场科技大会上表明,公司的目标是在2020年前变成按销量核算的全球第

索尼Xperia X系列终于要来了6月8日携手周杰伦发

2016-06-04

索尼的手机一直以来都是以拍照以及颜值闻名的,在今年的MWC2016大会上,索尼曾经发布了一款Xperia X系列产品中的Xperia XPerform

 
热点图文
三星最新发布的C5酷似iPhone 6 售价只有后者一半

三星最新发布的C5酷似iPhone 6 售价只有后者一半

华为为何要在此时向三星发起专利战?背后的原因究竟是什么?

华为为何要在此时向三星发起专利战?背后的原因究竟是什么?

2016中国互联网大会时间地点主题 互联网大会有何亮点?

2016中国互联网大会时间地点主题 互联网大会有何亮点?

Facebook周四下架了突发新闻通知应用Notify

Facebook周四下架了突发新闻通知应用Notify

戴尔确认出售软件业务:4年净赔16亿美元

戴尔确认出售软件业务:4年净赔16亿美元

沉迷于成人VR的日本年轻人  年轻男女都拒绝恋爱(图)

沉迷于成人VR的日本年轻人 年轻男女都拒绝恋爱(图)

今日头条母公司字节跳动科创板上市成功几率多大?

今日头条母公司字节跳动科创板上市成功几率多大?

余承东回应:华为开发自有系统 以防美国科技巨头不授权现有系统

余承东回应:华为开发自有系统 以防美国科技巨头不授权现有系统

 
经商宝 — 经商创业营销推广电子商务门户 网站地图 | 关于我们 | 特惠服务 | 人才招聘 | 联系我们 | 法律声明