TF-IDFを使用してドキュメントをカテゴリに分類しようとしています。いくつかのドキュメントの tf_idf を計算しましたが、これらのドキュメントの 2 つの間のコサイン類似度を計算しようとすると、次のようなトレースバックが表示されます。
#len(u)==201, len(v)==246
cosine_distance(u, v)
ValueError: objects are not aligned
#this works though:
cosine_distance(u[:200], v[:200])
>> 0.52230249969265641
len(u)==len(v) が正しいアプローチになるようにベクトルをスライスしていますか? コサインの類似性は、異なる長さのベクトルで機能すると思います。
私はこの機能を使用しています:
def cosine_distance(u, v):
"""
Returns the cosine of the angle between vectors v and u. This is equal to
u.v / |u||v|.
"""
return numpy.dot(u, v) / (math.sqrt(numpy.dot(u, u)) * math.sqrt(numpy.dot(v, v)))
また、ベクトル内の tf_idf 値の順序は重要ですか? それらをソートする必要がありますか?それとも、この計算では重要ではありませんか?