假设我有4个文本块:

1.

Premium 95 950,034
950,03
158,34
NUMERAR: 1
REST



2.

Premium 15 950,034
111,03 aaaaa
158,34
NUMERAR: 1
REST


3.

Premium 95 950,034
950,03 bbbbb
158,34
dddddd
fffff


4.

PremiR 95 950,034
950,03
158,34
NUMERAR: 1
REST A


如您所见,这些块彼此不同。
有一些最重合的-这是块1和4。有一些最不匹配的块-这是块2和3。

是否有一种算法(在Java / kotlin上)找到最匹配的文本块?在此示例中:1和4

每个块中有多少个单词匹配?



附言也许Levenshtein Distance可以帮助您

最佳答案

您应该搜索correlation

以下内容并非主要用于相关性。
一种简单而逐步的方法来简化数据:

将每个块转换为单词序列;单词ID。并使用levenshtein distance测量每两个序列之间的差异。


缓慢的二次O(N²)。
不尊重结构化数据(标题,数字X,数字Y)
这不尊重类似的单词Premium / PremiR。


您可以按n元语法(例如n = 3个单词的子序列)对块进行索引,从而减少数量或组合。

关于java - 查找最匹配的文本块的算法(在Java/Kotlin上),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/59566081/

10-09 07:09