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.

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).

carautomobilevehiclebanana
car1.0000.0000.0000.000
automobile0.0001.0000.0000.000
vehicle0.0000.0001.0000.000
banana0.0000.0000.0001.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.