ホームページ > バックエンド開発 > Python チュートリアル > 異なるテキストドキュメント間の類似性を計算するにはどうすればよいですか?

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

Patricia Arquette
リリース: 2024-10-23 06:48:29
オリジナル
468 人が閲覧しました

How Can I Calculate the Similarity Between Different Text Documents?

テキスト ドキュメント間の類似性を判断する方法

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

ソース:php
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート