問題:您希望計算兩個文本文檔之間的相似性以評估它們的語義對齊。
解決方案:測量文件相似度的流行方法是將它們轉換為 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>
產生的pairwise_similarity 是一個稀疏矩陣,其中每個單元格表示相應文檔對之間的餘弦相似度。
解釋結果:稀疏矩陣的維度等於語料庫中文檔的數量。要提取與給定輸入文檔相似度最高的文檔,請利用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中文網其他相關文章!