#python #scikit-learn #tf-idf #tfidfvectorizer
Вопрос:
Я хотел бы немного лучше понять, как работает TfidfVectorizer. Я не понимаю, как можно было использовать последующие функции, такие как get_feature_name
Вот воспроизводимый пример для моего вопроса:
from sklearn.feature_extraction.text import TfidfVectorizer
text = ['It was a queer, sultry summer', 'the summer they electrocuted the Rosenbergs',
'and I didn’t know what I was doing in New York', 'I m stupid about executions',
'The idea of being electrocuted makes me sick',
'and that’s all there was to read about in the papers',
'goggle eyed headlines staring up at me on every street corner and at the fusty',
'peanut-selling mouth of every subway', 'It had nothing to do with me',
'but I couldn’t help wondering what it would be like',
'being burned alive all along your nerves']
tfidf_vect = TfidfVectorizer(max_df=0.7,
min_df= 0.01,
use_idf=True,
ngram_range=(1,2))
tfidf_mat = tfidf_vect.fit_transform(text)
print(tfidf_mat)
features = tfidf_vect.get_feature_names()
print(features)
В этом примере я думал, что мой объект tfidf_vect
определяет все параметры , которые я хочу для своего применения TfidfVectorizer
, к которым я затем применяю text
, чтобы получить результаты в объекте tfidf_mat
.
Тогда я не понимаю, почему для извлечения дополнительной информации из моего анализа tfidf я применяю функции к объекту tfidf_vect
, а не к tfidf_mat
нему .
Как команда tfidf_vect.get_feature_names()
узнает , что это должно быть применено text
, если это не было указано в ее определении?
Ответ №1:
Команда tfidf_vect.get_feature_names()
работает, потому tfidf_vect
что является экземпляром класса TfidfVectorizer
. Этот класс имеет определенные атрибуты (см. документацию). Эти атрибуты могут изменяться после вызова методов класса, таких как метод fit_transform
. Теперь get_feature_names
имеет доступ к тем же атрибутам экземпляра класса fit_transform
, что и метод. Возможно, вы захотите прочитать больше о классах, методах, атрибутах и тому подобном.
Итак: tfidf_mat
просто содержит возвращаемое значение fit_transform()
(которое представляет собой разреженную матрицу (n_samples, n_features)). После вызова fit_transform()
tfidf_vect
изменяются атрибуты, доступ к которым может быть получен любым методом этого экземпляра класса (а также с помощью get_feature_names()
).