作者: @Qarnet
前言
最近在优化dxy帖子召回问题,我们之前在医疗健康领域的短文本解析探索(一)提到了phrase mining 抽取粗粒度名词,在医疗健康领域的短文本解析探索(二)提到实体链接相关方案,但是用户在输入搜索内容时,很可能因为输入法或者是其他原因导致文本输入错误,最终导致搜索不到用户想要的结果降低用户体验。
在nlp领域中文本纠错是个坑,不能说是深坑,也就是个万丈深渊吧... ,因为目前没有特别成熟的方法,而且用到的知识点比较繁琐,真正的应用到工业界还要考虑实际成本和效率。常见纠错内容如下所示:
- 谐音错别字:耳室症如何治疗?----耳石症如何治疗?
- 形近错别字:氨基已酸 ----氨基己酸
- 字词顺序错误:硫酸氯氢吡格雷 ---- 硫酸氢氯吡格雷
- 字词补全:右旋糖苷铁口服液 ----右旋糖苷铁口服溶液
- 中文拼写错误:aspl ---- 阿司匹林,阿斯 pi ling ----阿司匹林
- 语法错误 (Grammatical Error):Nothing is [absolute----absolutely] right or wrong
- 常识知识错误:上海同济医院内分泌代谢科主治医师[刘辉----刘光辉]
在搜索中这些确实是常见的几种错误类型,绝大多数是一些用户习惯和输入问题,我在丁香园的搜索日志中经常见到的一些有趣的搜索问题,比方说,用户想搜索阿司匹林,可能输入aspl
,阿斯匹林
,阿司匹
,阿司匹 lin
,阿斯 pi ling
等奇奇怪怪的输入。
我们调研一些学术界近期的结果和工业界常规方法。做了以下简单的总结。
正文
《An Improved Graph Model for Chinese Spell Checking 》&&《A Hybrid Model for Chinese Spelling Check》
14年的一篇文章,实验用到的数据集是SIGHAN-2013[2],借鉴分词时构建DAG(Directed Acyclic Graph )的方法,因为错误句子可能会造成错误的分词结果,会导致多种分词情况,对所有切分结果的相似拼音的字/词加入到分词的DAG中,构成一个由相似词语组成的新的DAG模型。就像下面这个例子,misspelled: "假书抵万金"。其中有一个替换原则,定义一个相似词典,所有的替换按照字典相似的词进行替换。