处理tf-idf中不兼容的矩阵形状



我正在尝试匹配两个不同数据帧df1和df2的公司名称。我试图在两列上实现tf-idf和余弦相似性- df1中的company1和df2中的company2。

from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.metrics.pairwise import cosine_similarity
v = TfidfVectorizer()
tfidf_matrix1 = v.fit_transform(df1['company1'])
tfidf_matrix2 = v.fit_transform(df2['company2'])
cosine_similarity(tfidf_matrix2, tfidf_matrix1)

这给我一个错误:

ValueError: Incompatible dimension for X and Y matrices: X.shape[1] 
== 31089 while Y.shape[1] == 46844

这可能是因为:

tfidf_matrix1.shape

给我(78684,46844)作为输出。和- - - - - -

tiff_matrix2.shape

给我(39462,31089)作为输出。我如何纠正这个错误?

基本上:

tfidf_matrix1 = v.fit_transform(df1['company1'])

tfidf_matrix2 = v.transform(df2['company2'])

问题是因为您正在对两个数据集进行fit_transform。拟合的第一步是学习文档中使用的词汇表(忽略hashingTF),因此矩阵1有31089个唯一术语,而矩阵2有46844个。

余弦相似度然后将两个矩阵相乘以产生相似度,因此每列与不同的项匹配。然而,因为您适合两次,所以您使用了两个不同的词汇表。

最新更新