自然语言处理04 - 解决未登录词问题

544 阅读4分钟

当我们很好的解决了中文分词歧义问题之后,另外一个更加头痛的中文分词问题就冒了出来----未登录词。之前的学习有关于未登录词的介绍,大家可以往前面看一下。

现在大家掏出手机,随便翻看一下各个App里面的文字内容。就很容易找到大量的未登录词。

中文和英文有很大的区别,不仅没有自然的分割符,还没有首字母大写一说,同时中文的专名号实际使用情况也很少,种种原因导致的中文未登录词识别极其困难。最近10多年来,中文分词领域都在攻克这一个难关。

专名号(_),用于表示人名,地名,朝代名,种族名、国名、机构名等专名使用的符号。

根据数量的多少,识别的难易,以下是各种类型的未登录词的分布。

图片.png

地名

地名类未登录词的数量是有限的,可以枚举出来。

虽然地名的词汇非常的分散,不容易发现什么识别规则,但是由于国家相关机构的存在,会专门收集这些地名。在最新的《中华人民共和国地名录》里面,已经收录了10万多个地名,从平原到核电站几乎覆盖了所有的地名。这让中国的地名识别变得非常的容易。

人名

人名类数量非常多,但是也是有很强的规律性存在的。根据统计,中国的性氏大约有1000多个。其中“王”、“李”、“张”、“陈”、“刘”五大姓氏的覆盖率高达32%,前400个性氏覆盖率高达99%。

同时人名还会和一些固定词进行搭配,比如说:“说”、“拿”、“看”等。这些特征导致识别人名类的难度相对容易一点。

当然人名类还是有很多难识别的例子,举一个案例:“陈大为妻子生下一名女婴”,陈大是谁?这么厉害 哈哈哈。

机构名

机构类识别难度主要体现在左边界的判断,右边界一般都是一些比较固定的后缀,比如说:“公司”、“大学”、“医院”,“协会”等。数量方面比较有限,增长速度也不是很快。

品牌名

品牌名类的识别难度有了很大的提升,品牌名千奇百怪,同时还有常用词做品牌名的,比如:“苹果”、“小米”、“联想”等。数量也很多,增速也不慢。

缩写

缩写类就更加无奇不有了,大家可以猜猜“编协年会“是什么的缩写?答案根本想不到,竟然是“自由编程协会年度晚会”的缩写。这样的例子还有很多。比如“二监”、“人影办”等。可见识别难度之大。并且数量还很多。

未登录词的识别还是留给我们很大的进步空间,让我们一起努力,争取早日啃下这块硬骨头。

基于统计的抽词算法

“概率论和数理统计”可以说是解决任何NLP任务的神器,很多问题通过概率的角度去诠释,会变得异常清晰,并且更加容易解决。可以说概率思想就是贯穿NLP的核心思想之一。

言归正传,既然我们是想要识别未登录词。那么我们就可以大胆一点,直接放弃现有的词典,直接从文本语料里面抽词。再拿抽好的词与现有的词典进行对比。就知道发现了哪些新词。

要如何抽词呢?根据上面内容的描述,基于规则的方法这条路是走不通了,接下来我们自然就会想到基于统计的方法。可以通过全局的角度去解决问题,忽略掉错综复杂的各种规则。

既然我们选择了基于统计的方法,就需要理解一个重要的统计学概念----大数定律。

大数定律:在相同的条件下,随着实验次数的增多,频率越来越接近于概率。注意大数定律陈述的是一个随着n趋向于无穷大的时候频率对于真实概率的一种无限接近的趋势。

所以想要一个准确的结果,就需要一个足够大的语料库,并且内容也要足够丰富。一开始随着语料库规模的不断提高,结果也会随之提高,但是当规模达到一定的程度的时候。结果基本趋于稳定,说明语料库的规模已经足够大了。结果已经收敛。