sklearn: transformateur TFIDF: comment obtenir les valeurs tf-idf de mots donnés dans le document

j'ai utilisé sklean "151940920 pour le calcul de la TFIDF valeurs des termes dans les documents à l'aide de la commande

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 est scipy matrice creuse de forme

X_train_tf.shape

a la sortie qu' (2257, 35788). Comment puis-je obtenir TF-IDF pour des mots dans un document particulier? Plus précisément, comment obtenir des mots avec des valeurs TF-IDF maximales dans un document donné?

15
demandé sur maximus 2015-12-24 10:43:56

1 réponses

vous pouvez utiliser TfidfVectorizer à partir de 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)

le tfidf_matix ci-dessus a les valeurs TF-IDF de tous les documents du corpus. C'est une grande matrice creuse. Maintenant,

feature_names = tf.get_feature_names()

cela vous donne la liste de tous les jetons ou n-grammes ou mots. Pour le premier document de votre corpus,

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

permet de les imprimer,

for w, s in [(feature_names[i], s) for (i, s) in tfidf_scores]:
  print w, s
38
répondu sud_ 2016-08-04 14:50:12