我一直在为一个投资组合管理工具开发一个内部网站。有很多文本数据,公司名称等。我对一些搜索引擎的能力印象深刻,它们可以非常快速地回答“你的意思是:xxxx”。

我需要能够智能地接受用户的查询,并不仅响应原始搜索结果,而且还响应“您的意思是?”当有一个极有可能的替代答案等

我正在开发ASP。NET (VB -别跟我过不去!)]

更新: 好吧,在没有数百万“付费用户”的情况下,我该如何模仿这种模式?

为每个“已知”或“正确”的术语生成拼写错误并执行查找? 还有其他更优雅的方法吗?


当前回答

这是我找到的最好的答案,由谷歌的研究总监Peter Norvig实施和描述的拼写纠正器。

如果你想了解更多这背后的理论,你可以阅读他书中的章节。

该算法的思想基于统计机器学习。

其他回答

使用Levenshtein距离,然后创建一个度量树(或Slim树)来索引单词。 然后运行1-Nearest Neighbour查询,就得到了结果。

我猜…它可以

寻找词语 如果没有找到,使用一些算法来尝试“猜测”这个词。

可能是来自人工智能的东西,比如Hopfield网络或反向传播网络,或者其他“识别指纹”,恢复损坏的数据,或者Davide已经提到的拼写纠正……

这是我找到的最好的答案,由谷歌的研究总监Peter Norvig实施和描述的拼写纠正器。

如果你想了解更多这背后的理论,你可以阅读他书中的章节。

该算法的思想基于统计机器学习。

有一种特定的数据结构——三元搜索树——自然地支持部分匹配和近邻匹配。

前段时间我发现了一篇文章:《如何编写拼写更正》,作者是Peter Norvig(谷歌公司的研究总监)。

这是一本关于“拼写纠正”主题的有趣读物。例子是用Python写的,但是很清楚,很容易理解,而且我认为算法可以很容易 翻译成其他语言。

下面是该算法的简短描述。 该算法包括两个步骤,准备和单词检查。

步骤1:准备-设置word数据库

最好是你能使用实际的搜索词和它们的出现。 如果你没有,你可以用大量的文本来代替。 计算每个单词的出现次数(流行度)。

步骤2。单词检查-找到与被检查的单词相似的单词

相似意味着编辑距离很低(通常是0-1或0-2)。编辑距离是将一个单词转换为另一个单词所需的插入/删除/更改/交换的最小数量。

从上一步中选择一个最流行的词,并建议它作为更正(如果不是这个词本身的话)。