Konwertuję korpus dokumentów tekstowych na wektory słów dla każdego dokumentu. Próbowałem tego za pomocą TfidfVectorizer i HashingVectorizer
Rozumiem, że a HashingVectorizer
nie uwzględnia IDF
wyników tak, jak TfidfVectorizer
robi. Powodem, dla którego wciąż pracuję nad HashingVectorizer
jest elastyczność, jaką daje podczas pracy z ogromnymi zbiorami danych, jak wyjaśniono tutaj i tutaj . (Mój oryginalny zestaw danych zawiera 30 milionów dokumentów)
Obecnie pracuję z próbką 45339 dokumentów, więc mam możliwość pracy z TfidfVectorizer
także. Kiedy używam tych dwóch wektoryzatorów na tych samych dokumentach 45339, otrzymane macierze są różne.
hashing = HashingVectorizer() with LSM('corpus.db')) as corpus: hashing_matrix = hashing.fit_transform(corpus) print(hashing_matrix.shape)
kształt matrycy mieszającej (45339, 1048576)
tfidf = TfidfVectorizer() with LSM('corpus.db')) as corpus: tfidf_matrix = tfidf.fit_transform(corpus) print(tfidf_matrix.shape)
Kształt matrycy TFIDF (45339, 663307)
Chcę lepiej zrozumieć różnice między a HashingVectorizer
i a TfidfVectorizer
oraz powód, dla którego te macierze mają różne rozmiary - szczególnie pod względem liczby słów / terminów.