---
# System prepended metadata

title: Algorithm for KK

---

# Algorithm for KK
## Mô hình ngôn ngữ

Mô hình ngôn ngữ, có thể hiểu là một mô hình học máy giúp dự đoán từ tiếp theo dựa vào 1 từ hoặc 1 đoạn văn phía trước, 1 ví dụ điển hình là bàn phím gõ văn bản có chức năng đoán từ cần gõ cũng là 1 dạng mô hình ngôn ngữ

![](https://i.imgur.com/qMSll5R.png)

## Transformers cho mô hình ngôn ngữ
![](https://i.imgur.com/31QtTXq.png)

Transformer là 1 loại kiến trúc đặc biệt sử dụng cơ chế attention, cho phép mô hình có thể biểu diễn ngôn ngữ 1 cách nhanh và hiệu quả, ban đầu transformers được dùng trong bài toán dịch máy và đã vượt qua Google Translate engine. Mô này hoạt động theo cơ chế encoder-decode, nhận vào là 1 xâu ký tự và trả về 1 xâu ký tự tương ứng(nhưng trong ngôn ngữ khác), về sau transformer được mở rộng không chỉ trả về 1 xâu mà là 1 vector biểu diễn, và việc có nhiều lớp transformers như vậy giúp biểu diễn ngôn ngữ ở mức sâu hơn.
![](https://i.imgur.com/rKxmmAK.png)


## Baseline model- BERT

Mô hình được sử dụng làm cơ sở cho 2 bài toán NER và Intent là mô hình ngôn ngữ BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding được phát triển bởi Google. 

BERT được thiết kế chỉ bao gồm các lớp transformer, mỗi transformer nhận đầu vào là 2 transformer của 2 từ liền kề, nên còn được gọi là mô hình song hướng (bidirectional). BERT được huấn luyện từ một tập văn bản không cần được gắn nhãn, bằng cách cho mô hình dự đoán từ bị che trong câu. Do đó, mô hình BERT được huấn luyện trước có thể được tinh chỉnh một lớp đầu ra bổ sung để tạo ra các mô hình hiệu quả cho nhiều bài toán khác nhau như NER hay Intent classification.

![](https://i.imgur.com/M6LUGQb.png)

## Bài toán Intent

Đối với bài toán Intent, tập dữ liệu bao gồm nhiều câu, mỗi câu sẽ có 1 nhãn intent tương ứng với câu đấy, model sẽ đọc cả câu và dự đoán xem intent của câu là gì.


![](https://i.imgur.com/a4uUjx0.png)

- Ban đầu câu văn sẽ được đưa vào 1 bộ tokenizer để tách câu thành các từ đơn lẻ, vd: "anh ấy là người hà nội" --> "["anh","ấy ","là","người","hà_nội"]. 
- mỗi câu sẽ được gắn thêm 1 token đặc biệt là \<CLS\>
- mô hình sẽ tính ra vector biểu diễn của \<CLS\> và sử dụng nó để phân loại câu

## Bài toán NER

Đối với bài toán NER, tập dữ liệu bao gồm nhiều câu, mỗi câu sẽ có nhiều nhãn NER tương ứng với từng đối tượng trong câu đấy, model sẽ đọc cả câu và dự đoán xem từ nào trong câu là 1 đối tượng(vd: "thành phố HCM rất lớn" thì "thành phố HCM" là 1 đối tượng chỉ địa điểm.

![](https://i.imgur.com/Ne9nzb7.png)

Tương tự như cho bài toán Intent, bài toán cũng sử dụng gần như y hệt mô hình BERT:
- Ban đầu câu văn sẽ được đưa vào 1 bộ tokenizer để tách câu thành các từ đơn lẻ, vd: "anh ấy là người hà nội" --> "["anh","ấy ","là","người","hà_nội"]. 
- mỗi câu sẽ được gắn thêm 1 token đặc biệt là \<CLS\>
- mô hình sẽ tính ra vector biểu diễn của từng token và sử dụng nó để phân loại xem token này thuộc nhãn nào(vd như ở hình token $T_2$ thuộc nhãn B-PER, tức là tên người)