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'']