Vì sao nhiều bạn cảm thấy KNN “xa lạ” khi chuyển từ bài toán số sang bài toán văn bản?
Khi mới học Machine Learning (thuộc nhóm kiến thức nền ở Module 4 – Classification), nhiều bạn đã quen với việc KNN dùng khoảng cách Euclidean cho dữ liệu dạng số.
Nhưng khi sang dữ liệu văn bản như IMDB review:
Từ ngữ không có dạng số tự nhiên
Không thể đo khoảng cách giữa hai câu bằng cách trừ phần tử
Văn bản dài ngắn khác nhau
Mỗi câu có hàng nghìn từ khác nhau
Điều này khiến nhiều người bối rối:
Làm sao KNN hoạt động trên văn bản nếu đầu vào không phải số?
Câu trả lời nằm ở bước: biến văn bản thành vector đặc trưng.
Cách KNN được áp dụng cho Text Classification
KNN không làm việc trực tiếp với chuỗi chữ.
KNN chỉ hoạt động khi mỗi văn bản được biểu diễn thành một vector số.
Quy trình thường diễn ra qua 3 bước chính:
Biểu diễn văn bản thành vector (Feature Representation)
Đây là bước quan trọng nhất.
Các kỹ thuật biểu diễn văn bản phổ biến (thuộc Module 10 – NLP) gồm:
Bag-of-Words (BoW)
TF-IDF
Word Embedding (Word2Vec, FastText)
Sentence Embedding (BERT, SBERT)
Mỗi văn bản sau bước này sẽ trở thành một vector trong không gian nhiều chiều.
Tính khoảng cách giữa các văn bản
Sau khi đã có vector:
Tính khoảng cách giữa văn bản mới và toàn bộ văn bản huấn luyện
Chọn k hàng xóm gần nhất
Khoảng cách phổ biến:
Cosine Similarity (phổ biến nhất trong NLP)
Euclidean Distance (ít phù hợp hơn)
Bỏ phiếu dự đoán lớp (Majority Voting)
Dựa trên k văn bản gần nhất:
Nếu đa số là positive → dự đoán positive
Nếu đa số là negative → dự đoán negative
Đúng bản chất lazy learner của KNN.
Ví dụ: KNN cho IMDB Review
Review mới:
This movie was surprisingly good and touching.
Pipeline:
Vector hóa bằng TF-IDF
Vector hóa review mới
Tính cosine similarity với toàn bộ tập dữ liệu
Lấy k văn bản gần nhất
Bỏ phiếu để ra nhãn dự đoán
KNN trong dự án NLP: Khi nào phù hợp?
KNN phù hợp khi:
Cần baseline nhanh
Dataset nhỏ hoặc vừa
Muốn mô hình dễ giải thích
Cần thử nghiệm pipeline NLP đơn giản
Hạn chế cần lưu ý
Chi phí tính toán lớn khi dự đoán
Dữ liệu nhiều chiều (BoW/TF-IDF)
Nhạy cảm với nhiễu
Không phù hợp cho tập dữ liệu rất lớn
Có thể cần PCA, SVD hoặc ANN để tối ưu
Gợi ý học thuật chung cho người mới
Bạn có thể thử:
TF-IDF + KNN vs Embedding + KNN
thay đổi k → quan sát độ chính xác
dùng Cosine thay Euclidean → cảm nhận sự khác biệt
Các thử nghiệm nhỏ giúp hiểu rõ pipeline NLP thực tế.