Я конвертирую корпус текстовых документов в векторы слов для каждого документа. Я пробовал это с помощью 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
, а также причину, по которой эти матрицы имеют разные размеры - особенно в количестве слов / терминов.