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 HashingVectorizernon prende in considerazione i IDFpunteggi come TfidfVectorizerfa. 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 HashingVectorizere a TfidfVectorizere il motivo per cui queste matrici sono di dimensioni diverse, in particolare nel numero di parole / termini.