我在哪里可以了解更多关于谷歌search“你的意思”algorithm?
可能重复:
你如何实现“你的意思”?
我写了一个应用程序,我需要function类似于谷歌的“你是什么意思? 他们的search引擎使用的function:
有源代码可用于这样的事情,或我可以在哪里可以find有助于我build立自己的文章?
你应该看看Peter Norvigs有关在python的几行中实现拼写检查器的文章: 如何编写拼写纠正器它也有用于其他语言实现的链接(即C#)
我在一年半前参加了一位Google工程师的研讨会,在那里他们谈到了他们的方法。 主持人说,他们的algorithm(至less部分)完全没有智能; 而是利用他们可以访问的大量数据。 他们决定,如果有人search“布列塔尼Speares”,点击什么都没有,然后再次search“布兰妮斯皮尔斯”,并点击一些东西,我们可以有一个公正的猜测,他们正在寻找什么,并可以build议在未来。
免责声明:这可能只是他们algorithm的一部分
Python有一个名为difflib
的模块。 它提供了一个名为get_close_matches
的function。 从Python文档:
get_close_matches(word, possibilities[, n][, cutoff])
返回最好的“足够好”的匹配列表。 单词是需要紧密匹配的序列(通常是一个string),而可能性是匹配单词的序列列表(通常是一个string列表)。
可选参数n (默认值
3
)是返回的最近匹配次数; n必须大于0
。可选参数截止 (默认值为
0.6
)是在[0,1]范围内的浮点数。 至less得分与单词相似的可能性被忽略。列表中返回可能性最好的(不超过n个 )匹配,按相似性得分sorting,最相似的排在前面。
>>> get_close_matches('appel', ['ape', 'apple', 'peach', 'puppy']) ['apple', 'ape'] >>> import keyword >>> get_close_matches('wheel', keyword.kwlist) ['while'] >>> get_close_matches('apple', keyword.kwlist) [] >>> get_close_matches('accept', keyword.kwlist) ['except']
这个图书馆可以帮助你吗?
您可以查看提供此function的Xapian源代码,以及许多其他search库。 http://xapian.org/
我不确定它是否符合您的目的,但string编辑距离algorithm与字典可能足够小的应用程序。
我会看看这篇关于谷歌轰炸的文章。 它表明,它只是build议基于以前input的结果的答案。
AFAIK“你的意思是? function不检查拼写。 它只会给你另一个基于googleparsing的内容的查询。
关于这个主题的一个很好的篇章可以在公开的信息检索介绍中find。
你可以用ngram来比较: http : //en.wikipedia.org/wiki/N-gram
使用python ngram模块: http ://packages.python.org/ngram/index.html
import ngram G2 = ngram.NGram([ "iis7 configure ftp 7.5", "ubunto configre 8.5", "mac configure ftp"]) print "String", "\t", "Similarity" for i in G2.search("iis7 configurftp 7.5", threshold=0.1): print i[0], "\t", i[1]
你得到:
>>> String Similarity "iis7 configure ftp 7.5" 0.76 "mac configure ftp 0.24" "ubunto configre 8.5" 0.19
看看Levenshtein-Automata
- #1025 – 将'./database/#sql-2e0f_1254ba7'重命名为'./database/table'(errno:150)时出错
- Maven无法在以下位置findJavac编译器: