中文句子处理之句子错误检查——顺便为跳票道歉

句子相似度计算已将跳票好久了,工作的事情一直比较忙也没有时间再做,这阵子轻松一点了会慢慢补上(反正已经厚着脸皮跳票快一年了)。有个机会接触到了句子错误检查,突发奇想利用之前的句子依存关系分析做了一个句子错误检查的程序。
说技术实现之前先要老生常谈一个依存关系的问题,一个词在句子中的位置基本上是固定,大家可以结合词性来理解。比如英语中,一个单词的词性是固定的,当年写英语题目判断错误的一个重要手段就是看单词的词性是否是正确的,如果这个单词根本没有这个词性,虽然我不知道它错在哪里但基本能肯定这个句子是错的。这个方法简单粗暴,但确确实实很实用。实际上,我看到的文献,句子错误检查最早的思路就是进行词性判读。这一点大家可以在中科院分词的具体实现中看出端倪,HMM算法的基础就是词性,然后将这个词最可能出现的位置算出来,也顺带进行了一次句子错误检查,大量歧义也在此时被检查出来。这个大家可以看我之前写的歧义分析那篇文章。
那么我们还有什么方法进行句子的错误检查呢?概率!这个就非常宽泛了,想法从简单到复杂都有。最简单的想法,一个字可能出现的概率非常低,但它在句子中出现了,我们就可以怀疑是不是写错字了,那么将写法相似的字或者读音相似的字拿过来,判断一下看看是不是正确的。这种方法显然对一些生僻字非常实用。
另一个想法,我们可以将所有容易弄错的句子或者短语统计出来,然后判断句子中是否含有这种错误。这种方法主要针对方言,因为方言发音的问题经常将一个词错写成另外的词。这种方法高效,但是统计错误数据库的工作太复杂,只有机构和国家级别才能做到。当然,可以将这种范围缩小到个人,每个人书写习惯不同,犯的错误往往相同。
写到这里大家应该已经发现了,对,我一直在灌水,什么有用的都没说呢。
除了上面的概率的方法,还可以用纯算法解决。利用词性来判断句子错误是很准确的,但局限性太大了,粒度实在太粗了。那么结构分析结合词性的方法被提出了,至于句子结构分析。。。。我好像也写过一篇博客,简单来说就是句式。比如最简单的句式,主谓宾,那么能充当主语的也就只有几个词性(在中文里面,请不要讨论从句一说,标准的中文是没有从句的,这个涉及到中西方差异,本文不做赘述,我写过讨论帖),如果出现不可能出现在这个位置的词性就可以被认为是错误。这个方法在外文还是挺好用的,在中文就有点水土不服,毕竟中文句式难以总结,中文太灵活了。这部分我没有做出来,对我来说难度太大了,也希望有谁能总结出来。
下面的方法是我做出来的,把上面的方法粒度再细一点,就成了依存关系,依存关系是可以绕过句式展现句子结构的方法。那么任意一个词可能出现的依存关系是有限的,如果出现了特别低概率或者根本不存在的情况,就可以认为是有错误。我使用的训练集不是太大,效果只能说一般,但惊奇得发现对类似于“的”“得”“地”的分析相当准确,出人意料。这一点在错误判读中是比较头疼的问题,就算是人都很容易弄错。因为样本集要保证完全没有错误,而且需要的量比较大,我也只能是作为实验来做了。
那么修改呢?检查出来不是最终目的,那么怎么修改呢?长叹一声,我的方法没解决,或者说我没有再拿出时间来继续研究。因为一个词会跟很多词有依赖,其他词出现异常并不能直接指向出错误的词,所以错误的查找就成了问题,更别说修改了。
那么本次就写到这里了,有问题可以私信哦,或者邮件到[email protected]

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章