ホームページ  >  記事  >  バックエンド開発  >  テキストドキュメント間の類似性を測定するにはどうすればよいですか?

テキストドキュメント間の類似性を測定するにはどうすればよいですか?

DDD
DDDオリジナル
2024-10-23 06:55:02976ブラウズ

How to Measure the Similarity Between Text Documents?

テキスト ドキュメント間の類似性の決定

ドキュメントの類似性の測定

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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。