Я перетворюю корпус текстових документів у слова векторів для кожного документа. Я спробував це за допомогою TfidfVectorizer та HashingVectorizer
Я розумію, що "a HashingVectorizer
" не враховує IDF
оцінок, як TfidfVectorizer
"". Причина, по якій я все ще працюю з a, 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
, і причину цих матриць різного розміру - особливо в кількості слів / термінів.