Мне нужны отзывы о подходе к пониманию результатов векторов TF-IDF и, возможно, альтернативных подходах.
Прямо сейчас у меня есть два корпуса текста. Цель состоит в том, чтобы найти, какие документы в каждом корпусе наиболее похожи.
Когда я нахожу совпадение, которое интересует, я хочу знать почему, поэтому я реализовал простую функцию под названием why_match()
, но я хотел бы помочь узнать, является ли это правильным подходом.
Работает так:
def why_match(doc_vector_a, doc_vector_b, sklearn_tfidfvectorizer):
distance = abs(doc_vector_a - doc_vector_b)
nearest_words = np.array((distance != 0) & (distance < 0.0015))
vocab = np.array(vectorizer.get_feature_names())
keywords = vocab[nearest_words]
return keywords
Идея должна заключаться в том, чтобы возвращать все ключевые слова, которые ближе, чем некоторый порог (0,0015), а не 0 (скорее всего, потому что слово отсутствует ни в одном документе).
Это правильный способ «объяснить» близость в TF-IDF? Мои результаты достойные, но, кажется, они придают большое значение очень общим словам, что, к сожалению, очень полезно для моей задачи.