5

谁能推荐一个 Perl 模块来比较两个字符串并返回它们匹配的程度?我广泛搜索了 CPAN,虽然有类似的模块,如String::ApproxData::Compare,但它们不是我想要的。假设我有两根弦:我爱你,我爱。我想要比较这两个字符串的功能,考虑到许多参数,以正确顺序匹配单词(love作为字符串中的第一个单词不应该“匹配” love作为第二个字符串中的第四个单词,即使两者字符串有那个词),词不匹配但拼写几乎相似(比如说loveloge),单词的数量等并返回一个索引,比如一个从 0 到 1 的数字,以 1 为单位,表示两个字符串之间的相似程度。有没有这样的 Perl 模块?

4

1 回答 1

6

有很多这样的模块。但是,通常情况下,您必须以某种特殊方式利用它们来解释您自己的假设。大多数像这样的字符串比较工具只是实现了一些用于比较一个字符串和另一个字符串的算法。大多数人认为,如果您有具体的政策决定要做出,您将自己编写代码。

就个人而言,我不确定是否会推荐Text::Levenshtein,因为存在错误和缺乏 ut8 支持。不过,我也没有更好的建议。

但是,这些搜索将揭示许多您可以研究的潜在模块,并确定最适合您的目的的模块(基于执行此类操作的常用算法的名称):

如果您对口语相似性感兴趣,还可以查看语音比较:

于 2012-08-01T17:44:25.483 回答