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 HashingVectorizerne prend pas en compte les IDFscores comme un le TfidfVectorizerfait. La raison pour laquelle je travaille toujours avec HashingVectorizerest 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 TfidfVectorizeraussi. 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 HashingVectorizeret a TfidfVectorizer, et la raison pour laquelle ces matrices sont de tailles différentes - en particulier dans le nombre de mots / termes.