ドキュメントの類似性の測定
NLP で 2 つのテキスト ドキュメント間の類似性を確認するには、標準的なアプローチでは、ドキュメントを TF-IDF ベクトルに変換します。これらのベクトルは、情報検索システムで一般的に使用される指標であるコサイン類似度を計算するために利用されます。さらに詳しい情報については、オンラインで入手できる電子書籍「情報検索入門」を参照してください。
Python での実装
Python には Gensim などのライブラリが用意されています。 TF-IDF とコサイン類似度の計算を容易にする scikit-learn も含まれます。 scikit-learn では、ドキュメント間のコサイン類似度の計算には、TF-IDF ベクトルの利用が含まれます:
<code class="python">from sklearn.feature_extraction.text import TfidfVectorizer documents = [open(f).read() for f in text_files] tfidf = TfidfVectorizer().fit_transform(documents) pairwise_similarity = tfidf * tfidf.T</code>
プレーン テキスト ドキュメントは直接処理できます:
<code class="python">corpus = ["I'd like an apple", "An apple a day keeps the doctor away"] tfidf = TfidfVectorizer(min_df=1, stop_words="english").fit_transform(corpus) pairwise_similarity = tfidf * tfidf.T</code>
結果
結果として得られるスパース行列、pairwise_similarity は正方形になります。特定のドキュメントに最も類似したドキュメントを識別するには、(自己相似性を表す) 対角要素をマスクした後、NumPy の argmax 関数を利用できます。
<code class="python">import numpy as np arr = pairwise_similarity.toarray() np.fill_diagonal(arr, np.nan) input_doc = "Document to compare" input_idx = corpus.index(input_doc) result_idx = np.nanargmax(arr[input_idx]) most_similar_doc = corpus[result_idx]</code>
以上がテキストドキュメント間の類似性を測定するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。