Я пытаюсь использовать TF-IDF для сортировки документов по категориям. Я вычислил tf_idf для некоторых документов, но теперь, когда я пытаюсь вычислить сходство Косина между двумя из этих документов, я получаю трассировку:
#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 в векторах важен? Должны ли они сортироваться - или это не имеет значения для этого расчета?