Sto convertendo un corpus di documenti di testo in vettori di parole per ogni documento. Ho provato questo usando un TfidfVectorizer e un HashingVectorizer
Capisco che a HashingVectorizer
non prende in considerazione i IDF
punteggi come TfidfVectorizer
fa. Il motivo per cui sto ancora lavorando con a HashingVectorizer
è la flessibilità che offre durante la gestione di enormi set di dati, come spiegato qui e qui . (Il mio set di dati originale ha 30 milioni di documenti)
Attualmente sto lavorando con un campione di 45339 documenti, quindi ho la possibilità di lavorare anche con un TfidfVectorizer
. Quando uso questi due vettorizzatori sugli stessi 45339 documenti, le matrici che ottengo sono diverse.
hashing = HashingVectorizer() with LSM('corpus.db')) as corpus: hashing_matrix = hashing.fit_transform(corpus) print(hashing_matrix.shape)
forma della matrice di hashing (45339, 1048576)
tfidf = TfidfVectorizer() with LSM('corpus.db')) as corpus: tfidf_matrix = tfidf.fit_transform(corpus) print(tfidf_matrix.shape)
tfidf matrix shape (45339, 663307)
Voglio capire meglio le differenze tra a HashingVectorizer
e a TfidfVectorizer
e il motivo per cui queste matrici sono di dimensioni diverse, in particolare nel numero di parole / termini.