相关疑难解决方法(0)

你如何实现"你的意思"?

可能重复:
Google如何"你的意思是?"算法有效吗?

假设您的网站中已有搜索系统.你如何实现<spell_checked_word>像谷歌在某些搜索查询中所说的"你的意思是:" 吗?

nlp

112
推荐指数
7
解决办法
2万
查看次数

我在哪里可以了解更多有关Google搜索"你的意思"算法的信息?

可能重复:
你如何实现"你的意思"?

我正在编写一个应用程序,我需要类似于Google的功能"你的意思是什么?" 搜索引擎使用的功能:

替代文字

是否有可用于此类事情的源代码,或者我在哪里可以找到有助于我构建自己的文章?

algorithm nlp spell-checking

68
推荐指数
4
解决办法
2万
查看次数

真实世界的错字统计?

我在哪里可以找到一些真实的拼写错误统计数据?

我试图将人们的输入文本与内部对象进行匹配,人们往往会犯拼写错误.
有两种错误:

  1. typos - "Helllo"而不是"Hello"/"Satudray"而不是"Saturday"等.
  2. Spelling - "Shikago"而不是"芝加哥"

我使用 Damerau-Levenshtein距离进行拼写错误,使用Double Metaphone进行拼写(Python实现此处此处).

我想专注于Damerau-Levenshtein(或简单地说edit-distance).教科书实现总是使用'​​1'来表示删除,插入替换和转置的权重.虽然这很简单并且允许很好的算法但它与"现实"/"真实世界概率"不匹配.

例子:

  • 我确定"Helllo"("Hello")的可能性大于"Helzlo",但它们距离都是1个编辑距离.
  • 在QWERTY键盘上,"Gello"比"Qello"更接近"Hello".
  • Unicode音译:"慕尼黑"和"慕尼黑"之间的"真实"距离是多少?

删除,插入,替换和转置的"真实世界"权重应该是什么?

即使是Norvig非常酷的拼写校正器也使用非加权编辑距离.

BTW-我确定权重需要是函数而不是简单的浮点数(根据上面的例子)......

我可以调整算法,但在哪里可以"学习"这些权重?我无法访问Google规模的数据 ...

我应该猜猜他们吗?

编辑 - 尝试回答用户问题:

  • 由于上述原因,我当前的非加权算法在遇到拼写错误时经常失败."星期四回归":每个"真人"都可以很容易地告诉周四比周二更有可能,但他们都是1编辑距离!(是的,我会记录并衡量我的表现).
  • 我正在开发NLP旅行搜索引擎,因此我的词典包含~25K目的地(预计将增长到100K),时间表达式~200(预期1K),人物表达式~100(预期300),货币表达式~100(预期500 ),"胶水逻辑词"("从","美丽","公寓")~2K(预计10K)等...
  • 对于上述每个单词组,编辑距离的使用是不同的.我尝试"在明显时自动纠正",例如,与字典中的另一个单词相距1个编辑距离.我有许多其他手动调整的规则,例如Double Metaphone修复,距离长度> 4的字典单词不超过2个编辑距离...当我从现实世界输入中学习时,规则列表继续增长.
  • "你的门槛中有多少对字典条目?":嗯,这取决于"花式加权系统"和现实世界(未来)输入,不是吗?无论如何,我进行了大量的单元测试,因此我对系统所做的每一项更改都会使其更好(当然,基于过去的输入).大多数6个字母的单词距离与另一个字典条目相距1个编辑距离的单词在1个编辑距离内.
  • 今天,当有两个字典条目与输入相同的距离时,我尝试应用各种统计数据来更好地猜测用户的意思(例如,巴黎,法国更有可能出现在我的搜索中,而不是Pārīz,伊朗).
  • 选择错误单词的成本是将半随机(通常是荒谬的)结果返回给最终用户并可能失去客户.不理解的成本稍微低一些:用户将被要求改写.
  • 复杂的成本值得吗?是的,我确定是的.你不会相信人们在系统中投入的拼写错误,并希望它能理解,我确信可以使用Precision和Recall中的提升.

python fuzzy-search machine-learning spelling

41
推荐指数
3
解决办法
6877
查看次数

比较相似度算法

我想使用字符串相似性函数来查找我的数据库中的损坏数据.

我遇到了其中几个:

  • 哈罗,
  • 哈罗,温克勒,
  • 莱文斯坦,
  • 欧几里德和
  • Q-克,

我想知道它们之间的区别以及它们最适合的情况?

similarity euclidean-distance jaro-winkler levenshtein-distance

39
推荐指数
1
解决办法
2万
查看次数

我如何估算"你的意思是?" 没有使用谷歌?

我知道这个问题的重复:

这些问题对算法实际如何工作感兴趣.我的问题更像是:让我们假设谷歌不存在或者这个功能可能不存在而且我们没有用户输入.如何实现此算法的近似版本?

为什么这很有趣?

