在 perl 中对数组使用编辑距离

use edit distance on arrays in perl

我正在尝试比较两个数组之间的编辑距离。我试过使用 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 的其余元素执行相同操作。 我计划将其升级到更大的阵列。

Taking the first element of @list through the array of @words and doing the same through out the rest of the elements of @list.

您刚刚准确描述了您需要做什么才能获得您想要的输出;遍历 @list 数组并为每个元素计算 @words 数组的所有元素的距离。

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

#!/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";
}