|
|
1
16
Levenshtein距离不能完全工作,因为您希望允许重新排列。我认为你最好的选择是找到最好的重新排列方式,把距离作为每个单词的成本。 找到重新安排的成本,有点像 pancake sorting problem . 因此,您可以使用其他字符串的每个组合排列单词的每个组合(过滤出精确的匹配项),尝试最小化每个单词对上的排列距离和Levenshtein距离的组合。 编辑: 现在我有了第二个机会,我可以发布一个快速的示例(所有“最佳”猜测都是在检查中进行的,而不是实际运行算法):
(注意所有翻转包括范围内的所有元素,并且我使用的范围是X-XJ=+/- 1)。 其他例子
为了展示这三种可能的组合…
不管怎样,你做成本函数的第二选择将是最低的成本,这是你所期望的! |
|
|
2
14
确定“不按顺序总体相似性”的一种方法是使用某种
基于压缩的距离
. 基本上,大多数压缩算法(例如
假设你有一个函数
哪里
实际上,下面的公式甚至更好,因为它是对称的(即分数不会随字符串的不同而变化
这种技术的根源在于信息论。 优点:良好的压缩算法已经可用,所以您不需要进行太多的编码,它们在线性时间(或几乎是线性时间)内运行,所以速度很快。相比之下,涉及所有单词排列的解决方案在单词数量上呈指数级增长(尽管可以承认,在您的情况下这可能不是问题,正如您所说,您知道只有少数单词)。 |
|
|
3
5
一种方法(尽管这可能更适合拼写检查类型算法)是“编辑距离”,即计算将一个字符串转换为另一个字符串所需的编辑次数。这里有一种常见的技术: |
|
|
4
5
你可能想研究生物学家用来比较DNA序列的算法,因为它们必须处理许多相同的事情(区块可能丢失,或插入,或只是移动到字符串中的不同位置)。 这个 Smith-Waterman 算法可能是一个很好地工作的例子,尽管对于您的使用来说它可能太慢了。不过,可能会给你一个起点。 |
|
|
5
2
我有一个类似的问题,我需要得到字符串中相似字符的百分比。它需要精确的序列,例如“hello sir”和“sir hello”,当比较时,需要给我五个相同的字符,在这种情况下,它们将是两个“hello”。然后,它将取两个字符串中最长的长度,并给出它们相似程度的百分比。这就是我想出的密码
|
|
|
6
2
我不能在这里标记两个答案,所以我要回答并标记我自己的答案。在大多数情况下,Levenshtein距离似乎是正确的方法。但值得一提的是
|
|
|
7
1
还有另一种方法。使用卷积的模式识别。图像A通过傅立叶变换运行。图像B也。现在将f(a)叠加在f(b)上,然后将其转化为带有几个白点的黑色图像。这些点表示a与b强匹配的位置。点的总和表示总体相似性。不知道你是如何在弦上进行快速傅立叶变换的,但我很确定它会起作用。 |
|
|
8
0
困难是要在语义上匹配字符串。 可以根据字符串的词汇属性生成某种值。例如,他们有蓝色,天空,他们在同一句话,等等…但它不能处理“sky's jean is blue”或其他一些使用相同单词的奇怪的ball-english结构的情况,但您需要解析英语语法… 要做任何超出词汇相似度的事情,你需要看自然语言处理,而且不会有一个单一的算法可以解决你的问题。 |
|
9
-2
可能的方法: 为中的所有单词组合构造一个字符串键为“word1 word2”的字典。 参考 字符串。单个组合可能多次发生,因此字典的值应为 列表 个数,每个代表 距离 在引用字符串中的单词之间。 当您这样做时,这里会有重复:对于每个“word1 word2”字典条目,都会有一个“word2 word1”条目,具有相同的距离值列表,但会被否定。 对于中的每个单词组合 比较 字符串(单词1和2、单词1和3、单词2和3等),检查引用字符串中的两个键(单词1单词2和单词2_单词1),找到 最近的 值到当前字符串中的距离。将当前距离与计数器最近距离之差的绝对值相加。 如果两个词之间的最近引用距离与比较字符串方向相反(word2 word1),则可能希望将其权重小于两个字符串中的最近值方向相同时的权重。 完成后,将和除以比较字符串中单词数的平方。 这应该提供一些十进制值,表示每个单词/短语与原始字符串中某些单词/短语的匹配程度。 当然,如果原始字符串较长,就不能解释这一点,因此可能需要计算这两个方向(使用一个作为参考,然后使用另一个)并平均它们。 我完全没有这方面的代码,我可能只是重新发明了一个非常粗糙的轮子。YMMV。 |
|
|
feasega · 聚合物模拟-2个节点之间的最短路线,适用于所有节点 1 年前 |
|
|
Alisa Petrova · 在有向图中更改一对顶点以创建循环 1 年前 |
|
|
b39b332d · 使用C++标准库实现高效间隔存储 2 年前 |
|
ABGR · 二叉树的直径——当最长路径不通过根时的失败案例 2 年前 |
|
|
EpicAshman · 数独棋盘程序中同一列和同一行出现两次的数字 2 年前 |