可能重复:
Google如何"你的意思是?"算法有效吗?
假设您的网站中已有搜索系统.你如何实现<spell_checked_word>像谷歌在某些搜索查询中所说的"你的意思是:" 吗?
可能重复:
你如何实现"你的意思"?
我正在编写一个应用程序,我需要类似于Google的功能"你的意思是什么?" 搜索引擎使用的功能:

是否有可用于此类事情的源代码,或者我在哪里可以找到有助于我构建自己的文章?
我在哪里可以找到一些真实的拼写错误统计数据?
我试图将人们的输入文本与内部对象进行匹配,人们往往会犯拼写错误.
有两种错误:
typos - "Helllo"而不是"Hello"/"Satudray"而不是"Saturday"等. Spelling - "Shikago"而不是"芝加哥" 我使用 Damerau-Levenshtein距离进行拼写错误,使用Double Metaphone进行拼写(Python实现此处和此处).
我想专注于Damerau-Levenshtein(或简单地说edit-distance).教科书实现总是使用'1'来表示删除,插入替换和转置的权重.虽然这很简单并且允许很好的算法但它与"现实"/"真实世界概率"不匹配.
例子:
删除,插入,替换和转置的"真实世界"权重应该是什么?
即使是Norvig非常酷的拼写校正器也使用非加权编辑距离.
BTW-我确定权重需要是函数而不是简单的浮点数(根据上面的例子)......
我可以调整算法,但在哪里可以"学习"这些权重?我无法访问Google规模的数据 ...
我应该猜猜他们吗?
编辑 - 尝试回答用户问题:
我想使用字符串相似性函数来查找我的数据库中的损坏数据.
我遇到了其中几个:
我想知道它们之间的区别以及它们最适合的情况?
similarity euclidean-distance jaro-winkler levenshtein-distance
我知道这个问题的重复:
这些问题对算法实际如何工作感兴趣.我的问题更像是:让我们假设谷歌不存在或者这个功能可能不存在而且我们没有用户输入.如何实现此算法的近似版本?
为什么这很有趣?
好.尝试在Google中键入" qualfy ",它会告诉您:
你的意思是: 资格
很公平.它使用统计机器学习对从数十亿用户收集的数据进行此操作.但是现在尝试输入这个:" Trytoreconnectyou "到谷歌,它告诉你:
你的意思是: 尝试重新连接你
现在这是更有趣的部分.Google如何确定这一点?有一本方便的字典,并使用用户输入再次猜测最可能的单词?它如何区分拼写错误的单词和句子?
现在考虑到大多数程序员无法访问数十亿用户的输入,我正在寻找实现此算法的最佳近似方式以及可用的资源(数据集,库等).有什么建议?
我不是要求实现拼写检查算法本身.我有一个包含数十万条记录的数据库.我要做的是针对所有这些记录检查表格中某个列的用户输入,并返回具有某个汉明距离的任何匹配(同样,这个问题不是关于确定汉明距离等).当然,目的是创建一个"你是说"的功能,用户搜索名称,如果在数据库中找不到直接匹配,则返回可能匹配的列表.
我试图想出一种方法,在最合理的运行时间内完成所有这些检查.如何以最有效的方式检查用户对所有这些记录的输入?
该功能目前已实现,但运行时速度非常慢.它现在的工作方式是将所有记录从用户指定的表(或多个表)加载到内存中,然后执行检查.
对于它的价值,我使用NHibernate进行数据访问.
如果我能做到这一点或我的选择是什么,我将不胜感激.
当使用不检索结果的术语搜索数据库时,我想允许"你的意思是......"建议(如谷歌).因此,例如,如果有人寻找" jquyer"",它将输出" did you mean jquery?"
当然,建议结果必须与db内的值匹配(我使用的是mysql).
你知道一个可以做到这一点的图书馆吗?我用谷歌搜索了这个,但没有找到任何好结果.或者您可能知道如何自己构建它?
我想在我正在做的应用中使用谷歌的拼写纠正/建议.我用谷歌搜索了它,但我发现的只是Google取消的SOAP API和新推荐的XML Web Search API的示例.
我只是希望能够发送搜索查询并返回建议的更正.
我现在可以使用哪种API?你能举例说明它的用法吗?周围有C#Wrapper吗?
谢谢!
编辑:
Bing和雅虎拼写API的问题在于它们似乎是在检查字典,因此一些品牌/产品名称无法识别,谷歌似乎是基于通常的拼写错误和他们最终访问的页面,所以它可以建议拼写检查对于最常见的事情,即:
如果你输入
"你好,"
它会说
"你的意思是你好世界吗?"
即使它拼写正确
可能重复:
Google如何"你的意思是?"算法有效吗?
我有一个包含大约200万条记录的数据库表.我使用MySQL的全文搜索到的用户却经常进入脏话前GMES - >应该是游戏,所以我需要用PHP包装库在谷歌拥有的功能像"你的意思是"我应该用什么?
我想知道谷歌如何找到确切的词,即使我们在搜索框中输错了它.我想知道这种开源算法是否可用?
我如何在搜索引擎中建立一个单词建议系统,如Google的"你的意思是......"?
优选地使用向量空间模型方法.我用谷歌搜索但没有找到解决方案.
当在Google中搜索某些内容时,如果你拼错了一个单词(可能是错误的,或者可能是你真正指的是这个非词典单词),谷歌说:"显示结果.....搜索而不是.... ...".
我试图弄清楚这是如何工作的.这基本上意味着能够找到最接近输入的非字典单词的字典单词.它是如何工作的?我猜的一种方法是:数不.每个字符的实例然后扫描字典以找到具有相同no的单词.每个字符的实例(仅与+ -1不同).但这也将返回字谜.
这是任何使用的概率模型,如马尔科夫等.我不太了解马尔科夫,只是一个非常疯狂的猜测.
任何见解?
algorithm ×4
nlp ×3
c# ×2
php ×2
search ×2
api ×1
database ×1
fuzzy-search ×1
jaro-winkler ×1
python ×1
runtime ×1
similarity ×1
spelling ×1
string ×1