С учетом корпуса из 3 документов, например:
sentences = ["This car is fast",
"This car is pretty",
"Very fast truck"]
Я выполняю вручную расчет tf-idf.
Для документа 1 и слова "автомобиль" я могу найти следующее:
TF = 1/4
IDF = log(3/2)
TF-IDF = 1/4 * log(3/2)
Тот же результат должен применяться к документу 2, поскольку в нем 4 слова, и одно из них - "машина".
Я пытался применить это в sklearn, с кодом ниже:
from sklearn.feature_extraction.text import TfidfVectorizer
import pandas as pd
data = {'text': sentences}
df = pd.DataFrame(data)
tv = TfidfVectorizer()
tfvector = tv.fit_transform(df.text)
print(pd.DataFrame(tfvector.toarray(), columns=tv.get_feature_names()))
И результат, который я получаю:
car fast is pretty this truck very
0 0.500000 0.50000 0.500000 0.000000 0.500000 0.000000 0.000000
1 0.459854 0.00000 0.459854 0.604652 0.459854 0.000000 0.000000
2 0.000000 0.47363 0.000000 0.000000 0.000000 0.622766 0.622766
Я могу понять, что sklearn использует нормализацию L2, но все же, не должен ли показатель tf-idf "car" в первых двух документах быть одинаковым? Может ли кто-нибудь помочь мне понять результаты?