Sto cercando di ottenere il vettore tf-idf per un singolo documento utilizzando l'oggetto TfidfVectorizer di Sklearn. Creo un vocabolario basato su alcuni documenti di formazione e utilizzo fit_transform per addestrare TfidfVectorizer. Quindi, voglio trovare i vettori tf-idf per ogni dato documento di test.Utilizzo della trasformazione TfidfVectorizer di Sklearn
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)
Il problema è che questo restituisce una matrice con n righe dove n è la dimensione della mia stringa doc. Voglio che restituisca solo un singolo vettore che rappresenta il tf-idf per l'intera stringa. Come posso rendere questo vedere la stringa come un singolo documento, piuttosto che ogni carattere è un documento? Inoltre, sono molto nuovo nel text mining, quindi se sto facendo qualcosa di sbagliato concettualmente, sarebbe bello saperlo. Qualsiasi aiuto è apprezzato.
Allora, qual è la differenza tra fit_transform e trasformare? Ho letto la documentazione, ma non capisco chiaramente. Usiamo fit_transform per contare le occorrenze di ogni termine in un elenco di documenti? Quindi trasformare ... prende quei conteggi e calcola il vettore tf-idf per un elenco di documenti? – Sterling
@Sterling si usa 'fit' o' fit_transform' (vedi aggiornamento) per addestrare la trasformazione di tfidf, e 'transform' per applicare senza contare l'aggiornamento – alko