をperlの例については、このテキストを含む:コサイン類似度は、私はファイルを持っている
perl java python php scala
java pascal perl ruby ada
ASP awk php java perl
C# ada python java scala
私は
、bignningで簡単なテストをした http://search.cpan.org/~wollmers/Bag-Similarity-0.019/lib/Bag/Similarity/Cosine.pm、コサインsimilaityを計算モジュールを見つけました
my $cosine = Bag::Similarity::Cosine->new;
my $similarity = $cosine->similarity(['perl','java','python','php','scala'],['java','pascal','perl','ruby','ada']);
print $similarity;
ルスルートは0.4であり;
open(F,"/home/ahmed/FILE.txt") or die " Pb pour ouvrir";
my @data; # containt each line of the FILE in each case
while(<F>) {
chomp;
push @data, $_;
}
#print join " ", @data;
my $cosine = Bag::Similarity::Cosine->new;
for my $i (0 .. $#data-1) {
for my $j ($i + 1 .. $#data) {
my $similarity = $cosine->similarity($data[$i],$data[$j]);
print "line $i a une similarite de $similarity avec line $j\n";
$i + 1,
$j + 1;
}
}
結果:
line 0 has a similarity of 0.933424735647156 with line 1
line 0 has a similarity of 0.953945734121021 with line 2
line 0 has a similarity of 0.939759036144578 with line 3
line 1 has a similarity of 0.917585834612093 with line 2
line 1 has a similarity of 0.945092544842746 with line 3
line 2 has a similarity of 0.908826679128811 with line 3
類似必要
iは、ファイルから読み込まれ、各ライン間の余弦を計算する問題は、結果が異なる場合、これはコードであります1行目と2行目の間に0.4とする。
私はこのようなファイルに変更:
['perl','java','python','php','scala']
['java','pascal','perl','ruby','ada']
['ASP','awk','php','java','perl']
['C#','ada','python','java','scala']
が、同じ結果を、 ありがとうございました。
入力ファイルに作ることは非常に奇妙な変更です。配列参照の文字列表現のように見えました。あなたはどこからそのアイデアを得ましたか? –
私はそれが奇妙なことを知っている、私はこの質問を投稿する前にすべてのソリューションを試した、これはエラーなしで、私の最初のステップは、私たちは学ぶことはできません:) – Ahmed