好.尝试在Google中键入" qualfy ",它会告诉您:

你的意思是: 资格

很公平.它使用统计机器学习对从数十亿用户收集的数据进行此操作.但是现在尝试输入这个:" Trytoreconnectyou "到谷歌,它告诉你:

你的意思是: 尝试重新连接你

现在这是更有趣的部分.Google如何确定这一点?有一本方便的字典,并使用用户输入再次猜测最可能的单词?它如何区分拼写错误的单词和句子?

现在考虑到大多数程序员无法访问数十亿用户的输入,我正在寻找实现此算法的最佳近似方式以及可用的资源(数据集,库等).有什么建议?

language-agnostic algorithm nlp machine-learning

23
推荐指数
2
解决办法
4054
查看次数

创建一个"拼写检查",用合理的运行时检查数据库

我不是要求实现拼写检查算法本身.我有一个包含数十万条记录的数据库.我要做的是针对所有这些记录检查表格中某个列的用户输入,并返回具有某个汉明距离的任何匹配(同样,这个问题不是关于确定汉明距离等).当然,目的是创建一个"你是说"的功能,用户搜索名称,如果在数据库中找不到直接匹配,则返回可能匹配的列表.

我试图想出一种方法,在最合理的运行时间内完成所有这些检查.如何以最有效的方式检查用户对所有这些记录的输入?

该功能目前已实现,但运行时速度非常慢.它现在的工作方式是将所有记录从用户指定的表(或多个表)加载到内存中,然后执行检查.

对于它的价值,我使用NHibernate进行数据访问.

如果我能做到这一点或我的选择是什么,我将不胜感激.

c# database algorithm spell-checking runtime

20
推荐指数
1
解决办法
3430
查看次数

PHP - 如何建议搜索术语,"你的意思是......?"

当使用不检索结果的术语搜索数据库时,我想允许"你的意思是......"建议(如谷歌).因此,例如,如果有人寻找" jquyer"",它将输出" did you mean jquery?"

当然,建议结果必须与db内的值匹配(我使用的是mysql).

你知道一个可以做到这一点的图书馆吗?我用谷歌搜索了这个,但没有找到任何好结果.或者您可能知道如何自己构建它?

php search

12
推荐指数
2
解决办法
6813
查看次数

通过C#访问Google拼写/建议API

我想在我正在做的应用中使用谷歌的拼写纠正/建议.我用谷歌搜索了它,但我发现的只是Google取消的SOAP API和新推荐的XML Web Search API的示例.

我只是希望能够发送搜索查询并返回建议的更正.

替代文字

我现在可以使用哪种API?你能举例说明它的用法吗?周围有C#Wrapper吗?

谢谢!

编辑:

Bing和雅虎拼写API的问题在于它们似乎是在检查字典,因此一些品牌/产品名称无法识别,谷歌似乎是基于通常的拼写错误和他们最终访问的页面,所以它可以建议拼写检查对于最常见的事情,即:

如果你输入

"你好,"

它会说

"你的意思是你好世界吗?"

即使它拼写正确

c# api spell-checking

12
推荐指数
2
解决办法
1万
查看次数

搜索引擎的'你是说'

可能重复:
Google如何"你的意思是?"算法有效吗?

我有一个包含大约200万条记录的数据库表.我使用MySQL的全文搜索到的用户却经常进入脏话前GMES - >应该是游戏,所以我需要用PHP包装库在谷歌拥有的功能像"你的意思是"我应该用什么?

php search-engine

7
推荐指数
1
解决办法
2972
查看次数

针对错误拼写搜索关键字的Google搜索算法

我想知道谷歌如何找到确切的词,即使我们在搜索框中输错了它.我想知道这种开源算法是否可用?

search google-search

4
推荐指数
1
解决办法
427
查看次数

如何创建Google喜欢的单词建议

我如何在搜索引擎中建立一个单词建议系统,如Google的"你的意思是......"?

优选地使用向量空间模型方法.我用谷歌搜索但没有找到解决方案.

spell-checking google-suggest

2
推荐指数
1
解决办法
2582
查看次数

Google(或任何搜索引擎)的拼写检查程序和拼写修复程序如何工作?

当在Google中搜索某些内容时,如果你拼错了一个单词(可能是错误的,或者可能是你真正指的是这个非词典单词),谷歌说:"显示结果.....搜索而不是.... ...".

我试图弄清楚这是如何工作的.这基本上意味着能够找到最接近输入的非字典单词的字典单词.它是如何工作的?我猜的一种方法是:数不.每个字符的实例然后扫描字典以找到具有相同no的单词.每个字符的实例(仅与+ -1不同).但这也将返回字谜.

这是任何使用的概率模型,如马尔科夫等.我不太了解马尔科夫,只是一个非常疯狂的猜测.

任何见解?

string algorithm search-engine data-structures

1
推荐指数
1
解决办法
310
查看次数