Data Cleaning 2026: Dùng "Small Language Model" (Phi-4) để tự động dọn dẹp dữ liệu bẩn trong Pandas DataFrame

AI Hunter

Member
Thành viên BQT
Data Cleaning 2026: Dùng "Small Language Model" (Phi-4) để tự động dọn dẹp dữ liệu bẩn trong Pandas DataFrame

Bạn có một cột "Địa chỉ" trong Excel nhập tay lộn xộn:
- "123 dg tran hung dao, q1, hcm"
- "Số 123 Trần Hưng Đạo, Quận 1, TP. Hồ Chí Minh"
- "123 Tran Hung Dao St., Dist 1, HCMC"

Data Cleaning 2026 Dùng Small Language Model (Phi-4) để tự động dọn dẹp dữ liệu bẩn trong Pand...jpg

Viết `regex` để chuẩn hóa đống này là cơn ác mộng. Dùng GPT-4 thì tốn tiền (ví dụ 1 triệu dòng thì phá sản).
Giải pháp tối ưu: **Dùng SLM (Small Language Model) chạy local.**

Hôm nay, tôi sẽ hướng dẫn bạn dùng **Phi-4 (Microsoft)** kết hợp với **Pandas** để dọn dẹp dữ liệu tự động, miễn phí và bảo mật.

1. Chiến lược "Hybrid Cleaning"​

Chạy LLM cho từng dòng dữ liệu rất chậm. Vì vậy, chúng ta sẽ áp dụng chiến thuật thông minh:
1. **Lớp 1 (Regex/Pandas):** Xử lý các lỗi đơn giản, định dạng chuẩn.
2. **Lớp 2 (SLM Agent):** Chỉ ném những dòng "khó" (mà lớp 1 bó tay) cho AI xử lý.

[Image of hybrid data cleaning workflow diagram]

2. Chuẩn bị môi trường​

Chúng ta cần thư viện `llama-cpp-python` để chạy model lượng tử hóa (GGUF) cực nhẹ trên CPU.

Bash:
pip install pandas llama-cpp-python tqdm
*Tải model Phi-4-mini.gguf (bản nén 4-bit, nặng khoảng 2GB) từ HuggingFace về máy.*

3. Triển khai Code (Python)​


Tạo file smart_cleaner.py.

Bước 1: Khởi tạo "Nhân viên dọn dẹp AI"​

Python:
import pandas as pd
from llama_cpp import Llama
from tqdm import tqdm

# 1. Load Model Phi-4 (Chạy trên CPU ngon lành)
print("🧹 Đang khởi động AI Cleaner...")
llm = Llama(
    model_path="./Phi-4-mini-Q4_K_M.gguf",
    n_ctx=2048,      # Context window
    n_threads=6,     # Số nhân CPU sử dụng
    verbose=False
)

def clean_text_with_ai(dirty_text, field_type):
    """
    Hàm nhờ AI sửa lỗi dựa trên loại dữ liệu
    """
    prompt = f"""
    Task: Standardize the following {field_type}.
    Rule: Fix typos, formatting, and capitalization. Output ONLY the cleaned text.
   
    Input: {dirty_text}
    Output:"""
   
    output = llm(
        prompt,
        max_tokens=50,
        stop=["Input:", "\n"],
        temperature=0.1 # Cần chính xác, không sáng tạo
    )
    return output['choices'][0]['text'].strip()

Bước 2: Quy trình xử lý dữ liệu​

Giả sử chúng ta có DataFrame chứa thông tin khách hàng lộn xộn.

Python:
# Dữ liệu mẫu "bẩn"
data = {
    'id': [1, 2, 3, 4],
    'full_name': ['nguyen van a', 'Le THI B', 'tran  van   c', 'Phạm Văn Dũng'],
    'address': ['hanoi', '123 cau giay hn', 'tp hcm', 'Đà Nẵng']
}
df = pd.DataFrame(data)

print("--- TRƯỚC KHI CLEAN ---")
print(df)

# Hàm chuẩn hóa tên (Logic Hybrid)
def smart_clean_names(row):
    name = str(row['full_name']).strip()
   
    # Lớp 1: Dùng Python thuần (Nhanh)
    # Nếu tên đã viết hoa chữ cái đầu đẹp đẽ -> Giữ nguyên
    if name.istitle():
        return name
   
    # Lớp 2: Nếu tên viết hoa lộn xộn hoặc sai chính tả -> Gọi AI
    # (Ở đây demo gọi AI hết cho các case lỗi format)
    return clean_text_with_ai(name, "Person Name")

# Áp dụng vào DataFrame
# Sử dụng tqdm để hiện thanh tiến trình
tqdm.pandas(desc="Cleaning Names")
df['clean_name'] = df.progress_apply(smart_clean_names, axis=1)

print("\n--- SAU KHI CLEAN ---")
print(df[['full_name', 'clean_name']])

Bước 3: Kết quả thực tế​

Model Phi-4 sẽ xử lý như sau:
- `nguyen van a` -> **Nguyen Van A**
- `Le THI B` -> **Le Thi B**
- `tran van c` -> **Tran Van C** (Tự xóa khoảng trắng thừa)

4. Tối ưu hóa hiệu năng (Batching)​

Gọi hàm `apply` từng dòng sẽ chậm nếu dữ liệu > 10.000 dòng.
Cách tối ưu: Gom 10 dòng lại thành 1 Prompt duy nhất.

Python:
def batch_clean(texts):
    prompt = "Standardize list:\n" + "\n".join(texts) + "\nOutput list:"
    # ... AI trả về danh sách đã sửa ...
    return cleaned_list

5. Tại sao chọn Small Language Model (SLM)?​

  • Chi phí: Miễn phí trọn đời. Không tốn $0.03/1k tokens cho OpenAI.
  • Bảo mật: Dữ liệu khách hàng (PII) không bao giờ rời khỏi máy chủ của bạn.
  • Hiệu quả: Với nhiệm vụ "sửa lỗi chính tả", model 3 tỷ tham số (Phi-4) làm tốt ngang ngửa model 1000 tỷ tham số (GPT-4), nhưng chạy nhanh hơn nhiều.

Kết luận​

Data Cleaning không còn là công việc tay chân nhàm chán. Với sự hỗ trợ của SLM, bạn có thể biến dữ liệu rác thành vàng ròng chỉ trong vài phút setup code.
 
Back
Top