tutorial tfidfvectorizer tfidftransformer spanish scikit learn idf hashingvectorizer countvectorizer python scikit-learn tf-idf

python - tfidftransformer - tf-idf características pesos utilizando sklearn.feature_extraction.text.TfidfVectorizer



tf idf python (2)

esta página: http://scikit-learn.org/stable/modules/feature_extraction.html menciona:

Como tf – idf se usa con mucha frecuencia para las funciones de texto, también hay otra clase llamada TfidfVectorizer que combina todas las opciones de CountVectorizer y TfidfTransformer en un solo modelo.

Luego seguí el código y uso fit_transform () en mi corpus. ¿Cómo obtener el peso de cada característica calculada por fit_transform ()?

Lo intenté:

In [39]: vectorizer.idf_ --------------------------------------------------------------------------- AttributeError Traceback (most recent call last) <ipython-input-39-5475eefe04c0> in <module>() ----> 1 vectorizer.idf_ AttributeError: ''TfidfVectorizer'' object has no attribute ''idf_''

pero falta este atributo.

Gracias


Desde la versión 0.15, la puntuación tf-idf de cada característica se puede recuperar a través del atributo idf_ del objeto TfidfVectorizer :

from sklearn.feature_extraction.text import TfidfVectorizer corpus = ["This is very strange", "This is very nice"] vectorizer = TfidfVectorizer(min_df=1) X = vectorizer.fit_transform(corpus) idf = vectorizer.idf_ print dict(zip(vectorizer.get_feature_names(), idf))

Salida:

{u''is'': 1.0, u''nice'': 1.4054651081081644, u''strange'': 1.4054651081081644, u''this'': 1.0, u''very'': 1.0}

Como se discutió en los comentarios, antes de la versión 0.15, una solución alternativa es acceder al atributo idf_ través del supuestamente oculto _tfidf (una instancia de TfidfTransformer ) del vectorizador:

idf = vectorizer._tfidf.idf_ print dict(zip(vectorizer.get_feature_names(), idf))

Lo que debería dar la misma salida que el anterior.


Vea también this sobre cómo obtener los valores TF-IDF de todos los documentos:

feature_names = tf.get_feature_names() doc = 0 feature_index = X[doc,:].nonzero()[1] tfidf_scores = zip(feature_index, [X[doc, x] for x in feature_index]) for w, s in [(feature_names[i], s) for (i, s) in tfidf_scores]: print w, s this 0.448320873199 is 0.448320873199 very 0.448320873199 strange 0.630099344518 #and for doc=1 this 0.448320873199 is 0.448320873199 very 0.448320873199 nice 0.630099344518

Creo que los resultados están normalizados por documento:

>>> 0.448320873199 2 + 0.448320873199 2 + 0.448320873199 2 + 0.630099344518 2 0.999999999999754848