Macropodus中文分词方法综述详解(CWS, chinese word segment)

一、Macropodus简介

        Macropodus自然语言处理工具(Albert+BiLSTM+CRF) 拥有中文分词 命名实体识别 新词发现 关键词 文本摘要 计算器 中文

数字阿拉伯数字转换等算法,其中,中文分词无疑是最最重要的,对于一个通用的自然语言处理工具来说。

        github地址: https://github.com/yongzhuo/Macropodus

二、 中文分词概述

        中文分词,是东亚地区自然语言处理NLP所独有的一个任务,包括CJKV(中日韩越统一表意文字),即Unicode编码。这

是一种有别于字母文字(语言以空格间隔)的分词方法。这是汉文化圈独有的自然语言,人类智慧的结晶。当然,这种高级的语

言也带了高难度的挑战,那就是分词的挑战。

       不同于英文等语言,中文分词的难点在于 :

               1、中文分词标准不统一(主要是粒度,例如"/姜嫄嫄/","/姜/嫄嫄/");

               2、未登录问题(即新词,如网络新词"给力","坑爹", "盘它"等);

               3、歧义问题(如句子"民可使由之不可使知之")

               4、复合词的识别(限定量词,重叠词,派生词,例如"一个个", "范范范玮琪", "上班族", "气功热")

               5、专有名词的识别(例如"哈工大SCIR实验室")

       从某种意义上说,标点符号未被创造前,中国古代的"断句","句读"也是一种广义上的分词,或者更说是分句。那么,这一

延续了五千多年的难题,在新时代,信息时代,互联网时代,尤其是移动互联网时代、人工智能时代,有了怎样的进展呢,下面

我们一一道来。

 
三、 分词方法大全

       1.自我感触

        从80年代末九十年代电脑走进千家万户,尤其是互联网的迅猛发展,中文分词算法也得以快速发展。第一次接触中文分词算法,是在使用Java版全文检索引擎Lence的时候。当时感觉到内置的CJKAnalyzer算法很不错。记忆中,印象中最深刻的开分词算法,无疑是IKAnalyzer了,准确,轻量,高效,当时就为这个算法深深所吸引。这种机械式分词,让我感受到的是,工业时代那摧毁一切的神秘力量。

        后来又慢慢接触了ansj和HanLP,深深为其所着迷。其强大的性能,以及无与伦比的用户体验,让我感受到了开源运动的强大魅力。传统机器学习的有监督算法散发出强大的力量,由于其超高的准确率和新词发现效能,开始统治江湖,透露出无与伦比的统治力量。

        深度学习兴起以后,python火了,其高效、简洁的编程思想深深震撼了我,这时候我又接触到了Jieba、snownlp等,查看他们的原理,我不禁感慨万千。近年来,开源社区迅猛发展,THULAC-Python, pkuseg-python, Jiagu, Jiayan, Macropodus等优秀开源NLP工具不断涌现,带给我们的不只感动,还有不断踏上新征程的信息。

        近些年来,大数据与云计算的发展,百度、阿里、腾讯、搜狗等互联网企业;哈工大、复旦大学、清华北大等院校科研机构;更是把分词、词性标注、实体识别等通用NLP任务做成微服务,就像蓄水池一样,提供线上流量计算。

        新时代新发展新征程,我感觉十分有必要,回顾一下中文分词的发展历程,只有铭记历史,我们才能更好地引领未来。

