Bỏ qua tới nội dung chính
Quay lại tin tức

Scikit-LLM so với các bộ phân loại văn bản truyền thống: Khi nào nên sử dụng LLM?

Machine Learning Mastery· Iván Palomares Carrascosa· 2/6/2026general

Trong những năm gần đây, các mô hình AI tạo sinh như LLM (mô hình ngôn ngữ lớn) đã dần thay thế các mô hình học máy cổ điển trong việc giải quyết một số tác vụ nhất định, ví dụ như phân loại văn bản.

Scikit-LLM so với các bộ phân loại văn bản truyền thống: Khi nào nên sử dụng LLM? Bởi Iván Palomares Carrascosa vào ngày 2/6/2026 trong mục Mô hình ngôn ngữ 0 Chia sẻ Đăng Chia sẻ Trong bài viết này, bạn sẽ tìm hiểu cách đánh giá ba phương pháp phân loại văn bản — từ quy trình TF-IDF cổ điển đến mô hình ngôn ngữ lớn (LLM) zero-shot — để hiểu khi nào mỗi phương pháp là phù hợp nhất. Các chủ đề chúng ta sẽ đề cập bao gồm: Cách triển khai và đánh giá quy trình phân loại văn bản TF-IDF và hồi quy logistic cổ điển. Cách áp dụng phân loại zero-shot bằng mô hình dựa trên transformer (BART) và so sánh nó với đường cơ sở cổ điển. Cách sử dụng scikit-LLM với mô hình ngôn ngữ lớn được Groq lưu trữ để phân loại zero-shot sẵn sàng cho sản xuất với những thay đổi mã tối thiểu. Scikit-LLM so với các bộ phân loại văn bản truyền thống: Khi nào nên sử dụng LLM? Giới thiệu Trong những năm gần đây, các mô hình AI tạo sinh như LLM (mô hình ngôn ngữ lớn) đã dần thay thế các mô hình học máy cổ điển để giải quyết một số tác vụ nhất định, ví dụ như phân loại văn bản. Nhưng sự thật là: thay vì có một giải pháp tối ưu cho mọi trường hợp, các nhà phát triển cần đối mặt với những đánh đổi quan trọng — chúng ta nên gắn bó với các mô hình thông thường nhanh, đã được thử nghiệm, đầu tư vào việc tinh chỉnh một LLM dựa trên transformer, hay có lẽ tận dụng tiềm năng suy luận zero-shot của LLM? Trong bài viết này, chúng ta sẽ triển khai một đánh giá giữa ba phương pháp riêng biệt để phân loại văn bản: TF-IDF và hồi quy logistic (đường cơ sở cổ điển). Phân loại zero-shot với BART: một kiến trúc tiêu chuẩn dựa trên transformer, học sâu. Scikit-LLM với phân loại zero-shot: phương pháp hiện đại nhất, dựa trên prompt. Hướng dẫn dưới đây được giữ hoàn toàn miễn phí cho mọi người dùng thử, không có chi phí hoặc giới hạn tốc độ API. Để làm như vậy, chúng ta sẽ sử dụng scikit-LLM cùng với một mô hình có sẵn từ Groq. Bạn sẽ cần đăng ký tại Groq và lấy khóa API để đánh giá giải pháp thứ ba dưới đây. Triển khai đánh giá Đầu tiên, chúng ta cài đặt tất cả các thư viện cốt lõi cần thiết. !pip install scikit-learn transformers scikit-llm scikit-ollama pandas torch 1 !pip install scikit-learn transformers scikit-llm scikit-ollama pandas torch Để đảm bảo khả năng tái tạo, chúng ta tạo một tập dữ liệu tổng hợp nhỏ chứa các tin nhắn hỗ trợ khách hàng. Các yêu cầu được phân loại thành năm lớp. Sau khi tạo, chúng ta lưu trữ nó trong một đối tượng DataFrame và chia nó thành các tập huấn luyện và kiểm tra. ```python import pandas as pd from sklearn.model_selection import train_test_split data = { "text": [ # Kỹ thuật "Màn hình của tôi hoàn toàn đen và không bật lên được.", "Ứng dụng liên tục gặp sự cố mỗi khi tôi nhấp vào lưu.", "Mô-đun Wi-Fi không thể kết nối với bộ định tuyến.", "Đồng bộ hóa dữ liệu không hoạt động trên các thiết bị của tôi.", "Tai nghe bluetooth của tôi không ghép nối được với ứng dụng.", "Tôi liên tục nhận được Lỗi 404 trên màn hình đăng nhập.", "Kết nối cơ sở dữ liệu hết thời gian chờ trong quá trình xuất.", "API đã vượt quá giới hạn tốc độ mặc dù tôi chưa sử dụng.", "Hình ảnh hồ sơ không tải được trên bảng điều khiển.", "Cài đặt phần mềm thất bại ở mức 99%.", # Thanh toán "Tôi đã bị tính phí hai lần trong tháng này, vui lòng khắc phục.", "Làm cách nào để cập nhật thông tin thẻ tín dụng của tôi?", "Hóa đơn tháng trước của tôi bị thiếu trên cổng thông tin.", "Tính toán VAT trên biên lai của tôi bị sai.", "Giao dịch của tôi bị từ chối nhưng tôi có đủ tiền.", "Tôi có thể thay đổi chu kỳ thanh toán từ hàng tháng sang hàng năm không?", "Tôi có thể tìm biên lai chính thức của mình ở đâu?", "Thẻ tín dụng đã lưu của tôi đã hết hạn và tôi cần thay thế.", "Tôi đã bị tính phí quá mức trong bảng sao kê gần đây nhất.", "Vui lòng xóa phương thức thanh toán đã lưu của tôi.", # Tài khoản "Tài khoản của tôi bị khóa và tôi đã quên mật khẩu.", "Làm cách nào để thay đổi địa chỉ email trên hồ sơ của tôi?", "Vui lòng xóa tài khoản của tôi và tất cả dữ liệu liên quan.", "Tôi muốn cập nhật ảnh hồ sơ của mình.", "Làm cách nào để bật xác thực hai yếu tố (2FA)?", "Tôi không nhận được liên kết xác minh email.", "Tôi có thể hợp nhất hai tài khoản khác nhau thành một không?", "Có cách nào để thay đổi tên người dùng của tôi không?", "Tôi cần chuyển quyền sở hữu tài khoản cho người quản lý của tôi.", "Tôi bị khóa vì tôi đã mất điện thoại 2FA của mình.", # Bán hàng "Quý vị có cung cấp chiết khấu doanh nghiệp cho các nhóm lớn không?", "Quý vị có gói hàng năm kèm chiết khấu không?", "Quý vị có thể so sánh các gói chuyên nghiệp và cơ bản cho tôi không?", "Giá cho giấy phép số lượng lớn 50 người dùng là bao nhiêu?", "Có chiết khấu sinh viên không?", "Tôi có thể lên lịch một buổi giới thiệu với đội ngũ bán hàng của quý vị không?", "Quý vị có bán và vận chuyển cho khách hàng ở Châu Âu không?", "Chương trình đối tác và đại lý của quý vị hoạt động như thế nào?", "Giới hạn sử dụng trên gói miễn phí là gì?", "Tôi cần một báo giá tùy chỉnh cho một hợp đồng chính phủ.", # Hoàn tiền "Tôi có thể được hoàn tiền cho lần mua hàng gần đây nhất không? Đó là một sai lầm.", "Tôi muốn lấy lại tiền cho gói đăng ký.", "Mua hàng nhầm, vui lòng đảo ngược giao dịch.", "Tôi không hài lòng với sản phẩm, cần hoàn tiền.", "Hủy gói đăng ký của tôi ngay lập tức và hoàn tiền cho tôi.", "Tôi đã bị tính phí sau khi thời gian dùng thử miễn phí của tôi kết thúc.", "Tôi cần hoàn tiền theo tỷ lệ cho các tháng còn lại.", "Chính sách hoàn tiền chính thức của quý vị là gì?", "Tôi đã được hứa hoàn tiền vào tuần trước nhưng chưa nhận được.", "Sản phẩm bị hỏng khi đến nơi, tôi muốn hoàn tiền đầy đủ." ], "label": [ "Kỹ thuật"] * 10 + ["Thanh toán"] * 10 + ["Tài khoản"] * 10 + ["Bán hàng"] * 10 + ["Hoàn tiền"] * 10 } df = pd.DataFrame(data) # Chia tập dữ liệu thành tập huấn luyện và tập kiểm tra theo phân tầng để đảm bảo tất cả 5 danh mục được đại diện theo tỷ lệ trong cả hai tập con khi tập dữ liệu nhỏ. X_train, X_test, y_train, y_test = train_test_split( df["text"], df["label"], test_size=0.3, random_state=42, stratify=df["label"] ) print(f"Số hàng huấn luyện: {len(X_train)} | Số hàng kiểm tra: {len(X_test)}") ```

Nguồn tin: Machine Learning Mastery — Tác giả: Iván Palomares Carrascosa. Bản dịch tiếng Việt do AI thực hiện, có thể có sai sót.