Lesson 05 — Text vectorization cổ điển
Tương tác với Tokenizer · One-hot · Bag-of-Words · TF-IDF · Mini search engine.
1. Tokenizer playground
Nhập câu, chọn mức token. Xem các đoạn được cắt thành "đơn vị" để vectorize.
Word: split theo space + bỏ dấu câu + lowercase.
Char: từng ký tự (bao gồm space).
BPE demo: gộp các cặp ký tự xuất hiện nhiều nhất trong corpus (3 lần merge mẫu) — minh họa ý tưởng, không phải BPE thực sự.
2. One-hot encoding + Bag-of-Words
5 documents preset (có thể sửa). Xem vocab union, one-hot của từng từ, và BoW của từng doc.
Mẹo đọc bảng: cột = từ trong vocab, dòng = document. Ô = count(t, d). Vector BoW(d) = đọc theo hàng.
3. TF-IDF calculator
Cùng 5 doc ở trên. Xem TF (normalized), DF, IDF, và bảng TF-IDF cuối cùng.
Cách đọc: TF cao → từ xuất hiện nhiều trong doc đó. IDF cao → từ hiếm trong cả corpus.
TF-IDF = TF · IDF, nổi bật những từ "đặc trưng" cho doc.
4. Mini search engine (cosine TF-IDF)
Dùng corpus 5 doc ở trên. Gõ query → vectorize bằng IDF của corpus → tính cosine với từng doc → rank.
Bảng xếp hạng (top-5)
Thử query khác: "log dog", "the cat", "machine learning", v.v. Quan sát doc nào lên top khi query có từ hiếm (IDF cao).
5. Hạn chế: cosine = 0 giữa cặp từ gần nghĩa
Với one-hot/TF-IDF, hai từ khác chữ luôn vuông góc dù gần nghĩa. Đây là động lực cho embedding (Lesson 06).
| car | automobile | vehicle | banana | |
|---|---|---|---|---|
| car | 1.000 | 0.000 | 0.000 | 0.000 |
| automobile | 0.000 | 1.000 | 0.000 | 0.000 |
| vehicle | 0.000 | 0.000 | 1.000 | 0.000 |
| banana | 0.000 | 0.000 | 0.000 | 1.000 |
car · automobile = 0 mặc dù gần nghĩa.
car · banana = 0 dù khác nghĩa hoàn toàn.
→ Vectorization cổ điển không phân biệt được synonym. Lesson 06 dùng embedding để đạt cos(car, automobile) ≈ 0.85 trong khi cos(car, banana) ≈ 0.05.