用于文本比较的 Perl 模块

标签 perl cpan

任何人都可以建议一个可以比较两个字符串并返回它们匹配的程度的 Perl 模块吗?我广泛搜索了 CPAN,尽管有类似的模块,如 字符串::约 数据::比较 ,他们不是我要找的。假设我有两个字符串:我爱你 , 和 我跟你说 .我想要比较这两个字符串的功能,考虑到许多参数,以正确顺序匹配单词( love 作为字符串中的第一个单词不应该“匹配” love 作为第二个字符串中的第 4 个单词,即使两个字符串都有那个单词),单词不匹配但拼写几乎相似(比如说 love loge ),单词数等并返回一个索引,比如一个从 0 到 1 的数字,标度为 1,表示两个字符串之间的相似程度。有没有这样的 Perl 模块?

最佳答案

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

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

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

  • https://metacpan.org/search?q=levenshtein
  • https://metacpan.org/search?q=wagner+fischer
  • https://metacpan.org/search?q=edit+distance

  • 如果您对口语相似性感兴趣,还可以查看语音比较:
  • https://metacpan.org/search?q=phonetic
  • https://metacpan.org/search?q=soundex
  • https://metacpan.org/search?q=metaphone
  • 关于用于文本比较的 Perl 模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11763875/

    相关文章:

    Debian : confliciting perl installations on a system 上的 Perl

    perl - OS X CPAN Perl 模块安装问题

    perl - Perl 中最快的日期到时间戳转换

    perl - 为什么Perl不编译为python之类的二进制文件

    perl - 无法在 Net::SFTP::Foreign 模块中使用 'copy_perm' 选项

    xcode - OSX 10.6 "make"命令不工作

    linux - 我怎么知道我在 perl 脚本中运行的是 64 位还是 32 位 linux?

    perl - 可能对未定义的取消引用数组进行迭代是错误还是功能?

    perl混了,cpan装不上

    perl - 如何在 Perl 中生成 URL slug?