我设法使用以下代码计算TF-IDF和矩阵:
from sklearn.feature_extraction.text import TfidfVectorizer
#define vectorizer parameters
tfidf_vectorizer = TfidfVectorizer(max_df=0.8, max_features=200000,
min_df=0.2, stop_words='english',
use_idf=True, ngram_range=(1,3))
tfidf_matrix = tfidf_vectorizer.fit_transform(paragraphs) #fit the vectorizer to paragraphs
但是,我现在想比较不同段落的相似性,我的最终结果应该是这样的:
Pair# | Paragraph1 | Paragraph2 | Similarity score
1 --------xyz --------xyz --------- 30.2%
2 --------xyz --------xyz --------- 22.3%
3 --------xyz --------xyz --------- 4.3%
如何使用TF-IDF
矩阵比较不同的段落对?
答案 0 :(得分:0)
假设paragraphs
参数中的每个段落都是一个字符串,那么tfidf_matrix
中的每一行都将是表示该字符串的数字向量。用于测量向量(特别是tf-idf权重向量)之间的相似性的通用度量是cosine similarity。一个有用的实现是scikit-learn cosine_similarity method ,它接受矩阵作为输入。
所以大概你可以做到:
from sklearn.metrics.pairwise import cosine_similarity
cosine_sim_matrix = cosine_similarity(tfidf_matrix, tfidf_matrix)
每个单元格i, j
将是段落i
和j
之间的相似度得分。