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 HashingVectorizer
die IDF
Punktzahlen nicht wie a TfidfVectorizer
berücksichtigt. Der Grund, warum ich immer noch mit a arbeite, HashingVectorizer
ist 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 HashingVectorizer
und a besser verstehen TfidfVectorizer
und den Grund, warum diese Matrizen unterschiedlich groß sind - insbesondere in Bezug auf die Anzahl der Wörter / Begriffe.