【问题标题】:use edit distance on arrays in perl在 perl 中对数组使用编辑距离
【发布时间】:2017-03-16 08:12:19
【问题描述】:

我正在尝试比较两个数组之间的编辑距离。我尝试过使用 Text:Levenshtein。

#!/usr/bin/perl -w
use strict;
use Text::Levenshtein qw(distance);

my @words = qw(four foo bar);
my @list = qw(foo fear);
my @distances = distance(@list, @words);

print "@distances\n";
#results: 3 2 0 3

然而,我希望结果如下所示:

2 0 3
2 3 2

通过@words 数组获取@list 的第一个元素,并通过@list 的其余元素执行相同的操作。 我计划将其升级为更大的阵列。

【问题讨论】:

  • 在您的示例中,distance(@list, @words) 等价于 distance('foo', 'fear', 'four', 'foo', 'bar'),它计算“foo”和“fear”、“foo”和“four”、“foo”和“foo”之间的编辑距离"、"foo" 和 "bar"。
  • 有道理,谢谢。

标签: arrays perl bioinformatics levenshtein-distance edit-distance


【解决方案1】:

我不确定你的意思是什么,但我认为这是你所期望的:

#!/usr/bin/perl -w
use strict;
use Text::Levenshtein qw(distance);

my @words = qw(four foo bar);
my @list = qw(foo fear);

foreach my $word (@list) {
   my @distances = distance($word, @words);
   print "@distances\n";
}

【讨论】:

  • 谢谢!这就是我一直在寻找的
【解决方案2】:

通过@words 的数组获取@list 的第一个元素,并在@list 的其余元素中执行相同的操作。

你刚刚描述了你需要做什么才能得到你想要的输出;循环遍历@list 数组,并为每个元素计算@words 数组中所有元素的距离。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-04-24
    • 2023-03-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-17
    相关资源
    最近更新 更多