【发布时间】:2015-02-16 09:43:26
【问题描述】:
我尝试比较两个文本文件并想知道它们的相等程度。必须考虑单词的顺序。
例如:
文本_1:
Lorem ipsum dolor sit amet, consectetuer
adipiscing elit. Aenean commodo
ligula eget dolor. Aenean massa.
文本_2:
Lorem ipsum sit amet, consictetuer
adipiscing elit. Aenean dolor commodo
ligvla eget dolor. massa.
我找到了很多解决方案来逐行比较两个文本文件,但是如果有任何区别,它们会在一行中给出不匹配的结果。就像在示例中一样,所有行都会有所不同,我没有得到任何匹配项。
我需要一些算法来逐字比较文件。应该看到,一行中的单词是相等的并且出现的顺序相同,但有时可能是缺少单词,添加或几个字符不匹配。
因此,如果缺少一个单词,算法不应创建后续错误(例如在示例中:在 text_2 中缺少“dolor”,因此如果我在一个数组中逐字比较文本,我会得到后续错误几乎是文本的其余部分)
我预期的解决方案应该给我:
- 在同一上下文中的两个文本中出现的单词列表。 [Lorem ipsum sit amet,adipiscing 精英。 Aenean commodo eget dolor。马萨诸塞州]
- 第二个文本中遗漏的单词列表。 [consectetuer, ligula, Aenean]
- 在第二个文本中添加的单词列表。 [consictetuer, ligvla]
- 两个文本中的单词列表,但位置不同 [dolor]
- (可选)识别只有几个字符不同的单词 [ligula, ligvla]
目标是计算匹配的量化等级,例如 80% 匹配。我还不知道具体怎么计算。但是主要的问题是如果缺少或添加了某些单词,则在一行中获取单词的匹配项[例如在两个文本的第一行中匹配“sit”“amet”。]
我开始用 java 编程,但由于更好地处理正则表达式,我改用 Perl。
感谢您的帮助。
【问题讨论】:
标签: file compare string-matching