Концептуальный вопрос о tf-idf с использованием pyspark

В официальной документации pyspark есть пример tf-idf.

hashingTF = HashingTF()
tf = hashingTF.transform(documents)
tf.cache()
idf = IDF().fit(tf)
tfidf = idf.transform(tf)

Я также готов в других источниках код, подобный этому. Вопрос: почему имя этого фрейма данных tfidf? Результат равен tf * idf или будет храниться только idf? Если да, то как рассчитать tf*idf?


person Breno Arruda    schedule 18.12.2018    source источник


Ответы (1)


Как указано в документации, HashingTF Transformer, который принимает наборы токенов и генерирует векторы частотности терминов. . На этом этапе включается TF.

hashingTF = HashingTF(inputCol="words", outputCol="rawFeatures", numFeatures=20)
featurizedData = hashingTF.transform(wordsData)

Далее — IDF – это Estimator, который соответствует набору данных. и производит IDFModel. IDF включается на этом этапе в виде IDFModel часто встречающихся токенов пониженного веса.

idf = IDF(inputCol="rawFeatures", outputCol="features")

idf оценщик должен быть приспособлен для производства трансформатора. Следовательно, последние шаги таковы:

idfModel = idf.fit(featurizedData)
rescaledData = idfModel.transform(featurizedData)
person Viseshini Reddy    schedule 23.12.2018
comment
Привет, Висешини Редди! Спасибо за ответ, но я все равно не понимаю. rescaledData будет хранить разреженный вектор с некоторыми значениями, верно? Мой вопрос в том, являются ли эти значения результатом idf, поэтому я должен каким-то образом умножить на featurizedData, чтобы получить tf*idf, или эти значения уже являются реальным tfidf? Извините, если я не ясен. Я не носитель английского языка. - person Breno Arruda; 25.12.2018
comment
rescaledData сохраняет результат TF-IDF. Конвейер, описанный выше, сначала вычисляет TF, а затем IDF, которые затем сопоставляются с использованием idf.fit(featurizedData). - person Viseshini Reddy; 26.12.2018