Pipeline xử lý văn bản pipeline xử lý văn bản (NLP) kiểu Machine Learning (ML)ản (NLP) kiểu Machine Learning (ML)
🧠 Tổng quan: NLP + ML Pipeline
Raw Text
↓
[1] Clean Text
↓
[2] Tokenization
↓
[3] POS Tagging (Tùy chọn)
↓
[4] Lemmatization / Stemming
↓
[5] Stopword Removal
↓
[6] Vectorization
↓
[7] Train/Test ML Model
🔍 Bước 1: Clean Text – Làm sạch dữ liệu
🎯 Mục tiêu:
-
Xóa bỏ các yếu tố không liên quan hoặc gây nhiễu.
🧼 Xử lý gồm:
-
Loại bỏ HTML tags
-
Loại bỏ ký tự đặc biệt, dấu chấm câu, số
-
Chuyển chữ hoa → chữ thường (
lowercasing) -
Loại bỏ khoảng trắng dư
📌 Ví dụ:
text = "This is <b>AWESOME</b>!!! Visit: https://example.com"
# Cleaned: "this is awesome visit"
🔠 Bước 2: Tokenization – Tách văn bản thành đơn vị nhỏ
🎯 Mục tiêu:
Tách câu thành từng từ (tokens) để xử lý riêng lẻ.
📦 Công cụ:
-
nltk.word_tokenize -
spacytokenizer
📌 Ví dụ:
text = "Python is awesome!"
tokens = ['Python', 'is', 'awesome', '!']
🏷 Bước 3: POS Tagging – Gắn nhãn từ loại (tùy chọn)
🎯 Mục tiêu:
Gắn nhãn từ loại cho từng token: noun (n), verb (v), adj, adv...
✅ Lý do:
Lemmatizer cần biết ngữ cảnh (danh từ/động từ) để đưa từ về gốc chính xác.
📌 Ví dụ:
"run" có thể là danh từ hoặc động từ
- POS = verb → gốc: run
- POS = noun → gốc vẫn là: run
🌱 Bước 4: Lemmatization / Stemming – Chuẩn hóa về gốc
🎯 Mục tiêu:
Đưa từ về dạng gốc (root form):
-
running,ran,runs→run
| Kỹ thuật | Output | Ưu điểm | Nhược điểm |
|---|---|---|---|
| Stemming | runn |
Nhanh, đơn giản | Không hợp ngữ pháp |
| Lemmatization | run |
Hợp ngữ pháp, ngữ cảnh | Chậm hơn, cần WordNet |
🧹 Bước 5: Stopword Removal – Loại bỏ từ vô nghĩa
🎯 Mục tiêu:
Loại các từ thường xuyên xuất hiện nhưng ít giá trị như: is, the, and, but, a,...
📦 Công cụ:
-
nltk.corpus.stopwords -
spacy.Defaults.stop_words
🔢 Bước 6: Vectorization – Chuyển văn bản thành số
🎯 Mục tiêu:
Mô hình ML chỉ hiểu số → cần biến văn bản thành dạng số hóa.
📌 Phương pháp phổ biến:
| Phương pháp | Mô tả |
|---|---|
| Bag of Words | Đếm tần suất từ |
| TF-IDF | Tần suất điều chỉnh theo độ hiếm |
| Word Embeddings | Vector ẩn chứa ngữ nghĩa: Word2Vec, GloVe, BERT... |
🤖 Bước 7: ML Model – Huấn luyện mô hình
🎯 Mục tiêu:
Dựa trên đặc trưng vector hóa để huấn luyện mô hình học máy:
| Mô hình | Ứng dụng thường gặp |
|---|---|
| Logistic Regression | Phân loại cảm xúc, spam |
| Random Forest | Phân loại log, lỗi |
| Naive Bayes | Phân loại văn bản nhỏ |
| SVM, XGBoost | Nâng cao, chính xác cao |
| Neural Networks | Khi dữ liệu lớn, xử lý ngôn ngữ sâu |
🔁 Pipeline thực tế bằng Scikit-learn
from sklearn.pipeline import Pipeline
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.linear_model import LogisticRegression
pipeline = Pipeline([
('vectorizer', TfidfVectorizer()),
('classifier', LogisticRegression())
])
pipeline.fit(X_train, y_train)
📦 Tổng hợp lại
| Bước | Mục tiêu | Công cụ phổ biến |
|---|---|---|
| 1 | Làm sạch dữ liệu | Regex, re, BeautifulSoup |
| 2 | Tách từ | NLTK, SpaCy |
| 3 | Gắn nhãn từ loại (POS) | NLTK, SpaCy |
| 4 | Chuẩn hóa từ (lemmatization/stemming) | NLTK WordNet, PorterStemmer |
| 5 | Loại từ vô nghĩa | NLTK stopwords |
| 6 | Vector hóa văn bản | TF-IDF, CountVectorizer |
| 7 | Huấn luyện mô hình học máy | Scikit-learn, XGBoost, etc. |