問題: 2 つのテキスト ドキュメント間の類似性を計算して、意味的な整合性を評価したいと考えています。
解決策: 文書の類似性を測定する一般的なアプローチは、文書を TF-IDF (用語頻度 - 逆文書頻度) ベクトルに変換することです。 TF-IDF は、文書内の用語の頻度とコーパス全体での希少性に基づいて用語に重みを割り当てます。その後、これらのベクトル間のコサイン類似度が計算され、類似度が定量化されます。
実装: Python の Gensim と scikit-learn は、TF-IDF 変換の堅牢な実装を提供します。 scikit-learn の使用:
<code class="python">from sklearn.feature_extraction.text import TfidfVectorizer documents = [open(f).read() for f in text_files] tfidf = TfidfVectorizer().fit_transform(documents) # Cosine similarity is calculated automatically pairwise_similarity = tfidf * tfidf.T</code>
結果のペアワイズ類似度は、各セルが対応するドキュメント ペア間のコサイン類似度を表す疎行列です。
結果の解釈:スパース行列の次元は、コーパス内のドキュメントの数と同じです。指定された入力ドキュメントとの類似性が最も高いドキュメントを抽出するには、NumPy の np.fill_diagonal() を使用して自己類似性をマスクし、np.nanargmax() を使用して非自己類似性の最大値を見つけます:
<code class="python">result_idx = np.nanargmax(arr[input_idx]) most_similar_doc = corpus[result_idx]</code>
argmax は、自明な最大値 1 (各ドキュメントのそれ自体に対する類似性) を避けるために、マスクされた配列に対して実行されることに注意してください。
以上が異なるテキストドキュメント間の類似性を計算するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。