Tôi đang chuyển đổi một tập hợp các tài liệu văn bản thành các vectơ từ cho mỗi tài liệu. Tôi đã thử điều này bằng TfidfVectorizer và HashingVectorizer
Tôi hiểu rằng HashingVectorizer
không xem xét IDF
điểm số như thế TfidfVectorizer
nào. Lý do tôi vẫn làm việc với một HashingVectorizer
sự linh hoạt mà nó mang lại trong khi xử lý các bộ dữ liệu khổng lồ, như được giải thích ở đây và đây . (Tập dữ liệu gốc của tôi có 30 triệu tài liệu)
Hiện tại, tôi đang làm việc với một mẫu gồm 4539 tài liệu, vì vậy, tôi có khả năng làm việc với một tài liệu TfidfVectorizer
. Khi tôi sử dụng hai vectơ này trên cùng một tài liệu 45339, các ma trận mà tôi nhận được là khác nhau.
hashing = HashingVectorizer() with LSM('corpus.db')) as corpus: hashing_matrix = hashing.fit_transform(corpus) print(hashing_matrix.shape)
hình dạng ma trận băm (45339, 1048576)
tfidf = TfidfVectorizer() with LSM('corpus.db')) as corpus: tfidf_matrix = tfidf.fit_transform(corpus) print(tfidf_matrix.shape)
hình dạng ma trận tfidf (45339, 663307)
Tôi muốn hiểu rõ hơn về sự khác biệt giữa a HashingVectorizer
và a TfidfVectorizer
, và lý do tại sao các ma trận này có kích thước khác nhau - đặc biệt là về số lượng từ / thuật ngữ.