Hãy làm việc đó từ dưới lên. Phân loại (còn được gọi là phân loại) là một ví dụ về học tập có giám sát . Trong học tập có giám sát, bạn có:
- mô hình - một cái gì đó gần đúng cấu trúc bên trong dữ liệu của bạn, cho phép bạn suy luận về nó và đưa ra các dự đoán hữu ích (ví dụ: lớp dự đoán của một đối tượng); mô hình thông thường có các tham số mà bạn muốn "học"
- đào tạo và kiểm tra bộ dữ liệu - bộ đối tượng bạn sử dụng để đào tạo mô hình của mình (tìm giá trị tốt cho tham số) và đánh giá thêm
- thuật toán đào tạo và phân loại - đầu tiên mô tả cách học mô hình từ tập dữ liệu huấn luyện, lần thứ hai cho thấy cách lấy lớp của một đối tượng mới được đưa ra mô hình được đào tạo
Bây giờ hãy lấy một trường hợp đơn giản về phân loại thư rác. Tập dữ liệu đào tạo của bạn là một tập hợp các email + nhãn tương ứng - "spam" hoặc "không phải spam". Tập dữ liệu kiểm tra có cùng cấu trúc, nhưng được tạo từ một số email độc lập (thông thường người ta chỉ chia nhỏ tập dữ liệu của mình và giả sử, 9/10 trong số đó sẽ được sử dụng cho đào tạo và 1/10 - để kiểm tra). Một cách để mô hình hóa các email là đại diện cho mỗi email dưới dạng một tập hợp (túi) từ. Nếu chúng ta giả sử rằng các từ độc lập với nhau, chúng ta có thể sử dụng trình phân loại Naive Bayes , nghĩa là tính xác suất trước cho từng từ và từng lớp (thuật toán đào tạo) và sau đó áp dụng định lý Bayes để tìm xác suất sau của tài liệu mới thuộc về lớp học cụ thể.
Vì vậy, về cơ bản chúng ta có:
raw model + training set + training algorithm -> trained model
trained model + classification algorithm + new object -> object label
Bây giờ lưu ý rằng chúng tôi đại diện cho các đối tượng của chúng tôi (tài liệu) như một túi từ. Nhưng là cách duy nhất? Trong thực tế, chúng ta có thể trích xuất nhiều hơn từ văn bản thô. Ví dụ, thay vì các từ như chúng ta có thể sử dụng thân hoặc bổ đề của chúng , loại bỏ các từ dừng ồn ào , thêm thẻ POS của các từ, trích xuất các thực thể có tên hoặc thậm chí khám phá cấu trúc HTML của tài liệu. Trong thực tế, đại diện tổng quát hơn của một tài liệu (và, nói chung, bất kỳ đối tượng nào) là một vectơ đặc trưng . Ví dụ cho văn bản:
actor, analogue, bad, burn, ..., NOUN, VERB, ADJ, ..., in_bold, ... | label
0, 0, 1, 1, ..., 5, 7, 2, ..., 2, ... | not spam
0, 1, 0, 0, ..., 3, 12, 10, ..., 0, ... | spam
Ở đây hàng đầu tiên là danh sách các tính năng có thể và các hàng tiếp theo hiển thị số lần tính năng đó xảy ra trong tài liệu. Ví dụ, trong tài liệu đầu tiên không có sự xuất hiện của từ "diễn viên", 1 lần xuất hiện của từ "burn", 5 danh từ, 2 tính từ và 2 đoạn văn bản in đậm. Cột cuối cùng tương ứng với nhãn lớp kết quả.
Sử dụng tính năng vector bạn có thể kết hợp bất kỳ thuộc tính nào của văn bản của bạn. Mặc dù việc tìm kiếm các tính năng tốt có thể mất một thời gian.
Và những gì về mô hình và thuật toán? Có phải chúng ta bị ràng buộc với Naive Bayes. Không có gì. hồi quy logistic , SVM , cây quyết định - chỉ đề cập đến một vài phân loại phổ biến. (Lưu ý, chúng tôi nói "phân loại" trong hầu hết các trường hợp, chúng tôi muốn nói đến mô hình + thuật toán tương ứng để đào tạo và phân loại).
Để thực hiện, bạn có thể chia nhiệm vụ thành 2 phần:
- Tính năng trích xuất - chuyển đổi các văn bản thô thành các vectơ đặc trưng.
- Phân loại đối tượng - xây dựng và áp dụng mô hình.
Điểm đầu tiên được thực hiện tốt trong nhiều thư viện NLP . Thứ hai là về học máy, vì vậy, tùy thuộc vào tập dữ liệu của bạn, bạn có thể sử dụng Weka hoặc MLlib .