Je convertis un corpus de documents texte en vecteurs de mots pour chaque document. J'ai essayé ceci en utilisant un TfidfVectorizer et un HashingVectorizer
Je comprends qu'un a HashingVectorizer
ne prend pas en compte les IDF
scores comme un le TfidfVectorizer
fait. La raison pour laquelle je travaille toujours avec HashingVectorizer
est la flexibilité qu'il donne tout en traitant d'énormes ensembles de données, comme expliqué ici et ici . (Mon ensemble de données d'origine contient 30 millions de documents)
Actuellement, je travaille avec un échantillon de 45339 documents, j'ai donc la possibilité de travailler avec un TfidfVectorizer
aussi. Lorsque j'utilise ces deux vectoriseurs sur les mêmes documents 45339, les matrices que je reçois sont différentes.
hashing = HashingVectorizer() with LSM('corpus.db')) as corpus: hashing_matrix = hashing.fit_transform(corpus) print(hashing_matrix.shape)
forme de matrice de hachage (45339, 1048576)
tfidf = TfidfVectorizer() with LSM('corpus.db')) as corpus: tfidf_matrix = tfidf.fit_transform(corpus) print(tfidf_matrix.shape)
forme de matrice tfidf (45339, 663307)
Je veux mieux comprendre les différences entre a HashingVectorizer
et a TfidfVectorizer
, et la raison pour laquelle ces matrices sont de tailles différentes - en particulier dans le nombre de mots / termes.