2.中文分词历史

        历史早已久远,很多也找不到资料,我们只能从别人的历史回顾、中文分词比赛、里程碑式论文等,探究那不为人知的历史进程。

        自然语言处理是人工智能的终极目标之一,二十世纪以前,中文分词还是传统规则分词的天下。必须指出的是,中文分词是随着电子技术的发展而发展起来的,尤其是文本翻译(中外翻译)、电脑录入(拼音输入法)、搜索引擎等的推动作用。自动化是解放劳动力的、提高劳动生产效率的必由之路。人们一直希望能够让机器达到自动翻译、自动搜索检索的目标,达到这些目标的关键点在于理解词义、语义等,其中最基础的便是分词,划分出中文的基本单元之一。中文分词是如此基本和基础的任务,以致于人们很早就开始研究它们。在二十一世纪以前,东北亚地区的人们逐渐总结出了一套有效的分词方法。

         第一种流派是字符串匹配派,纯字典式的,基于词典的高效分词方法,也称机械分词方法,诸如”反向切词”、”正向切词”、 “近邻匹配算法”、“双向切词”、”最大切词”、“最小切词”、“最短路径匹配算法”、“最大最小切词”等。这一大批高效、准确的机械分词方法实质就是字符串匹配。构建一个好的词库,优化工程,准确率便能达到70%-80%。必须要需要指出的是,这个流派的集大成者是mmseg4J算法,论文《Word Identification_For_Mandarin Chinese Sentences》,1992年论文中总结的6条规律,歧义消除的成功率可以达到99.77%,至今仍然被广泛使用。

         第二种流派是传统统计学派,这里的统计学派指的是狭义上的统计学派。基于统计学的分词方法一般也需要海量的中文语料库,统计挖掘语言的统计信息,结合构建语言模型来分词,如”N-Gram信息”。统计是非常有必要的,是数据挖掘的重要基石。该流派最出名的算法要数”最大概率分词算法”了,在一个大的语料库中,成词的字共同出现的概率是比较大的,这也是新词发现的理论基础。

       利用N-Gram和马尔可夫链原理当前词的出现只与其前一个词出现有关,所以一个句子分词的概率就等于句中各个词语出现概率的乘积。利用这一思想,python语言编写的jieba中的最大概率分词方法,结合字典和动态规划,开发出史上最成功的中文分词算法,github上star超过20k。

         第三个流派是传统机器学习派, 机器学习,有监督的学习。2002年第一篇字标注中文分词论文《Combining Classifiers for Chinese Word Segmentation》的发表,标志着机器学习在分词领域中得到应用。随后2003年的论文《Chinese Word Segmentation as LMR Tagging》,使用最大熵训练的字标注分词算法,在Bakeoff2003的测评中,OOV召回率取得了最好成绩,由此,字标注的方法开始得到重视,并迅速催生到ME、SVM、CRF和特征抽取的比拼上,其影响延续至今。

        其中,近来喧嚣一时的LTP、THULAC和pkuseg,使用的便是特征提取+CRF方案。

        第四个流派是深度学习派,该派别也是多使用有监督的学习方案,主张引入更多的外部信息(如字/词/句embedding、外部字典),以达到更好的分词效果。在Bakeoff开放测试效果已经超出了传统机器学习方法。近来的热点,如多标准语料协同训练(如pku数据集和msra数据集),多任务联合训练(如分词和词性标注),前景更是不可估量。现在多用得比较多的网络架构还是Embedding + BI-LSTM+CRF等,如万年老版本0.39的Jieba加入了paddlepaddle深度学习框架的双向GRU分词模型,HanLP也全部转python,上线了BERT等embedding的各种模型(tensorflow=2.1.0),展露头角的Jiagu是基于tensorflow1.5和BiLSTM。

        第五个流派是语义理解派,该派别认为要从句法分析、语义理解的基础上进行分词,如文法、依存句法等。不过似乎历史上并没有做出很大的成果,由于系统复杂,效果不佳,暂时没有了声音。近年来的联合训练,倒是可以勉强划分部分进入这个派别。

        

四、 Macropodus分词实践简述

        中文分词CWS:

                       1.  使用Embedding(char,word,albert) + BiLSTM + CRF网络架构(或单独BiLSTM, 单独CRF)

                       2.  使用4标注法BMES,使用人民日报199801语料训练

                       结论: acc等只能达到80%,甚至不如词典分词,原因未知(可能是语料不足,无规律性的上下文信息)

        词性标注POS:

                      1.  使用Embedding(char, albert) + BiLSTM + CRF词性标注

                       2.  使用3标注法BIO,使用人民日报199801语料训练

                       结论: acc等只能达到97%左右,效果还可以,应该是有上下文的原因

        命名实体提取NER:

                      1.  使用Embedding(char, albert) + BiLSTM + CRF词性标注

                       2.  使用3标注法BIO,使用人民日报199801语料训练

                       结论: acc等只能达到97%左右,效果还可以,应该是有上下文的原因

希望对你有所帮助!

发布了97 篇原创文章 · 获赞 74 · 访问量 13万+

猜你喜欢

转载自blog.csdn.net/rensihui/article/details/103965716