J'utilise python et je veux obtenir la représentation TFIDF pour un grand corpus de données, j'utilise le code suivant pour convertir les documents dans leur forme TFIDF.
from sklearn.feature_extraction.text import TfidfVectorizer
tfidf_vectorizer = TfidfVectorizer(
min_df=1, # min count for relevant vocabulary
max_features=4000, # maximum number of features
strip_accents='unicode', # replace all accented unicode char
# by their corresponding ASCII char
analyzer='Word', # features made of words
token_pattern=r'\w{1,}', # tokenize only words of 4+ chars
ngram_range=(1, 1), # features made of a single tokens
use_idf=True, # enable inverse-document-frequency reweighting
smooth_idf=True, # prevents zero division for unseen words
sublinear_tf=False)
tfidf_df = tfidf_vectorizer.fit_transform(df['text'])
Ici je passe un paramètre max_features
. Le vectoriseur sélectionnera les meilleures fonctionnalités et renverra une matrice clairsemée scipy. Le problème est que je ne sais pas quelles fonctionnalités sont sélectionnées et comment mapper ces noms de fonctionnalités vers la matrice scipy que j'obtiens? Fondamentalement, pour les n
fonctionnalités sélectionnées parmi le nombre de documents m
, je veux un m x n
matrice avec les entités sélectionnées comme noms de colonnes au lieu de leurs identifiants entiers. Comment est-ce que j'accomplis ceci?
Vous pouvez utiliser tfidf_vectorizer.get_feature_names()
. Cela imprimera les noms de fonction sélectionnés (termes sélectionnés) à partir des documents bruts.
Vous pouvez également utiliser l'attribut tfidf_vectorizer.vocabulary_
Pour obtenir un dict qui mappera les noms d'entités à leurs indices, mais ne sera pas trié. Le tableau de get_feature_names()
sera trié par index.
utilisation tfidf_vectorizer.vocabulary_
, cela donne une cartographie des caractéristiques (termes renvoyant aux indices)