由于有开源社区的存在,很多问题都不需要从头到尾的去解决了。而是可以站在前人的翅膀上直接摘取成熟的果实。
这样就会导致我们忽略一项技术在曾经的发展过程中克服的种种困难。可只有回忆这些困难。我们才能真切的了解到中文分词技术的本质。
中文分词技术经历了20年的发展。取得了很大的进步。主要体现在四个方面。
1.通过使用“分词规范+词表+分词语料库”的方法。中文词汇得到了清晰的界定。使得中文分词工具的评测得到了可计算的定义。
2.经过实践证明,基于统计学习的分词工具要优于基于人工规则的分词工具。
3.经过评测结果表明。未登录词所造成的分词精度下降至少比分词歧义大5倍以上。
4.实验结果表明。字标注统计学习方法能够大幅度提高未登录词的识别率
这些进步恰好折射出了中文分词所面临的四大难题。而这四个难题或多或少的还在影响开发者们。
如何清晰的界定中文词汇
我们要评测一个中文分词工具的好或者坏,至少要有一个清晰的判定标准。
那么我们首先就要知道。词在百科里面是如何定义的:
词是最小的能够独立运用的语言单位。能单说有意义的或者用来造句的最小单位。如:海、太阳、经济学、温故知新等。
而事实上这些模棱两可的定义是无法在实际的评测中计算的。即使是母语都为汉语的中国人之间。中文词汇的平均认可率也只有0.76左右。
举个例子,让大家实际感受下:
坚定实施科教兴国策略
坚定/实施/科教/兴国/策略
坚定/实施/科教兴国/策略
其中“科教兴国”既可以整体切分成【科教兴国】,也可以切碎成【科教】和【兴国】,都符合之前百科里面的定义。也都合情合理。
这样的例子还有很多;
尽管如此世界依然美丽
尽管/如此/世界/依然/美丽
尽管如此/世界/依然/美丽
那么是组合还是切碎,就成了公说公有理,婆说婆有理的事情了。可是在研究中文分词技术的时候,我们就需要一种可计算方法,来处理这一类的问题。
是先分词后理解,还是先理解后分词
人类在识别句子中的词汇的时候。是以先理解为前提的。然后才会从句子中提取词汇。而计算机想要完全模仿人类的分词模式基本上是不可能的。因为计算机在处理中文分词的时候。只能依据文本的表层信息。
但是还是有很多人去尝试这种先理解后分词的方案。其核心思想就是把分词的决定放在句法分析的过程中去解决。这样就需要一个强大的,基于句法-语意规则的句子分析系统。
微软研究院的自然语言研究所就开发了一个这样的通用语言处理平台NLPwin,NLPwin的中文处理模块的特点就是将中文分词同句法分析融合起来。
然而这样的一套中文分词工具严重依赖人工规则的质量和数量,即便在不考虑成本的情况下,在国际中文分词评测活动中还是不敌基于统计学习的中文分词工具。
在中文分词解决方案的选择上,先分词后理解得到了理论和评测数据的双重肯定。
中文分词歧义的问题
如果你想了解一个人是否真的搞过NLP,那么最简单的方法就是问他关于中文分词歧义的问题。
这里先举个例子:
羽毛球拍卖完了
羽毛球/拍卖/完了
羽毛球拍/卖/完了
这两种切分方式,无论从语法上,还是语义上都是正确的。但是确是两个完全不同的意思,这就是导致中文分词精度不高的原因之一。
概括起来中文分词歧义主要有两种类型。分别是交集型歧义和组合型歧义
交集型歧义
用一个直观的形式表示交集型歧义就是:ABC。既可以切分成AB/C,也可以切分成A/BC。
例子:
工作的和尚未工作的
工作/的/和/尚未/工作/的
工作/的/和尚/未/工作/的
这个句子中的“和尚未”,就是符合交集型歧义。虽然对人来说将这个例子中的句子切分正确毫无难度。但是对于计算机来说。这两种结果是完全一样的。
组合型歧义
同样用一个直观的形式表达组合型歧义就是:AB。既可以组合成AB,也可以组合成A/B
例子:
希望你们再创新的业绩
希望/你们/再/创/新/的/业绩
希望/你们/再/创新/的/业绩
这个例子中的“创新”。就是符合组合型歧义。同样对于人来说,这个例子很好处理,但是对于计算机来说。反而是更加倾向于第二种结果。
未登录词的识别问题
歧义问题对于中文分词的精度影响很大。但是在未登录词面前他就是一个弟弟。
通过大量的评测结果表明。未登录词对精度的影响是歧义问题的5倍以上,所以孰轻孰重,立分高下。
未登录词其实不难理解。就是没有被收录到分词词典里面的词。这样的词类型有很多:人名、机构、缩写词、新增词等等。
然而这些类型的词往往对实际业务有很大的价值。是分词结果考察的重点。
当然已经有了很多的方法。可以自动识别未登录词,比如:HMM,CRF等。
HMM:隐马尔代夫模型,是统计模型。它用来描述一个含有隐含未知参数的马尔代夫过程。 CRF:条件随机场,是给定一组输入序列条件下另外一组输出序列的条件概率分布模型。
总结
中文分词现在主要面临以下的4个难点,如果说想要做一款好的中文分词工具。必须将以下的难点处理妥当:
- 如果清晰的界定中文词汇
- 是先解决分词后理解,还是先理解后分词
- 中文分词的歧义问题
- 未登录词的识别问题