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