vectorizer sklearn idf from fit_transform features extracting python scikit-learn

python - from - sklearn: TFIDF Transformer: cómo obtener los valores tf-idf de palabras dadas en el documento



python vectorizer (2)

Aquí hay otra solución más simple en Python 3 con la biblioteca de pandas.

from sklearn.feature_extraction.text import TfidfVectorizer import pandas as pd vect = TfidfVectorizer() tfidf_matrix = vect.fit_transform(documents) df = pd.DataFrame(tfidf_matrix.toarray(), columns = vect.get_feature_names()) print(df)

Utilicé sklean para calcular los valores TFIDF para términos en documentos usando el comando como

from sklearn.feature_extraction.text import CountVectorizer count_vect = CountVectorizer() X_train_counts = count_vect.fit_transform(documents) from sklearn.feature_extraction.text import TfidfTransformer tf_transformer = TfidfTransformer(use_idf=False).fit(X_train_counts) X_train_tf = tf_transformer.transform(X_train_counts)

X_train_tf es una matriz dispersa y escasa de forma

X_train_tf.shape

Tiene salida como (2257, 35788). ¿Cómo puedo obtener TF-IDF para palabras en un documento específico? Más específicamente, ¿cómo obtener palabras con los valores máximos de TF-IDF en un documento dado?


Puedes usar TfidfVectorizer desde sklean

from sklearn.feature_extraction.text import TfidfVectorizer import numpy as np from scipy.sparse.csr import csr_matrix #need this if you want to save tfidf_matrix tf = TfidfVectorizer(input=''filename'', analyzer=''word'', ngram_range=(1,6), min_df = 0, stop_words = ''english'', sublinear_tf=True) tfidf_matrix = tf.fit_transform(corpus)

El tfidf_matix anterior tiene los valores TF-IDF de todos los documentos en el corpus. Esta es una gran matriz dispersa. Ahora,

feature_names = tf.get_feature_names()

esto le da la lista de todos los tokens o n-grams o palabras. Para el primer documento en su corpus,

doc = 0 feature_index = tfidf_matrix[doc,:].nonzero()[1] tfidf_scores = zip(feature_index, [tfidf_matrix[doc, x] for x in feature_index])

Vamos a imprimirlos,

for w, s in [(feature_names[i], s) for (i, s) in tfidf_scores]: print w, s