实际上谷歌所做的事情非常重要,而且最初也是反直觉的.他们不会像检查字典那样做任何事情,而是他们利用统计数据来识别返回比查询更多结果的"类似"查询,当然不知道确切的算法.
这里要解决不同的子问题,作为所有自然语言处理统计相关的基础,必须有一本书:统计自然语言处理基础.
具体地说,为了解决单词/查询相似性的问题,我使用编辑距离得到了很好的结果,编辑距离是字符串相似性的数学测量,效果出奇的好.我曾经使用Levenshtein,但其他人可能值得研究.
根据我的经验,Soundex是废话.
实际上有效地存储和搜索拼写错误的单词的大型词典并进行次级检索也是非常重要的,最好的办法是利用现有的全文索引和检索引擎(即不是数据库的引擎),其中Lucene目前最好的,巧合地移植到许多平台之一.
实际上谷歌所做的事情非常重要,而且最初也是反直觉的.他们不会像检查字典那样做任何事情,而是他们利用统计数据来识别返回比查询更多结果的"类似"查询,当然不知道确切的算法.
这里要解决不同的子问题,作为所有自然语言处理统计相关的基础,必须有一本书:统计自然语言处理基础.
具体地说,为了解决单词/查询相似性的问题,我使用编辑距离得到了很好的结果,编辑距离是字符串相似性的数学测量,效果出奇的好.我曾经使用Levenshtein,但其他人可能值得研究.
根据我的经验,Soundex是废话.
实际上有效地存储和搜索拼写错误的单词的大型词典并进行次级检索也是非常重要的,最好的办法是利用现有的全文索引和检索引擎(即不是数据库的引擎),其中Lucene目前最好的,巧合地移植到许多平台之一.
谷歌的Norvig博士概述了它是如何运作的; 他甚至给出了一个20行的Python实现:
http://googlesystem.blogspot.com/2007/04/simplified-version-of-googles-spell.html
http://www.norvig.com/spell-correct.html
Norvig博士还在这次精彩的演讲中讨论了"你的意思" .Norvig博士是Google 的研究负责人 - 当被问及"你的意思"是如何实施的时候,他的回答是权威性的.
所以它的拼写检查,大概是从其他搜索或甚至实际的互联网短语等动态字典构建.但那仍然是拼写检查.
人们,SOUNDEX和其他猜测都没有看到!
在维基百科上查看关于Levenshtein距离的这篇文章.确保您仔细查看可能的改进.
有人问我如何为搜索引擎创建最先进的拼写建议系统,我感到非常惊喜.我已经为一家搜索引擎公司工作了一年多这个主题,我可以指出有关该主题的公共领域的信息.
正如前一篇文章中提到的,谷歌(以及微软和雅虎)不会使用任何预定义的词典,也不会聘请成群的语言学家来思考可能的拼写错误.由于问题的严重性,这是不可能的,但也因为人们不能确切地确定何时以及查询是否拼写错误.
相反,有一个简单而有效的原则,也适用于所有欧洲语言.获取搜索日志上的所有唯一查询,计算所有查询对之间的编辑距离,假设参考查询是具有最高计数的查询.
这种简单的算法适用于许多类型的查询.如果你想把它提升到一个新的水平,那么我建议你阅读微软研究院关于该主题的论文.你可以在这里找到它
本文有一个很好的介绍,但之后你需要了解隐藏马尔可夫模型等概念.
我建议看看SOUNDEX在你的数据库中找到类似的单词.
您还可以使用Google API拼写建议请求访问Google自己的字典.
您可能想看看Peter Norvig的" 如何编写拼写校正器 "一文.
我相信Google会记录所有查询,并确定何时进行拼写更正.然后,当其他人提供相同的第一查询时,可以建议该校正.这适用于任何语言,实际上是任何字符串.