您如何实现“您的意思”? [重复]
nlp
289
0

可能重复:
Google如何表达“您的意思?”算法工作?

假设您的网站中已经有一个搜索系统。如何在某些搜索查询中像Google一样实现“您的意思是: <spell_checked_word> ”?

参考资料:
Stack Overflow
收藏
评论
共 10 个回答
高赞 时间 活跃

您可能要看一下Peter Norvig的“ 如何编写拼写校正器 ”文章。

收藏
评论

如果您具有行业特定的翻译,则可能需要一个同义词库。例如,我在珠宝业工作过,我们的描述中有缩写,例如kt-karat,rd-round,cwt-克拉重量... Endeca(该职位的搜索引擎)有一个词库,该词库可以从通用拼写错误,但确实需要人工干预。

收藏
不错
好吗?3
2020-05-20 16:35:58
评论

有人问到如何为搜索引擎创建最先进的拼写建议系统,我感到非常惊讶。我在一家搜索引擎公司从事这一主题的工作已经一年多了,我可以指出有关该主题的公共领域信息。

如前一篇文章所述,Google(以及Microsoft和Yahoo!)不使用任何预定义的字典,也不使用成群的语言学家来思考可能的拼写错误的查询。由于问题的严重性,这将是不可能的,而且还因为不清楚人们是否可以正确识别查询的时间和是否拼错。

相反,有一个简单而有效的原则也适用于所有欧洲语言。假设参考查询是计数最高的查询,请在搜索日志中获取所有唯一查询,并计算所有查询对之间的编辑距离。

这个简单的算法非常适合许多类型的查询。如果您想将其提高到一个新的水平,那么我建议您阅读Microsoft Research关于该主题的论文。你可以在这里找到

本文有很好的介绍,但之后您将需要了解诸如隐马尔可夫模型的概念。

收藏
很有帮助
百如云648
2020-05-18 09:56:19
评论
收藏
评论

检查文章有关Levenshtein距离维基百科。确保您仔细看一下可能的改进。

收藏
评论

我相信Google会记录所有查询并确定何时有人进行拼写更正。然后,当其他人提供相同的第一个查询时,可以建议此更正。这适用于任何语言,实际上是任何字符的任何字符串。

收藏
评论

Google的Dr Norvig概述了它的工作方式。他甚至给出了20行的Python实现:

http://googlesystem.blogspot.com/2007/04/simplified-version-of-googles-spell.html

http://www.norvig.com/spell-correct.html

诺维格博士在这个精彩的演讲中还讨论了“你的意思”。 Norvig博士是Google 的研究负责人 -当被问及“您的意思”是如何实现的时,他的回答是权威性的

因此,它的拼写检查(大概是根据其他搜索甚至是实际的互联网短语等)构建的动态词典。但这仍然是拼写检查

大家快来看看SOUNDEX和其他猜测吧!

收藏
评论

我认为这取决于您的网站大小。在我们大约500名员工使用的本地Intranet上,我仅查看返回零结果的搜索短语,然后将该搜索短语和新建议的搜索短语输入到SQL表中。

如果没有返回任何搜索结果,他们将在该表上进行调用,但是,这仅在站点相对较小的情况下才有效,并且我仅针对最常见的搜索词组进行操作。

您可能还想看看我对类似问题的回答:

收藏
评论

我建议您查看SOUNDEX以在您的数据库中找到类似的单词。

您还可以使用Google API拼写建议请求来访问Google自己的词典。

收藏
评论

实际上,Google所做的工作非常重要,而且乍一看是违反直觉的。他们没有像检查字典那样做任何事情,但是他们利用统计信息来识别返回比您的查询更多结果的“相似”查询,确切的算法当然是未知的。

这里有不同的子问题需要解决,作为所有自然语言处理统计数据的基础,必须有一本书: 统计自然语言处理基础

具体来说,为了解决单词/查询相似性的问题,我使用Edit Distance取得了很好的效果, Edit Distance是一种字符串相似性的数学度量,效果出奇的好。我曾经使用Levenshtein,但其他人可能值得研究。

根据我的经验,Soundex很糟糕。

实际上有效地存储和搜索大的拼写错误的词典,并且具有亚秒级的检索功能也是不容易的,最好的选择是利用现有的全文索引和检索引擎(即不是数据库的那个), Lucene当前是其中的一种最好的之一,巧合地移植到许多平台上。

收藏
评论
新手导航
  • 社区规范
  • 提出问题
  • 进行投票
  • 个人资料
  • 优化问题
  • 回答问题

关于我们

常见问题

内容许可

联系我们

@2020 AskGo
京ICP备20001863号