Nội dung bài viết
© 2025 AI VIET NAM. All rights reserved.
Tác giả: AI VIET NAM (AI VIET NAM)
Keywords: stemming naive bayes, tiền xử lý văn bản, nlp cơ bản, bag of words, tf-idf
Khi bắt đầu với các bài toán xử lý văn bản, nhiều bạn hay gặp một câu hỏi quen thuộc: “Tại sao trước khi đưa dữ liệu vào Naive Bayes lại phải làm Stemming? Nếu không Stemming thì mô hình có bị ảnh hưởng không?” Thắc mắc này là điều rất tự nhiên, đặc biệt khi bạn bắt đầu từ các bước cơ bản của NLP (liên quan đến Module 10 – NLP trong 12 module học thuật AIO). Stemming nghe có vẻ như một thao tác nhỏ, nhưng lại ảnh hưởng trực tiếp đến cách mô hình hiểu dữ liệu.
Stemming là kỹ thuật rút gọn từ về gốc dạng thô, bằng cách loại bỏ hậu tố hoặc các phần biến đổi của từ. Ví dụ: “running”, “runs”, “ran” → “run” “studies”, “studying” → “studi” Stemming không quan tâm đến nghĩa chính xác của từ; mục tiêu của nó chỉ là giảm từ về dạng ngắn nhất có thể.
Naive Bayes là mô hình thống kê dựa trên tần suất xuất hiện của từ. Vì vậy, dữ liệu càng nhất quán, mô hình càng học tốt.
Nếu không Stemming:
“run”, “runs”, “running” được xem là 3 từ khác nhau
→ Tập từ vựng phình to
→ Mỗi biến thể xuất hiện ít → khó học được quy luật
Sau Stemming:
Tất cả trở về “run”
→ Mô hình hiểu đây là một ý nghĩa chung
→ Tần suất tăng → tính toán xác suất ổn định hơn
Điều này liên quan trực tiếp đến tư duy rút gọn đặc trưng trong ETL và xử lý dữ liệu chuỗi văn bản (Module 3 – Data Engineering & Data Analysis).
Naive Bayes không phân biệt ngữ pháp hoặc biến thể của từ. Nếu một từ có quá nhiều hình thức, mô hình dễ bị nhiễu bởi những từ xuất hiện rất ít. Stemming giúp gom chúng lại thành một nhóm duy nhất.
Dạng gốc cho phép Naive Bayes nắm trọn ý nghĩa tổng quát. Ví dụ trong bài toán phân loại cảm xúc: “loved”, “loving”, “loves” → đều thể hiện cảm xúc tích cực Nếu không Stemming, mỗi từ có xác suất riêng và chiếm dung lượng khác nhau trong vector đặc trưng.
Khi số lượng từ giảm:
Ma trận biểu diễn văn bản nhỏ hơn
Tính toán xác suất nhanh hơn
Mô hình gọn, dễ deploy hơn (ở những bước đầu trong pipeline ML – liên quan đến MLOps Series-1 trong Module 4)
Giả sử bạn phân loại tin nhắn “spam” – “không spam” bằng Naive Bayes. Nếu tập dữ liệu có các từ: “offer”, “offers”, “offering”, “offered” Trong khi bản chất chúng đều chỉ hành động "đề nghị", mô hình lại phải học bốn xác suất khác nhau. Stemming gom chúng thành: “offer” Kết quả:
Trong những dự án thực tế:
Bạn có thể thử: