web-dev-qa-db-fra.com

Obtenir les noms de fonctionnalités sélectionnés TFIDF Vectorizer

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?

11
Clock Slave

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.

16
Vivek Kumar

utilisation tfidf_vectorizer.vocabulary_, cela donne une cartographie des caractéristiques (termes renvoyant aux indices)

5
orsonady