2

2つの配列間の編集距離を比較しようとしています。私はText:Levenshteinを使ってみました。perlの配列の編集距離を使用

#!/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の最初の要素を取るとの残りの要素から同じことをやって@リスト。 私はずっと大きな配列にこれをアップスケーリングする予定です。

+1

あなたの例では、 '距離(@list、@words)は'距離 'と同等です「foo」と「fear」、「foo」と「four」、「foo」と「foo」の編集距離を計算する「foo」、「fear」、「four」、「foo」、「bar」) foo」、および「foo」および「bar」を含む。 – ThisSuitIsBlackNot

+0

これは意味があります、ありがとうございます。 –

答えて

4

私はあなたが意味を正確に理解することはわからないんだけど、私は、これはあなたが期待するものだと思う:

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

ありがとう!これは私が探していたものでした –

1
@words

のアレイを通して@listの最初の要素を取り、@listの要素の残りの部分全体を通して同じことを行います。

あなたが望む出力を得るために必要なものを正確に説明しました。 @list配列をループし、各要素に対して@words配列のすべての要素の距離を計算します。

関連する問題