2016-11-01 47 views
0

我試圖匹配兩個不同數據幀df1和df2的公司名稱。我試圖在兩列上實現tf-idf和餘弦相似性 - df1中的company1和df2中的company2。在tf-idf中處理不兼容的矩陣形狀

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)作爲輸出。我該如何糾正這個錯誤?

+0

這真的是一個錯誤?你是否期望矩陣具有相同的形狀?如果你不指望它們具有相同的形狀,那麼你想如何「修復」這個問題? – ASGM

+0

我是tf-idf的新手。我想找到每個公司名稱之間的餘弦相似度,這樣我就可以找到匹配的公司。我的主要目標是找到匹配的公司。由於這個錯誤,我不知道如何繼續下去。 – ComplexData

回答

0

問題是因爲您正在對兩個數據集執行fit_transform。擬合的第一步是學習您在文檔中使用的詞彙表(忽略哈希TF),因此矩陣1有31089個獨特詞彙,而2有46844.

餘弦相似性然後將這兩個矩陣相乘以產生相似度,所以每列都匹配一個不同的術語。但是,因爲你適合兩次,所以你使用了兩個不同的詞彙表。你需要適應一次,然後轉換兩次。