Как TfidfVectorizer воспринимает его аргументы?

#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() ).