python - countvectorizer - tfidftransformer
Cómo ver las principales n entradas de la matriz de documento de término después de tfidf en scikit-learn (1)
Desde la versión 0.15, se puede acceder a la ponderación de término global de las características aprendidas por un TfidfVectorizer
a través del atributo idf_
, que devolverá una matriz de longitud igual a la dimensión de la característica. Ordena las características por esta ponderación para obtener las características más ponderadas:
from sklearn.feature_extraction.text import TfidfVectorizer
import numpy as np
lectures = ["this is some food", "this is some drink"]
vectorizer = TfidfVectorizer()
X = vectorizer.fit_transform(lectures)
indices = np.argsort(vectorizer.idf_)[::-1]
features = vectorizer.get_feature_names()
top_n = 2
top_features = [features[i] for i in indices[:top_n]]
print top_features
Salida:
[u''food'', u''drink'']
El segundo problema de obtener las funciones principales de ngram se puede hacer usando la misma idea, con algunos pasos adicionales para dividir las funciones en diferentes grupos:
from sklearn.feature_extraction.text import TfidfVectorizer
from collections import defaultdict
lectures = ["this is some food", "this is some drink"]
vectorizer = TfidfVectorizer(ngram_range=(1,2))
X = vectorizer.fit_transform(lectures)
features_by_gram = defaultdict(list)
for f, w in zip(vectorizer.get_feature_names(), vectorizer.idf_):
features_by_gram[len(f.split('' ''))].append((f, w))
top_n = 2
for gram, features in features_by_gram.iteritems():
top_features = sorted(features, key=lambda x: x[1], reverse=True)[:top_n]
top_features = [f[0] for f in top_features]
print ''{}-gram top:''.format(gram), top_features
Salida:
1-gram top: [u''drink'', u''food'']
2-gram top: [u''some drink'', u''some food'']
Soy nuevo en scikit-learn, y estaba usando TfidfVectorizer
para encontrar los valores tfidf de los términos en un conjunto de documentos. Utilicé el siguiente código para obtener el mismo.
vectorizer = TfidfVectorizer(stop_words=u''english'',ngram_range=(1,5),lowercase=True)
X = vectorizer.fit_transform(lectures)
Ahora, si imprimo X, puedo ver todas las entradas en la matriz, pero ¿cómo puedo encontrar las mejores n entradas basadas en la puntuación tfidf? Además, ¿existe algún método que me ayude a encontrar las mejores n entradas basadas en la puntuación tfidf por ngram, es decir, las principales entradas entre unigram, bigram, trigram, etc.?