在文本中查找与给定关键字具有最高相似度的子字符串

时间:2016-09-13 23:40:25

标签: text machine-learning data-mining string-algorithm

说我有这个文字= I love apples, kiwis, oranges and bananas,而searchString = kiwis and bananasa similarity algorithmJaccard index。如何有效地找到text中与searchString具有最高相似度的子字符串。

基本上我试图找到与我所拥有的关键字列表相匹配的文本部分(文本有高错误,拼写错误,额外符号和空格)。

4 个答案:

答案 0 :(得分:4)

Jaccard索引是“幸运”的相似度算法,因为您可以更新它的新符号值而无需重新计算所有以前的内容。因此,您可以将text视为结果索引值的差异序列。之后,问题可以减少到https://en.wikipedia.org/wiki/Maximum_subarray_problem

你的第二段怎么样,如果你正在进行类似NLP的研究,我建议在进一步处理之前清理你的数据(删除那些额外的符号和空格,只要可能)。这被称为“拼写纠正”,并且有大量不同的算法和库。要选择合适的,需要有关您的域的额外信息。

答案 1 :(得分:2)

看看shingling技术,并尝试找到相似性。 您可以点击此链接:http://nlp.stanford.edu/IR-book/html/htmledition/near-duplicates-and-shingling-1.html

例如,使用9个shingle并将每个子集与您的特定关键字进行比较

答案 2 :(得分:1)

我使用StemmingLevenshtein distance

这是运作中的算法:https://wizsearch.wizsoft.com/index.php/demo/

此演示搜索所有wiki标题,尝试“显示搜索词”选项以查看Levenshtein距离和纠错算法。

答案 3 :(得分:0)

针对字典检查每个查询字词。 如果在词典中找不到术语,那么词典中的这些词会显示为拼写建议,这与所讨论的查询词最相似。

相似/编辑距离 由于两个词之间的相似性度量通常是Damerau-Levenshtein距离https://en.wikipedia.org/wiki/Damerau%E2%80%93Levenshtein_distance

很少有其他参考