では、データを便利な形式にすることから始めましょう。おそらく、異なる単語の数を数えて、バイナリ値の N 行 M 列の行列を作成します (これを と呼びますdata1
)。N 行のそれぞれは、1 つの画像に関連付けられた単語を記述します。M 列のそれぞれは、1 つの単語がタグ付けされた画像を表します。したがって、(N, M) の値は、タグ M が画像 N にない場合は 0、ある場合は 1 です。
このマトリックスから、単語のすべてのペア間の相関関係を見つけるには、次のようにします。
correlations1 = zeros(M, M);
for i=1:M
for j=1:M
correlations1(i, j) = corr(data1(:, i), data1(:, j));
end
end
これで、マトリックスcorrelations
はタグ間の相関関係を示します。もう一方のテキスト ファイルについても同じ操作を行います。次を使用して、調和平均の行列を作成できます。
h_means = correlations1.*correlations2./(correlations1+correlations2);
データ行列の各列の 1 の数を数えることで、最も頻繁に使用される 30 個のタグを見つけることができます。両方のファイルで最も一般的なタグを見つけたいので、最初にデータ マトリックスを追加します。
[~, tag_ranks] = sort(sum(data1 + data2, 1), 'descending'); %get the indices in sorted order
top_tags = tag_ranks(1:30);
最後にツリーを構築するには、ツリー クラスを作成するか ( classdefを参照)、ツリーを配列に格納します。上位 2 つの高調波平均を見つけるには、h_means マトリックスを調べます。タグ m1 の場合、次のことができます。
[~, tag_ranks] = sort(h_means(m1, :), 'descending');
top_tag = tag_ranks(1);
second_tag = tag_ranks(2);
次に、これらのタグをツリーに挿入して繰り返す必要があります。