Я нашел в Интернете следующий код для расчета TFIDF:
https://github.com/timtrueman/tf-idf/blob/master/tf-idf.py
Я добавил «1+» в функцию def idf (word, documentList), поэтому я не буду разделен на 0 ошибку:
return math.log(len(documentList) / (1 + float(numDocsContaining(word,documentList))))
Но меня смущают две вещи:
- В некоторых случаях я получаю отрицательные значения, это правильно?
- Меня смущают строки 62, 63 и 64.
Код:
documentNumber = 0
for word in documentList[documentNumber].split(None):
words[word] = tfidf(word,documentList[documentNumber],documentList)
Должен ли TFIDF рассчитываться только по первому документу?