【发布时间】:2017-07-08 22:40:55
【问题描述】:
我正在寻找一种模糊substring 函数的方法。这是什么意思:
- 给出了两个字符串。
- 一个通常比另一个长。让我们称之为“短”和“长”
- 我们想要计算“长”中出现了多少“短”。
- 我们要考虑邻近度和顺序。就像“短”的元素出现在“长”中一样,它们更倾向于以相同的顺序出现并且彼此靠近。
示例 1:
- 简短:“杂草被摧毁”
- Long:“用细菌基因改造的作物可以在杂草被破坏的同时生长,而能够抵抗破坏性昆虫的转基因作物减少了对化学杀虫剂的需求。”
这是完全匹配的,得分应为 1.0。
示例 2:
- 简短:“杂草将被摧毁”
- 长:同上。
这是一个模糊匹配,因为“weed”和“destroyed”出现在文本中,但没有“will be”。它仍然应该获得高分(比如 0.8)。
示例 3:
如果我们将“Short”设置为“destroyed will be weeds”,虽然“destroyed”和“weeds”都出现在原文中,但分数应该很低,因为它们的顺序发生了变化。
对此有什么建议的实施吗?
最后一点是,没有唯一的方法来进行此评分。但我正在寻找一种算法。该算法的参数可以根据需要和要求进行调整。
【问题讨论】:
-
停用词可以处理限定词和冠词。 N-grams 可以阐明语法。我的看法。
-
A)这不是一个 Scala 问题 B)它肯定是在要求“场外资源”,所以是题外话。 C)如果不是这样,它就太宽泛了! D) 右侧的许多“相关”问题似乎涵盖了相同的领域。