You are on page 1of 77

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)
ThanhTT
thanhtt@vietnamlab.vn
HN: 2018-09-21
https://vietnamlab.vn/
https://codetudau.com/
1
1
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
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
NLP có còn đang sôi động ?

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
4
Ứng dụng của NLP

#1. Sentiment Analysis

5
Ứng dụng của NLP

#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
6
Ứng dụng của NLP

#3. Customer Service

7
Ứng dụng của NLP

#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 ...
8
Ứng dụng của NLP

#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

9
Lý do chọn đề tài

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.
10
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
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
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
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
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
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)
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

16
Cách giải quyết bài toán xác định Intent

Mô hình hệ thống phân lớp intent

17
Chuẩn bị dữ liệu huấn luyện
• Mỗi intent chuẩn bị từ 2-5 mẫu câu

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

18
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
Tiền xử lý
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.

20
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
Trích xuất đặc trưng

22
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
Trích xuất đặc trưng(Feature Extraction)
Bước 1:

• 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 (**)
(*) -> [1,1,1,0,1,1,0,1,1,0,2]
(**) -> [0,1,0,1,0,1,1,1,0,1,1]

24
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
Trích xuất đặc trưng(Feature Extraction)
• TF-IDF
• 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
– TF = (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

26
Trích xuất đặc trưng(Feature Extraction)
The quick brown fox jumps over the lazy dog
and(*)
Never jump over the lazy dog quickly (**)
BoW

(*) -> [1,1,1,0,1,1,0,1,1,0,2]


(**) -> [0,1,0,1,0,1,1,1,0,1,1]

*TF*IDF

https://codetudau.com/bag-of-words-tf-idf-xu-ly-ngon-ngu-tu-nhien/
27
Huấn luyện mô hình (Train Model)

Đư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

28
Huấn luyện mô hình (Train Model)
• Lựa chọn mô hình

• Naive Bayes
• SVM (more data)
• SGDClassifier(more data)
• RF...

29
Kết quả bài toán Intent Detection
Đây là toàn bộ train data
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

Mong muốn hỏi những cách hỏi khác, máy vẫn chọn ra target đúng.

30
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
Nhưng ....

32
Tiền xử lý
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.

33
Giải quyết như thế nào ?

34
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

http://norvig.com/spell-correct.html

35
Bài toán sửa lỗi chính tả (Spell Correction)

Ư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

36
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
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
Ý 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
RNN là gì ?
• Với những hạn chế của mạng nơ-ron truyền thống, RNN đã ra
đời. Đầu ra của hidden layer : ht

Mạng nơ-ron hồi quy A(hidden layer)

Đầu vào Xt

Có vẻ hơi khó hiểu nhỉ??


40
RNN là gì ?

h(t) = f(U*x(t) + W*h(t-1) + b)


h0 = f(U*x0 + b)
y(t) = f(W*h(t))
h1 = f(U*x1 + W*(h0) + b)
f chính là activate function
h2 = f(U*x2 + W*(h1) + b))
41
Ư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ụ:
trời

• Chú chim bay trên bầu

42
Hạn chế của RNN
Ví dụ: Tôi sinh ra ở Đức nên tôi nói tiếng ...

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) 43
http://people.idsia.ch/~juergen/SeppHochreiter1991ThesisAdvisorSchmidhuber.pdf
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

Simple RNN

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
LSTM

45
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
LSTM là gì
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
47
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
LSTM là gì
• B3:Cập nhật trạng thái nơ-ron cũ (old cell state)

49
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
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
https://colah.github.io/posts/2015-08-Understanding-LSTMs/ 51
Tuy nhiên....

52
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
Kỹ thuật Bidirectional LSTM (BiLSTM)

h(t) = h(t) + h(t)

54
Tuy nhiên LSTM thôi chưa đủ để giải quyết bài toán sửa lỗi
chính tả ....

55
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 RNN

dự đoán t+1
• Từ trước sai thì…

Nên cần 1 model khác ?


56
Sự ra đời của sequence-to-sequence
• RNN Encoder – Decoder/ LSTM Encoder – Decoder
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ó) henc(t) = f(henc(t-1), x(t))
• Tránh trường hợp sinh ra câu vô nghĩa (word by word)
c = henc(1:t) = conditional generation
Vector độ dài = (x1,...x(t))
57
Sự ra đời của sequence-to-sequence
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)


58
Tuy nhiên nhược điểm của sequence to sequence là ...

59
60
Nhược điểm của seq2seq

• 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ó.

61
Xuất hiện của Decoder + Attention

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.
62
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
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
Kết quả thực nghiệm

65
Kết quả thực nghiệm

66
Kết quả thực nghiệm

67
Kết quả thực nghiệm

68
Kết quả thực nghiệm

69
Kết quả thực nghiệm

70
Kết quả thực nghiệm

71
Kết quả thực nghiệm
Với những từ mới lại detect thành từ sai chính tả.

72
Kết quả thực nghiệm

73
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
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
Phần hỏi đáp

76
77

You might also like