Professional Documents
Culture Documents
Stanford Book Notes Ver TMP
Stanford Book Notes Ver TMP
Summary of
“Speech and Language Processing”
3rd Edition
Authors of Book: Daniel Jurafsky (Stanford), James H. Martin (Colorado at Boulder)
1
NLP Notes – Kikai Tech
Mục lục
I. Bài toán .......................................................................................................... 4
1. Text Normalization .................................................................................... 4
2. Word Tokenization .................................................................................... 4
3. Word Normalization .................................................................................. 5
4. Sentence Segmentation .............................................................................. 6
5. String Similarity ........................................................................................ 6
6. Language Model ........................................................................................ 7
7. Text Classification ....................................................................................10
8. Vector Semantics / Word Embedding .......................................................15
9. Sequence Labeling ....................................................................................17
10. Machine Translation .................................................................................19
11. Constituency Parsing ................................................................................25
12. CCG Parsing .............................................................................................27
13. Dependency Parsing .................................................................................28
14. Semantic Parsing ......................................................................................29
15. Information Extraction ..............................................................................30
16. Relation Extraction ...................................................................................30
17. Time Extraction ........................................................................................33
18. Event Extraction .......................................................................................35
19. Timeline Extraction ..................................................................................36
20. Template Filling .......................................................................................37
21. Word Sense Disambiguation .....................................................................38
22. Semantic Role Labeling ............................................................................41
23. Selectional Preference ..............................................................................44
24. Affective Information Utilizing ................................................................46
25. Coreference Resolution.............................................................................50
26. Discourse Structure Parsing ......................................................................55
27. Question Answering .................................................................................61
2
NLP Notes – Kikai Tech
3
NLP Notes – Kikai Tech
I. Bài toán
1. Text Normalization
1.1. Mô tả
Text Normalization là một tập các tasks thực hiện nhằm mục đích đưa văn
bản về một dạng chuẩn, tạo đầu vào thuận tiện cho các xử lý ở cấp cao hơn.
1.2. Bài toán con / thành phần
- Word Tokenization
- Word Normalization
- Sentence Segmentation
1.3. Tham khảo
- P13
2. Word Tokenization
2.1. Mô tả
Mục tiêu là tách văn bản thành các từ
2.2. Trở ngại & Vấn đề còn tồn tại
- Có nhiều mập mờ trong việc xác định các thành phần (ref.1-p15):
o Dấu câu: bỏ đi hay giữ lại
o Ký tự đặc biệt & số: khó xác định ranh giới (do chưa có quy
chuẩn chung giữa các ngôn ngữ)
o Có nhiều cụm từ có nghĩa hoàn chỉnh không nên tách
o Cụm đặc biệt (email, url, hashtag,..): mập mờ trong xác định cụm
o Viết tắt: cần mở rộng
- Có một số tiếng như Trung Quốc, Thái Lan, Nhật Bản không sử dụng
dấu cách để ngắt giữa các từ đơn.
➔ Xem mỗi ký tự là một từ (Trung Quốc) hoặc phải có thuật toán word
segmentation (Nhật Bản và Thái Lan)
2.3. Kỹ thuật và phương pháp giải
4
NLP Notes – Kikai Tech
- Unix command line: Giúp tokenize theo cách đơn giản và thống kê
nhanh từ vựng của corpus
- Regex (nltk lib): ưu điểm là nhanh nhưng cần được thiết kế cẩn thận
cho những trường hợp mập mờ
- Byte-Pair Encoding (X)
- Unigram Language Model (X)
2.4. Cách đánh giá
Không có
2.5. Ghi chú
Cần ưu tiên tốc độ
2.6. Tham khảo
- C2.4.2
3. Word Normalization
3.1. Mô tả
Đưa token/word về dạng chuẩn (chọn một form cho một từ e.g. ổi, ủi ->
ổi), đặc biệt quan trọng trong các ngôn ngữ có hình thái từ phức tạp (chia
theo thì, nhiều tiền tố, hậu tố,..)
3.2. Bài toán con / thành phần
- Case folding: đưa các từ viết hoa về dạng viết thường. Mục đích là giúp
generalization. Tuy nhiên, có nhiều task chuẩn hóa chữ hoa là không
cần thiết (vd: machine translation, information extraction,..)
- Lemmatization: xác định 2 form có phải thuộc cùng một từ không (vd:
is, am, are -> be). Đây là task phức tạp
- Stemming (đơn giản hơn lemmatization): loại bỏ tất cả các tiền tố, hậu
tố của từ
3.3. Trở ngại & Vấn đề còn tồn tại
3.4. Kỹ thuật và phương pháp giải
5
NLP Notes – Kikai Tech
- Porter Stemmer: cho word đi qua chuỗi các rule, theo kiểu cascade
(output của rule trước là input của rule sau)
4. Sentence Segmentation
4.1. Mô tả
Tách văn bản thành chuỗi các câu
4.2. Bài toán con / thành phần
4.3. Trở ngại & Vấn đề còn tồn tại
- Khó xác định chính xác mục đích của dấu câu trong các ngữ cảnh khác
nhau
4.4. Kỹ thuật và phương pháp giải
- Sử dụng luật: xây dựng từ điển (thủ công hoặc qua ML) để xác định
mục đích của dấu ngắt câu (để tách câu hay dùng cho mục đích khác)
4.5. Tham khảo
- C2.4.5
5. String Similarity
5.1. Mô tả
Đo độ tương đồng giữa hai xâu
5.2. Bài toán con / thành phần
5.3. Trở ngại & Vấn đề còn tồn tại
6
NLP Notes – Kikai Tech
6. Language Model
6.1. Mô tả
Mô hình được dùng để gán giá trị xác suất cho chuỗi từ.
6.2. Bài toán con / thành phần
6.3. Trở ngại & Vấn đề còn tồn tại
Với mô hình N-gram Language Model, có những vấn đề sau cần phải cân nhắc:
- Cần cân nhắc khả năng generalize của mô hình:
Cẩn trọng khi chọn dữ liệu huấn luyện (dialect/variety và tính chất đặc thù của
nguồn thu thập dữ liệu).
Ngoài ra, tập train và test cần đồng bộ với nhau (cùng thể loại,…).
Mô hình cần có phương án đối phó với sparity. Cụ thể là: Làm sao để mô hình
có khả năng tạo ra những cụm từ mới hoàn toàn, chưa có trong tập train? Đối phó
với những context (cụm (n-1)-gram) chưa từng gặp ở tập train nhưng xuất hiện ở
tập test như thế nào? Giải pháp cho vấn đề này là Smoothing.
7
NLP Notes – Kikai Tech
machine translation, tập từ vựng (từ điển các âm/ bảng các cụm từ) được coi là
đầy đủ và cố định.
Những trường hợp khác (open vocabulary) thì cần phải xử lý unknown words
(hay out of vocabulary – OOV). Ở đây, những unknown words thường được
thay thế bằng một từ giả <UNK>. Có 2 cách được dùng để tìm ra xác suất cho
<UNK>:
o Cách 1: Chọn tập từ vựng cố định -> học từ tập train (từ nào không có
trong tập từ vựng thì coi là <UNK> ). Từ đây sẽ ra được xác suất của
<UNK>
o Cách 2: Những token nào xuất hiện ít hơn n lần trong training set sẽ được
coi là <UNK>.
Ref.C3.3
Với các Neural Language Model lớn, có một số vấn đề sau cần quan tâm:
- Bias:
Do thường được huấn luyện trên một tập dữ liệu rất lớn, nên có thể nó sẽ bị ảnh
hưởng bởi các bias (định kiến) hoặc vô tình sinh ra những đoạn text không phù
hợp (tác hại sẽ hiện rõ ở những ứng dụng phổ biến như web search, hay typing
predict trong email).
Hơn nữa, LM thậm chí có thể làm cường điệu hóa các bias nhỏ tồn tại trong dữ
liệu huấn luyện (?)
- Quyền riêng tư:
LM có thể làm lộ các thông tin riêng tư có trong dữ liệu huấn luyện (đặc biệt là
với những tập dữ liệu mang tính riêng tư vd: hồ sơ bệnh án của bệnh nhân)
➔ Giải pháp:
o Cần cẩn trọng khi chọn dữ liệu huấn luyện. Khi tạo dữ liệu, có
thể sử dụng datasheet/model card để xác định rõ các thông tin
liên quan đến corpus sử dụng huấn luyện.
o Khi thấy mô hình có xu hương tạo ra toxic output, có thể huấn
luyện nó thêm trên một bộ dữ liệu lành mạnh hơn.
Ref.C9.5
6.4. Kỹ thuật và phương pháp giải
8
NLP Notes – Kikai Tech
𝑁
𝑁 1
= √∏
𝑃(𝑤𝑖 |𝑤𝑖−1)
𝑖
PP càng nhỏ tương đương với xác suất sinh ra chuỗi từ càng lớn. Liên hệ PP
với entropy, có thể coi PP là weighted average branching factor (số phương
án trung bình mà mô hình cần chọn lựa khi dự đoán từ tiếp theo, trong đó, các
phương án có trọng số khác nhau). Branchinh factor là số khả năng mà từ
tiếp theo sẽ nhận. Khi xác suất là đều thì:
weighted average branching factor = branching factor
(*) Chú ý khi sử dụng:
- Có thể coi toàn bộ tập test là một chuỗi. Khi đó cần thêm các marker
<s> và </s> để đánh dấu ranh giới giữa các câu
- Cần thêm </s> vào tập từ vựng, còn <s> thì không (?)
- Nếu test set giống với train set thì PP sẽ thấp.
- Việc chọn vocab cho mô hình LM sẽ ảnh hưởng nhiều đến PP của mô
hình. Nếu tập từ vựng nhỏ & xác suất cho <UNK> lớn thì PP thấp. Đây
9
NLP Notes – Kikai Tech
b. Với extrinsic evaluation: đánh giá hiệu quả LM dự vào hiệu quả mà nó đem
lại khi ứng dụng vào một hệ thống end-to-end.
Cách đánh giá này dựa trên việc quan niệm rằng chất lượng của một LM được
phản ánh qua tính rành mạch, hợp lý của output mà nó sinh ra. Cách tiếp cận
để tạo output thường được sử dụng là autoregressive generation. Cụ thể, ban
đầu chọn ngẫu nhiên một từ đầu tiên. Sau đó cho mô hình sinh ra từ tiếp theo
dựa vào các từ được chọn trước đó. Mô hình dừng sinh khi output đã đạt đến
giới hạn độ dài hoặc nó sinh ra ký tự đánh dấu kết thúc.
Đây cũng là cách thức được sử dụng để sinh văn bản cho các bài toán như
Machine Translation, Text Summarization,…
7. Text Classification
7.1. Mô tả
Yêu cầu của bài toán là gán nhãn cho một đoạn văn bản.
10
NLP Notes – Kikai Tech
Các hàm này được xây dựng thủ công dựa vào tổ hợp các thuộc tính khác nhau
của input. Giá trị trả về nó là giá trị nhị phân.
11
NLP Notes – Kikai Tech
Để đơn giản hóa quá trình thiết kế đặc trưng cần trích chọn, người ta thường sử
dụng feature template. Trong feature template, việc cần làm là chỉ ra các đặc
trưng cần trích rút. Giá trị của đặc trưng có thể là một xâu, một số, một chuỗi nhị
phân, một nhãn,… Sau đó, tập những đặc trưng đó sẽ được chuyển về dạng
feature vector như cho feature function ở trên. (X)
Nhược điểm của phương pháp này là feature vector bị thưa và có thể chứa nhiều
feature không cần thiết.
Ref.C5.1.1
Ref.C5.6.1 (X)
o Xu hướng hiện nay là học feature tự động thông qua
representation learning (X)
- Classification function: sigmoid / softmax (X) – Ref.C5.1
- Objective Function (X) - Ref.C5.3; Ref.C5.6.2
- Optimization Algorithm (X) – Ref.C5.4
- Regularization (X) – Ref.C5.5
7.3. Trở ngại & Vấn đề còn tồn tại
Khi thực hiện huấn luyện mô hình cần tránh các harm sau:
- Representation Harms: Việc quyết định của mô hình dựa vào những feature
không có cơ sở
- Nhạy cảm với một số feature: một số feature khi xuất hiện trong 1 context sẽ
thường cho 1 nhãn cụ thể. Tuy nhiên, mô hình lại quan trọng hóa feature đó,
xem nó là yếu tố quyết định duy nhất đến việc chọn nhãn (cho trọng số của
feature đó quá lớn)
Nguyên nhân của vấn đề trên là từ bias trong dữ liệu:
- Việc gán nhãn bằng tay (có bias)
- Kiến trúc mô hình
- Các tài nguyên sử dụng (lexicons hay pretrained embeddings)
➔ Cần phải tạo ra model card (Mitchell 2019) (X)
Các phương pháp thường áp dụng cho bài toán phân loại:
- Sử dụng luật:
Luật thường được tích hợp thêm vào các hệ thống phân loại
Nhược điểm: Luật có thể không đúng mãi mãi; Trong một số trường hợp, con
người không thể nghĩ ra được tập luật bao quát hết tất cả mọi trường hợp.
- Sử dụng các thuật toán học có giám sát (>): đây là cách được áp dụng
nhiều.
Thay vì đưa ra kết quả là một nhãn xác định, một phân phối xác suất trên tập các
nhãn sẽ hữu dụng hơn khi áp dụng vào hệ thống thực.
Có hai cách tiếp cận: Generative classifier & Discriminative classifier
(*) So sánh Generative và Discriminative Classifier:
Mục tiêu của hai loại classifier này đều là tính giá trị post probability: 𝑝(𝑦|𝑥 ) cho
tất cả các nhãn và sau đó, chọn nhãn cho post probability lớn nhất. Tuy nhiên,
cách thức tính của hai loại mô hình lại khác nhau.
o Generative Classifier
Mô hình dạng này tính post probability thông qua công thức Bayes:
𝑝(𝑥|𝑦). 𝑝(𝑦)
𝑝(𝑦|𝑥 ) =
𝑝(𝑥 )
Để tìm 𝑝(𝑦|𝑥) cho giá trị lớn nhất, mô hình cần phải biết được likelihood 𝑝(𝑥|𝑦)
và prior 𝑝(𝑦). Đây là các tham số mà mô hình phải học.
Gọi đây là mô hình sinh vì có thể sử dụng mô hình này để sinh ra dữ liệu. (…Mô
tả quá trình sinh dữ liệu). Các tham số của mô hình thường hướng tới sao cho dữ
liệu mà mô hình sinh sinh ra giống tập dữ liệu huấn luyện nhất có thể.
Khi muốn phân loại 1 ảnh là ảnh chó hay mèo thì mô hình sẽ thực hiện:
1. Áp ảnh đó vào mỗi loại, tính 𝑝(𝑦|𝑥) cho từng loại
2. Nó sẽ trích những đặc trưng của ảnh cần phân loại. Căn cứ vào khả năng
xuất hiện của loại đang xét 𝑝(𝑦) và độ phổ biến của những đặc trưng của ảnh
trong loại đang xét 𝑝(𝑥|𝑦) để tính
NB huấn luyện nhanh, không cần tối ưu, dễ cài đặt
13
NLP Notes – Kikai Tech
(β2 + 1)𝑃𝑅
𝐹β =
β2 𝑃 + 𝑅
Dựa vào HarmonicMean:
𝑛
𝐻𝑎𝑟𝑚𝑜𝑛𝑖𝑐𝑀𝑒𝑎𝑛 (𝑎1, 𝑎2 , 𝑎3 , … , 𝑎𝑛 ) =
1 1 1 1
+ + + ⋯+
𝑎1 𝑎2 𝑎3 𝑎𝑛
14
NLP Notes – Kikai Tech
(*) HarmonicMean của hai giá trị thường gần với giá trị min của chúng hơn
là mean thông thường
Ngoài phân loại nhị phân, confusion matrix có thể sử dụng cho bài toán phân loại
nhiều nhãn. Từ confusion matrix, để tính ra giá trị các metric là recall, precision,
ta có thể áp dụng các cách thức sau:
- Macroaveraging: tính các metric cho mỗi nhãn, và sau đó lấy trung bình (tính
trung bình performance của các hệ thống phân loại nhị phân – nhãn 𝑐𝑖 và nhãn
𝑛𝑜𝑡𝑐𝑖
- Microaveraging: chỉ có 1 confusion matrix duy nhất, từ confusion này tính ra
các metric:
8.1. Mô tả
Dựa vào một giả thuyết nói về mối quan hệ giữa ngữ nghĩa của từ và ngữ cảnh
mà từ đó xuất hiện: (distributional hypothesis)
“Words that occur in similar contexts tend to have similar meanings.”
Nên một lớp bài toán được đặt ra với mục đích để tìm ra biểu diễn số học đặc
trưng cho mỗi từ bằng cách xem xét ngữ cảnh mà từ đó thường xuất hiện. Lớp
bài toán đó được gọi là representation learning. Các phương pháp giải quyết
bài toán này và tạo ra biểu diễn cho từ ở dạng vector được gọi là vector semantic.
Có thể chia vector semantic dựa vào tính tùy biến của embedding ứng với một từ
ở những ngữ cảnh khác nhau: static embedding (vd: word2vec) hoặc dynamic
embedding (vd: BERT).
Còn một cách chia khác là dựa vào đặc điểm của vector tạo ra. Chia các cách biểu
diễn thành dạng sparse (TF-IDF, Bag-of-word,…) hay dense (lsa, word2vec,…).
Biểu diễn dạng dense vector của một từ thường được gọi là embedding.
8.2. Bài toán con / thành phần
8.3. Trở ngại & Vấn đề còn tồn tại
- Vấn đề bias trong embedding (X)
- Vấn đề với các cặp từ trái nghĩa (antonyms):
Thường có xu hướng tạo các embedding tương tự nhau cho các cặp từ trái
ngược nhau (do những từ đối lập nhau thường xuất hiện ở context giống
nhau).
→ Giải pháp: Có hai hướng chính để mô hình phân biệt được antonyms
o Cách 1: Huấn luyện lại: sử dụng hàm loss khác (static
embedding),… (Ref.C18.6)
o Cách 2: retrofitting / counterfitting: Học thêm một phép map (dựa
vào thesaurus) để dịch các embedding của từ đồng nghĩa lại gần
nhau, còn embedding của từ trái nghĩa ra xa nhau (Ref.C18.6)
8.4. Kỹ thuật và phương pháp giải
a. TF-IDF (X)
b. PPMI (X)
c. LSA(X)
16
NLP Notes – Kikai Tech
9. Sequence Labeling
9.1. Mô tả
Sequence Labeling là bài toán thực hiện gán nhãn cho mỗi phần tử trong chuỗi
đầu.
Có hai dạng bài điển hình là Named Entity Recognition (NER) và Part-of-
speech tagging (POS tagging)
a. POS
17
NLP Notes – Kikai Tech
Gán nhãn từ loại cho mỗi từ trong xâu đầu vào. (_) Mô hình baseline giải
quyết bài toán này là: để gán nhãn cho một từ, lấy nhãn được gán cho từ đó
nhiều lần nhất trong tập huấn luyện.
b. NER
Bài toán này phức tạp hơn. Nó bao gồm task nhỏ sau: nhận diện (tìm span) và
phân loại các thực thể trong xâu đầu vào. NER được ứng dụng trong nhiều bài
toán to khác như: SA, link text to Wiki, trích rút sự kiện và các bên liên quan.
Cách thường được áp dụng là đưa về bài toán BIO tagging, IO tagging (có
nhiều kiểu khác nữa) sau đó áp dụng các mô hình cho Sequence Labeling để
giải quyết.
9.2. Bài toán con / thành phần
a. POS
b. NER
9.3. Trở ngại & Vấn đề còn tồn tại
Với bài toán POS tagging, những ngôn ngữ có hình thái từ đa dạng sẽ khó giải
quyết hơn. Ở những ngôn ngữ này (vd: Turkish), một từ nó có thể chứa nhiều
thông tin(vd: giới tính,…). Do đó, POS cần thiết phải xác định những loại thông
tin mà từ cung cấp, khi đó, nhãn tạo ra sẽ ở dạng chuỗi:
➔ Cách giải quyết: cần chú trọng việc phân tích hình thái từ (morphological
analysis)
9.4. Kỹ thuật và phương pháp giải
Có ba lớp mô hình được sử dụng để giải quyết bài toán này:
- Mô hình được xây dựng bởi tập luật (rule-based model):
o Sử dụng Regex, từ điển, semantic constrants,…
(>) Trong thực tế, các mô hình NER ở trong các ứng dụng thương mại thường
là mô hình kết hợp cả luật và mô hình xác suất.
18
NLP Notes – Kikai Tech
Có thể tận dụng tập luật để tạo dữ liệu huấn luyện cho mô hình học có giám
sát cho bài toán NER. Các bước thực hiện như sau:
1. Sử dụng các luật cho độ chính xác cao để trích ra các entity
2. Tìm ra các xâu con trong dữ liệu giống với các entity được tìm ra bởi
luật
3. Có thể sử dụng một danh sách application-specific name để tìm ra các
entity thuộc domain quan tâm
4. Sử dụng mô hình học có giám sát để học dữ liệu được gán nhãn từ ba
bước trên.
Cách khác là sử dụng nhiều luật để trích ra nhiều càng nhiều ent / gán pos rồi
sau đó sử dụng các ràng buộc để chỉnh sửa lại kết quả tạo ra.
- Lớp mô hình xác suất:
o Generative model: Hidden Markov Model (X)
o Discriminative model: Conditional Random Field (X)
- Lớp mô hình hiện đại (mạng nơ-ron):
o Recurrent Neural Network: BiLSTM(X)
o Transformer (X)
9.5. Cách đánh giá
POS thường được đánh giá bởi accuracy
NER được đánh giá bởi recall, precision, F1 measure (coi một entity là một đơn
vị khi tính metric thay vì là nhãn của một từ). Tuy nhiên, vì mục đích huấn luyện
của mô hình là gán nhãn đúng cho 1 từ chứ không phải là tìm ra chính xác entity,
nên metric này sẽ không bao quát được hiệu năng của mô hình (?)
Ref.C8.6
9.6. Ghi chú
9.7. Tham khảo
19
NLP Notes – Kikai Tech
21
NLP Notes – Kikai Tech
- Cách thức chọn output sinh ra từ target-to-source MT: greedy hay beam
search hay sampling theo phân phối xác suất sinh ra từ model (tên gọi cho
cách này là Monte Carlo search)
- Tỷ lệ giữa dữ liệu tạo bởi backtranslation và parallel corpus sẵn có. Có thể
làm lớn parallel corpus sẵn có để có tỷ lệ tương xứng bằng cách nhân bản
nó lên (?)
d. Beam Search (X)
10.3. Trở ngại & Vấn đề còn tồn tại
Machine Translation là task cần map chuỗi từ từ ngôn ngữ này sang ngôn ngữ
khác. Do đó, một số điểm khác nhau giữa source language và target language
(translation divergence) có thể gây khó khăn. Hệ thống MT muốn hiệu quả thì
cần phải cân nhắc chúng để giải quyết. Những điểm khác nhau xét ở đây là những
khác nhau mang tính hệ thống (systematic difference).
- Word Order Typology (X): Ref.C11.1.1
- Lexical Divergence (X): Ref.C11.1.2
- Morphological Typology (X): Ref.C11.1.3
- Referential Density (X): Ref.C11.1.4
MT có thể làm cường điệu bias ở trong tập dữ liệu huấn luyện.
Các hệ thống MT, và các bộ dữ liệu cho MT được tạo ra thường chỉ tập trung vào
một số ngôn ngữ phổ biến như Tiếng Anh.
10.4. Kỹ thuật và phương pháp giải
(>) Thuật toán thường dùng cho MT đó là sử dụng encoder-decoder network.
- Encoder-decoder network với RNN (X)
- Encoder-decoder network với Attention (X)
- Encoder-decoder network với Transformer (X)
10.5. Cách đánh giá
Khi đánh giá, cần phải cân nhắc tới độ đủ thông tin (adequate) và tính trôi chảy
(fluency) của output.
Có 2 cách đánh giá: dùng con người & đánh giá tự động qua metric.
Các metric thường được sử dụng để đánh giá hệ thống MT là: BLEU, NIST, TER,
Precision and Recall, METEOR.
22
NLP Notes – Kikai Tech
Thường, ta có thể chia việc đánh giá tự động thành hai lớp phương pháp chính:
- Các metric tập trung so sánh độ giống nhau giữa bản dịch của máy và của
người (vd: BLEU)
- Các metric giúp cải thiện hạn chế của BLEU đó là bỏ qua khả năng
paraphrase của hệ thống (vd: embedding-based methods, METEOR,…)
a. Sử dụng người đánh giá
- Cho điểm bản dịch dựa trên hai tiêu chí fluency và adequate.
(*) Nếu sử dụng thang điểm chi tiết, thì có thể normalize kết quả đánh giá (mean
= 0 & variance = 1). (?) Có phải chuẩn hóa để dễ visualize không?
- Xếp hạng bản dịch: cho họ chọn bản dịch mà họ thích hơn
𝑟𝑒𝑓_𝑙𝑒𝑛
𝑏𝑝 = 𝑚𝑖𝑛 (1, 𝑒𝑥𝑝 (1 − ))
𝑠𝑦𝑠_𝑙𝑒𝑛
𝐵𝐿𝐸𝑈 = ∑ 𝑏𝑙𝑒𝑢𝐶𝑎𝑛𝑑𝑖𝑎𝑡𝑒
𝐶𝑎𝑛𝑑𝑖𝑑𝑎𝑡𝑒∈𝐶𝑜𝑟𝑝𝑢𝑠
Trong đó:
𝐶𝑜𝑢𝑛𝑡𝑚𝑎𝑡𝑐ℎ_𝑐𝑙𝑖𝑝𝑝𝑒𝑑 : số lần xuất hiện trong 𝑟𝑒𝑓 của n_gram. Với một
n_gram chỉ có duy nhất một giá trị, và chỉ cộng vào tổng một lần.
23
NLP Notes – Kikai Tech
𝐶𝑜𝑢𝑛𝑡: số lần xuất hiện của n_gram trong bản dịch 𝑠𝑦𝑠
𝐶: là một câu trong candidate.
(*) Chú ý:
- BLEU hoạt động tốt khi với mỗi bản dịch 𝑠𝑦𝑠 có nhiều bản 𝑟𝑒𝑓 tương ứng
- Thư viện cho sử dụng metric này là: SACREBLEU
- Để đánh giá độ tự tin (confidence interval) của một giá trị BLEU score,
người ta thường sử dụng phương pháp bootstrap test (Ref.C4.9)
- Phù hợp cho đo độ cải thiện một hệ thống thay vì so sánh giữa hai hệ thống
khác nhau. Khi muốn dùng BLEU để so sánh 2 hệ thống, cần sử dụng các
phương pháp kiểm định giả thuyết như: pair bootstrap test hoặc similar
randomization test Ref.C11.8.2
- BLEU chưa xét đến độ fluency và discourse coherence (những thuộc tính
liên quan trật tự các thành phần trong bản dịch)
- BLEU chưa xét đến khả năng paraphrase của hệ thống dịch
24
NLP Notes – Kikai Tech
25
NLP Notes – Kikai Tech
- Precision:
𝑠ố 𝑡ℎà𝑛ℎ 𝑝ℎầ𝑛 đượ𝑐 𝑔á𝑛 𝑛ℎã𝑛 đú𝑛𝑔 𝑡𝑟𝑜𝑛𝑔 𝐶ℎ
𝑃=
𝑠ố 𝑡ℎà𝑛ℎ 𝑝ℎầ𝑛 𝑡𝑟𝑜𝑛𝑔𝐶ℎ
26
NLP Notes – Kikai Tech
27
NLP Notes – Kikai Tech
28
NLP Notes – Kikai Tech
- LAS: accuracy quan tâm đến nhãn và head word. Một relation cho một từ
là đúng nếu nó tìm được đúng head word cho từ đó và xác định đúng loại
relation.
- LS: accuracy không quan tâm đến headword. Một relation cho một từ là
đúng nếu nó được xác định đúng loại.
Ngoài ra còn có thể sử dụng các metric thường sử dụng cho bài toán phân loại
nhiều nhãn. (để xác định hiệu quả phân loại relation của parser)
13.7. Ghi chú
13.8. Tham khảo
Trích rút các mối quan hệ giữa các thực thể có trong văn bản.
Mối quan hệ cần trích rút có thể là những quan hệ chung chung (generic relation)
như is-a, part-of hay mang tính đặc thù cho một lĩnh vực (domain-specific
relation).
(*) Trích rút các thực thể và mối quan hệ giữa chúng sẽ giúp tạo nên một model
(nhận thức về thế giới), đây là cơ sở để xây dựng nên các biểu diễn ngữ nghĩa.
Các cơ sở dữ liệu tri thức lớn đều được tổ chức dưới dạng quan hệ giữa các thực
thể. (?)
16.2. Dữ liệu
(+) Có nhiều bộ dữ liệu về relation được tạo ra để huấn luyện mô hình / tổ chức
thông tin:
- Y tế có UMLS (Unified Medical Language System)
- Wikipedia: các mối quan hệ được thể hiện trong các infobox của mỗi bài
báo
- DBpedia là một ontology dẫn xuất từ Wikipedia chứa các RDF triple
(resource description framework có dạng entity-relation-entity)
- FreeBase chứa các mối quan hệ : người-quốc tịch
- WordNet : chứa relation thể hiện mối quan hệ phân cấp giữa các từ/concept
(is-a / hypernym)
- TACRED: chứa các relation triples về người / tổ chức … (có phần lớn các
mqh giữa entity được gán nhãn là no relation)
- SemEval 2010 task 8: mối quan hệ giữa các cụm danh từ (nominal)
Ref.C17.1
16.3. Trở ngại & Vấn đề còn tồn tại
16.4. Bài toán con / Thành phần
16.5. Kỹ thuật và phương pháp giải
Có 5 lớp thuật toán chính cho bài toán trích rút quan hệ:
- Handwritten Pattern (X)
- Supervised Learning (X)
31
NLP Notes – Kikai Tech
32
NLP Notes – Kikai Tech
- Phần lớn các temporal expression thể hiện thời điểm tương đối. Nó thường
neo với một thời điểm cụ thể khác (thời điểm viết văn bản). Thời điểm cụ
thể đó được gọi là temporal anchor.
33
NLP Notes – Kikai Tech
Các relative temporal expression có nhiều lúc sẽ gây mập mờ về thời điểm
chính xác.
→ Giải quyết bằng temporal athrimetic
17.4. Bài toán con / Thành phần
- Temporal Expression Extraction:
Đây là bài toán xác định span (điểm bắt đầu & kết thúc) gắn với temporal
expression.
- Temporal Normalization:
Đây là quá trình đưa temporal expression về dạng chuẩn.
Dạng chuẩn ở đây là:
o Với thời điểm: một ngày, một thời điểm trong ngày, 1 năm,…
o Với khoảng thời gian: điểm bắt đầu – điểm kết thúc, độ dài,..
17.5. Kỹ thuật và phương pháp giải
- Cho task Temporal Expression Extraction:
o Cách 1: Sử dụng tập luật: thực hiện theo kiểu cascade để có thể tìm
ra các chunks có kích thước khác nhau
o Cách 2: Coi đây là bài toán Sequence Labeling: có thể sử dụng IOB
scheme như cho NER
- Cho task Temporal Normalize:
o Cách giải quyết chính là sử dụng luật:
Sử dụng pattern kết hợp với compositional rule-to-rule approach
trong semantic analysis.
Ý tưởng của phương pháp này là: dạng chuẩn của một cụm từ sẽ được
suy diễn ra từ ý nghĩa của các thành phần tạo nên nó (để suy diễn sử
dụng temporal arithmetic). (X)
17.6. Cách đánh giá
- Cho task Temporal Expression Extraction:
o Sử dụng các metrics như: recall, precision, F-measure
34
NLP Notes – Kikai Tech
(*)Với những task như (NER hay Temporal…), những task mà mô hình
có thể sẽ nhớ những cụm từ đặc trưng, thì khi đánh giá cần để ý đến những
trường hợp False Positive.
17.7. Ghi chú
17.8. Tham khảo
35
NLP Notes – Kikai Tech
→ multi-class classifier
18.5. Kỹ thuật và phương pháp giải
18.6. Cách đánh giá
18.7. Ghi chú
18.8. Tham khảo
36
NLP Notes – Kikai Tech
- Event Extraction
- Temporal Expression Extraction
- Sắp xếp các event vào một timeline (đơn giản bằng xác định mối quan hệ
giữa 2 sự kiện)
→ Sử dụng multi-class classifier
19.4. Kỹ thuật và phương pháp giải
19.5. Cách đánh giá
19.6. Ghi chú
19.7. Tham khảo
20.2. Cơ sở
20.3. Kỹ thuật và phương pháp giải
37
NLP Notes – Kikai Tech
Tập dữ liệu huấn luyện: các văn bản với các span text được chỉ rõ là filler của
slot nào trong template.
a. Phương pháp dùng mô hình Machine Learning
Bao gồm hai task nhỏ sau:
- Template recognition: xác định xem một câu có chứa thông tin về template
không
→ Có thể coi như là một bài Sentence Classification
- Role-filler extraction: xác định slot trong template mà câu đó chứa thông
tin
→ Sử dụng một binary classifier riêng cho mỗi slot, chạy qua các cụm danh
từ.
(?) khi nào nên dùng một tập các binary classifier thay vì 1 multi-class
classifier?
b. Phương pháp dùng luật (finite-state template-filling system)
Dùng luật theo kiểu cascade.
Word Sense Disambiguation (WSD) là quá trình xác định chính xác ý nghĩa của
một từ trong một ngữ cảnh. (Vì một từ thường có nhiều nghĩa khác nhau).
- Đầu vào của WSD: một từ & ngữ cảnh mà nó xuất hiện & tập hợp các
sense có thể có của từ đó
- Đầu ra: một sense của từ đó (phù hợp với ngữ cảnh đã cho)
(?) Bài toán này có nhiều ứng dụng trong thực tế:
- Question answering: xác định intent của câu hỏi
- Machine Translation
- Giúp đánh giá các Natural Language Understanding model
21.2. Cơ sở
Cần tìm hiểu về những vấn đề sau:
- Word Senses (X) Ref.C18.1
- Mối quan hệ giữa các sense (X) Ref.C18.2
- WordNet (X) Ref.C18.3
21.3. Kỹ thuật và phương pháp giải
a. Task setup:
Do đầu vào của WSD cần có trước một tập sense cho từ cần xác định sense. Như
vậy cần xác định một nguồn để lấy tập các sense cho từng từ (sense tag
inventory).
Việc chọn nguồn phụ thuộc vào từng task mà WSD phục vụ, và độ chi tiết của
sense (fine/coarse-grain).
b. Dữ liệu huấn luyện:
Tập dữ liệu huấn luyện cho các mô hình supervised có dạng là tập các câu, trong
đó, các từ thuộc open-class được xác định rõ một sense (sense này lấy từ 1
thesaurus, thường là WordNet).
(+) Ref.C18.4.1
Ngoài ra có thể tận dụng các anchor link trong Wikipedia để làm dữ liệu huấn
luyện (với mỗi trang trong Wiki xác định một sense).
Cần quan tâm đến cách thức map các concept của Wikipedia với sense tag
inventory khác (vd WordNet).
39
NLP Notes – Kikai Tech
Ref.C18.5.4
c. Thuật toán supervised dùng để xác định sense:
- (_) Most Frequent Sense baseline: với mỗi từ, chọn sense mà được sử
dụng nhiều nhất trong tập dữ liệu huấn luyện (khá mạnh).
- Sử dụng heuristic dựa trên ý tưởng one sense per discourse (một từ xuất
hiện nhiều lần trong một câu / discourse thì sense của các lần xuất hiện đó
thường giống nhau) (không mạnh cái trên (?)).
- (>) Thuật toán state-of-the-art: 1-nearest-neighbor kết hợp với
contextual word embedding.
Đo độ tương đồng giữa target word embedding và sense embedding (lấy
từ dữ liệu huấn luyện) (Ref.C18.4.2).
Nếu trường hợp không xác định được sense embedding do từ đó không
xuất hiện trong dữ liệu huấn luyện, sử dụng Most Frequent Sense baseline.
Ngoài ra có thể sử dụng tổ chức kiểu phân cấp (sense ⊂ synset ⊂
hypernym-specific synset ⊂ supersense-specific synset) trong WordNet để
học sense embedding. Tìm theo kiểu bottom up: nếu thành phần ở cấp thấp
không xuất hiện ở trong tập huấn luyện thì tìm lên cấp cao hơn chứa nó.
Nếu cấp cao hơn có thành phần con xuất hiện trong tập huấn luyện thì lấy
sense embedding cần tính là embedding của cấp này luôn. Embedding của
một cấp được tính bằng trung bình các embedding của các thành phần con
xuất hiện trong tập huấn luyện.
Ref.C18.4.2
- Feature-based WSD: đơn giản và có thể đạt hiệu quả ~ contextual language
model.
Kết hợp đa dạng các loại feature kể cả embedding, sau đó cho vào SVM
(?) xác định tagset như thế nào?
d. Thuật toán knowledge-based (không cần dữ liệu gán nhãn):
Nguồn tri thức cho thuật toán đến từ thesaurus (thường là WordNet)
- (_) Lesk algorithm: chọn sense có độ tương đồng giữa định nghĩa của
sense (gloss) và context của target word là lớn nhất. Độ tương đồng ở đây
đơn giản tính bằng số từ giống nhau (Simplified Lesk) hoặc giữa các
embedding hoặc tfidf,…
c. Thuật toán unsupervised (Word Sense Induction):
40
NLP Notes – Kikai Tech
Sử dụng các thuật toán phân cụm (clustering) để xác định sense. Tập các điểm
chính là các context embedding của các lần xuất hiện của 1 từ. Mỗi cụm hình
thành sau khi phân cụm các điểm đó sẽ được coi là một sense. Có thể sử dụng
tâm mỗi cụm làm sense vector để phục vụ cho việc dự đoán.
21.4. Cách đánh giá
(*) Trong nhiều task, để đánh giá mô hình, cần phải thiết kế một hệ thống sử dụng
mô hình để giải quyết một vấn đề nào đó. Hiệu quả của model sẽ được xem là
hiệu quả của hệ thống và có thể được đánh giá dễ dàng hơn.
Để đánh giá hiệu quả của WSD có thể sử dụng hệ thống phân loại, đầu vào là hai
câu cùng chứa một target word, đầu ra là xác định target word trong 2 câu đó là
cùng 1 sense hay thuộc 2 sense khác nhau. Đây được gọi là word-in-context task
(WIC).
Với phương pháp sử dụng thuật toán unsupervised, thường người ta đánh giá theo
kiểu extrinsic. Còn đánh giá theo kiểu intrinsic thì có nhiều metric được định
nghĩa nhưng chưa có cái nào được làm metric tiêu chuẩn.
Ý tưởng: Đầu tiên, tìm các predicate và parse tree của câu bằng cách dùng
parser. Sau đó, sử dụng một feature-based classifer để xác định role đối với
predicate của các node trong cây.
Ở đây có thể thực hiện quá trình huấn luyện theo 3 giai đoạn:
o Pruning (loại bỏ những node không thể là argument, dùng heuristic)
o Identification (loại bỏ những node không thể là argument, dùng
binary classification)
o Classification (gán nhãn role)
o Sử dụng các thuật toán tìm kiếm tối ưu (Viterbi, Integer linear
programming, re-rank approach): tìm kiếm lời giải tối ưu toàn
cục thỏa mãn ràng buộc nào đó.
Feature template được sử dụng cho bài toán này: Ref.P382
(*) Với những bài toán cần tìm rồi xác định loại cho đối tượng thì có thể giải
quyết bằng cách kết hợp 2 mô hình: detection (binary classifier) và
classification (1-N classifier). Cách này, giúp tận dụng những đặc trưng tốt
cho từng task nhỏ và giúp việc tính toán hiệu quả hơn.
(*)Việc dự đoán nhãn cho các thành phần sử dụng classifer là độc lập với
nhau, trong khi giữa các nhãn của các thành phần có thể có mqh ràng buộc.
Do vậy, cần sử dụng thêm thuật toán để tìm kiếm kết quả thỏa mãn các ràng
buộc.
- Neural Algorithm:
Coi SRL là một bài toán Sequence Labeling sử dụng BIO scheme.
Do bài toán này, đầu ra có ràng buộc giữa các labels trong câu, nên có thể sử
dụng kiến trúc BiLSTM/BERT + CRF, sau đó sử dụng thuật toán Viterbi để
tìm kiếm lời giải.
22.4. Cách đánh giá
- Thường sử dụng các metric cho bài toán phân loại nhiều nhãn (Precision,
Recall, F-measure)
- (*) Nếu kết hợp nhiều model để giải quyết thì cần đánh giá từng cái riêng
rẽ
- Sử dụng các dataset tiêu chuẩn để đánh giá (vd Eng: CoNLL-2005 và
CoNLL-2012)
43
NLP Notes – Kikai Tech
44
NLP Notes – Kikai Tech
Dựa trên Kullback-Leibler Divergence giữa 𝑝(𝑐 ) và 𝑝(𝑐|𝑣) (Đo lượng thông
tin mà predicate 𝑣 cho biết về semantic class 𝑐 mà arguemnt của nó có thể nhận.
𝑃(𝑐|𝑣)
𝑃 (𝑐|𝑣)𝑙𝑜𝑔
𝑃 (𝑐 )
𝐴𝑅 (𝑣, 𝑐 ) =
𝑃 (𝑐′|𝑣 )
∑𝑐′ 𝑃 (𝑐′|𝑣 )𝑙𝑜𝑔
𝑃 (𝑐′)
b. Selectional Preference
Đo xác suất xuất hiện của một argument khi biết predicate và role của argument
𝑃 (𝑛|𝑣, 𝑟). Giá trị xác suất này được tính thông qua việc thống kê trong tập dữ
liệu huấn luyện.
𝐶 (𝑛, 𝑣, 𝑟)
𝑃(𝑛|𝑣, 𝑟) = { 𝐶 (𝑣, 𝑟) if 𝐶 (𝑛, 𝑣, 𝑟) > 0
0 otherwise
Hoặc có thể sử dụng inverse probability 𝑃(𝑣|𝑛, 𝑟).
(…) Vẫn còn nhiều cách khác
(?) Tốt hơn khi áp dụng để trích rút preference cho subject argument so với cho
object argument.
23.4. Cách đánh giá
(*) Khi thiết kế task để test hiệu quả của model thì cần thiết kế sao cho nó càng
khó càng tốt
Tạo dữ liệu test như sau:
- Trích rút hết các predicate và argument của nó từ raw text
- Với mỗi cặp verb-argument, tìm một từ khác là nearest neighbor của
argument (để tăng độ khó)
Nhiệm vụ của mô hình là chọn argument chính xác trong hai phương án
(argument và nearest neighbor của nó)
Cách thứ hai là sử dụng con người để tạo các verb-argument pair và sau đó họ sẽ
cho điểm về độ phù hợp của từng cặp (sử dụng phương pháp magnitude
estimation (X) ). Kết quả của model sau đó sẽ được đánh giá dựa trên tương quan
với điểm cho bởi người.
45
NLP Notes – Kikai Tech
Để dự đoán attitude, emotion, mood thì thông tin về sắc thái của từ là một đặc
trưng giá trị. Để có được thông tin đó, thường sẽ phải xây dựng một affective
lexicon và tham khảo thông tin từ lexicon đó.
Như vậy, có hai task cần giải quyết ở đây:
- Xây dựng affective lexicon
- Sử dụng affective lexicon để giải quyết các bài toán cụ thể ntn
Tập các bài toán liên quan đến trích rút các affect states được gọi chung là Affect
Recognition. Mặc dù chúng sử dụng thông tin khác nhau, nhưng thuật toán giải
quyết thì tương tự nhau do có thể coi chúng cùng là bài toán Text Classification.
Ngoài thực hiện affect state cho toàn bộ một văn bản, trong nhiều ứng dụng, việc
cân nhắc affect state của entity còn quan trọng hơn (Entity-Centric Affect).
24.2. Cơ sở
Định nghĩa về Emotion (X) Ref.C20.1
Tìm hiểu về các Affect lexicon (X) Ref.C20.2
Tìm hiểu cụ thể về Persionality (X) Ref.C20.7
Tìm hiểu về Interpersonal Stance (X) Ref.C20.7
Tìm hiểu về các lexicon phổ biến (X)
Tìm hiểu Connotation Frame: kết hợp affect lexicon và frame semantic lexicon
(dựa trên sentiment về các argument (noun) thường biểu hiện qua sắc thái của
predicate) (X) Ref.C20.10
24.3. Kỹ thuật và phương pháp giải
a. Xây dựng affective lexicon
- Gán nhãn thủ công:
Đây là cách vẫn còn được sử dụng và thường áp dụng những kỹ thuật
crowdsourcing (tận dụng một lượng lớn người tham gia gán nhãn nhưng vẫn
đảm bảo độ chính xác) (X) Ref.C20.3
- Sử dụng thuật toán semi-supervised induction:
47
NLP Notes – Kikai Tech
Ý tưởng: định nghĩa 2 cực sắc thái (tích cực – tiêu cực) bằng cách xác định
một tập từ ban đầu (seed word) cho mỗi cực; sau đó, gán nhãn cho một từ dựa
vào độ tương đồng của nó với mỗi tập.
Có hai thuật toán chính cho cách này:
o Axis-based algorithm (X) Ref.C20.4.1
o Graph-based algorithm (X) Ref.C20.4.2
o Các cách khác (sử dụng cách đo độ tương đồng khác nhau) (X)
Ref.C20.4.3
- Sử dụng thuật toán supervised learning:
Có thể tận dụng một số nguồn dữ liệu sẵn có để làm dữ liệu huấn luyện (như
review và rate ở các trang mua sắm, xem phim,…)
Ý tưởng: những positive words thường xuất hiện ở những bình luận rate cao,
còn negative words thì ngược lại.
Có thể sử dụng Pottsdiagram để thể hiện sentiment của một từ. (hoành: rate
categories; tung: PottsScore).
𝑐𝑜𝑢𝑛𝑡 (𝑤, 𝑐 )
𝑃 (𝑤|𝑐 ) =
∑𝑤∈𝑐 𝑐𝑜𝑢𝑛𝑡 (𝑤, 𝑐 )
𝑃 (𝑤|𝑐 )
𝑃𝑜𝑡𝑡𝑠𝑆𝑐𝑜𝑟𝑒(𝑤, 𝑐 ) =
∑𝑐′ 𝑃 (𝑤|𝑐′)
(Đặc điểm của diagram sẽ cho biết thông tin về sentiment của từ)
Ref.C20.5
48
NLP Notes – Kikai Tech
Ngoài ra, có thể tận dụng việc giải bài toán Sentiment Classification bằng
thuật toán Logistic Regression với feature là tập tất cả từ/cụm từ trong văn
bản để có thêm thông tin xây dựng lexicon. (phân tích weight của mô hình và
thực hiện prunning nếu cần)
b. Sử dụng lexicon vào bài toán Sentiment Recognition
Sentiment Recognition là dự đoán sắc thái của một đoạn văn bản là positive
/negative/ neutral.
Thông tin từ lexicon có thể kết hợp được vào cả hệ thống rule-based và hệ thống
supervised.
- Hệ thống rule-based: đếm số lượng các từ neg (𝑓 −) và các từ pos (𝑓 +) có
trong văn bản. Và sử dụng công thức sau để quyết định nhãn:
𝑓+
+ if − > 𝜆
𝑓
𝑠𝑒𝑛𝑡𝑖𝑚𝑒𝑛𝑡 = 𝑓−
− if + > 𝜆
𝑓
{ 0 otherwise
(*) Chú ý ý nghĩa công thức (muốn nhãn là neg và pos thì cần phải có sự
chênh lệch rõ rệt giữa 𝑓 − và 𝑓 +)
- Hệ thống supervised: nhân trọng số / normalize với 𝑓 ở trên để tạo đặc
trưng (?)
c. Giải quyết các bài Affect Recognition nói chung
Có thể coi Affect Recognition là bài toán Text Classification bình thường và áp
dụng các thuật toán phân loại như (SVM, Logistic Regression, Neural Net).
Do các model giải quyết bài toán này thường được huấn luyện trên tập dữ liệu
lớn, nếu sử dụng feature template để trích rút đặc trưng có thể sinh ra một lượng
lớn đặc trưng cho mô hình. Vì thế cần phải áp dụng một số kỹ thuật để điều chỉnh.
(*) Chú ý một số thay đổi cho bài toán phân loại khi dữ liệu huấn luyện lớn.
Một số kỹ thuật bao gồm:
- Lọc các words/phrases feature: Loại bỏ các feature là từ được sử dụng quá
ít (bằng cách: chỉ giữ lại các unigram xuất hiện trong ≥ 1% văn bản, các
2-gram, 3-gram chỉ được giữ lại nếu có 𝑝𝑚𝑖 < 2 ∗ 𝑙𝑒𝑛𝑔𝑡ℎ)
49
NLP Notes – Kikai Tech
𝑝(𝑛 − 𝑔𝑟𝑎𝑚)
𝑝𝑚𝑖(𝑛 − 𝑔𝑟𝑎𝑚) = 𝑙𝑜𝑔
∏𝑤∈𝑛−𝑔𝑟𝑎𝑚 𝑝(𝑤 )
(?) pmi luôn nhỏ hơn 2*length mà nhỉ?
d. Entity-Centric Affect
Yêu cầu của bài toán là xác định affect score của entity trong văn bản.
Cách thường dùng cho bài này là sử dụng affect lexicon kết hợp với contextual
embedding.
Dùng contextual embedding để tính representation cho entity, và huấn luyện mô
hình regression với dữ liệu huấn luyện là affect lexicon.
24.4. Cách đánh giá
24.5. Ghi chú
24.6. Tham khảo
50
NLP Notes – Kikai Tech
Coreference Resolution là một thành phần quan trọng trong các hệ thống NLU
(dialogue, question answering, machine translation,…).
Bài toán này bao gồm 3 task nhỏ:
- Xác định mentions
- Linking các mentions để tạo coreference chains cho mỗi discourse entity
- (không bắt buộc) map discourse entity với entity ở thế giới thực(entity
linking): thường là map với một ontology như Wikipedia.
Bài toán khác thuộc CR là Event Coreference (phức tạp hơn so với Entity
Coreference)
25.2. Cơ sở ngôn ngữ học
Một số background liên quan đến chỉ từ (reference) (X) Ref.C21.1
25.3. Khó khăn và vấn đề còn tồn tại
- Các mentions của nhiều đối tượng có thể bị lồng vào nhau. Vd: her dress
- Một số trường hợp hóc búa gây khó khăn cho các CR models. (Winograd
Schema problems). Ví dụ:
“Thằng bé đang chơi trò đó. Đúng là nó dễ bị/gây nghiện thật!”
(X) Ref.P417 & Ref.P435
→ Cần tìm cách truyền tri thức vào model
- Mô hình có cần cân nhắc tới các entity chỉ được đề cập một lần (singleton)
không?
- Cần cân nhắc vấn đề bias của mô hình (giới tính). Tất cả các kiến trúc sử
dụng cho CR đều bị bias đáng kể
(*) Chú ý một số phương pháp giúp debias mô hình
→ Sử dụng các kỹ thuật debias sau:
o kết hợp hai bộ dữ liệu (bộ gốc và bộ gender-swapped)
o sử dụng debiased embedding
o data augmentation
Ref.C21.9
51
NLP Notes – Kikai Tech
(*) :Nếu muốn tăng recall thì có thể thực hiện cách đơn giản nhất, sau đó
lọc chọn để tăng precision.
Để chọn lọc ra các mentions có thể sử dụng:
o Regex, rule
o Sử dụng feature-based classifier (khó chọn threshold để detect)
o Kết hợp thêm các nguồn tri thức để thêm căn cứ lọc (vd: tìm các NP
xuất hiện nhiều trong dữ liệu huấn luyện nhưng không được gắn là
mentions; sử dụng Google N-gram để loại bỏ các reference xuất
hiện trong thành ngữ (fixed phrases)
(*) Nên nghĩ cách tận dụng các nguồn tri thức có sẵn để huấn luyện
mô hình.
52
NLP Notes – Kikai Tech
d. Linking cách 1: mention-pair architecture (Cách đơn giản và ảnh hưởng nhiều
nhất)
Ý tưởng: Link mention với một mention trước đó được coi antecedent của nó.
Đầu vào: một cặp mentions gồm một mention gốc (antecedent) và một chỉ từ trỏ
đến nó (anaphor).
Đầu ra: True/False (cặp đó có cùng chỉ đến cùng một entity không?)
Mô hình:
o Featured-based: một số feature hữu dụng (X) Ref.P430
(*) học một số tip trích rút feature được chỉ ra ở Ref.P430, cụ thể:
▪ Một số loại feature: lexical feature, weight feature
▪ Một số kỹ thuật: back-off (vd: với đặc trưng là word form,
nếu từ hiếm thì có thể back off về POS của nó); sử dụng
feature conjunction (tạo feature là phép toán trên các feature
khác); sử dụng decision tree/ random forest để học feature
conjunction
53
NLP Notes – Kikai Tech
Xử lý trường hợp mà mention hiện tại là non-anaphoric (không phải chỉ từ) hoặc
discouse-new (mention đề cập tới entity lần đầu tiên).
Thực hiện xử lý 2 task: anaphoricity detection & linking cùng một lúc, bằng cách
thêm vào một dummy mention ∋ vào tập nhãn cùng với các mention (1 -> i-1).
Nếu input là mention i và output là dummy mention, thì có nghĩa là mention i là
non-anaphoric hoặc discourse-new.
Mô hình chủ yếu sử dụng là dùng mạng neural (neural mention-ranking
algorithm) và huấn luyện theo kiểu end-to-end (thực hiện cả mention detection
và linking cùng một lúc):
- Input của mô hình khi đó sẽ là cặp span i và j; đầu ra là score(i, j): khả năng
i, j chỉ về cùng một entity
- Chi tiết mô hình Ref.C21.6 (X)
Ở cách tiếp cận này, một coreference chain có một tập antecedents, và mỗi
anaphoric trong chuỗi đó có nhiều cách chọn từ để làm antecedent. Như vậy khi
huấn luyện, lấy antecedent nào làm nhãn chính xác cho mention? (X) Ref.P429
f. Linking cách 3: Entity-based Models
Ý tưởng: linh mỗi mention với một cụm mentions trước đó (cùng ám chỉ tới một
entity)
Input: tập các cụm mentions
Output: phân phối xác suất trên các cụm
Có hai cách tiếp cận chính:
- Featured-based: trích rút đặc trưng của các cụm, có thể tận dụng mention-
pair classifier để tạo feature. (tính score của các cặp mention trong cụm,
sau đó sử dụng hàm aggregate để tạo weighted feature)
- Neural model: học representation của cụm, hoặc học representation của
từng mention pair, sau đó thực hiện pooling để tạo representation cho cụm.
(*) chú ý kỹ thuật aggregate/pooling features cho mô hình
25.5. Cách đánh giá
Ref.C21.7
54
NLP Notes – Kikai Tech
Metric sử dụng để đánh giá là CONLL F1 score (Bao gồm: MUC, B3, CEAFe).
Ngoài ra còn có BLANC, LEA metric.
Hiện tại đang có hypothesis chains tạo bởi model (H) và reference chain từ tập
test (R).
MUC F-measure: dựa vào số lượng cặp mention chung (số link chính xác) giữa
H và R để tính F-measure.
B3: với mỗi mention i trong Reference, tính Precision và Recall dựa theo số lượng
mention chung giữa hai chain (chain chứa i trong R và chain chứa i trong H). Sau
đó thực hiện tính Precision và Recall cho toàn task (tính bằng weight sum
precision và recall của các mention).
Trong đó, giá trị của 𝑤𝑖 tự tìm thuật toán để xác định (X)
Ngoài ra, với một số task đặc thù, cần tạo ra các metric chuyên biệt. (vd: metric
quan tâm đến lượng thông tin mà các chain mang lại, hay metric như NEC F1 xét
đến khả năng tìm ra variant referent của model).(?) Ref.P435
25.6. Ghi chú
25.7. Tham khảo
55
NLP Notes – Kikai Tech
Giữa các câu trong discourse thường có một mối quan hệ về nghĩa nào đó. Mối
quan hệ đó gọi là coherence relation.
Local coherence của một đoạn văn bản có thể được xem xét qua ba khía cạnh:
- Một là dựa vào coherence relation giữa các thành phần. Discourse
Parsing là bài toán khai thác khía cạnh này để xác định coherence của văn
bản (xác định coherence relation giữa các câu). Có hai kiểu parsing:
o RST Parsing (Rhetorical Structure Theory): Xác định coherence
relation giữa tất cả các span trong văn bản (tạo ra full parse tree, đơn
vị là một mệnh đề)
o PDTB Parsing (Penn Discourse TreeBank): xác định coherence
relation giữa các cặp câu liên tiếp trong văn bản dựa vào từ nối
chúng (discourse connectives).
- Hai là dựa vào các entity quan trọng trong model mà discourse xây dựng.
Ở đây có hai model xác định coherence theo kiểu này:
o Centering Theory
o Entity grid model
- Ba là dựa vào semantic field mà các câu dùng cùng nói về: các câu trong
cùng một discourse thường nói cùng về một topic
Hiện tại, đánh giá global coherence của discourse hiện tại thường tập trung vào
những văn bản có cấu trúc discourse rõ ràng, đơn giản. Ví dụ, Argumentative
Essay, Scientific Paper,…
26.2. Cơ sở
Tìm hiểu về coreference relation: 2 cách nhìn về cách tổ chức discourse và corpus
(theo kiểu RST và theo kiểu PDTB) (X) Ref.C22.1
a. Nói qua về RST:
Theo RST, trong một discourse, mối quan hệ giữa 2 spans văn bản thường là mối
quan hệ nucleus-satellite. Nucleus là thành phần trung tâm, nếu đứng một mình
nó vẫn diễn đạt một ý nghĩa hoàn chỉnh. Satellite thì luôn phải đi kèm với một
nucleus, ý nghĩa của nó chỉ hoàn chỉnh khi kết hợp với nucleus.
56
NLP Notes – Kikai Tech
Hình trên là một full parse tree thể hiện cấu trúc discourse theo cách nhìn của
RST. Trong đó, các lá (thành phần nhỏ nhất) có thể là một câu/mệnh đề/cụm từ,
gọi chung chúng là Elementary Discourse Unit (EDU).
Tìm hiểu về 2 model liên quan đến entity-based coherence (Centering Theory và
Entity Grid). (X)
26.3. Kỹ thuật và phương pháp giải
a. RST parsing
Input: Chuỗi các câu
Output: Full parse tree (unit: EDU)
RST parsing thường được thực hiện qua hai giai đoạn: EDU segmentation và
parsing.
- EDU segmentation: giải quyết như một bài toán Sequence Labeling. (X)
Ref.C22.2.1
Cụ thể: BERT -> BiLSTM
- Parsing:
o Thực hiện thuật toán shift-reduce parsing: tại mỗi bước cần phải
căn cứ vào trạng thái hiện tại để xác định hành động tiếp theo (shift
hay reduce)
57
NLP Notes – Kikai Tech
o Hành động tiếp theo được xác định bởi mô hình phân loại
(hierarchical BiLSTM để học embedding cho EDU, dùng nó để tạo
state representation, rồi sử dụng MLP để phân loại).
o … (X) Ref.C22.2.2
(*) Học embedding cho một tập gồm nhiều thành phần nhỏ, thì học
embedding cho từng thành phần nhỏ rồi thực hiện pooling chúng (nếu
không cần quan tâm đến thứ tự), hoặc sử dụng hierachical BiLSTM
(nếu cần bắt trọn context),… (X)
(*) Chú ý cách thiết kế mô hình
b. PDTB parsing
PDTB parsing hay còn gọi là shallow discourse parsing, do nó chỉ cần xác định
coreference relation giữa các cặp spans dựa vào discourse connective.
PDTB parsing bao gồm 4 tasks nhỏ:
- Tìm discourse connective (phân biệt cái này với liên từ dùng để kết hợp
các cụm danh từ)
- Tìm 2 spans tương ứng cho mỗi connective: coi như bài toán Sequence
Labeling (BERT->BiLSTM)
- Gán nhãn relation cho 2 spans
- Gán nhãn cho tất cả cặp câu liên tiếp
(3 tasks đầu là dựa vào các connective, còn task cuối là tìm các relation không
được thể hiện qua connective)
Ref.C22.2.3
c. Centering Theory
Ý tưởng: Tại một điểm trong discourse, thì luôn có 1 entity là quan trọng (salient
entity). Một discourse mà ở đó, các câu liên tiếp duy trì salient entity giống nhau,
được coi là rành mạch (coherent) hơn discourse ở trường hợp ngược lại.
Mỗi discourse unit thứ n: 𝑈𝑛 sẽ đặc trưng bởi hai thành phần nhau:
- Salient entity hiện tại 𝐶𝑏 (𝑈𝑛 ) hay còn gọi là backward-looking center
- Tập các salient entity mà các câu sau có thể nói đến 𝐶𝑓 (𝑈𝑛 ) hay còn gọi là
forward-looking center. Các entity trong đây sẽ được cho điểm, cái có
điểm cao nhất được gọi là preferred center 𝐶𝑝 .
58
NLP Notes – Kikai Tech
Dựa vào mối quan hệ giữa các 𝐶𝑏 , 𝐶𝑝 của cặp câu liên tiếp để xác định kiểu
discouse relation giữa 2 câu:
Và căn cứ vào luật sau để đánh giá độ rành mạch của văn bản:
Luật 1: (?)
Vd: “Cái váy này đẹp hơn cái váy kia nên tôi sẽ lấy nó. Dù sao cái váy/tôi/nó ….
(luật có vẻ đúng)
Đọc thêm về cái này: (X) Ref.C22.3.1
d. Entity grid model
Ý tưởng: sử dụng thuật toán ML để học đặc điểm của pattern đề cập entity trong
discourse rành mạch.
Trong đó:
- s: entity được đề cập ở chủ ngữ của câu
59
NLP Notes – Kikai Tech
61
NLP Notes – Kikai Tech
Có hai kiểu thiết kế chính cho hệ thống QA để trả lời factoid question, đó là:
Information-retrieval (IR) based QA và Knowledge-based QA.
- Hoạt động của hệ thống IR-based QA chủ yếu dựa vào thành phần xử lý
nhiệm vụ thu thập thông tin, nên cơ sở của hệ thống là các công nghệ giải
quyết bài toán Information Retrieval và Reading Comprehension.
- Tương tự, hệ thống Knowledge-based QA có cơ sở dựa vào các công nghệ
giải quyết bài toán Entity Linking (trong việc xây dựng cơ sở dữ liệu)
Ngoài ra còn có một số kiểu thiết kế khác như: Language Model QA, hybrid
QA.
27.2. Bài toán con/Thành phần
- Information Retrievel
- Reading Comprehension
- Entity Linking
27.3. Kỹ thuật và phương pháp giải
a. IR-based Factoid QA
Thiết kế theo kiểu này, hệ thống cần thực hiện hai bước sau: retrieve (tìm tập các
văn bản liên quan đến query, sử dụng các IR model) và read (sử dụng Reading
Comprehension algorithm để chọn các span tạo thành câu trả lời).
b. Knowledge-based QA
Ý tưởng: trả lời câu hỏi bằng cách đưa câu hỏi về một biểu diễn truy vẫn cơ sở
dữ liệu.
62
NLP Notes – Kikai Tech
Có hai phương pháp được dùng cho kiểu hệ thống này là graph-based QA, cơ
sở tri thức được lưu dưới dạng graph, và QA by semantic parsing, phân tích ngữ
nghĩa để tìm câu trả lời.
- Graph-based QA:
Ý tưởng: Đưa câu hỏi về dạng RDF triple bị khuyết argument.
Vd: Ai phát minh bóng đèn? -> (subject: ?; predicate: phát minh; object: bóng
đèn)
Trong đó, predicate cần tương ứng với relation trong knowledge base. Sau khi
thực hiện entity linking, nhiệm vụ cần làm chỉ còn relation detection. Task này
giải quyết bằng BERT
(+) Một số dataset huấn luyện Ref.P482
(X) Tìm hiểu cách thiết kế BERT cho task này Ref.C23.4.1
Kết quả của entity linking và relation detection có thể cho ra tập j các entity tốt
nhất và tập k relation tốt nhất.
Dựa vào đó để tìm ra tập các RDF triples trong knowledge base.
Cuối cùng để chọn RDF triple phù hợp nhất, hoặc là tìm cách rank các triple,
hoặc là huấn luyện mô hình cho điểm.
- QA by Semantic Parsing:
Ý tưởng: Đưa câu hỏi về dạng một chương trình để tìm ra câu trả lời (có thể ở
dạng predicate calculus, hoặc ngôn ngữ truy vấn SQL hay SPARQL,…)
Các thức là sử dụng các thuật toán Semantic Parsing (supervised dùng BERT
hoặc weakly supervised)
(*) weakly supervised thì dữ liệu huấn luyện là cặp question-answer, còn biểu
diễn truy vấn ở dạng latent variable (kiến trúc là như thế nào (?) )
c. Language Model for QA
(*) Tham khảo ý tưởng huấn luyện
Ban đầu huấn luyện mô hình pretrained LM theo kiểu điền thêm vào chỗ trống.
Sau đó fine-tunning với các cặp question-answer.
d. Hybrid QA (rule & featured-based): Watson DeepQA system
63
NLP Notes – Kikai Tech
64
NLP Notes – Kikai Tech
Trong đó, 𝑟𝑎𝑛𝑘𝑖 là xếp hạng cao nhất trong ranked list mà câu trả lời đúng cho
câu hỏi i nhận được. Nếu trong danh sách câu trả lời không có đáp án đúng thì
𝑟𝑎𝑛𝑘 = 0.
27.5. Ghi chú
27.6. Tham khảo
65
NLP Notes – Kikai Tech
Cách giải quyết thường áp dụng cho hệ thống IR là dựa vào vector space model
để tìm kiếm văn bản (chọn doc dựa vào độ tương đồng giữa represenatation
vector của doc và query).
28.2. Bài toán con/Thành phần
28.3. Kỹ thuật và phương pháp giải
a. Tạo vector cho document và query
Có các cách sau:
- Sử dụng các phương pháp tạo term weight (mỗi doc là một vector có thành
phần là trọng số của mỗi từ trong vocab đối với doc đó). Có hai kỹ thuật
thường hay sử dụng: tf-idf weighting và BM25 (tốt hơn).
(X) Ref.C23.1.1 & Ref.C23.1.2
- Sử dụng dense embedding, dùng BERT tạo representation cho query và
doc.
(*) Một số insights về BERT:
o (X) Cách thức fine-tuning encoder để phù hợp với IR
o Cần tạo representation từ BERT một cách linh hoạt, vì có rất nhiều
cách khác nhau
o (X) Cách thức xử lý input có độ dài vượt quá giới hạn
o (X) Thuật toán nào là hiệu quả khi cân nhắc tới độ phức tạp tính toán
trên dense embedding (approximate nearest neighbor vector
search algo – Faiss)
Ref.C23.1.5
b. Kỹ thuật xử lý stopwords
(*) Chú ý trong IR, việc loại bỏ stopword bằng sử dụng stop list thường không
cần thiết
66
NLP Notes – Kikai Tech
Metric trung gian là tính precision (Pr) và recall (Re) tại từng rank. Công thức
tính precision và recall tại rank thứ k là như sau:
𝑛𝑢𝑚𝑏𝑒𝑟 𝑜𝑓 𝑟𝑒𝑙𝑒𝑣𝑒𝑛𝑡 𝑑𝑜𝑐𝑠 𝑠𝑒𝑒𝑛 𝑓𝑟𝑜𝑚 1𝑠𝑡 → 𝑘 𝑡ℎ 𝑟𝑎𝑛𝑘
𝑅𝑒𝑐𝑎𝑙𝑙𝑘 =
𝑡𝑜𝑡𝑎𝑙 𝑛𝑢𝑚𝑏𝑒𝑟 𝑜𝑓 𝑟𝑒𝑙𝑒𝑣𝑎𝑛𝑡 𝑑𝑜𝑐𝑠
67
NLP Notes – Kikai Tech
Nhận xét:
- Recall luôn không giảm khi xét rank từ trên xuống (1 trở đi)
- Recall tăng ~ văn bản ở rank đó là Relevant; Recall không đổi ~ văn bản
ở rank đó là Not Relevant.
- Precision cho biết mức độ quan trọng của các rank. Precision càng cao chỗ
recall thấp thì càng tốt; còn precision thấp ở chỗ recall cao thì cũng ko ảnh
hưởng lắm (?) Tác dụng của nó
Để đánh giá hiệu quả hệ thống khi thử nghiệm nhiều query, thì họ thực hiện như
sau:
- Tính recall, precision theo rank cho từng query
- Tại các mức recall cố định (0, 0.1, 0.2, .. 1) thực hiện tính AvgPrecision
trên các query, sau đó tính interpolated Precision cho từng mức recall 𝑟
như sau:
𝐼𝑛𝑡𝑃𝑟𝑒𝑐𝑖𝑠𝑖𝑜𝑛 (𝑟) = max 𝐴𝑣𝑔𝑃𝑟𝑒𝑐𝑖𝑠𝑖𝑜𝑛(𝑖)
𝑖≥𝑟
68
NLP Notes – Kikai Tech
(*) Khi muốn đồ thị được smooth, thì tính theo kiểu interpolate
(?) Tính theo kiểu interpolate như thế này cho phép mô hình được quyền
cân nhắc những doc ở rank thấp hơn.
Ref.P471: “It is designed to give systems the benefit of the doubt by
assigning the maximum precision value achieved at higher levels of recall
from the one being measured.”
b. MAP
Thực hện tính Average Precision (AP) cho mỗi query (AP này khác với
AvgPrecision ở trên)
1
𝐴𝑃 = ∑ 𝑃𝑟𝑒𝑐𝑖𝑠𝑖𝑜𝑛𝑟 (𝑑)
|𝑅𝑟 |
𝑑∈𝑅𝑟
69
NLP Notes – Kikai Tech
Là quá trình tìm ra span trong một văn bản khả năng cao là câu trả lời của một
câu hỏi nhất.
(Đang xét dạng cơ bản)
Input: Một factoid question 𝑞 và một đoạn văn 𝑝
Output: Câu trả lời 𝑎 (nếu có)
Dạng cơ bản này thường được áp dụng vào hệ thống IR-based QA theo kiểu
(retrieve and read).
29.2. Khó khăn
Thiết kế hệ thống multilingual reading comprehension
29.3. Kỹ thuật và phương pháp giải
(+) Một số tập dữ liệu huấn luyện (X) Ref.C23.2.1
a. Sử dụng thuật toán Span Labeling
Ý tưởng: Tính 𝑝(𝑎 |𝑝, 𝑞) (a là câu trả của q lời nằm trong span (𝑎𝑠 , 𝑎𝑒 ) ở trong
đoạn văn 𝑝) bằng công thức sau:
𝑝 (𝑎|𝑝, 𝑞) = 𝑝𝑠𝑡𝑎𝑟𝑡 (𝑎𝑠 |𝑝, 𝑞). 𝑝𝑒𝑛𝑑 (𝑎𝑒 |𝑝, 𝑞)
Cho chuỗi có cấu trúc như sau: [CLS]-q-[SEP]-p vào trong BERT
Thêm hai vector mới có thể học được qua quá trình fine-tuning: span-start
embedding 𝑆 và span-end embedding 𝐸.
Với mỗi output token 𝑝′ tương ứng với token trong 𝑝 sẽ được đưa đi qua một
Linear Layer, huấn luyện cùng với 𝑆 và 𝐸 để xác định xác suất để nó làm span-
start và span-end.
exp (𝑆. 𝑝𝑖′ )
𝑃𝑠𝑡𝑎𝑟𝑡𝑖 =
∑𝑗 exp(𝑆. 𝑝𝑗′ )
exp(𝐸. 𝑝𝑖′ )
𝑃𝑒𝑛𝑑𝑖 =
∑𝑗 exp(𝐸. 𝑝𝑗′ )
70
NLP Notes – Kikai Tech
Token [CLS] trong chuỗi đầu vào giúp huấn luyện mô hình học được trường hợp
trong 𝑝 không có câu trả lời (khi đó span-end và span-start đều trỏ vào [CLS]).
Câu trả lời có thể là [CLS] không tồn tại câu trả lời trong 𝑝; hoặc, span có score
cao nhất với score tính bởi công thức sau:
𝑔(𝑠, 𝑒) = 𝑠𝑡𝑎𝑟𝑡𝑖 + log 𝑃𝑒𝑛𝑑𝑖 𝑠𝑡𝑎𝑟𝑡𝐶𝐿𝑆 + log 𝑃𝑒𝑛𝑑𝐶𝐿𝑆
(?) Công thức có vấn đề? Ref.P477
b. Kỹ thuật xử lý khi kích thước đoạn văn bản quá dài
(*) xử lý khi input vào BERT bị vượt quá giới hạn
Vì BERT chỉ chấp nhận input có kích thước tối đa là 512 token, nên nếu cần xử
lý chuỗi input dài hơn thì phải sử dụng sliding window (nên sử dụng overlapping
window)
Cho input của mô hình có dạng:
[CLS]-q-[SEP]-window
29.4. Cách đánh giá
Metric được sử dụng có thể là:
- Exact match
- F1 score: coi predicted answer và gold answer như là BOW, và tính F1 dựa
vào độ trùng lặp.
(+) một số test sets phổ biến
Tận dụng test set từ bài đọc hiểu trắc nghiệm cho học sinh cấp 1.
29.5. Ghi chú
29.6. Tham khảo
71
NLP Notes – Kikai Tech
Entity Linking là thành phần cốt lõi trong mọi hệ thống Knowledge-based QA.
Thường, ontology dùng cho linking ở hệ thống QA là Wikipedia; mỗi entity ở
thế giới thật sẽ được đại diện bởi 1 page trong Wiki. Entity linking, lúc này, còn
được gọi là wikification.
30.2. Khó khăn
30.3. Kỹ thuật và phương pháp giải
Entity linking có thể được giải quyết bởi các phương pháp sau:
- Linking dựa vào anchor dictionary và thông tin từ Wikipedia graph
structure (X) Ref.C23.3.1
Ý tưởng: sử dụng anchor dictionary có key: 1 page trong Wikipedia và value
là các anchor text (các cụm từ chứa siêu liên kết ở trang khác trỏ đến trang
key).
Tử anchor dictionary có thể xác định khả năng một cụm từ có thể là một
mention (từ ý tưởng: nếu là mention thì khả năng cao nó sẽ chứa siêu liên kết):
𝑙𝑖𝑛𝑘 (𝑎)
𝑙𝑖𝑛𝑘𝑝𝑟𝑜𝑏 (𝑎) =
𝑓𝑟𝑒𝑞 (𝑎)
Dựa công thức này để tìm ra tất cả mention xuất hiện trong query.
Để xác định xác suất để mention trong a ám chỉ tới entity X, những cái cần
cân nhắc tới bao gồm:
o Tập các anchor xung quanh khác (tận dụng topic để giải quyết mập
mờ)
o Các entity liên quan đến các anchor xung quanh.
(X) Tìm hiểu thêm Ref.C23.3.1
- Neural Graph-based Linking (X) Ref.C23.3.2
(X) Tìm hiểu cách thiết kế kiến trúc
30.4. Cách đánh giá
30.5. Ghi chú
73
NLP Notes – Kikai Tech
32. ChatBot
32.1. Mô tả
Chatbot là loại dialogue system đơn giản nhất. Ở đó, hệ thống cần phải biết cách
mở rộng cuộc hội thoại (biết cách tán gẫu với người dùng).
Có hai loại kiến trúc được dùng để xây dựng chatbot:
- Rule-based system: dùng luật để tạo lời nói. ví dụ điển hình là ELIZA và
PARRY
- Corpus-based system: tạo lời nói bằng cách khai thác bộ dữ liệu hội thoại
32.2. Kỹ thuật và phương pháp giải
a. Rule-based chatbots:
Ý tưởng: Thiết kế chatbot trên cơ sở áp dụng các kiến thức về tâm lý học liên
quan đến hội thoại.
Ở đây xét kiến trúc của một chatbot nổi tiếng: ELIZA
ELIZA được thiết kế theo một kiểu người rất thích hỏi han, biết hỏi những cái
người khác muốn được hỏi.
ELIZA được xây dựng trên một tập luật (theo kiểu: người dùng nói có cấu trúc
như thế này -> nên hỏi như thế này)
Để xác định xem cần áp dụng rule nào:
- Mỗi rule/pattern trong ELIZA được liên kết với một keyword, khi đó, một
câu nói của user có tạo câu trả lời từ nhiều rule
- Để chọn rule, thì mỗi keyword phải được xếp hạng, và sẽ chọn rule của
keyword có hạng cao hơn
- Trường hợp trong câu nói của user không có keyword nào, ELIZA xử lý
nó bẳng memory tricks (lưu những cái liên quan đến user đã đề cập trước
đó, đến khi cần thì yêu cầu user nói nhiều hơn về cái đó – chuyển hướng
cuộc nói chuyện)
Có thể cải tiến Rule-based chatbots bằng cách bổ sung vào đó thành phần tạo ra
trạng thái cảm xúc cho bot. (PARRY).
b. Corpus-based chatbots
74
NLP Notes – Kikai Tech
75
NLP Notes – Kikai Tech
76
NLP Notes – Kikai Tech
Một đoạn hội thoại có thể liên quan đến nhiều frames. Tập các frame trong đoạn
hội thoại được gọi là domain ontology.
Mục đích của các hệ thống làm việc dựa vào frame là: tìm filler trong lời nói của
người dùng, điền nó vào slot, thực hiện hành động phục vụ người dùng khi đã có
đủ thông tin, trả lại kết quả cho người dùng.
33.2. Các kiến trúc
a. GUS architecture
- Cấu trúc điều khiển (chiến thuật điền slot)
Trong kiến trúc GUS, có tập các condition-action rule gắn vào slots. (dạng:
Nếu user đề cập thông tin của slot này thì,…). Giúp giải quyết được vấn đề
một câu trả lời chứa nhiều thông tin để điền vào nhiều slot. (?)
Do đoạn hội thoại có thể chứa nhiều frame (vd: hội thoại với mục đích đặt
phòng khách sạn có các frame: frame hỏi đường, frame hỏi giá cả,…), nên hệ
thống cần xác định thông tin người dùng cung cấp đang ở frame nào và sau
đó thực hiện chuyển hướng sang frame đó.
→ GUS xây dựng trên cơ sở production rule (dựa vào lượt nói hiện tại của
user và lịch sử hội thoại trước đó để chọn frame) (?)
- NLU (Natural Language Understanding) component
Mục tiêu của NLU component là trích rút 3 thứ sau từ các lượt nói của user:
domain, intent và filler. Mối thứ tương ứng với một tác vụ mà component này
phải giải quyết:
o Domain classification: xác định domain (1-n classification)
o Intent determination: Xác định kết quả user muốn nhận được
o Slot Filling: trích rút slot, filler từ lời nói của user (GUS dùng rules
thiết kế theo kiểu Context-Free Grammar) và chuẩn hóa filler
Một số hệ thống hiện đại hơn sử dụng các thuật toán ML cho task
này.
- ASR (Automatic Speech Recognition) component:
Kết quả tạo ra bởi ASR có thể độc lập hoặc phụ thuộc vào dialogue state
(Thường nên để phụ thuộc).
- NLG (Natural Language Generation) component:
77
NLP Notes – Kikai Tech
Với frame-based system, thường sẽ sinh lời nói dựa vào mẫu đã được thiết kế
sẵn (template-based generation).
(*) Cần tìm hiểu những pattern thường thấy khi nói chuyện, ví dụ như: xác
nhận đã tiếp nhận được thông tin (Okay, Uhm,…)
GUS architecture (đặc biệt là cách thiết kế luật) được sử dụng rất nhiều trong
những ứng dụng có domain hẹp và có sẵn chuyên gia.
b. Dialogue State Architecture
- Tổng quan:
Kiến trúc này bao gồm 6 thành phần sau:
o Automatic Speech Recognition (ASR)
o Spoken Language Understanding (SLU): dùng ML algorithm thay
vì dùng rules
o Dialog State Tracker (DST): Quản lý trạng thái hiện tại của chatbot
(những cái đã nói, những thông tin đã tiếp nhận, biểu diễn frame,
các filler,.. )
o Dialog Policy: Xác định hệ thống cần làm gì tiếp theo (trả lời, hỏi,
gợi ý, xác nhận lại,…)
o Natural Language Generation (NLG)
o Text to Speech (TTS)
78
NLP Notes – Kikai Tech
79
NLP Notes – Kikai Tech
80
NLP Notes – Kikai Tech
Hoặc phức tạp hơn là huấn luyện theo kiểu reinforcement learning. (X) Tìm
hiểu thêm về cái này
(*) Reinforcement Learning:
Hệ thống sẽ nhận được phần thưởng (positive hoặc negative) tại cuối mỗi cuộc
hội thoại. Và nó sẽ căn cứ vào phần thưởng nhận được này để huấn luyện
dialogue policy.
Chú ý các trường hợp hệ thống cần phải từ chối / xác nhận lại những thông
tin nhận được. (X) Tìm hiểu những chiến thuật từ chối, xác nhận lại để không
bị gượng gạo Ref.P514
- Natural Language Generation:
Tạo nội dung phản hồi lại cho người dùng, hay còn gọi là quá trình Sentence
Realization.
Đầu vào của thành phần này là một dialog act, các slot và filler cần thiết
(những cái này đã được xác định nhờ dialogue policy).
Vd:
Tuy nhiên, dữ liệu để huấn luyện NLG không thể là cặp giống như input-
output như trên. Mà thường sẽ phải thực hiện quá trình delexicalization nhãn
đầu ra thành như thế này:
Ngoài cách sử dụng người đánh giá sau khi trải nghiệm, còn có một số thông số
để đánh giá sau:
- Slot Error Rate, Slote Precision/Recall/F-score, Task Error Rate
𝑁𝑢𝑚 𝑜𝑓 𝐼𝑛𝑠𝑒𝑟𝑡𝑒𝑑/𝑑𝑒𝑙𝑒𝑡𝑒𝑑/𝑠𝑢𝑏𝑠𝑡𝑖𝑡𝑢𝑡𝑒𝑑 𝑠𝑙𝑜𝑡𝑠
𝑆𝑙𝑜𝑡 𝐸𝑟𝑟𝑜𝑟 𝑅𝑎𝑡𝑒 𝑓𝑜𝑟 𝑎 𝑆𝑒𝑛𝑡𝑒𝑛𝑐𝑒 =
𝑁𝑢𝑚 𝑜𝑓 𝑟𝑒𝑓𝑒𝑟𝑒𝑛𝑐𝑒 𝑠𝑙𝑜𝑡𝑠
- Efficiency cost: thời gian xử lý, tỉ lệ lượt nói dùng để đính chính lại của
cả user và hệ thống (turn correction ratio)
- Quality cost: các metric đo độ hiểu của hệ thống (tập trung vào ASR) và
tính phù hợp của output hệ thống sinh ra.
33.4. Ghi chú
33.5. Tham khảo
(*) Cần chọn / định nghĩa metric sao cho nó nhạy cảm (sentitive) nhất có thể
82
NLP Notes – Kikai Tech
3. Transformers
4. Các neural net cho parsing
V. Linguistic
Word
Ref.C6.1
83