你如何实现“你的意思是”?

可能重复: ¢ 谷歌“你的意思是什么?” 算法工作?

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

116
2022-06-07 15:16:27
资源 分享
答案: 8

实际上,谷歌所做的事情在很大程度上是非次要的,而且起初也是反直觉的。 他们不做任何诸如检查字典之类的事情,而是利用统计数据来识别返回比您的问题更多的结果的“相似”查询,具体算法显然是未知的。

下面有不同的问题 - 下面要解决的问题,作为所有相关的自然语言处理统计数据的基本基础,应该有一个出版物:统计自然语言处理基础

具体来说,为了解决单词/查询相似度的问题,我使用 编辑距离 取得了很好的成果,这是一种功能非常好的字符串相似度的数学度量。 我曾经使用过 Levenshtein,但其他的可能值得一试。

Soundex - 根据我的经验 - 是垃圾。

事实上,有效地保存和浏览大量拼写错误的词库并拥有低于第二次访问权再次无关紧要,您最好的选择是使用现有的全文索引以及访问引擎(即不是您的数据库是其中之一),其中 Lucene 是目前最有效的之一,并且可以一起移植到众多平台。

88
2022-06-07 18:08:34
资源
5
2022-06-07 18:08:10
资源

如果您有特定行业的翻译,您可能需要同义词替换工具。 例如,我在时尚珠宝市场工作,我们的描述中有缩写,例如 kt - 克拉,rd - 圆形,cwt - 克拉重量 Endeca(该任务的搜索引擎)有一个词库,肯定会从常见的拼写错误转换,但它确实需要手动干预。

2
2022-06-07 17:16:50
资源

我相信这取决于你的网站有多大。 在我们大约 500 名团队成员使用的社区 Intranet 上,我简单地查看了完全没有返回结果的关键字,并将带有新建议搜索短语的搜索短语输入到 SQL 表中。

如果没有返回搜索引擎结果,我他们会联系该表,但是,如果网站相当小并且我只对最常见的搜索词组进行此操作,这将起作用。

您可能还希望查看我对类似问题的回答:

4
2022-06-07 17:16:11
资源

Soundex 适用于语音匹配,但与人名配合使用效果最好(最初是为人口普查数据开发的)

也看看全文索引,语法与谷歌推理不同,但它真的很快,可以处理类似的语言元素。

0
2022-06-07 15:41:19
资源

我当然会建议考虑使用 声讯 在您的数据库中查找相似的单词。

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

9
2022-06-07 15:41:08
资源

Soundex 和“Porter 词干”(soundex 不重要,不确定 concierge 词干)。

0
2022-06-07 15:40:55
资源

检查 这个 维基百科上关于 Levenshtein 距离的文章。 请务必仔细查看可能的增强功能。

14
2022-06-07 15:40:16
资源