【问题标题】:Find substring in text which has the highest similarity to a given keyword在文本中查找与给定关键字相似度最高的子字符串
【发布时间】:2017-01-21 16:08:42
【问题描述】:

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

基本上,我试图找到与我拥有的关键字列表匹配的部分文本(文本有很多错误、拼写错误、多余的符号和空格)。

【问题讨论】:

  • 我对此不太了解,但此链接可能会有所帮助...stackoverflow.com/questions/5859561/…
  • @Dandy:我知道编辑距离。这个问题是要求给定字符串 S 和 T,找到 S 的一个子字符串,它与 T 具有最小的编辑距离(或任何其他相似性度量)。
  • @Dandy:感谢您的链接,但我知道最小编辑距离问题。不确定它如何应用于我的问题?您能否在下面详细说明您要说的内容?

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


【解决方案1】:

看一下叠瓦技术,并尝试找出相似之处。 你可以点击这个链接:http://nlp.stanford.edu/IR-book/html/htmledition/near-duplicates-and-shingling-1.html

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

【讨论】:

  • 我相信我使用的算法(Jacard 索引)无论如何都是基于 k-shingling
【解决方案2】:

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

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

【讨论】:

  • > Jaccard 索引是“幸运的”相似性算法,因为您可以为新符号更新它的值,而无需重新计算所有以前的东西。你能解释一下或提供一个关于你上面的意思的链接吗?
  • 假设集合是A = {1, 2, 3}B = {1},JI是1/3。如果你给B添加新值,你可以简单地更新分子和分母——B += {2},JI变为(1 + 1) / (3 + 0) = 2/3,值10可以在没有B的其余部分的情况下计算。只要我们使用集合,contains 操作就非常有效。 (这个例子可以很容易地扩展到字符串)
  • (对于之前的评论——例如,要检查1 是否已经在分子中计算,我们需要额外的检查,这也可以在摊销的常数时间内完成(但是,需要最大空间是A 的空间。实际上很有趣的问题——找到searchString 的差异并检查containstext 或签证诗句会更有效。我敢打赌那没关系,然后继续写证明。
【解决方案3】:

我使用StemmingLevenshtein distance

这是正在运行的算法:https://wizsearch.wizsoft.com/index.php/demo/

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

【讨论】:

    【解决方案4】:

    每个查询词都会根据字典进行检查。 如果在字典中未找到某个词,则字典中的这些词将显示为拼写建议,与相关查询词最相似。

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

    很少有其他参考资料

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-11-17
      • 1970-01-01
      • 1970-01-01
      • 2023-04-07
      • 1970-01-01
      • 2021-12-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多