Các lượt nộp
    Danh sách bài
    Trang chủ
    Báo lỗi

    solution

    Đề bài: [Data Science] Phân loại tin nhắn bằng bag-of-words

    Hãy cài đặt bộ phân lớp Multinomial Naive Bayes mini để phân loại tin nhắn theo mô hình bag-of-words. Từ điển có VVV từ (đánh số 0..V−1), có CCC lớp và nnn tin nhắn huấn luyện; mỗi tin nhắn được biểu diễn bằng vectơ đếm từ (w1,…,wV)(w_1, \dots, w_V)(w1​,…,wV​).

    Huấn luyện:

    • Prior: P(c)=nc/nP(c) = n_c / nP(c)=nc​/n với ncn_cnc​ là số tin nhắn lớp ccc.
    • Likelihood với làm trơn Laplace: P(w∣c)=count(w,c)+1total(c)+VP(w \mid c) = \dfrac{\text{count}(w, c) + 1}{\text{total}(c) + V}P(w∣c)=total(c)+Vcount(w,c)+1​, trong đó count(w,c)\text{count}(w,c)count(w,c) là tổng số lần từ www xuất hiện trong các tin nhắn lớp ccc, total(c)\text{total}(c)total(c) là tổng tất cả các từ của lớp ccc.

    Phân lớp tin nhắn mới có vectơ đếm qqq: tính điểm log cho từng lớp

    score(c)=ln⁡P(c)+∑w=0V−1qwln⁡P(w∣c)\text{score}(c) = \ln P(c) + \sum_{w=0}^{V-1} q_w \ln P(w \mid c)score(c)=lnP(c)+∑w=0V−1​qw​lnP(w∣c)

    và chọn lớp có điểm lớn nhất (nếu bằng nhau, chọn lớp chỉ số nhỏ nhất). Mỗi lớp đảm bảo có ít nhất một tin nhắn huấn luyện.

    • Định dạng đầu vào:

      Dòng đầu: ba số nguyên VVV CCC nnn. nnn dòng tiếp theo: số nguyên cic_ici​ (nhãn lớp) rồi VVV số nguyên là vectơ đếm từ của tin nhắn iii. Dòng cuối: VVV số nguyên là vectơ đếm từ của tin nhắn cần phân lớp.

    • Ràng buộc đầu vào:

      1 ≤ V ≤ 100; 2 ≤ C ≤ 10; 1 ≤ n ≤ 1000; 0 ≤ số đếm ≤ 100.

    • Định dạng đầu ra:

      Một dòng duy nhất: chỉ số lớp dự đoán (số nguyên).

    Ví dụ:

    Đầu vào:

    3 2 4
    0 2 1 0
    0 1 1 0
    1 0 1 2
    1 0 0 3
    1 0 2

    Đầu ra:

    1

    Giải thích:

    Prior: 0.5 và 0.5. Lớp 0: tổng từ (3,2,0), total 5 ⇒ P(w|0) = (4/8, 3/8, 1/8). Lớp 1: (0,1,5), total 6 ⇒ (1/9, 2/9, 6/9). Điểm truy vấn (1,0,2): score(0) = ln0.5 + ln0.5 + 2·ln0.125 ≈ −5.55; score(1) = ln0.5 + ln(1/9) + 2·ln(2/3) ≈ −3.70 ⇒ lớp 1

    Đang tải editor...