vectorizer sklearn scikit learn idf feature engineering python numpy scipy

sklearn - tf idf python scikit learn



CountVectorizer no imprime vocabulario (2)

He instalado Python 2.7, numpy 1.9.0, scipy 0.15.1 y scikit-learn 0.15.2. Ahora cuando hago lo siguiente en Python:

train_set = ("The sky is blue.", "The sun is bright.") test_set = ("The sun in the sky is bright.", "We can see the shining sun, the bright sun.") from sklearn.feature_extraction.text import CountVectorizer vectorizer = CountVectorizer() print vectorizer CountVectorizer(analyzer=u''word'', binary=False, charset=None, charset_error=None, decode_error=u''strict'', dtype=<type ''numpy.int64''>, encoding=u''utf-8'', input=u''content'', lowercase=True, max_df=1.0, max_features=None, min_df=1, ngram_range=(1, 1), preprocessor=None, stop_words=None, strip_accents=None, token_pattern=u''(?u)//b//w//w+//b'', tokenizer=None, vocabulary=None) vectorizer.fit_transform(train_set) print vectorizer.vocabulary None.

En realidad, debería haber impreso lo siguiente:

CountVectorizer(analyzer__min_n=1, analyzer__stop_words=set([''all'', ''six'', ''less'', ''being'', ''indeed'', ''over'', ''move'', ''anyway'', ''four'', ''not'', ''own'', ''through'', ''yourselves'', (...) ---> For count vectorizer {''blue'': 0, ''sun'': 1, ''bright'': 2, ''sky'': 3} ---> for vocabulary

El código anterior es del blog: http://blog.christianperone.com/?p=1589

¿Podrían por favor ayudarme por qué me da ese error? Como el vocabulario no está indexado correctamente, no puedo avanzar en la comprensión del concepto de TF-IDF. Soy un novato para Python por lo que cualquier ayuda sería apreciada.

Arco.


Te falta un guión bajo, intenta de esta manera:

from sklearn.feature_extraction.text import CountVectorizer train_set = ("The sky is blue.", "The sun is bright.") test_set = ("The sun in the sky is bright.", "We can see the shining sun, the bright sun.") vectorizer = CountVectorizer(stop_words=''english'') document_term_matrix = vectorizer.fit_transform(train_set) print vectorizer.vocabulary_ # {u''blue'': 0, u''sun'': 3, u''bright'': 1, u''sky'': 2}

Si usa el shell de ipython, puede usar la finalización de pestañas y puede encontrar más fácilmente los métodos y atributos de los objetos.


Intenta usar el método vectorizer.get_feature_names() . Proporciona los nombres de las columnas en el orden en que aparecen en document_term_matrix .

from sklearn.feature_extraction.text import CountVectorizer train_set = ("The sky is blue.", "The sun is bright.") test_set = ("The sun in the sky is bright.", "We can see the shining sun, the bright sun.") vectorizer = CountVectorizer(stop_words=''english'') document_term_matrix = vectorizer.fit_transform(train_set) vectorizer.get_feature_names() #> [''blue'', ''bright'', ''sky'', ''sun'']