これが一般的にどのように行われるかはわかりませんが、単語の隣接関係を捉える相関関係の概念を定義する大まかな方法を 1 つ思いつくことができます。
テキストの長さが N で、配列であるとします。
text[0], text[1], ..., text[N-1]
次の単語がテキストに表示されているとします。
word[0], word[1], ..., word[k]
各単語 word[i] に対して、長さ N-1 のベクトルを定義します
X[i] = array(); // of length N-1
ベクトルの i 番目のエントリは、単語が i 番目の単語または (i+1) 番目の単語の場合は 1 であり、それ以外の場合は 0 です。
// compute the vector X[i]
for (j = 0:N-2){
if (text[j] == word[i] OR text[j+1] == word[i])
X[i][j] = 1;
else
X[i][j] = 0;
}
次に、word[a] と word[b] の間の相関係数を、X[a] と X[b] の間の内積として計算できます (内積は、これらの単語が隣接する回数であることに注意してください)。長さ (長さは単語の出現回数の平方根で、おそらくその 2 倍です)。この量を COR(X[a],X[b]) と呼びます。明らかに COR(X[a],X[a]) = 1 であり、word[a]、word[b] がしばしば隣接している場合、COR(X[a],X[b]) はより大きくなります。
これは、「隣接」から他の近くの概念に一般化できます。たとえば、代わりに 3 単語 (または 4、5 など) ブロックを使用することを選択できます。ウェイトを追加することもできます。必要に応じて、さらに多くのことを行うこともできます。有用なものがあるとすれば、何が有用かを実験する必要があります。