Nghiên cứu quý 3 của công ty GMO-Z.com VietnamLab.
Chủ đề: Ứng dụng NLP vào việc xác định ý muốn người dùng (Intent Detection) và sửa lỗi chính tả trong tiếng Việt (Spell Correction)
Ứng dụng NLP vào việc xác định ý muốn người dùng (Intent Detection) và sửa lỗi chính tả trong tiếng Việt (Spell Correction)
1. 1
Báo cáo nghiên cứu Q3
Ứng dụng NLP vào việc xác định ý muốn người dùng (Intent
Detection) và sửa lỗi chính tả trong tiếng Việt (Spell
Correction)
1
ThanhTT
thanhtt@vietnamlab.vn
HN: 2018-09-21
https://vietnamlab.vn/
https://codetudau.com/
2. Nội dung trình bày
• Giới thiệu về NLP, ứng dụng của NLP
• Lý do chọn đề tài
• Các vấn đề cần giải quyết
• Bài toán xác định ý định người dùng (Intent Detection)
• Bài toán sửa lỗi chính tả (Spell Correction)
• Một số khó khăn gặp phải
• Phương hướng phát triển
2
3. NLP là gì
• Natural Language Processing
• Là một nhánh của trí tuệ nhân tạo tập trung vào các ứng dụng
trên ngôn ngữ của con người.
• NLP là 1 trong những phần khó nhất vì nó liên quan đến việc
phải hiểu ý nghĩa ngôn ngữ, giao tiếp.
3
4. NLP có còn đang sôi động ?
4
Các giải pháp phần mềm ứng dụng NLP sẽ giúp thị trường tăng trưởng từ $300 million (2018) đến $5.4 billion
6. Ứng dụng của NLP
6
#2. Chatbots
• Trò chuyện -> Biết được sở thích, tính cách của người dùng
• Trợ lý ảo
• Giải đáp thắc mắc, tư vấn sản phẩm, dịch vụ cho khách hàng
8. Ứng dụng của NLP
8
#4. Managing the Advertisement Funnel
• Sử dụng NLP để phân tích lịch sử truy cập website, thông tin cá nhân người dùng
• Đưa ra những quảng cáo phù hợp với từng người
• Hiển thị quảng cáo với những đối tượng phù hợp ...
9. Ứng dụng của NLP
9
#5. Market Intelligence
Thị trường kinh doanh luôn biến động, và bị ảnh hưởng bởi kiến thức thị trường,
thông tin kinh doanh, báo cáo kinh doanh của các công ty, tổ chức.
-> NLP giúp theo dõi, giám sát thông tin thị trường, trích xuất thông tin quan trọng
10. Lý do chọn đề tài
10
Mục tiêu là xây dựng hệ thống chatbot, AI Assistant, smart home.
Cùng với sự phát triển của NLP, các hệ thống sử dụng NLP càng thông minh hơn, càng có nhiều người quan tâm hơn
Thị trường Việt Nam còn rất nhiều cơ hội.
11. Các vấn đề cần giải quyết
1. Bài toán xác định ý định người dùng (Intent detection)
2. Bài toán nhận dạng thực thể (Named-entity recognition)
11
12. Các vấn đề cần giải quyết
1. Bài toán xác định ý định người dùng (Intent detection)
2. Bài toán nhận dạng thực thể (Named-entity recognition)
12
13. Xác định ý định người dùng (Intent detection)
• Ý định(Intent) là gì ?
Điều mà người dùng mong muốn chatbot,
smart home, assistant thực hiện.
• Intent được xác định sẽ quyết định kịch bản
của đoạn hội thoại tiếp theo
Xác định sai:
↪︎ Phản hồi không thích hợp → người dùng sẽ không hài lòng → 🤛
13
14. Vấn đề gặp phải là gì ? (Intent detection)
Ví dụ người dùng muốn hỏi thời tiết hôm nay:
• Thời tiết hôm nay thế nào ?
• Hôm nay mưa không em ơi ?
• Thời tiết khó chịu nhỉ ?
• Hôm nay không mưa à ?
....
• Làm sao để có thể nhận biết được
những cách diễn đạt khác nhau
cho cùng 1 intent ?
14
15. Vấn đề gặp phải là gì ? (Intent detection)
• Xử lý vấn đề sai chính tả
• Sai dấu, x,s,l,n...
• Các từ viết tắt, teencode
15
16. Cách giải quyết bài toán xác định Intent
• Xác định số lượng intent (hữu hạn hay vô hạn)
– Closed domain→ số lượng intent là hữu hạn
• Xác định intent bằng cách sử dụng phương pháp phân loại văn
bản(Text classification)
16
intent Câu ví dụ
hoi_thoi_tiet Mai mưa không em ?
hoi_thoi_tiet Thời tiết ngày mai thế nào ?
chao_hoi Chào em
chao_hoi Hi
17. Cách giải quyết bài toán xác định Intent
17
Mô hình hệ thống phân lớp intent
18. Chuẩn bị dữ liệu huấn luyện
• Mỗi intent chuẩn bị từ 2-5 mẫu câu
18
intent Câu ví dụ
hoi_thoi_tiet Mai mưa không em ?
hoi_thoi_tiet Thời tiết ngày mai thế nào ?
chao_hoi Chào em
chao_hoi Hi
ví dụ tập huấn luyện hệ thống chatbot
19. Tiền xử lý
Tách từ (Word segmentation)
• Mục đích để tạo vector ngữ nghĩa của câu.
Khác với tiếng anh mỗi từ có nghĩa cách nhau bởi space.
Ví dụ: Tôi yêu xử lý ngôn ngữ tự nhiên
Tách theo âm tiết: Tôi | yêu | xử | lý | ngôn | ngữ | tự | nhiên
Tách theo từ: Tôi | yêu | xử_lý | ngôn_ngữ | tự_nhiên
Sử dụng phương pháp pointwise cho tách từ tiếng Việt
https://www.scribd.com/fullscreen/342411823?access_key=key-UJOfjnzF9fZfZiAgnaR8
19
20. Tiền xử lý
20
Xử lý sai chính tả (Spell Correction)
Sai chính tả thì chính con người còn khó hiểu huống chi là máy
Rất tiếc là ở VN chưa có mã nguồn nào giải quyết vấn đề này. (T . T)
-> Việc gì khó quá thì bỏ qua.
21. Tiền xử lý
• Xử lý các từ viết tắt
user: Good night
machine: Good night! I love u
user: G9
machine:%#$&%#$%@
21
23. Trích xuất đặc trưng(Feature Extraction)
• Biểu diễn ngôn ngữ loài người dưới dạng số sao cho có nghĩa
và machine có thể hiểu được.
• Word2Vec, One-hot Encoding, Bag of Words...
• Hiện tại sử dụng Bag of Words(BoW) để giải quyết vấn đề này.
– Lý do: Lượng data hiện tại ít, đơn giản, dễ dàng cài đặt
– Nếu có nhiều dữ liệu thì Word2Vec là lựa chọn hàng đầu.
23
24. Trích xuất đặc trưng(Feature Extraction)
• Bag of Words hoạt động như thế nào ?
• Ví dụ:
– The quick brown fox jumps over the lazy dog and(*)
– Never jump over the lazy dog quickly (**)
24
(*) -> [1,1,1,0,1,1,0,1,1,0,2]
(**) -> [0,1,0,1,0,1,1,1,0,1,1]
Bước 1:
25. Trích xuất đặc trưng(Feature Extraction)
• Tuy nhiên thực tế nhận thấy trong 1 câu tiếng Việt, 1 từ được
lặp lại nhiều lần thường là keyword
• Ngược lại từ nào mà câu nào cũng xuất hiện lại là những từ
không quan trọng.
=> Vậy có cách nào giải quyết được vấn đề này ?
25
26. Trích xuất đặc trưng(Feature Extraction)
• TF-IDF
– TF =
26
• f(t,d) - số lần xuất hiện từ t trong 1 câu (d)
• mẫu số: tổng số từ trong 1 câu (d)
• Số lần xuất hiện 1 từ trong câu càng nhiều thì TF càng
(TH lần này d chính là 1 câu)
• |D|: tổng số câu trong tập D
• mẫu số: số câu chứa từ t
• Càng nhiều câu chứ từ t thì idf càng thấp
log(8/3) = 0.4259
log(8/7) = 0.0579
27. Trích xuất đặc trưng(Feature Extraction)
27
The quick brown fox jumps over the lazy dog
and(*)
Never jump over the lazy dog quickly (**)
https://codetudau.com/bag-of-words-tf-idf-xu-ly-ngon-ngu-tu-nhien/
(*) -> [1,1,1,0,1,1,0,1,1,0,2]
(**) -> [0,1,0,1,0,1,1,1,0,1,1]
*TF*IDF
BoW
28. Huấn luyện mô hình (Train Model)
28
Đưa về bài toán Text Classification
intent Câu ví dụ
hoi_thoi_tiet Mai mưa không em ?
hoi_thoi_tiet Thời tiết ngày mai thế nào ?
chao_hoi Chào em
chao_hoi Hi
30. Kết quả bài toán Intent Detection
30
Feature(RAW) Target
Hôm nay trời đẹp không ? hoi_thoi_tiet
Hôm nay thời tiết thế nào ? hoi_thoi_tiet
Hôm nay mưa không ? hoi_thoi_tiet
Chào em gái chao_hoi
Chào bạn chao_hoi
Hello bạn chao_hoi
Hi em chao_hoi
Đây là toàn bộ train data
Mong muốn hỏi những cách hỏi khác, máy vẫn chọn ra target đúng.
31. Kết quả bài toán Intent Detection
• Với những câu không có trong training data vẫn có thể xác
định chính xác.
• Nóng quá, liệu mưa không em ơi?
31
33. Tiền xử lý
33
Xử lý sai chính tả (Spell Correction)
Sai chính tả thì chính con người còn khó hiểu huống chi là máy
Rất tiếc là ở VN chưa có mã nguồn nào giải quyết vấn đề này. (T . T)
-> Việc gì khó quá thì bỏ qua.
35. Bài toán sửa lỗi chính tả (Spell Correction)
• Phương pháp giải quyết đơn giản nhất
35
http://norvig.com/spell-correct.html
36. Bài toán sửa lỗi chính tả (Spell Correction)
36
Ưu điểm Hạn chế
Dễ dàng cài đặt Cần bộ từ điển tiếng Việt hoàn chỉnh(Để làm được bộ từ điển
chuẩn tốn nhiều cost)
Độ chính xác khá cao với những từ thường dùng Thời gian xử lý chậm chạp → delay cao
Nhất và với tiếng Việt, việc sai chính tả không đơn giản như
tiếng Anh
Xử lý những câu dài khó khăn do vấn đề hiệu năng
Với những từ ít xuất hiện score thấp nên thường sai
37. Bài toán sửa lỗi chính tả (Spell Correction)
• Ứng dụng Deep Learning vào giải quyết bài toán
• Kỹ thuật sử dụng seq2seq (LSTM Encoder - Decoder)
– Encoder + Bidirectionl
– Decoder + Attention
37
38. RNN là gì ?
• RNN = Recurrent neural network = Mạng nơ-ron hồi quy
• Là một thuật toán được chú ý rất nhiều bởi kết quả tốt thu
được trong NLP.
• Ứng dụng:
– Machine Translation
– Tự động sinh văn bản
– Là bàn đạp cho LSTM ...
38
39. Ý tưởng của RNN
• Trong các mạng nơ-ron truyền thống tất cả các đầu vào và cả
đầu ra là độc lập với nhau.
• Nếu coi bài toán sửa lỗi chính tả chính là việc đoán từ tiếp
theo từ những từ trước đó thì mạng nơ-ron truyền thống
không dùng được.
• Ví dụ: ngày mai lắng nên anh sẽ về.
39
40. RNN là gì ?
• Với những hạn chế của mạng nơ-ron truyền thống, RNN đã ra
đời.
40
Mạng nơ-ron hồi quy A(hidden layer)
Đầu ra của hidden layer : ht
Đầu vào Xt
Có vẻ hơi khó hiểu nhỉ??
41. RNN là gì ?
41
h(t) = f(U*x(t) + W*h(t-1) + b)
h1 = f(U*x1 + W*(h0) + b)
h0 = f(U*x0 + b)
h2 = f(U*x2 + W*(h1) + b))
f chính là activate function
y(t) = f(W*h(t))
42. Ưu điểm của RNN
• Điểm nổi bật của RNN chính là ý tưởng kết nối thông tin phía trước để dự
đoán kết quả hiện tại.
• Ví dụ:
• Chú chim bay trên bầu
42
trời
43. Hạn chế của RNN
Ví dụ: Tôi sinh ra ở Đức nên tôi nói tiếng ...
43
Về mặt lý thuyết thì RNN có khả năng xử lý long-term dependencies
Nhưng thực tế khi khoảng t càng lớn thì RNN bắt đầu không thể nhớ và học được.
Vấn đề đạo hàm bị triệt tiêu (vanishing gradients)
Khám phá ra bởi Hochreiter (1991)
http://people.idsia.ch/~juergen/SeppHochreiter1991ThesisAdvisorSchmidhuber.pdf
44. Sự ra đời của LSTM(Long Short Term Memory)
• Được giới thiệu bởi Hochreiter & Schmidhuber (1997)
• Giải quyết được vấn đề của RNN
44
Simple RNN
45. Sự ra đời của LSTM(Long Short Term Memory)
• Được giới thiệu bởi Hochreiter & Schmidhuber (1997)
• Giải quyết được vấn đề của RNN
45
LSTM
46. LSTM là gì
• LSTM đưa vào mạng nơ-ron trạng thái nơ-ron (cell state ) để
lưu trữ và lan truyền các thông tin có ích (Giống như bộ nhớ)
46
47. LSTM là gì
47
LSTM có khả năng bỏ đi hoặc thêm vào các thông tin cần thiết cho trạng thái nơ-ron bởi các gate
Forget Gate layer
ft = 0 : Toàn bộ thông tin cũ sẽ bị bỏ đi
ft = 1 : Giữ lại toàn bộ thông tin cũ Ct-1
Ví dụ như xác định độ tuổi 1 người thì
- thông tin về chỉ số sức khoẻ là cần thiết
- giới tính thì loại bỏ cũng được
48. LSTM là gì
• B2: Bước này quyết định xem thông tin mới nào sẽ được lưu.
• Gồm 2 phần: input gate layer để quyết định giá trị nào ta sẽ được thêm.
tầng tanh tạo ra một vector cho giá trị mới C~t
48
49. LSTM là gì
• B3:Cập nhật trạng thái nơ-ron cũ (old cell state)
49
50. LSTM là gì
• B4: Cuối cùng tính output. Chính là cell state nhưng vẫn có
sàng lọc.
• Xác định phần nào của cell state nên xuất ra. (do lưu trữ cả
các Ct-)
50
51. Chốt lại LSTM là gì
• Về cơ bản LSTM không khác RNN nhiều
• Nhưng nhiều hidden layer hơn
• Mấu chốt ở bộ nhớ LSTM được gọi là Cell
• LSTM như 1 black box, nhận giá trị cell phía trước h(t-1) và input xt
• Black box sẽ quyết định thêm thông tin gì mới và loại bỏ thông tin
không cần thiết.
• Cell memory đã giải quyết được vấn đề của RNN
51
https://colah.github.io/posts/2015-08-Understanding-LSTMs/
53. Kỹ thuật Bidirectional LSTM (BiLSTM)
• Liệu rằng từ hiện tại chỉ liên quan đến từ phía trước.
Ví dụ: Tối qua di chơi ở Hạ Long
t(0) 1 2 3 4 5 6
Khi sửa lỗi chính tả thực chất là đoán xem từ vị trí t2 là từ gì.
Nhận thấy thông tin phía sau cũng rất quan trọng
=> Bidirectional ra đời để giải quyết vấn đề này
53
55. Tuy nhiên LSTM thôi chưa đủ để giải quyết bài toán sửa lỗi
chính tả ....
55
56. Bản chất của LSTM
• Mặc dù input của LSTM, RNN có thể là sequence nhưng output
bản chất không phải là sequence
• Chính xác là việc lặp đi lặp lại việc
dự đoán t+1
• Từ trước sai thì…
Nên cần 1 model khác ?
56
RNN
57. Sự ra đời của sequence-to-sequence
• RNN Encoder – Decoder/ LSTM Encoder – Decoder
57
Sequence to Sequence
Pha 1: Encoder có nhiệm vụ hiểu được thông tin đầu vào.
• Vì bản chất NLP phụ thuộc theo chuỗi (từ sau phụ thuộc từ trước nó)
• Tránh trường hợp sinh ra câu vô nghĩa (word by word)
henc(t) = f(henc(t-1), x(t))
c = henc(1:t) = conditional generation
Vector độ dài = (x1,...x(t))
58. Sự ra đời của sequence-to-sequence
58
Sequence to Sequence
Pha 2: Decoder sẽ sinh lần lượt từng từ cho chuỗi đầu vào theo mô hình sinh có điều kiện (conditional generation)
hdec(t) = f(hdec(t-1), y(t-1), c)
61. Nhược điểm của seq2seq
61
• Seq2Seq yêu cầu LSTM decoder sử dụng toàn bộ thông tin encoder.
• Và đương nhiên là encoder cũng phải mã hoá toàn bộ thông tin input.
Thực tế của NLP cho thấy không phải lúc nào 1 từ trong câu cũng liên quan mật thiết
với tất cả các từ trước nó. Có thể chỉ 1,2 từ trước nó.
62. Xuất hiện của Decoder + Attention
62
hdec(t) = f(hdec(t-1), y(t-1), c(t) )
Attention đánh lại trọng số cho từng phần tử trong c
Cụ thể là từ nào ít liên quan sẽ có giá trị nhỏ hơn.
63. Tiến hành áp dụng thực tế
1. Chuẩn bị data
2. Tiền xử lý
3. Tạo data noise
4. Code model
5. Tiến hành training
6. Xem kết quả
63
64. Tiến hành áp dụng thực tế
• Data: http://viet.jnlp.org/download-du-lieu-tu-vung-corpus
~50MB
• Sử dụng tensorflow GPU
• Python 3
• Cấu hình máy GPU: GTX 1080
• Thời gian training: 1 ngày ~
64
74. Một số vấn đề gặp phải khi nghiên cứu
• Thời gian làm sạch data, tạo noise data mất nhiều thời gian.
• Thời gian nghiên cứu ngắn
• Để áp dụng thực tế phải có nhiều data sạch
74
75. Phương hướng phát triển
• Nâng cao độ chính xác Model hiện tại
• Có thể thay đổi BagofWord bằng Word2Vec…
• Giải quyết bài toán xác định thực thể có tên (NER)
• Tìm hiểu bài toán chuyển từ âm thanh -> Text …(Speech
Recognition)
• Áp dụng ra thực tế, kết hợp với IOT, các dịch vụ chatbot …
75