tfidfvectorizer tfidftransformer spanish hashingvectorizer countvectorizer python document text-mining tf-idf

tfidftransformer - tfidfvectorizer python



Usar la transformada TfidfVectorizer de Sklearn (1)

Estoy tratando de obtener el vector tf-idf para un solo documento utilizando el objeto TfidfVectorizer de Sklearn. Creo un vocabulario basado en algunos documentos de capacitación y uso fit_transform para entrenar al TfidfVectorizer. Entonces, quiero encontrar los vectores tf-idf para cualquier documento de prueba dado.

from sklearn.feature_extraction.text import TfidfVectorizer self.vocabulary = "a list of words I want to look for in the documents".split() self.vect = TfidfVectorizer(sublinear_tf=True, max_df=0.5, analyzer=''word'', stop_words=''english'') self.vect.fit_transform(self.vocabulary) ... doc = "some string I want to get tf-idf vector for" tfidf = self.vect.transform(doc)

El problema es que esto devuelve una matriz con n filas donde n es el tamaño de mi cadena de documentación. Quiero que devuelva solo un vector que represente el tf-idf para toda la cadena. ¿Cómo puedo hacer que esto vea la cadena como un solo documento, en lugar de que cada carácter sea un documento? Además, soy muy nuevo en minería de textos, así que si estoy haciendo algo mal conceptualmente, sería genial saberlo. Cualquier ayuda es apreciada.


Si desea calcular tf-idf solo para un vocabulario dado, use un argumento de vocabulary para el constructor TfidfVectorizer ,

vocabulary = "a list of words I want to look for in the documents".split() vect = TfidfVectorizer(sublinear_tf=True, max_df=0.5, analyzer=''word'', stop_words=''english'', vocabulary=vocabulary)

Luego, para ajustar, es decir, calcular recuentos, con un corpus dado, es decir, un documento iterable, use fit :

vect.fit(corpus)

Método fit_transform es un acortamiento para

vect.fit(corpus) corpus_tf_idf = vect.transform(corpus)

Por último, el método de transform acepta un corpus, por lo que para un solo documento, debe pasarlo como una lista, o se trata como iterable de símbolos, cada símbolo es un documento.

doc_tfidf = vect.transform([doc])