2016-11-01 42 views
0

私は2つの異なるデータフレームdf1とdf2の会社名に一致させようとしています。私はdf1のcompany1とdf2のcompany2の2つの列にtf-idfとcosineの類似性を実装しようとしています。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を実行しているためです。フィッティングの最初のステップは、ドキュメントで使用しているボキャブラリを学習することです(hashingTFは無視されます)。したがって、マトリックス1は31089の固有の用語を持ち、2は46844です。

コサイン類似度は2つのマトリックスを乗算して類似性したがって、各列は異なる用語に一致します。しかし、あなたが2回フィットするので、2つの異なる語彙を使用しています。あなたは一度フィットし、二度変身する必要があります。

関連する問題