Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Mô hình ngôn ngữ N-gram

Van Hai
February 04, 2015
2.7k

Mô hình ngôn ngữ N-gram

Van Hai

February 04, 2015
Tweet

More Decks by Van Hai

Transcript

  1. Mô hình ngôn ngữ N-gram Nguyễn Văn Hải Pgs. Yamamoto

    Kazuhide Ptn.Xử Lý Ngôn Ngữ Tự Nhiên Trường Đại Học Khoa Học Kỹ Thuật Nagaoka
  2. Mô hình ngôn ngữ  Là phân bố xác suất

    trên các tập văn bản  Cho biết xác suất của 1 câu (hoặc 1 cụm từ) thuộc 1 ngôn ngữ là bao nhiêu  Mô hình ngôn ngữ tốt sẽ đáng giá đúng các câu đúng ngữ pháp, trôi chảy hơn các từ có thứ tự ngẫu nhiên.  vd: P(“hôm nay trời nắng”) > P(“trời nắng nay hôm”)
  3. Mô hình ngôn ngữ N-gram  Nhiệm vụ của mô

    hình ngôn ngữ là cho biết xác suất của 1 câu 1 2 3 … là bao nhiêu.  Theo công thức của Bayes: P(AB) = P(B|A)*P(A)  Ta có: P(1 2 3 … ) = P(1 )*P(2 |1 )*P(3 |1 2 )*… *P( |1 2 3 … −1 ) (1)
  4. Mô hình ngôn ngữ N-gram  Cần 1 bộ nhớ

    lớn để lưu hết xác suất của chuỗi có độ dài nhỏ hơn m.  Khi m là độ dài của các văn bản ngôn ngữ tự nhiên (m có thể tiến đến vô cùng)  Ta sử dụng chuỗi Markov bậc n
  5. Chuỗi Markov  Xấp xỉ chuỗi Markov bậc n: P(

    |1 2 3 … −1 )= P( |1 , 2 , 3 , … , −1 )  Xác suất của 1 từ P( ) chỉ phụ thuộc vào n từ trước nó − −+1 −+2 … −1  Xác suất chuỗi từ được tính lại: P(1 2 3 … ) = P(1 )*P(2 |1 )*P(3 |1 2 )*… *P( |− −+1 −+2 … −1 ) (2) (3)
  6. Chuỗi Markov  Dựa trên công thức (3) ta có

    thể xây dựng mô hình ngôn ngữ dựa trên việc thống kê các cụm có ít hơn n+1 từ.  Mô hình này gọi là mô hình ngôn ngữ N-gram  Một cụm N-gram là 1 dãy con gồm n phần tử liên tiếp của 1 dãy các phần tử cho trước.
  7. Mô hình ngôn ngữ N-gram  n=1, unigram, tính trên

    kí tự, ta có thông tin về tần suất xuất hiên nhiều nhất của các chữ cái.  n=2, bigram, ví dụ với những chữ cái tiếng Anh, “th”, “he”, “in”, “an”, “er” là các cặp kí tự hay xuất hiện.  n=3, trigram.
  8. Phân bố không đều  Khi các n-gram phân bố

    thưa, nhiều cụm n-gram không xuất hiện hoặc số lần xuất hiện ít.  Với V là kích thước bộ từ vựng, ta có cụm n-gram có thể sinh ra từ bộ từ vựng. Nhưng, thực tế số cụm n-gram có nghĩa thường chiếm rất ít.  Tiếng Việt có khoảng 5000 âm tiết khác nhau ta có tống số cụm 3-gram: 50003 = 125.000.000.000
  9. Phân bố không đều  Nhưng số cụm 3-gram có

    nghĩa thống kê được chỉ xấp xỉ 1.500.000.  Như vậy có rất nhiều cụm 3-gram không xuất hiện.  Khi tính toán sẽ có rất nhiều cụm n-gram chưa xuất hiện trong dữ liêu huấn luyện, điều này làm xác suất của cả câu bắng 0.  Khắc phục tình trạng này ta dùng 1 số phương pháp làm mịn.
  10. Phân bố không đều  Nhưng số cụm 3-gram có

    nghĩa thống kê được chỉ xấp xỉ 1.500.000.  Như vậy có rất nhiều cụm 3-gram không xuất hiện.  Khi tính toán sẽ có rất nhiều cụm n-gram chưa xuất hiện trong dữ liêu huấn luyện, điều này làm xác suất của cả câu bắng 0.  Khắc phục tình trạng này ta dùng 1 số phương pháp làm mịn.
  11. Các phương pháp làm mịn  Khắc phục tình trạng

    xác suất của câu bằng 0, người ta đưa ra các phương pháp làm mịn kết quả thống kê.  Các phương pháp này đánh giá lại xác suất của các cụm n-gram bằng cách: - Gán cho các cụm n-gram có xác suất bằng 0 một giá trị khác 0. - Thay đổi giá trị các cụm n-gram khác 0 thành 1 giá trị phù hợp.
  12. Các phương pháp làm mịn  Chiết khấu (discounting): làm

    giảm xác suất của các cụm n-gram có xác suất lớn hơn 0 để bù cho các cụm n- gram có xác suất bằng 0.  Truy hồi (Back-off): tính toán xác suất các cụm n-gram không xuất hiện dựa vào các cụm n-gram ngắn hơn có xác suất lớn hơn 0.  Nội suy(Interpolation): tính toán xác suất của các cụm n- gram dựa vào xác suất của các cụm n-gram ngắn hơn.
  13. Các thuật toán chiết khấu (discounting)  Nguyên lý của

    phương pháp này là làm giảm xác suất của các cụm n-gram có xác suất lớn hơn 0.  Có 3 thuật toán chiết khấu phổ biến: - Thuật toán Add-one. - Thuật toán Witten-Bell. - Thuật toán Good-Turing.
  14. Phương pháp làm mịn Add-one  Cộng thêm 1 vào

    tần số xuất hiện của tất cả các cụm n-gram rồi nhân với phân phối chuẩn (để bảo toàn tổng xác suất)
  15. Phương pháp làm mịn Add-one  Với unigram, khi công

    them 1 vào tần số xuất hiên của mỗi cụm unigram thì tổng cụm xuất hiện: M’ = M + V - M là tổng cụm unigram đã xuất hiên. - V là kích thước toàn bộ từ vựng.  Để bảo toàn tổng số cụm unigram vẫn bằng M thì tần số mới của các cụm unigram được tính lại:
  16. Phương pháp làm mịn Add-one  Ci là tần số

    xuất hiện của các cụm unigram trước khi làm mịn: ∗ = ( + 1) ′  Xác suất của cụm unigram cũng được tính lại như sau: ∗ = ∗ ′ = ( + 1) + (4) (5)
  17. Phương pháp làm mịn Add-one  Tương tự đối với

    các cụm n-gram với n >1, thay M bằng C −+1 −+2 … −1 thì xác suất cụm −+1 −+2 … −1 được tính: ∗( |−+1 −+2 … −1 ) = C −+1 −+2 … −1 + 1 C −+1 −+2 … −1 + (6)
  18. Phương pháp làm mịn Witten- Bell  Nguyên tắc của

    phương pháp này là khi gặp những cụm n-gram có tần số xuất hiện bằng 0, thì coi đây là lần đầu tiên cụm từ này xuất hiện.  Như vậy xác suất của cụm n-gram có tần số bằng 0 có thể tính dựa vào xác suất gặp 1 cụm n-gram đầu tiên.
  19. Phương pháp làm mịn Witten- Bell  Xác suất để

    gặp cụm n-gram lần đầu tiên (hay tồng xác suất của các cụm unigram chưa xuất hiện lần nào). + - T là số cụm unigram khác nhau đã xuất hiện - M là tống số các cụm unigram đã thống kê. (7)
  20. Phương pháp làm mịn Witten- Bell  Số cụm unigram

    chưa xuất hiện lần nào Z: Z = V- T - T là số cụm unigram khác nhau đã xuất hiện - V là kích thước toàn bộ từ vựng.  Xác suất của cụm unigram chưa xuất hiện lần nào: ∗ = ( + ) (8) (9)
  21. Phương pháp làm mịn Witten- Bell  Xác suất của

    cụm unigram có tần số khác 0 được tính lại: = () + - c(w) số lần xuất hiện của cụm w (10)
  22. Phương pháp làm mịn Witten- Bell  Tương tự đối

    với các cụm n-gram với n >1, thay M bằng C −+1 −+2 … −1 thì xác suất cụm −+1 −+2 … −1 với C(−+1 −+2 … −1 ) = 0 được tính: P( |−+1 −+2 … −1 ) = T −+1 −+2 … −1 + 1 −+1 −+2 … −1 [C −+1 −+2 … −1 + −+1 −+2 … −1 ] (11)
  23. Phương pháp làm mịn Witten- Bell  Tương tự đối

    với các cụm n-gram với n >1, thay M bằng C −+1 −+2 … −1 thì xác suất cụm −+1 −+2 … −1 với C(−+1 −+2 … −1 ) > 0 được tính: P( |−+1 −+2 … −1 ) = C −+1 −+2 … −1 C −+1 −+2 … −1 + −+1 −+2 … −1 (12)
  24. Phương pháp làm mịn Good- turing  Phương pháp Good-turing

    dựa trên việc tính toán Nc- số cụm n-gram xuất hiện c lần.  N0 là số cụm n-gram xuất hiện 0 lần.  N1 là số cụm n-gram xuất hiện 1 lần. …..  Nc có thể được tính : Nc = : = 1 (13)
  25. Phương pháp làm mịn Good- turing  Khi đó thuật

    toán Good-turing sẽ thay thế tần số c bằng 1 tần số c* ∗ = + 1 ∗ +1  Xác suất cúa 1 cụm n-gram được tính lại như sau: () = ∗ (14) (15)
  26. Phương pháp làm mịn Good- turing  Khi đó thuật

    toán Good-turing sẽ thay thế tần số c bằng 1 tần số c* ∗ = + 1 ∗ +1  Xác suất cúa 1 cụm n-gram được tính lại như sau: () = ∗ = 0 ∞ = 0 ∞ ∗= 0 ∞ ( + 1) (16) (17)