搜索系统中的纠错问题
纠错是搜索引擎中一个非常有特色的模块,对用户输入的内容进行改写从而让用户得到正确的结果,有的时候也会带有一些惊喜度,所以纠错技术是一个搜索体验的加分项,近期突然对这块有兴趣,所以就了解了一下。 (学习周报本周停,学习内容都在这了)
纠错技术的背景
人非圣贤,孰能无过,别说是搜索的时候,哪怕是我们打字、写作文的时候,都会出现错字,一般的错别字不会对最终目标带来很大影响,且出现频率很低,不拘小节的我们常常会忽略这样的小问题,但是,在搜索场景下,错别字意味着可能就搜不到内容了,对于用户而言,就是需求无法满足,造成了很差的体验,因此在搜索场景中,就很有必要去纠错。
错误是如何产生的
要去纠错,先要去看看错误是怎么产生的。
首先是误操作类型,这种类型可以从输入法角度去看。
- 拼音输入法。常会出现同音异形字,例如周节伦等。
- 笔画输入法或者手写输入法。常会出现形似字,例如博和傅。
然后是用户的主观理解,有的时候用户只是听说过而没见过,或者就是理解问题,导致主动地出入了错误的内容,例如飞扬拔(跋)扈,然后有一些名词,例如小说、音乐、电影等,写错字是非常容易的。
当然,也有用户图方便,或者输入问题,导致直接输入拼音或者拼音前缀,或者就是因为记忆的原因,输错了。
当然这里也要补充一些常见的问题举例:
- 谐音。深圳-森圳。
- 别字。师傅-师博。
- 中英文。Taylor swift-泰勒斯威夫特。
- 近义词。爱情呼叫转移-恋爱呼叫转移。
- 形近字。高粱-高梁。
- 全拼。深圳-shenzhen。
- 拼音前缀。北京-bj。
- 内容不完整。唐人街探案-唐人。
总之错误千奇百怪。理解错误产生的机理,我们就可以尝试去处理这些问题。
词典与规则方法
词典是搜索系统中非常常用的方法,词典具有高速、高准的优点,如果词典的覆盖度高,甚至可以达到高召回的效果,因此词典基本是搜索系统中的核心存在,我们不应该小看他,而是尽可能挖掘他的潜能。
词典方法,说白了就是对 query 找对应词典里有没有,如果有就改写过去,这种方法的优点在于速度快,而难点在于怎么去挖掘这个词典。
至于怎么挖掘这个词典,方法有很多底层数据库抽取,用户日志等,都有很多构建起这样的词典,能够大大降低耗时,复杂度至于 query 和单词长度有关。那么一般都有什么词典呢,我们来一个一个看看。
- 拼音和拼音前缀词典。先将 query 或者单词转为拼音,然后通过通过拼音召回对应的结果,完成纠错。
- 别字词典,记录一些常见的错别字,例如百度的形近词表就很不错(就在百度百科里面)。
- 其他改写字典。一般基于具体业务来改写,例如用户输入唐人街探案,其实唐人街探案有 3 部,我们应该给那个,需要基于热度等方面去改写到具体最合适的一部。
词典只是能够匹配到合适的结果,但是我们需要知道的是,改写的内容不能和原来差距太远,否则会出现很多意料之外的结果,因此改写不能大改,只能改微调,否则出来的结果会让用户感到很懵逼。控制的方法主要是 编辑距离。
所谓的编辑距离,就是改写前到改写后,需要经过的操作多少,说人话就是两句话的不同点有几个,精确到字级别。深圳-森圳的编辑距离就是 1。通过编辑距离的约束,一般能够让两者的差距不是很大。
我知道很多人热衷于用语义相似度之类的操作,�
- 原文作者:知识铺
- 原文链接:https://geek.zshipu.com/post/%E4%BA%92%E8%81%94%E7%BD%91/%E6%90%9C%E7%B4%A2%E7%B3%BB%E7%BB%9F%E4%B8%AD%E7%9A%84%E7%BA%A0%E9%94%99%E9%97%AE%E9%A2%98/
- 版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议进行许可,非商业转载请注明出处(作者,原文链接),商业转载请联系作者获得授权。
- 免责声明:本页面内容均来源于站内编辑发布,部分信息来源互联网,并不意味着本站赞同其观点或者证实其内容的真实性,如涉及版权等问题,请立即联系客服进行更改或删除,保证您的合法权益。转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。也可以邮件至 sblig@126.com