Ich konvertiere für jedes Dokument einen Korpus von Textdokumenten in Wortvektoren. Ich habe dies mit einem TfidfVectorizer und einem HashingVectorizer versucht
Ich verstehe, dass a HashingVectorizerdie IDFPunktzahlen nicht wie a TfidfVectorizerberücksichtigt. Der Grund, warum ich immer noch mit a arbeite, HashingVectorizerist die Flexibilität, die es beim Umgang mit riesigen Datensätzen bietet, wie hier und hier erläutert . (Mein ursprünglicher Datensatz enthält 30 Millionen Dokumente.)
Derzeit arbeite ich mit einem Beispiel von 45339 Dokumenten, sodass ich auch mit einem arbeiten kann TfidfVectorizer. Wenn ich diese beiden Vektorisierer für dieselben 45339-Dokumente verwende, sind die Matrizen, die ich erhalte, unterschiedlich.
hashing = HashingVectorizer() with LSM('corpus.db')) as corpus: hashing_matrix = hashing.fit_transform(corpus) print(hashing_matrix.shape)Hashing-Matrixform (45339, 1048576)
tfidf = TfidfVectorizer() with LSM('corpus.db')) as corpus: tfidf_matrix = tfidf.fit_transform(corpus) print(tfidf_matrix.shape)tfidf-Matrixform (45339, 663307)
Ich möchte die Unterschiede zwischen a HashingVectorizerund a besser verstehen TfidfVectorizerund den Grund, warum diese Matrizen unterschiedlich groß sind - insbesondere in Bezug auf die Anzahl der Wörter / Begriffe.