Я конвертирую корпус текстовых документов в векторы слов для каждого документа. Я пробовал это с помощью TfidfVectorizer и HashingVectorizer
Я понимаю, что HashingVectorizerа не принимает во внимание IDFоценки, как TfidfVectorizerделает. Причина, по которой я все еще работаю с, HashingVectorizerзаключается в гибкости, которую он дает при работе с огромными наборами данных, как объяснено здесь и здесь . (Мой исходный набор данных содержит 30 миллионов документов)
В настоящее время я работаю с образцом 45339 документов, поэтому у меня есть возможность работать с ним TfidfVectorizer. Когда я использую эти два векторизатора в одних и тех же 45339 документах, матрицы, которые я получаю, отличаются.
hashing = HashingVectorizer() with LSM('corpus.db')) as corpus: hashing_matrix = hashing.fit_transform(corpus) print(hashing_matrix.shape)Форма матрицы хеширования (45339, 1048576)
tfidf = TfidfVectorizer() with LSM('corpus.db')) as corpus: tfidf_matrix = tfidf.fit_transform(corpus) print(tfidf_matrix.shape)Форма матрицы tfidf (45339, 663307)
Я хочу лучше понять различия между a HashingVectorizerи a TfidfVectorizer, а также причину, по которой эти матрицы имеют разные размеры - особенно в количестве слов / терминов.