You are on page 1of 271

TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG

KHOA CÔNG NGHỆ THÔNG TIN


BỘ MÔN HỆ THỐNG THÔNG TIN
-------------o0o------------

BÀI GIẢNG MÔN HỌC


XỬ LÝ NGÔN NGỮ TỰ NHIÊN

Hệ đào tạo: Đại học chính quy

Giảng viên biên soạn: Nguyễn Thị Thanh Nhàn

1
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG

KHOA CÔNG NGHỆ THÔNG TIN

BỘ MÔN HỆ THỐNG THÔNG TIN

-------------o0o------------

BÀI GIẢNG MÔN HỌC


XỬ LÝ NGÔN NGỮ TỰ NHIÊN
HỆ ĐẠI HỌC

KHOA PHÊ DUYỆT BỘ MÔN PHÊ DUYỆT GIÁO VIÊN P. TRÁCH

TS. Nguyễn Hải Minh TS. Nguyễn Thị Thanh ThS. Nguyễn Thu Hương
Nhàn
Xử lý ngôn ngữ tự nhiên (Natural language processing - NLP) 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. Trong trí tuệ nhân
tạo thì xử lý ngôn ngữ tự nhiên là một 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ữ - công cụ hoàn hảo nhất của tư duy và giao tiếp.

Mục đích môn học

• Hiểu các nguyên tắc cơ bản và các cách tiếp cận trong XLNNTN
• Học các kỹ thuật và công cụ có thể dùng để phát triển các hệ thống hiểu văn bản
hoặc nói chuyện với con người
• Thu được một số ý tưởng về các vấn đề mở trong XLNN

3
Chương 1. Mở đầu
1.1 Giới thiệu chung
1.1.1 Ngôn ngữ tự nhiên
Thông thạo ngôn ngữ là thước đo cốt lõi của trí thông minh -không chỉ ở con người,
mà cả máy móc. Đó là lý do tại sao khả năng xử lý hiệu quả và chính xác thông tin được
truyền tải bằng ngôn ngữ của con người là rất quan trọng. Công nghệ xử lý ngôn ngữ tự
nhiên (NLP) đóng một vai trò không thể thiếu trong nhiều tiến bộ gần đây của trí tuệ nhân
tạo, vì vậy không có gì ngạc nhiên khi công nghệ này ngày càng thu hút được nhiều sự chú
ý. Và không chỉ các công ty công ty công nghệ đang tận dụng NLP; Tài chính, bảo hiểm
và các ngành công nghệ khác cũng ngày càng quan tâm đến những lợi ích tiềm năng mà
NLP có thể mang lại. Xét cho cùng, ngôn ngữ là phương tiện giao tiếp chính trong mọi
khía canh của cuộc sống, và lĩnh vực phát triển nhanh chóng này hứa hẹn mang đến vô số
cơ hội mới và thú vị.
Ngôn ngữ là một trong những khía cạnh nhận thức quan trong nhất của con người.
Ngôn ngữ tự nhiên (Natural Language-NL) đề cập đến bất kỳ ngôn ngữ viết hoặc nói nào
của con người được phát triển một cách tự nhiên để giao tiếp với nhau. Sự tương tác giữa
máy tính và con người nói chung bao gồm hai nhánh hoạt động: hiểu biết ngôn ngữ tự
nhiên và sinh ngôn ngữ tự nhiên. Hiểu ngôn ngữ tự nhiên liên quan đến quá trình tính toán
chuyển ngôn ngữ tự nhiên được thu thập từ con người sang một định dạng máy tính có thể
hiểu được. Sinh ngôn ngữ tự nhiên tập trung vào các hệ thống máy tính có thể tạo ra các
văn bản mà con người có thể hiểu được. Trong khi vấn đề hiểu ngôn ngữ tự nhiên và sinh
ngôn ngữ tự nhiên chia sẻ những nền tảng lý thuyết giống nhau và được sử dụng cùng nhau
trong nhiều ứng dụng trong thế giới thực, thì quá trình bên trong của hai hoạt động này lại
hoàn toàn khác nhau. Về cơ bản, hiểu NL là quá trình ánh xạ ngôn ngữ của con người thành
biểu diễn tính toán và sinh ngôn ngữ tự nhiên là quá trình ánh xạ biểu diễn tính toán sang
ngôn ngôn ngữ của con người.
Như chúng ta biết, một trong những thách thức của ngôn ngữ con người liên quan
đến việc giải thích chính xác các từ được sử dụng không rõ ràng trong một câu, và sự nhập
nhằng như vậy có thể được phân thành nhiều loại. Ví dụ, sự nhập nhằng về từ vựng xảy ra
khi một từ có nhiều nghĩa, điều này có thể làm thay đổi nghĩa của câu có chứa từ đó. Một
loại nhập nhằng khác là nhập nhằng cú pháp, xảy ra khi một chuỗi các từ có nhiều nghĩa.

4
Tuy nhiên một loại nhập nhằng khác là nhập nhằng tham chiếu, có thể xảy ra khi
một danh từ ở một vị trí được tham chiếu ở nơi khác thông qua một đại từ và tham chiếu
không hoàn toàn rõ ràng.
Một tập hợp con quan trọng khác của NLP là sinh ngôn ngữ tự nhiên, là quá trình
tạo ra các cụm từ và câu có nghĩa dưới dạng ngôn ngữ tự nhiên từ một số biểu diễn bên
trong. NLP có thể được sử dụng để phân tích lời nói, các từ và cấu trúc câu.
Rõ ràng, ngôn ngữ tự nhiên liên quan đến một tập hợp các quy tắc ngữ pháp có mức
độ phức tạp khác nhau, cùng với các đặc điểm cụ thể của ngôn ngữ.
Ngôn ngữ tự nhiên không giống với ngôn ngữ nhân tạo như ngôn ngữ máy tính (C,
PHP,…). Trên thế giới hiện nay có khoảng 7000 loại ngôn ngữ. Có nhiều cách để phân
loại, một số cách phân loại ngôn ngữ phổ biến như dựa vào: nguồn gốc, đặc điểm, …

Do đó tiếng Việt được xếp vào loại đơn lập – tức phi hình thái, không biến hình.
Cùng với đó, tiếng Việt được viết theo trật tự S – V – O. (subject (S), verb (V) and object
(O)).
Tiếng việt: ngôn ngữ không biến hình, đơn âm tiết (Monosyllable), nghĩa là mỗi
một âm tiết được thể hiện bằng một từ và cũng là đơn vị cơ bản trong phát âm.
Sử dụng trong:
• Các ứng dụng sử dụng ngôn ngữ tự nhiên truyền thống
• Tách từ

5
• Tìm kiếm tài liệu
• Phân lớp tài liệu
•…
Tiếng Anh: ngôn ngữ biến hình, đa âm tiết

• kick, kicks, kicked, kicking


• sit, sits, sat, sitting
• murder, murders

1.1.2 Xử lý ngôn ngữ tự nhiên


Con người luôn có nhu cầu được giao tiếp. Chính từ nhu cầu cơ bản này mà một
lượng lớn dữ liệu văn bản được tạo ra mỗi ngày. Với lượng dữ liệu văn bản đa dạng từ
mạng xã hội, ứng dụng trò chuyện, email, đánh giá sản phẩm, tài liệu nghiên cứu và
sách báo, việc giúp máy tính hiểu được những dữ liệu này trở nên quan trọng, nhằm
đưa ra cách thức hỗ trợ hoặc quyết định dựa trên ngôn ngữ của con người.

a) Khái niệm

6
Signified: cái mà con người nghĩ, tưởng tượng, hình dung
Signifier: từ nói hay viết
Những âm thanh, hình ảnh chỉ là quy ước, mình sẽ đẩy quy ước của mình cho máy
tính

Mục tiêu của quá trình xử lý ngôn ngữ tự nhiên (Natural Language Processing –
NLP) là cho phép máy tính hiểu được ngôn ngữ tự nhiên của con người. Đó là quá trình
mã hóa văn bản ngôn ngữ tự nhiên một cách có hệ thống thành các biểu diễn số mô tả chính
xác ý nghĩa của nó.
Xử lý ngôn ngữ tự nhiên là một trong những nhánh khó của trí tuệ nhân tạo. Bởi lẽ
ngôn ngữ là một hệ thống phức tạp để giao tiếp giữa những động vật bậc cao hay có năng
lực tư duy như con người. Nếu NLP được giải quyết thành công đồng nghĩa với việc máy
tính có thể hiểu và sử dụng ngôn ngữ tự nhiên để giao tiếp như chúng ta.
Xử lý ngôn ngữ chính là xử lý thông tin khi đầu vào là “dữ liệu ngôn ngữ” (dữ liệu
cần biến đổi), tức dữ liệu “văn bản” hay “tiếng nói”. Các dữ liệu liên quan đến ngôn ngữ
viết (văn bản) và nói (tiếng nói) đang dần trở nên kiểu dữ liệu chính con người có và lưu
trữ dưới dạng điện tử. Đặc điểm chính của các kiểu dữ liệu này là không có cấu trúc hoặc
nửa cấu trúc và chúng không thể lưu trữ trong các khuôn dạng cố định như các bảng biểu.
Theo đánh giá của công ty Oracle, hiện có đến 80% dữ liệu không cấu trúc trong lượng dữ
liệu của loài người đang có. Với sự ra đời và phổ biến của Internet, của sách báo điện tử,
của máy tính cá nhân, của viễn thông, của thiết bị âm thanh,… người người ai cũng có thể
tạo ra dữ liệu văn bản hay tiếng nói. Vấn đề là làm sao ta có thể xử lý chúng, tức chuyển
chúng từ các dạng ta chưa hiểu được thành các dạng ta có thể hiểu và giải thích được, tức
là ta có thể tìm ra thông tin, tri thức hữu ích cho mình.
Xử lý ngôn ngữ tự nhiên là ngành con của trí tuệ nhân tạo và ngôn ngữ tính toán
(computational linguistics). Nó nghiên cứu các vấn đề sinh và hiểu tự động ngôn ngữ
của con người.

7
Hệ thống sinh ngôn ngữ tự nhiên sẽ chuyển thông tin từ cơ sở dữ liệu máy tính thành
ngôn ngữ tự nhiên con người.
Hệ thống hiểu ngôn ngữ tự nhiên sẽ chuyển ngôn ngữ con người sang nhiều dạng
biểu diễn được trong máy tính giúp cho các chương trình máy tính có thể hiểu được.
Các bài toán sinh và hiểu ngôn ngữ tự nhiên: chatbot, dịch máy
Các bài toán sinh ngôn ngữ tự nhiên: sinh ra quảng cáo, sinh văn, thơ
Các bài hiểu ngôn ngữ tự nhiên: điều khiển thiết bị bằng giọng nói
Ngôn ngữ tính toán tập trung vào công nghệ để hỗ trợ/ cài đặt ngôn ngữ

• Nghiên cứu cách con người xác định từ


• Nghiên cứu cách con người phân tích câu
• Nghiên cứu cách con người học một ngôn ngữ
• Nghiên cứu cách ngôn ngữ tiến hóa
Các mức độ của tri thức ngôn ngữ

Phonetics (ngữ âm): nghiên cứu các âm thanh (sound) của ngôn ngữ
Phonology (âm vị học): nghiên cứu thuộc tính phân bố của các âm thanh
Morphology (hình thái học): nghiên cứu cấu trúc của từ

8
Hình thái học là nghiên cứu về cách các từ được xây dựng từ các đơn vị có nghĩa
nhỏ hơn được gọi là morphemes
Áp dụng với các ngôn ngữ biến đổi như tiếng Anh
Ví dụ: disadvantages = dis + advantage + s
2 lớp:

• Inflectional morphology (Hình thái học biến tố)


• Derivational morphology (Hình thái học dẫn xuất)
Inflectional morphology

• a stem + a grammatical morpheme -> a word:


o the same class as the stem
o relates to the syntax of a sentence
• Example: subject-verb agreement
o He hit-s the ball
o We hit the ball
• Plural and possessive markers
o Cats, cat’s
Derivational morphology

• a stem + a grammatical morpheme -> a word:


o different class, e.g., transmit->transmission (Verb to Noun)
o Irregular meaning change
Suffix Base Verb/Adjective Derived form
-ation computerize(V) computerization(N)
-ee appoint(V) appointee(N)
-er love(V) lover(N)
-ness fuzzy(Adj) fuzziness
-less clue(N) clueless
Lexemes: từ,

9
Syntax (cú pháp): nghiên cứu cách các từ kết hợp với nhau thành cụm từ hay câu

Phân tích cú pháp giúp nhận dạng ai làm gì cho ai, đây là một bước chính để hiểu
một câu
Các bài toán liên quan: sửa lỗi chính tả,
Semantics (ngữ nghĩa) nghiên cứu nghĩa của từ, cụm từ, câu
Ví dụ: I have a dinner in/for an hour
Nghiên cứu nghĩa của từ trong các trường hợp antonymy, synonymy.
Pragmatics (Ngữ dụng) là ngữ cảnh từ được sử dụng
Ví dụ: There are many trees in the riverbank
Discourse: diễn ngôn
Lexicon (từ vựng): từ vựng tương tác với tất cả các biểu diễn ngôn ngữ

10
Các bài toán con NLP

• Mô hình ngôn ngữ (Language modeling)


• Gán nhãn từ loại (Part-of-speech tagging)
• Phân tích cú pháp (Syntactic parsing)
• Nhận dạng tên riêng (Named-entity recognition)
• Nhập nhằng từ (Word sense disambiguation)
• Gán nhãn vai trò ngữ nghĩa (Semantic role labeling)
• ….
b) Sự phát triển của NLP
Một số giai đoạn chính của NLP được liệt kê dưới đây, nêu bật các kỹ thuật thường
được sử dụng trong NLP.

• Năm 1950-1990: hệ thống dựa trên luật


• Năm 1990-2000: thống kê dựa trên kho dữ liệu
• Năm 2000-2014: học máy
• Năm 2014-2023: học sâu

11
NLP sơ khai (nhưng năm 1950-1990) kéo dài vài thập kỷ và chủ yếu tập trung vào
các hệ thống dựa trên luật, có nghĩa là chúng sử dụng phần logic có điều kiện. Một mốc
lịch sử quan trọng của NLP là thí nghiệm Georgetown năm 1954, trong đó một bộ khoảng
60 câu tiếng Nga đã được dịch sang tiếng Anh. Vào những năm 1960, hệ thống NLP ELIZA
của Viện Công nghệ thông tin Massachusetts (MIT) đã mô phỏng một cách thuyết phục
một nhà trị liệu tâm lý.

Cũng trong những năm 1960, mô hình không gian véc tơ để biểu diễn thông tin đã
được phát triển, trong đó các từ được biểu diễn bằng véc tơ của số thực, có thể sử dụng để
tính toán. Những năm 1970 chứng kiến sự phát triển của một số khái niệm
chatterbot/chatbot dựa trên các bộ quy tắc thủ công phức tạp để xử lý thông tin đầu vào.
Trong những năm 1980 và 1990, sự ra đời của việc áp dụng các phương pháp học máy cho
NLP, nơi các quy tắc được máy tính phát hiện ra so với con người tạo ra. Cuối những năm
1980 chứng kiến phương pháp phân tích suy biến (Singular value decomposition-SVD)
vào mô hình không gian véc tơ, dẫn đến phân tích ngữ nghĩa ẩn – một kỹ thuật không được
giám sát để xác định mối quan hệ giữa các từ trong ngôn ngữ.
Giai đoạn tiếp theo của NLP (những năm 1990-2000) chuyển từ phân tích dựa trên
luật sang phân tích thống kê chủ yếu về các bộ sưu tập văn bản. Giai đoạn thứ ba liên quan
đến học máy cho NLP, như cây quyết định và chuỗi Markov. Một lần nữa, một nhiệm vụ
quan trọng liên quan đến việc dự đoán từ tiếp theo trong một chuỗi các từ.
Giai đoạn gần đây nhất của NLP là thập kỷ trước và sự kết hợp của mạng nơ ron
với NLP. Vào đầu những năm 2010, sự gia tăng của mạng nơ ron và học sâu trong mọi lĩnh
vực đã biến đổi NLP một cách nhanh chóng và đã được chứng minh là đạt kết quả tốt nhất
cho các nhiệm vụ NLP khó nhất, chẳng hạn như dịch máy và phân loại văn bản. Giữa

12
những năm 2010 đã chứng kiến sự phát triển của mô hình word2vec, và các biến thể của
nó là kiến trúc sent2vec, doc2vec,…Số liệu được sử dụng để huấn luyện các mô hình dựa
trên mạng nơ ron này không yêu cầu dữ liệu được gán nhãn. Ý nghĩa của một từ được cho
là gắn liền với ngữ cảnh của nó, nghĩa là những từ xung quanh nó.
Trên thực tế năm 2012 là một bước quan trọng liên quan đến mạng nơ ron tích chập
(CNN) đã đạt được một bước đột phá về phân loại hình ảnh. Các nhà nghiên cứu sau đó đã
học cách sử dụng CNN để phân tích sóng âm thanh và thực hiện các nhiệm vụ NLP. Việc
sử dụng CNN cho NLP sau đó đã phát triển thành việc sử dụng mạng nơ ron hồi quy (RNN)
và bộ nhớ ngắn hạn dài hạn (LSTM) là hai kiến trúc học sâu cho độ chính xác cao.
Vào khoảng năm 2014, các mô hình tuần từ (sequence to sequence) đã được phát
triển và đạt được một sự cải tiến đáng kể trong các nhiệm vụ khó khăn như dịch máy và
tổng hợp tự động

1.1.3 Khó khăn trong xử lý ngôn ngữ tự nhiên


a) Nhập nhằng
Nhập nhằng cấu trúc (từ loại)
Time flies like an arrow.

13
Con ngựa đá con ngựa đá.
Con ngựa/DT đá/ĐgT con ngựa/DT đá/DT.
Ông/ĐaT già/TT đi/Phó_từ nhanh/TT quá/trạng_từ.
Ông già/DT đi/ĐgT nhanh/TT quá/trạng_từ
Từ loại là một yếu tố quan trọng trong việc xác định nghĩa chính xác của từ và sắp
xếp các từ thành câu hoàn chỉnh trong dịch tự động. Như vậy có nghĩa là từ loại giúp khử
nhập nhằng, nhưng chính bản thân nó trong một số trường hợp cũng nhập nhằng. Phần lớn
các ngôn ngữ biến hình từ loại được xác định tương đối dễ dàng vì khi chuyển loại thì từ
cũng chuyển kiều hình của nó ví dụ trong tiếng Anh từ free là tính từ có nghĩa là tự do,
chuyển loại thành danh từ có thêm hậu tố "dom" thành freedom nghĩa là sự tự do. Điều này
tạo thuận lợi cho việc gán nhãn từ loại một cách tự động nhờ các dấu hiệu nhận biết tổng
quát. Các ngôn ngữ không biến hình như tiếng Việt vấn đề xác định từ loại yêu cầu các
thuật toán phức tạp hơn, bắt buộc phải phân tích cú pháp, mặt khác ngay trong nội bộ ngành
ngôn ngữ vẫn chưa có sự thống nhất về phân loại từ loại cho tiếng Việt.
Nhập nhằng cấu trúc (liên kết)
I saw the man on the hill with a telescope
Nhập nhằng trong ngôn ngữ học là hiện tượng thường gặp, trong giao tiếp hàng
ngày con người ít để ý đến nó bởi vì họ xử lý tốt hiện tượng này. Nhưng trong các ứng
dụng liên quan đến xử lý ngôn ngữ tự nhiên khi phải thao tác với ý nghĩa từ vựng mà điển
hình là dịch tự động nhập nhằng trở thành vấn đề nghiêm trọng. Ví dụ trong một câu cần
dịch có xuất hiện từ “đường” như trong câu “ra chợ mua cho mẹ ít đường” vấn đề nảy sinh
là cần dịch từ này là road hay sugar, con người xác định chúng khá dễ dàng căn cứ vào văn
cảnh và các dấu hiệu nhận biết khác nhưng với máy thì không. Một số hiện tượng nhập
nhằng: Nhập nhằng ranh giới từ, Nhập nhằng từ đa nghĩa, Nhập nhằng từ đồng âm (đồng
tự), Nhập nhằng từ loại.

14
Nhập nhằng mức từ vựng
• I walked to the bank ...
of the river.
to get money.

• I work for John Hancock...


and he is a good boss.
which is a good company.
Từ và cụm từ theo ngữ cảnh: Các từ và cụm từ có thể có nghĩa khác nhau tùy theo
ngữ cảnh của một câu, có cách phát âm giống hệt nhau nhưng nghĩa hoàn toàn khác
nhau.
I ran to the store because we ran out of milk
Can I run something past you real quick?
The house is looking really run down
Từ đồng âm của hai hoặc nhiều từ được phát âm giống nhau nhưng có ý nghĩa khác
nhau-có thể gây khó khăn cho các ứng dụng trả lời câu hỏi và chuyển lời nói thành văn bản
vì chúng không được viết dưới dạng văn bản. Ví dụ, việc sử dụng their và there thậm chí
còn là một vấn đề khó phân biệt phổ biến đối với con người.
Ngay đối với tiếng Việt thì từ đồng âm và từ nhiều nghĩa đôi khi cũng bị hiểu là
một. Việc xác định ý nghĩa của các từ, cụm từ như vậy cũng là vấn đề khó cần xử lý.
Ví dụ:
Đường sông Lam ngọt quá
Đường dây điện này kiên cố thật
Ngoài đường, xe cộ qua lại tấp nập
Từ đồng nghĩa
Từ đồng nghĩa là những từ tương đồng với nhau về nghĩa, khác nhau về âm thanh
và có phân biệt với nhau về một vài sắc thái ngữ nghĩa
Ví dụ: start, begin

15
Cố, gắng, cố gắng
Từ mỉa mai, châm biếm
Hành động mỉa mai, châm biếm là loại hành động ngôn ngữ có thể là hành động
tích cực hoặc tiêu cực, nhưng thực tế lại có ý nghĩa ngược lại với những gì mà mình nghĩ
trong đầu, tạo ra tác động đến người nghe, có thể là phê phán hay răn đe điều gì. Hệ thống
xử lý ngôn ngữ tự nhiên xác định được nghĩa chuyển như vậy là một vấn đề rất khó khăn.
Ví dụ cho ngữ cảnh người con học kém
Mẹ: Kỳ này con học “giỏi” nhỉ
“Giỏi” ở đây có nghĩa ngược lai là học kém.
Diễn ngôn: đồng tham chiếu
President John F. Kennedy was assassinated.
The president was shot yesterday.
Relatives said that John was a good father.
JFK was the youngest president in history.
His family will bury him tomorrow.
Friends of the Massachusetts native will hold a candlelight service in Mr. Kennedy’s
home town.
b) Lỗi trong văn bản hoặc giọng nói
Các từ viết sai chính tả hoặc sử dụng sai có thể tạo ra các vấn đề cho việc phân tích
văn bản. Các ứng dụng tự động sửa lỗi và sửa ngữ pháp có thể xử lý các lỗi phổ biến, nhưng
không phải lúc nào hệ thống cũng hiểu được ý định của người viết.
Với ngôn ngữ nói, việc phát âm sai, nhấn giọng khác nhau, nói lắp…có thể gây khó
hiểu đối với máy móc. Tuy nhiên khi cơ sở dữ liệu ngôn ngữ phát triển và trợ lý thông
minh được đào tạo bởi người dùng cá nhân của họ, những vấn đề này có thể được giảm
thiểu.
Ví dụ

16
c) Từ ngữ không chính thống và tiếng lóng
Các cụm từ không chính thống, cách diễn đạt, thành ngữ và biệt ngữ dành riêng cho
văn hóa đưa ra một số vấn đề đối với NLP- đặc biệt là đối với các mô hình dành cho mục
đích sử dụng rộng rãi. Bởi vì từ ngữ không chính thống, tiếng lóng có thể không được định
nghĩa trong từ điển nào cả, và những cách diễn đạt này thậm chí có thể có nghĩa khác nhau
ở các khu vực địa lý khác nhau. Hơn nữa, tiếng lóng trong văn hóa không ngừng biến đổi
và mở rộng, vì vậy các từ mới xuất hiện mỗi ngày. Việc huấn luyện và cập nhật thường
xuyên các mô hình tùy chỉnh có thể hữu ích, mặc dù đôi khi nó đòi hỏi khá nhiều dữ liệu.
d) Ngôn ngữ dành riêng cho từng lĩnh vưc
Các doanh nghiệp và ngành công nghiệp khác nhau thường sử dụng ngôn ngữ rất
khác nhau. Ví dụ,một mô hình xử lý NLP rất cần thiết cho chăm sóc sức khỏe sẽ rất khác
so với một mô hình được sử dụng để xử lý các văn bản pháp luật. Tuy nhiên, ngày nay, có
một số công cụ được phân tích được đào tạo cho các lĩnh vực cụ thể, đối với các ngành đặc
biệt cần xây dựng hoặc huấn luyện mô hình của riêng.
e) Ngôn ngữ ít tài nguyên
Các ứng dụng NLP của máy học AI phần lớn đã được xây dựng cho các ngôn ngữ
phổ biến nhất, được sử dụng rộng rài và đạt được độ chính xác cao. Tuy nhiên nhiều ngôn
ngữ, đặc biệt là những ngôn ngữ ít người tiếp cận thường bị bỏ qua và chưa được quan tâm
xử lý. Ví dụ, theo một số ước tính có hơn 3000 ngôn ngữ riêng ở Châu Phi. Đơn giản là
không có nhiều dữ liệu về nhiều ngôn ngữ trong số này. Tuy nhiên các kỹ thuật mới, như
máy biến áp đa ngôn ngữ (sử dụng Google’s BERT-“Bidirectional Encoder
Representations from Transformers”) và nhúng câu đa ngôn ngữ nhằm xác định và tận
dụng các điểm tương đồng phổ biến tồn tại giữa các ngôn ngữ.
f) Thưa dữ liệu (Sparsity)

17
Từ xuất hiện ít không phải là không dùng nhiều mà là do tập ngữ liệu
Mặc dù ngữ liệu lớn thế nào cũng không bao giờ đủ tần suất xuất hiện của từ -> cần
có một cách để ước lượng xác suất của những từ không xuất hiện.
g) Dữ liệu huấn luyện thường không có sẵn
Chi phí đắt đỏ nếu tự xây dựng các bộ dữ liệu
h) Thách thức thuật toán
Tập từ vựng lớn (ví dụ 50K từ)
Tập dữ liệu lớn (GB hoặc TB)
1.2. Các hướng nghiên cứu trong xử lý ngôn ngữ tự nhiên
Các chủ đề trong XLNNTN

• Mức phân tích: cú pháp, ngữ nghĩa, diễn ngôn, thực chứng, …
• Các bài toán con: gán nhãn từ loại, PTCP, phân giải nhập nhằng từ, phân tích cấu
trúc diễn ngôn, …
• Thuật toán và phương pháp: dựa trên tập ngữ liệu, dựa trên tri thức, …

18
• Các ứng dụng: trích rút thông tin, phản hồi thông tin, dịch máy, hỏi đáp, hiểu ngôn
ngữ tự nhiên, …
Các bài toán trong XLNNTN
Phân tích hình thái từ
Vào: chuỗi ký tự
Ra: các cặp (gốc từ, thẻ hình thái từ )
Các vấn đề:

• Kết hợp các thành phần cấu tạo nên từ


• Loại hình thái từ (từ biến tố, từ phái sinh, từ ghép)
Ví dụ: quotations ~ quote/V + -ation(der.V->N) + NNS.
Phân tích cú pháp
Vào: chuỗi các cặp (từ/từ loại)
Ra: cấu trúc ngữ pháp của câu với các nút được gán nhãn (từ, từ loại, vai trò ngữ
pháp)
Vấn đề:

• Quan hệ giữa từ, từ loại, và cấu trúc câu


• Sử dụng nhãn cú pháp (Chủ ngữ, vị ngữ, bổ ngữ,….)
Ví dụ: Tôi/ĐaT nhìn thấy/ĐgT Mai/DT
Ngữ nghĩa
Vào: cấu trúc ngữ pháp của câu
Ra: cấu trúc ngữ nghĩa của câu
Vấn đề:
Quan hệ giữa các đối tượng như chủ thể (Subject), đối tượng (Object), tác nhân (Agent),
hậu quả (Effect) và các loại khác
((Học sinh/DT)CN ((học/ĐgT sinh học/DT)
(Học sinh/DT)Sbj (học/ĐgT)action (sinh học/DT)Obj

19
1.2.1. Các cách tiếp cận NLP cơ bản
Tiền xử lý NLP: bao gồm chuẩn bị và làm sạch dữ liệu văn bản cho máy để có thể
phân tích. Tiền xử lý đặt dữ liệu vào trong mẫu khả thi và làm nổi bật các đặc trưng trong
văn bản ở đó một thuật toán có thể làm việc. Có một số công việc, bao gồm:
- Tokenization là quá trình tách một cụm từ, câu, đoạn văn, một hoặc nhiều tài liệu văn
bản thành các đơn vị nhỏ hơn. Mỗi đơn vị nhỏ hơn này được gọi là Tokens.
- Xóa bỏ từ dừng: loại bỏ các từ không có nhiều ý nghĩa, xuất hiện nhiều trong hầu hết
các câu, như mạo từ, giới từ,…hoặc những từ không thể hiện ngữ cảnh

- Nguồn gốc và Bổ đề ngôn ngữ (Lemmatization và Stemming)

Stemming (Nguồn gốc) là kỹ thuật dùng để biến đổi một từ về dạng gốc (được gọi là stem hoặc
root form) bằng cách cực kỳ đơn giản là loại bỏ một số ký tự nằm ở cuối từ mà nó nghĩ rằng là
biến thể của từ. Có thể lấy ví dụ đơn giản như các từ worked, working, works chỉ khác nhau ở
những ký tự cuối cùng, bằng cách bỏ đi các hậu tố -ed, -ing, -s, chúng ta đều được từ nguyên
gốc là work. Bởi vì nguyên tắc hoạt động của Stemming rất đơn giản nên tốc độ xử lý của nó rất
nhanh và kết quả stem đôi khi cho ra những kết quả không như mong muốn. Một ví dụ khác như
từ goes sẽ được stem thành từ goe (bỏ chữ s cuối từ) trong khi đó stem của từ go vẫn là go, kết
quả là 2 từ goes và go sau khi được stem thì vẫn không giống nhau. Một nhược điểm khác là
nếu các từ dạng bất quy tắt như went hay spoke thì kỹ thuật Stemming sẽ không thể đưa các từ
này về dạng gốc là go hay speak. Tuy có các nhược điểm như trên nhưng trong thực tế Stemming
vẫn được sử dụng khá phổ biến trong NLP vì nó có tốc độ xử lý nhanh và kết quả cuối cùng
nhìn chung không hề tệ khi so với Lemmatization.

Lemmatization (Bổ đề ngôn ngữ) khác với Stemming – xử lý bằng cách loại bỏ các ký tự cuối
từ một cách rất “máy móc”, Lemmatization sẽ xử lý thông minh hơn bằng một bộ từ điển hoặc
một bộ ontology nào đó. Điều này sẽ đảm bảo rằng các từ như goes, went và go sẽ chắc chắn có
kết quả trả về là như nhau. Kể cả các từ danh từ như mouse, mice cũng đều được đưa về cùng
một dạng như nhau. Người ta gọi bộ xử lý Lemmatization là Lemmatizer. Nhược điểm của
lemmatization là tốc độ xử lý khá chậm vì phải thực hiện tra cứu từ trong cơ sở dữ liệu. Trong
các ứng dụng Xử lý ngôn ngữ tự nhiên mà cần độ chính xác cao hơn và thời gian không quan
trọng, người ta có thể sử dụng Lemmatization.

- Gán nhãn thẻ từ (Part of speech tagging): các từ sẽ được gán như danh từ, động từ, tính từ,….

20
21
1.2.2. Các cách tiếp cận NLP hiện đại

• Tiếp cận dựa trên học sâu


• Word2vec
• RNN
• LTSM

Transformer

1.3. Các mức phân tích trong xử lý ngôn ngữ tự nhiên


• Morphology (hình thái học): cách từ được xây dựng, các tiền tố và hậu tố của từ
• Syntax (cú pháp): mối liên hệ về cấu trúc ngữ pháp giữa các từ và ngữ
• Semantics (ngữ nghĩa): nghĩa của từ, cụm từ, và cách diễn đạt
• Discourse (diễn ngôn): quan hệ giữa các ý hoặc các câu
• Pragmatic (thực chứng): mục đích phát ngôn, cách sử dụng ngôn ngữ trong giao
tiếp
• World Knowledge (tri thức thế giới): các tri thức về thế giới, các tri thức ngầm
1.4. Các ứng dụng của xử lý ngôn ngữ tự nhiên
• Gắn thẻ từ loại (Part-of-speech tagging): gắn thẻ một từ trong văn bản với phần lời
nói, bao gồm động từ, tính từ và danh từ.

22
• Nhận dạng thực thể được đặt tên (NER- Named Entity Recognition): xác định các
thực thể trong văn bản phi cấu trúc, chẳng hạn như tên người, tổ chức và địa điểm.

Sử dụng có thể:
Theo dõi đề cập đến các thực thể cụ thể trong tài liệu
Đối với phần trả lời câu hỏi, câu trả lời thường là các thực thể được đặt tên
Thường được theo sau bởi Liên kết thực thể được đặt tên/Chuẩn hóa vào Cơ sở tri
thức
• Phân loại câu/tài liệu: gắn thẻ các câu hoặc tài liệu với các danh mục xác định trước
chẳng hạn như {“tích cực”, “tiêu cực”}, các chủ đề khác nhau {“giải trí”, “khoa
học”, “lịch sử”}, hoặc một số nhóm được xác định trước trong số các danh mục.
• Tóm tắt tự động: tóm tắt nội dung của một tập hợp các câu hoặc tài liệu thường là
trong một vài câu hoặc từ khóa.

• Dịch máy: dịch các câu/ tài liệu từ một ngôn ngữ này sang một ngôn ngữ khác hoặc
một bộ sưu tập các ngôn ngữ.
• Trả lời câu hỏi: Xác định câu trả lời thích hợp cho câu hỏi do con người đặt ra.

23
(Ứng dụng hệ thống hỏi đáp- Question answering)

• Sửa lỗi chính tả


• Các công cụ dịch từ một ngôn ngữ A sang một ngôn ngữ B
• Đọc văn bản, tài liệu
• Lọc email
• Phát hiện tin tức giả mạo (Detect fake news)
• Chatbot: thực hiện cuộc trò chuyện với con người một cách thuyết phục nhằm đạt
được một số mục tiêu. Chatbot có thể được xây dựng như một hệ thống trả lời câu
hỏi.
-ChatGPT, viết tắt của Chat Generative Pre-training Transformer, là
một chatbot do OpenAI phát triển nên. ChatGPT được xây dựng dựa trên GPT-3.5, một
dòng mô hình ngôn ngữ lớn của OpenAI, và được tinh chỉnh bằng cả kỹ thuật học tăng
cường lẫn kỹ thuật học có giám sát.
-ChatGPT được ra mắt dưới dạng nguyên mẫu vào tháng 11 năm 2022 và nhanh chóng thu
hút sự chú ý nhờ việc nó có thể hồi đáp chi tiết và trả lời lưu loát trên nhiều lĩnh vực kiến
thức khác nhau. Độ chính xác không đồng đều về dữ kiện thực tế của nó được xác định là
mặt hạn chế đáng kể.
Phản ứng tích cực
The New York Times đã gán nó danh hiệu "chatbot trí tuệ nhân tạo tốt nhất được phát hành
ra quảng đại quần chúng trước giờ".
Samantha Lock của The Guardian ghi rằng nó có thể tạo văn bản "chi tiết một cách ấn
tượng" và "giống con người".

24
Soạn giả' công nghệ Dan Gillmor đã sử dụng ChatGPT trong một bài tập của sinh viên và
nhận thấy văn bản được tạo ra từ nó ngang tầm với những gì một sinh viên giỏi sẽ làm ra
và cho rằng "giới học thuật có một số vấn đề rất nghiêm trọng phải đối mặt rồi".
Trong bài "Breakthroughs of the Year" (Bước đột phá của năm) cho năm 2022 của The
Atlantic, Derek Thompson đã liệt ChatGPT vào hàng "sự bùng nổ của những AI tạo sinh"
mà "có thể thay đổi đầu óc chúng ta về cách chúng ta làm việc, về cách chúng ta suy nghĩ,
và về trí sáng tạo của con người thực sự là gì".
Kelsey Piper của Vox có viết rằng "ChatGPT là cái dẫn nhập ngay trên tầm tay đầu tiên
cho công chúng thấy rằng AI hiện đại đã có sức mạnh đến nhường nào, và hệ quả là nhiều
người chúng ta (đã phải sững sờ)" và bảo rằng "ChatGPT đủ thông minh để trở nên hữu
ích bất chấp khiếm khuyết của mình”.
Trong một bài tweet, ông trùm công nghệ Elon Musk đã viết rằng "ChatGPT tốt đến đáng
sợ. Cái ngày AI mạnh mẽ đến nguy hiểm đối với chúng ta không xa đâu".
Phản ứng tiêu cực
Nhiều ký giả có nhận xét về xu hướng bị ảo giác của ChatGPT (đưa ra câu trả lời sai nhưng
lại rất tự tin).
Vào tháng 12 năm 2022, website hỏi đáp Stack Overflow đã cấm sử dụng ChatGPT để tạo
câu trả lời cho các câu hỏi, với lý do các câu trả lời từ ChatGPT có tính chất thường hay bị
sai mặc dù trông rất đúng.
Nhà kinh tế Tyler Cowen bày tỏ lo ngại về ảnh hưởng của nó đối với nền dân chủ, dẫn ra
viễn cảnh người ta viết bình luận tự động nhằm tác động lên quá trình quyết định các quy
định mới. The Guardian có đặt câu hỏi là sau khi ChatGPT được phát hành thì liệu ta có
thể thực sự tin tưởng vào bất kỳ nội dụng nào trên Internet hay không và kêu gọi chính phủ
điều tiết.
Axe Sharma của Bleeping Computer có ghi rằng ChatGPT có khả năng viết phần mềm độc
hại và email lừa đảo. CEO của OpenAI, người tạo ra ChatGPT, Sam Altman, có viết rằng
phần mềm tiên tiến có thể dấy lên "(ví dụ như) rủi ro an ninh mạng rất lớn" và cũng tiếp
tục dự đoán là "chúng ta có thể đạt được 'trí tuệ nhân tạo tổng quát' đích thực trong thập kỷ
tới, vì vậy chúng ta cũng phải cực kỳ nghiêm túc mà nhận lấy rủi ro về điều đó".
https://www.youtube.com/watch?v=0iiRwlUaBIA
https://www.youtube.com/watch?v=3exOuPdm57E

• Mô hình hóa ngôn ngữ: Xác định phân phối xác suất của một chuỗi các từ trong
ngôn ngữ của con người, trong đó việc biết tiếp từ tiếp theo có khả năng xảy ra nhất
trong chuỗi là đặc biệt quan trọng đối với việc tạo ngôn ngữ- dự đoán từ hoặc câu
tiếp theo.

25
• Phân tích cú pháp phụ thuộc: tách một câu thành một cây phụ thuộc thể hiện cấu
trúc ngữ pháp của nó và mối quan hệ giữa các từ.
• Nhận dạng tiếng nói có một số ứng dụng chính sau:
+ Trong đời sống xã hội: nhận dạng tiếng nói phục vụ chuyển đổi âm thanh trực tiếp
cho truyền hình có phụ đề, bóc băng các tệp âm thanh, nhận dạng trực tiếp trong cuộc
họp/phỏng vấn (trong các phòng họp không giấy), nhập liệu bằng lời nói…
+ Trong ngành công nghiệp ô tô: nhận dạng tiếng nói được ứng dụng để xây dựng
các mô đun tương tác giữa người lái xe với ô tô. Người lái xe có thể tắt mở hệ thống âm
thanh, điều chỉnh âm lượng, hoặc ra lệnh tìm đích đến cho hệ thống dẫn đường bằng giọng
nói.
+ Trong lĩnh vực y tế: Nhận dạng tiếng nói có thể được ứng dụng để tạo ra các hệ
thống nhập hoặc tìm kiếm thông tin bệnh nhân tự động. Người bệnh có thể trả lời các câu
hỏi trên một mẫu phiếu khai đã được tích hợp vào một hệ thống nhận dạng tiếng nói khi
khám bệnh, hệ thống này sẽ nhận dạng tín hiệu tiếng nói của người bệnh và dịch nó sang
dạng văn bản để điền tự động vào mẫu văn bản trên máy tính. Nhận dạng tiếng nói còn
được ứng dụng để ghi chép và tóm tắt tự động các đánh giá, nhận xét hoặc các lời khuyên
của bác sỹ vào đơn thuốc của bênh nhân.
+ Đối với các phi công lái máy bay chiến đấu. Nhận dạng tiếng nói có thể được ứng
dụng để xây dựng các hệ thống tương tác bằng tiếng nói hỗ trợ phi công như: thiết lập tần
số radio; chỉ huy hệ thống lái tự động; thiết lập tọa độ và thông số vũ khí; kiểm soát hiển
thị chuyến bay.
+ Đối với máy bay trực thăng: nhận dạng tiếng nói được ứng dụng để xây dựng các
hệ thống hỗ trợ liên lạc, có chức năng xử lý và nhận dạng tiếng nói của phi công trong môi
trường ồn nhằm nâng cao độ chính xác của thông tin trong trường hợp con người gặp khó
khăn trong việc nghe thông tin từ phi công.
+ Trong viễn thông và giải trí: Trong viễn thông nhận dạng tiếng nói được áp dụng
để xây dựng các tổng đài trả lời tự động bằng cách nhận dạng và phân loại câu hỏi của
người gọi, hoặc các hệ thống dịch vụ tự động. Trong giải trí nhận dạng tiếng nói được áp
dụng để tạo ra các thiết bị cho phép người điều khiển sử dụng tiếng nói để tương tác với
thiết bị.

26
+ Trong giáo dục: Các hệ thống nhận dạng có thể được dùng để đánh giá độ phát
âm chính xác của người học.
+ Trong giao tiếp: xây dựng các hệ thống dịch máy tự động

+ Trợ lý ảo ( Virtual Assistant)


Thường bao gồm các thành phần:
Nhận dạng tiếng nói
Phân tích ngôn ngữ
Xử lý hội thoại
Truy tìm thông tin
Chuyển từ văn bản sang lời nói
Một số ứng dụng: Google now, Alexa, Siri, Cortana.

27
Đồ thị tri thức

• Phân tích mạng xã hội truyền thông (Social media analysis)


• Nhận diện tin thật, tin giả (Fake News Recognition)
• Hiểu trực quan (Visual understanding): từ một bức tranh, video mô tả bằng text

28
Hoặc từ text chuyển sang ảnh.
Công cụ giải quyết các bài toán NLP

1. NLTK

Natural Language ToolKit (NLTK) là một trong những nền tảng hàng đầu để xây dựng các
chương trình Python xử lý và phân tích dữ liệu ngôn ngữ của con người. NLTK cung cấp giao
diện dễ sử dụng cho hơn 50 tài nguyên ngữ liệu và từ vựng như mạng từ, cùng với một bộ thư
viện xử lý văn bản để phân loại, mã hóa, tạo gốc, gắn thẻ, phân tích cú pháp và lập luận ngữ
nghĩa. Phát hành lần đầu năm 2001.

2. spaCy

Bản phát hành đầu tiên của SpaCy là vào tháng 2 năm 2015, khiến nó trở thành một trong những
framework nguồn mở gần đây dành cho các ứng dụng Xử lý ngôn ngữ tự nhiên viết bằng 2 ngôn
Python và Cython.

spaCy tập trung vào việc cung cấp phần mềm để sử dụng trong sản xuất. spaCy cũng hỗ
trợ các quy trình làm việc học sâu cho phép nối kết với các mô hình thống kê được huấn
luyện bởi các thư viện máy học phổ biến như TensorFlow, PyTorch hay Apache
MXNet thông qua thư viện học máy Thinc của riêng nó.[7][8] Sử dụng Thinc làm chương
trình phụ trợ (backend) của nó, spaCy làm nổi bật các mô hình mạng thần kinh tích
chập cho các tác vụ gán nhãn từ loại (part-of-speech tagging), cây phân tích cú pháp, phân
loại tài liệu và nhận dạng thực thể có tên (NER). Các mô hình thống kê mạng thần kinh
nhân tạo được tích hợp trước để thực hiện các tác vụ này sẵn có ở 17 ngôn ngữ, bao
gồm tiếng Anh, Bồ Đào Nha, Tây Ban Nha, Nga, Trung Quốc, và cũng có một mô hình
NER đa ngữ. Thêm nữa, spaCy cũng hỗ trợ token hóa cho hơn 65 ngôn ngữ, cho phép
người dùng huấn luyện mô hình tùy chỉnh trên các tập dữ liệu của riêng mình.[9]

Stanford CoreNLP

CoreNLP là một thư viện cực kỳ phổ biến cho các tác vụ Xử lý Ngôn ngữ tự nhiên, được xây
dựng bởi cộng đồng NLP Stanford. Ngược lại với NLTK và SpaCy, được viết bằng Python hoặc
Cython tương ứng, CoreNLP bằng Java – có nghĩa là máy tính của bạn sẽ cần phải có JDK
(nhưng nó có API cho hầu hết các ngôn ngữ lập trình).

Trên trang chủ CoreNLP, các nhà phát triển mô tả CoreNLP là “nơi duy nhất để xử lý ngôn ngữ
tự nhiên trong Java! CoreNLP cho phép người dùng lấy các chú thích ngôn ngữ cho văn bản,

29
bao gồm mã thông báo và ranh giới câu, các phần của giọng nói, các thực thể được đặt tên, giá
trị số và thời gian, trình phân tích cú pháp phụ thuộc và ý kiến chính, tình cảm, phân bổ trích dẫn
và quan hệ. CoreNLP hiện hỗ trợ 6 ngôn ngữ: Ả Rập, Trung Quốc, Anh, Pháp, Đức và Tây Ban
Nha.

Một trong những ưu điểm chính của CoreNLP là nó có khả năng mở rộng rất cao, trở thành lựa
chọn phù hợp cho các tác vụ phức tạp. Một yếu tố khác là CoreNLP được xây dựng chú trọng
đến tốc độ – nó được tối ưu hóa để vận hành cực kỳ nhanh.

4. Gensim

Gensim là một framework Python mã nguồn mở chuyên dụng, được sử dụng để biểu diễn tài
liệu dưới dạng vectơ ngữ nghĩa theo những cách hiệu quả nhất và dễ dàng nhất có thể. Các tác
giả đã thiết kế Gensim để xử lý văn bản thô, không có cấu trúc bằng cách sử dụng nhiều thuật
toán học máy – vì vậy sử dụng Gensim để tiếp cận các tác vụ như Lập mô hình chủ đề là một ý
tưởng tốt. Thêm vào đó, Gensim làm rất tốt việc xác định các điểm tương đồng trong văn bản,
lập chỉ mục văn bản và điều hướng các tài liệu khác nhau.

Nhóm tác giả cho biết Gensim được xây dựng vì 3 lý do:

• Tính thực tiễn – tập trung vào các thuật toán đã được chứng minh, đã được kiểm chứng
để giải quyết các vấn đề thực tế của ngành. Gensim tập trung nhiều hơn vào kỹ thuật, ít
hơn về học thuật.
• Độc lập đối với bộ nhớ – không cần toàn bộ kho dữ liệu đào tạo phải nằm hoàn toàn
trong RAM cùng một lúc. Nó có thể xử lý kho dữ liệu lớn, quy mô web bằng cách sử
dụng luồng dữ liệu.
• Hiệu suất – triển khai tối ưu hóa cao các thuật toán không gian vectơ phổ biến sử dụng
C, BLAS và ánh xạ bộ nhớ

5. TensorFlow & PyTorch

Tensorflow là phiên bản cũ hơn và được phát triển bởi nhóm Brain của Google. Mặt khác,
Pytorch là một thư viện mã nguồn mở dựa trên thư viện Torch và được phát triển chủ yếu bởi
phòng thí nghiệm Nghiên cứu AI (FAIR) của Facebook.

6. Hugging Face

30
Hugging Face, Inc. là một công ty của Mỹ phát triển các công cụ xây dựng ứng dụng bằng
máy học. Nó đáng chú ý nhất với thư viện Transformers được xây dựng cho các ứng dụng
xử lý ngôn ngữ tự nhiên và nền tảng của nó cho phép người dùng chia sẻ các mô hình học
máy và bộ dữ liệu. Hugging Face Python cung cấp quyền truy cập vào một số mô hình được
đào tạo trước cho nhiều tác vụ NLP khác nhau. Ngay cả những công ty như Amazon, Google
AI và Facebook AI cũng tận dụng gói này.

Kết lại, có rất nhiều công cụ tuyệt vời mà các Nhà khoa học dữ liệu, nhóm AI và doanh nghiệp
có thể sử dụng để thực hiện các dự án NLP dễ dàng hơn. Điều quan trọng là bạn tìm thấy công
cụ phù hợp nhất với nhu cầu của mình và có các tích hợp bạn cần để đưa dự án của mình về
đích.

Câu hỏi
Sự khác nhau giữa ngôn ngữ máy và ngôn ngữ tự nhiên

31
Chương 2. Tách từ
Mục đích: xác định ranh giới của các từ trong câu.

• Là bước xử lý quan trọng đối với các hệ thống XLNNTN, đặc biệt là đối với các
ngôn ngữ đơn lập, ví dụ: âm tiết Trung Quốc, âm tiết Nhật, âm tiết Thái, và tiếng
Việt.
• Với các ngôn ngữ đơn lập, một từ có thể có một hoặc nhiều âm tiết.
• Vấn đề của bài toán tách từ là khử được sự nhập nhằng trong ranh giới từ.
Tiếng Việt là một ngôn ngữ đơn lập, đặc điểm này bao quát toàn bộ tiếng Việt
về mặt ngữ âm, ngữ nghĩa và ngữ pháp
2.1. Định nghĩa từ
2.1.1. Tiếng và đặc điểm của tiếng
Trong tiếng Việt, tiếng là một thành phần khá quan trọng. Trong ký pháp, mỗi tiếng
đứng độc lập và có thể phát hiện được ngay các tiếng trong cả tiếng nói cũng như văn bản.
Tiếng và giá trị ngữ nghĩa
Nếu xét về mặt ngữ nghĩa thì tiếng là đơn vị nhỏ nhất có thể có nghĩa. Tuy nhiên
cũng có những tiếng không có nghĩa (ví dụ như “ạ”, “ứ”,…). Có thể phân biệt các tiếng
như sau:
+ Các tiếng tự nó có nghĩa (Ví dụ như chuông, kính, bút,…) có thể được dùng để
gọi tên sự vật, hiện tượng, có thể được dùng như một từ.
+ Các tiếng có nghĩa nhưng không dùng để gọi tên sự vật, hiện tượng (ví dụ như
thủy, thực…) mà chỉ được dung với tư cách là bộ phận để cấu thành nên từ có nghĩa ở bậc
cao hơn. Ta không thể nói “tôi thực” mà chỉ có thể nói “tôi ăn”, nhưng có những từ như
“thực phẩm”.
+ Các tiếng bản thân không hề có nghĩa mà chỉ dùng để kết hợp tạo thành nghĩa cho
đơn vị trực tiếp cao hơn, đó là từ. Ví dụ như các tiếng “lãng, đãng” tự nó không có nghĩa
nhưng có thể tạo thành từ có nghĩa là “lãng đãng”
Tiếng và giá trị ngữ pháp
Về việc dùng tiếng để cấu tạo từ, có hai trường hợp như sau:
+ Từ một tiếng gọi là từ đơn: Trường hợp này một từ chỉ có duy nhất một tiếng

32
Ví dụ: Như ông, bà, cây, đá…các tiếng (đóng vai trò là từ) là một bộ phận cấu thành
nên câu. Từ đơn âm tiết chiếm khoảng 15% từ vựng thông dụng
+ Từ hai tiếng trở nên (từ ghép): Trường hợp này một từ có thể có hai hay nhiều
tiếng trở nên kết hợp với nhau, gắn bó tương đối chặt chẽ.
Ví dụ: xã hội, an ninh, hợp tác xã, chủ tịch,…
Việc nghiên cứu cấu trúc từ (nhiều tiếng hay một tiếng) đóng vai trò rất quan trọng
trong quá trình nghiên cứu và cài đặt ứng dụng tách từ tiếng Việt. Từ hai âm tiết chiếm
khoảng 70% từ vựng thông dụng

• Từ ghép: tổ hợp (ghép) các âm tiết lại, giữa các âm tiết đó có quan hệ về nghĩa với
nhau.
+ Từ ghép đẳng lập. các thành tố cấu tạo có quan hệ bình đẳng với nhau về nghĩa.
Ví dụ: chợ búa, bếp núc
+ Từ ghép chính phụ. các thành tố cấu tạo này phụ thuộc vào thành tố cấu tạo kia.
Thành tố phụ có vai trò phân loại, chuyên biệt hoá và sắc thái hoá cho thành tố chính.
Ví dụ: tàu hoả, đường sắt, xấu bụng, tốt mã, ngay đơ, thằng tắp, sưng vù...
2.1.2 Từ và các đặc điểm của từ tiếng Việt
Có rất nhiều quan niệm về từ trong tiếng Việt, từ nhiều quan niệm về từ tiếng Việt
khác nhau đó chúng ta có thể thấy đặc trưng cơ bản của “từ” là sự hoàn chỉnh về mặt nội
dung, từ là đơn vị nhỏ nhất để đặt câu. Người ta dùng “từ” kết hợp thành câu chứ không
phải dùng “tiếng” do đó quá trình lập chỉ mục bằng cách tách câu thành các “từ” cho kết
quả tốt hơn là tách câu bằng “tiếng”.
*Khái niệm từ
Trong tiếng Việt, cũng có nhiều định nghĩa về từ:
Theo Trương Văn Trình và Nguyễn Hiến Lê thì: ”Từ là âm nghĩa, dùng trong ngôn
ngữ để diễn tả một ý đơn giản nhất, nghĩa là ý không thể phân tích ra được”.
Nguyễn Kim Thản thì định nghĩa: “Từ là đơn vị cơ bản của ngôn ngữ, có thể tách
khỏi các đơn vị khác của lời nói để vận dụng một cách độc lập và là một khối hoàn chỉnh
về ý nghĩa (từ vựng hay ngữ pháp) và cấu tạo”.

33
Theo Hồ Lê: “Từ là đơn vị ngôn ngữ có chức năng định danh phi liên kết hiện thực,
hoặc chức năng mô phỏng tiếng động, có khả năng kết hợp tự do, có tính vững chắc về cấu
tạo và tính nhất thể về ý nghĩa”
*Các đặc điểm của từ tiếng Việt
Từ và tiếng là hai đơn vị khác nhau nhưng đều rất quan trọng trong ngữ pháp tiếng
Việt. Do đó ta phải xét đi xét các đặc điểm của từ.
+ Từ là đơn vị nhỏ nhất để đặt câu: từ có thể gồm có một tiếng nhưng cũng có thể
gồm hai hay nhiều tiếng, tuy nhiên từ là đơn vị nhỏ nhất để đặt câu. Một lưu ý là để đặt câu
là để viết, để nói, để suy nghĩ thì chúng ta dùng từ chứ không phải là dùng tiếng. Do đó bất
kỳ một nghiên cứu về tiếng Việt trên máy tính nào cũng phải quan tâm đến việc ghép các
tiếng thành từ.
Ví dụ: Cơ quan này rất lớn, Người này rất giỏi.
+ Từ có nghĩa hoàn chỉnh và cấu tạo ổn định: Ta có thể nhận ra điều này ở các từ
tiếng Việt một tiếng, còn đối với những từ nhiều tiếng thì đó là những đặc điểm xác định
lẫn nhau. Cấu tạo ổn định dẫn đến nghĩa hoàn chỉnh và ngược lại. Ví dụ như từ hai tiếng
“cây cối” có cấu tạo ổn định và nghĩa hoàn chỉnh, nhưng cụm không phải là từ như “cây
và cối” không có cấu tạo ổn định và nghĩa hoàn chỉnh.
Ví dụ: “Trung tâm dữ liệu Tin học hoạt động rất hiệu quả”.
Rõ ràng, các khoảng trống đánh dấu sự phân biệt các tiếng chứ không phải là các
từ, trong khi đối tượng nghiên cứu của chúng ta là các từ. Điều này hoàn toàn khác so với
các ngôn ngữ phổ dụng như Anh, Pháp, trong các ngôn ngữ này, các khoảng trống đánh
dấu sự tách rời các từ. Chính nhận xét trên đã nêu bật được khó khăn lớn nhất khi tiến hành
nghiên cứu các câu tiếng Việt là làm thế nào để phát hiện được các từ trong câu tiếng Việt?
2.1.3 Câu và đặc điểm của câu
Trong ngữ pháp tiếng Việt, từ và câu là những đơn vị ngữ pháp rất quan trọng. Đối
với con người, từ được coi như sẵn có trong kho từ vựng được tích lũy trong quá trình sống.
Còn có thể hiểu, giao tiếp…thì con người phải dùng đến câu. Trong ngôn ngữ, câu là đơn
vị ở bậc cao hơn cả. Nói gì, viết gì cũng phải thành câu.

34
+ Câu có ý nghĩa hoàn chỉnh: Tính hoàn chỉnh về nghĩa của câu là tính hoàn chỉnh
của cả một quá trình tư duy, quá trình thông báo diễn ra trong một hoàn cảnh nhất định.
Trong một câu bao giờ cũng có hai thành phần, một thành phần nêu sự vật hiện tượng và
một thành phần giải thích của sự vật hiện tượng đó.
+Câu có cấu tạo đa dạng: Câu có dạng đơn giản là câu đơn, và còn có những cấu
trúc phức tạp hơn gọi là câu ghép. Xét về mặt ngữ nghĩa, câu đơn có nhiều dạng khác nhau,
biểu lộ những ý nghĩa, trạng thái, nội dung cần thông báo khác nhau. Tính chất đa dạng
không trái ngược với tính chất chặt chẽ của câu về mặt ngữ pháp. Nói chung, cấu tạo ngữ
pháp có thay đổi thì nghĩa cũng có thay đổi và ngược lại.
2.1.4 Đặc trưng và một số khó khăn riêng trong xử lý ngôn ngữ tiếng Việt
a) Từ tiếng Việt
Một vấn đề khó khăn đầu tiên trong xử lý tự động tiếng Việt là việc định nghĩa từ
trong tiếng Việt.
Ví dụ:
Từ “học” là một từ gồm một tiếng
Từ “học sinh” là một từ gồm hai tiếng
Cụm từ “khoa học tự nhiên” gồm 2 từ hay 4 tiếng
Trong các hệ thống tìm kiếm thông tin văn bản trên các tiếng Châu Âu, người ta có
thể đơn giản lấy xác định các từ nhờ vào các khoảng trắng phân cách từ và chọn các từ đặc
trưng cho nội dung văn bản (dựa vào tần suất xuất hiện của từ) làm chỉ mục mà hiệu quả
tìm kiếm vẫn chấp nhận được. Đối với tiếng Việt chúng ta không thể làm tương tự bởi nếu
chúng ta xác định từ chỉ dựa vào các khoảng trắng phân cách thì chúng ta có thể chỉ nhận
được các tiếng vô nghĩa và do đó độ chính xác của hệ thống sẽ rất thấp. Theo các nhà ngôn
ngữ học thì tiếng Việt có đến 80% là các từ 2 tiếng.
Một đặc điểm của tiếng Việt là từ tiếng Việt không có biến thể về hình thái học do
đó công đoạn chuẩn hóa về hình thái học là không hiệu quả đối với tiếng Việt. Dĩ nhiên
tiếng Việt cũng có một số hình thức biến thể về hình thái học như trường hợp thêm tiếng
“sự” trước một động từ để biến nó thành danh từ tương đương.

35
Ví dụ như động từ “lựa chọn” và danh từ “sự lựa chọn” hay việc thêm tiếng “hóa”
sau một danh từ để biến nó thành động từ tương đương như danh từ “tin học” và động từ
“tin học hóa”.

b) Từ loại
Vấn đề xác định từ loại cho từ trong tiếng Việt phức tạp hơn các tiếng châu Âu do
chúng ta không thể dựa vào các đặc tính đặc biệt về hình thái học của từ để xác định loại
từ.
Ví dụ: Trong tiếng Anh chúng ta có thể xác định ngay một từ là tính từ nếu có có
phần cuối là ‘able’. Đối với tiếng Việt từ loại chỉ có thể xác định được tùy vào ngữ cảnh.
Ví dụ, chúng ta xem xét các câu sau:
(1) Thành công của chương trình mục tiêu quốc gia xây dựng nông thôn
mới đã tạo tiếng vang lớn
(2) Anh ấy rất thành công trong nghiên cứu khoa học
(3) Kỳ họp HĐND tỉnh đã thành công
Trong câu (1) từ ‘thành công’ là một danh từ, trong câu (2) từ ‘thành công’ là một
động từ và trong câu (3) từ ‘thành công’ lại là một tính từ
c) Cụm danh từ
Một cụm danh từ tiếng Việt gồm 3 phần: Phần chính mang ý nghĩa chính của cụm
danh từ, phần phụ trước gồm các chỉ định từ và phần phụ sau gồm các từ bổ nghĩa cho
phần chính.
Ví dụ: “Tất cả các cuốn sách tin học”
Phần phụ trước: tất cả các
Phần chính: cuốn sách
Phần phụ sau: tin học
Phần chính là một danh từ, phần phụ trước thường là các chỉ định từ, phần phụ sau
thì rất phức tạp về từ loại, nó có thể là danh từ, tính từ, động từ,…
d) Từ vay mượn

36
Bên cạnh các từ thuần Việt, tiếng Việt có rất nhiều từ vay mượn từ các ngôn ngữ
khác để tạo ra từ mới cũng là yếu tố khiến ngôn ngữ tiếng Việt trở nên phức tạp, ví dụ: bắt
nguồn từ tiếng Anh Valentine, người Việt có hai cách nói là va-len-tin và va-len-thai, hay
một vài từ mượn tiếng Pháp như cà vạt hay ca ra vát, rượu sâm banh hay rượu sâm panh,
tua vít hay tuốc nơ vít…
● Từ chuyên ngành được lấy nguyên gốc từ tiếng nước ngoài hoặc có thể được phiên
âm theo tiếng Viết
● Ví dụ: Cây (máy tính, xuất phát từ case trong tiếng Anh), web, fan, data, file...
e) Từ địa phương
Tiếng Việt cũng có các từ địa phương-là các từ được sử dụng hạn chế ở một số vùng
miền (Nghệ An, Hà Tĩnh, Quảng Ngãi, Huế,…) rất khó hiểu để xử lý, ví dụ: má (mẹ), con
tru (con trâu), mai mốt (về sau), nỏ (không)…
f) Từ đồng âm
Hiện tượng đồng âm khác nghĩa trong tiếng Việt phổ biến hơn các ngôn ngữ Ấn-
Âu, ví dụ: đường có thể là con đường hoặc đường để ăn, búa có thể là một loại dụng cụ
hoặc chợ búa hay hóc búa….
g) Từ đồng nghĩa
Trong tiếng Việt cũng xuất hiện rất nhiều từ đồng nghĩa- là những từ có nghĩa giống
nhau hoặc gần giống nhau, ví dụ: siêng năng-chăm chỉ-cần cù, hiền lành-hiền hậu-hiền từ-
nhân hậu-nhân từ,…tuy nhiên, có những từ đồng nghĩa nhưng cách dùng khác nhau tùy
theo ngữ cảnh, ví dụ: hội thao, hội thảo, hội nghị, hội đàm,…
h) Từ nhiều nghĩa
Từ nhiều nghĩa trong tiếng Việt là từ có một nghĩa gốc và nhiều nghĩa chuyển, ví
dụ: từ ăn có ăn cơm là nghĩa gốc, nhưng nhiều nghĩa chuyển khác như ăn ảnh, ăn cưới, ăn
khách,…Hay, từ con có con trâu là nghĩa gốc, ngoài ra còn có con đường, con dao, con
mắt, con cái,…
2.2. Từ vựng
Từ vựng hay vốn từ, kho từ vựng của một người là tập hợp các từ trong một ngôn
ngữ mà người đó quen thuộc (biết tới). Vốn từ vựng thường xuyên tăng lên theo tuổi tác,

37
và là công cụ cơ bản và hữu dụng trong giao tiếp và thu nhận kiến thức. Người ta phân biệt
hai loại kho từ vựng là chủ động và bị động. Kho từ vựng chủ động bao gồm các từ được
sử dụng trong văn nói và văn viết. Kho từ vựng bị động bao gồm các từ mà một người có
thể nhận ra lúc đọc hoặc lúc nghe, nhưng không sử dụng chúng trong văn nói hoặc viết.
Kho từ vựng bị động nhiều hơn kho từ vựng chủ động một vài lần.
Từ điển VLSP
● Một sản phẩm của dự án quốc gia về dữ liệu ngôn ngữ (http://vlsp.org.vn/)
VLSP: Association for Vietnamese Language and Speech Processing (CLB Xử lý
ngôn ngữ và tiếng nói tiếng Việt – Chị hội của Hội Tin học Việt Nam)
● Từ điển chứa khoảng 40,000 từ được sử dụng thông dụng trong văn bản tiếng Việt
Tiếng Việt là ngôn ngữ không biến hình
􀁺 Từ điển từ tiếng Việt (Vietlex): >40.000 từ, trong đó:
􀁺 15.69% các từ trong từ điển là từ đơn
􀁺 70.72% từ ghép có 2 âm tiết
􀁺 13.59% từ ghép ≥ 3 âm tiết
􀁺 1.04% từ ghép ≥ 4 âm tiết

38
http://tratu.soha.vn/

2.3. Tách từ
Việc tách từ (word segmentation) nhằm mục đích tách một câu ngôn ngữ tự nhiên
thành các từ, cũng có thể hiểu đơn giản, tách từ là quá trình xác định các từ đơn, từ ghép,..có
trong câu
Ví dụ
“Tách từ là bài toán nhận diện từ trong văn bản tiếng Việt”

39
→ “Tách_từ là bài_toán nhận_diện từ trong văn_bản tiếng_Việt .”
Các ngôn ngữ thuộc vùng Đông Á theo loại hình ngôn ngữ đơn lập, ví dụ tiếng
Trung Quốc, tiếng Nhật, tiếng Thái và tiếng Việt sẽ thường cần khôi phục các ranh giới
của từ trước khi xử lý thêm các tác vụ ngôn ngữ. Với các ngôn ngữ thuộc loại hình này,
ranh giới từ không chỉ đơn giản là những khoảng trằng như trong các ngôn ngữ thuộc loại
hòa kết như tiếng Anh…, mà có sự liên hệ chặt chẽ giữa các tiếng với nhau, một từ có thể
cấu tạo bởi một hoặc nhiều tiếng. Vì vậy đối với các ngôn ngữ thuộc vùng Đông Á, vấn đề
của bài toán tách từ là khử được sự nhập nhằng trong ranh giới từ.
Một cách tổng quát có thể thấy rằng bài toán tách từ có 3 phương pháp tiếp cận
chính: tiếp cận dựa vào từ điển (dictionary-based); tiếp cận dựa vào thống kê (statistic-
based) và phương pháp lai (hybrid).
Các phương pháp được sử dụng

• So khớp từ dài nhất (Longest Matching)


• So khớp cực đại (Maximum Matching)
• Mô hình Markov ẩn (Hidden Markov Models- HMM)
• Học dựa trên sự cải biến (Transformation-based Learning – TBL)
• Chuyển đổi trạng thái trọng số hữu hạn (Weighted Finite State Transducer – WFST)
• Độ hỗn loạn cực đại (Maximum Entropy – ME)
• Máy học sử dụng vectơ hỗ trợ (Support Vector Machines)
• Trường xác xuất có điều kiện (CRFs)
Ngoài ra còn có thể kết hợp những phương pháp trên
2.3.1 Tiếp cận dựa trên từ điển
Ý tưởng chính của phương pháp tách từ dựa trên từ điển là từ một từ điển sẵn có,
thực hiện so khớp từng âm tiết trong văn bản với các từ có trong từ điển. Tùy vào cách thức
so khớp mà ta có các phương pháp khác nhau như: so khớp từ dài nhất (longest matching),
so khớp từ ngắn nhất (short matching), so khớp chồng lấp (overlap matching) và so khớp
cực đại (maximum matching). Độ chính xác của phương pháp dựa trên từ điển phụ thuộc
rất lớn vào kích thước từ điển được xây dựng. Với đặc điểm là không cần phải có bước
huấn luyện nên thời gian xử lý của phương pháp này tương đối nhanh, đơn giản và dễ hiểu.
Tuy nhiên, phương pháp này sẽ khó có thể xử lý được các tình huống nhập nhằng cũng

40
như xử lý tình huống xuất hiện từ mới không tồn tại trong từ điển. Hai phương pháp thường
được sử dụng của tiếp cận từ điển là phương pháp so khớp từ dài nhất và phương pháp so
khớp cực đại.
a) Thuật toán so khớp từ dài nhất
● Yêu cầu:
Từ điển
Chuỗi đầu vào đã tách các dấu câu và âm tiết
● Tư tưởng: Thuật toán tham lam
Đi từ trái sang phải; Lấy các từ dài nhất có thể; Dừng lại khi duyệt hết
Độ phức tạp tính toán: O(n . V)
n: Số âm tiết trong chuỗi
V: Số từ trong từ điển

● VD1:

41
“thời khóa biểu đang được cập nhật”
→ “thời_khóa_biểu đang được cập_nhật”
● VD2:
“môn học xử lý ngôn ngữ tự nhiên”
→ “môn_học xử_lý ngôn_ngữ tự_nhiên”
● VD3:
“con ngựa đá con ngựa đá”
→ “con_ngựa đá con_ngựa đá”
VD4:
“học sinh học sinh vật học”
→ “học_sinh học_sinh vật học”
Với ví dụ 4, phương pháp so khớp từ dài nhất không đem lại kết quả như mong
muốn.
b) Phương pháp so khớp cực đại
Ứng với mỗi câu dữ liệu đầu vào, tìm tất cả các trường hợp mà các âm tiết có thể
kết hợp lại để tạo nên các từ có ý nghĩa. Ứng với mỗi loại ngôn ngữ khác nhau thì sự lựa
chọn các nhóm âm tiết này có thể khác nhau. Phương pháp này là so khớp toàn diện cho
một câu thay vì so khớp cục bộ âm tiết đang được xét. Sau đó chọn mẫu có ít từ nhất.
Với ví dụ: “Học sinh học sinh vật học” các trường hợp kết hợp của các âm tiết có
thể có “sinh vật học”, “học sinh”, “học”, từ được tách trong câu sẽ chính xác hơn phương
pháp so khớp từ dài nhất.
Tuy nhiên, khi các lựa chọn thay thế có cùng số lượng từ, thuật toán không thể xác
định ứng cử viên tốt nhất, khi đó một số phương pháp kinh nghiệm khác phải được sử dụng
(Phương pháp kinh nghiệm thường sử dụng là giải thuật tham lam: thích từ dài nhất tại mỗi
điểm).
2.3.2 Tiếp cận dựa trên thống kê
a) Mô hình ngôn ngữ (Language model -LM)

42
Mô hình ngôn ngữ làm nhiệm vụ dự đoán từ nào tiếp theo.

Mô hình ngôn ngữ là một phân bố xác suất trên các tập văn bản, cung cấp các thông
tin về phân bố xác suất tiền nghiệm (prior distribution) p(w1...wn) với (w1, ..., wn ) là các từ
vựng trong bộ từ điển của một ngôn ngữ nhất định. Nói đơn giản, mô hình ngôn ngữ có thể
cho biết xác suất một câu (hoặc cụm từ) thuộc một ngôn ngữ là bao nhiêu.
Ví dụ: khi áp dụng mô hình ngôn ngữ cho tiếng Việt:
1. P[“hôm nay là thứ bảy”] = 0.001
2. P[“bảy thứ hôm là nay”] = 0
Ví dụ trên cho thấy, câu "hôm nay là thứ bảy" có khả năng là một câu tiếng Việt cao
hơn so với câu "bảy thứ hôm là nay".
Ý tưởng là xác suất của một câu càng cao có nghĩa là câu đó càng đúng trong ngôn
ngữ tự nhiên.
Xây dựng mô hình ngôn ngữ dựa trên thống kê (Statistical Languge Model) là việc
cố gắng đi xác định giá trị của p(w1...wn) từ tập dữ liệu thu thập được hoặc tính p(wn|w1...wn-
1).

Dùng grammar được không? Grammar chỉ kiểm tra được ngữ pháp. Thuật toán chạy
grammar khá là chậm. Mô hình ngôn ngữ thì còn bao gồm cả ngữ nghĩa nữa, cách tính xác
suất khá là nhanh.
Nhắc lại xác suất có điều kiện
P(B|A) =P(A,B)/P(A)
Viết lại P(A,B)=P(A)P(B|A)

43
Đối với nhiều biến
P(A,B,C,D)=P(A)P(B|A)P(C|A,B)P(D|A,B,C)
Tổng quát
P(x1,x2,x3,…,xn)=P(x1)P(x2|x1)P(x3|x1,x2)….P(xn|x1,x2,…,xn-1)
Ví dụ:

p(w1...wn) hiểu đơn giản là xác suất cụm từ w1...wn thuộc một ngôn ngữ cụ thể, mà
trong trường hợp với tập dữ liệu thu thập được, ta có thể tính

với N là số lượng cụm từ có độ dài N trong tập dữ liệu.


Hoặc trong trường hợp việc xác định N là khó thực hiện, chúng ta hoàn toàn có thể
sử dụng công thức xác suất có điều kiện trong trường hợp này:

Trong đó:

Count() tính trong kho ngữ liệu được cung cấp


Ví dụ:

44
Chúng ta không đủ dữ liệu để ước lượng như trên
Mô hình ngôn ngữ có nhiều hướng tiếp cận, nhưng chủ yếu được xây dựng theo mô
hình N-gram.
Chúng ta sử dụng mô hình ngôn ngữ hàng ngày

45
N-gram Language Models
Một n-gram là một đoạn gồm n từ liên tiếp.
• unigrams: “the”, “students”, “opened”, ”their”
• bigrams: “the students”, “students opened”, “opened their”
• trigrams: “the students opened”, “students opened their”
• 4-grams: “the students opened their”
Ý tưởng: Thu thập số liệu thống kê về mức độ thường xuyên của các n-gram khác
nhau và sử dụng chúng để dự đoán từ tiếp theo.
Việc tính giá trị p(w1...wn) trong trường hợp n vô hạn, thực tế là vô cùng khó khăn.
Để giảm độ phức tạp cho việc tính toán cũng như tạo ra một hướng đi khả thi để có thể mô
hình hóa ngôn ngữ, mô hình n-gram ra đời. Mô hình n-gram giả định việc mô hình ngôn
ngữ là một chuỗi Markov, thỏa mãn tính chất Markov. Chúng ta có tính chất Markov được
định nghĩa như sau:
Một quá trình mang tính ngẫu nhiên có thuộc tính Markov nếu phân bố xác suất có
điều kiện của các trạng thái tương lai của quá trình, khi biết trạng thái hiện tại, phụ thuộc
chỉ vào trạng thái hiện tại đó.
Hiểu một cách đơn giản, nếu giả định mô hình ngôn ngữ có thuộc tính Markov, ta có
thể tính xác suất p(w1...wn) theo công thức sau:
p(w1...wn)=p(w1)∗p(w2∣w1)∗p(w3∣w1w2)∗...∗p(wn∣w1...wn−1)=p(w1)∗p(w2∣w1
)∗p(w3∣w2)∗...∗p(wn∣wn−1)
Tư tưởng: thay vì tính xác suất một từ dựa vào tất cả các từ đứng trước nó, ta chỉ tính
dựa vào một vài từ trước từ đang xét mà thôi

46
Công thức trên là dạng giả định đơn giản nhất : mô hình ngôn ngữ là một mô hình
markov bậc 1. Khi giả định một mô hình ngôn ngữ là mô hình Markov bậc n-1, ta gọi các
mô hình đó là mô hình n-gram.

N gram: chuỗi token có độ dài là N


Chúng ta thường mở rộng tới trigrams, 4-grams, 5-grams.

47
Dữ liệu này có 9222 câu.

48
Cụm I want có 827, cụm want to có 608. Rất nhiều cụm là 0.

Bigram có thể tính xác suất của một câu bất kỳ hay một câu mà không có trong ngữ
liệu.

Nếu tính đúng thì xác suất câu này bằng 0 vì câu này không có trong ngữ liệu nhưng
ở đây sử dụng bigram thì tính gần đúng được xác suất như trên.

49
Token khác với word là bao gồm word và các dấu câu khác như chấm, phẩy,…
V là số từ vựng
Sinh ra 300000 bigram trên tổng số 844 triệu khả năng kết hợp bigrams.
99.96% biagram không có trong corpus. Rất nhiều số 0 trên bảng ước lượng biagram.
Xác suất thực sự có là rất ít.

Phương pháp đã sử dụng rất hiệu quả trong một thời gian dài
N-gram là mô hình ngôn ngữ đơn giản nhưng thể hiện được tri thức ngôn ngữ

Tri thức thế giới: người trung quốc nhiều hơn người anh
Cú pháp: spend không đi với want, to không đi với food
Diễn ngôn: I đứng ở đầu câu chiếm rất nhiều.
Nhược điểm: đối với những từ gần giống nhau như xe đạp, xe cộ thì mô hình này
vẫn coi là khác nhau.

50
Phương pháp chưa hiệu quả vì đôi khi một từ phụ thuộc vào nhiều từ đứng trước nó,
ví dụ 20 từ (long-distance dependencies).
Ví dụ: Chủ tịch quốc hội Vương Đình Huệ đi thăm Châu Âu và tham dự hội nghị
tại Bỉ, ông ta đã thảo luận về vấn đề tài trợ vắc xin
Với các mô hình 1-5 gram là không giải quyết được.
Tạo văn bản bằng Mô hình ngôn ngữ n-gram

“today the price of gold per ton , while production of shoe lasts and shoe industry ,
the bank intervened just after it considered and rejected an imf demand to rebuild depleted
european stocks , sept 30 end primary 76 cts a share.”
Ngạc nhiên về ngữ pháp!…nhưng không mạch lạc. Chúng ta cần xem xét nhiều hơn
ba từ cùng một lúc nếu chúng ta muốn mô hình hóa ngôn ngữ tốt. Nhưng việc tăng n làm
trầm trọng thêm vấn đề thưa, và tăng kích thước mô hình…
Tại sao chúng ta nên quan tâm đến Mô hình ngôn ngữ?

51
Mô hình ngôn ngữ là một nhiệm vụ chuẩn giúp chúng ta đo lường sự tiến bộ của
chúng ta trong việc hiểu ngôn ngữ.
Mô hình ngôn ngữ là một thành phần con của nhiều nhiệm vụ NLP, đặc biệt là
những nhiệm vụ liên quan đến tạo văn bản hoặc ước tính xác suất của văn bản:
• Nhận dạng giọng nói
• Nhận dạng chữ viết
• Sửa lỗi chính tả/ngữ pháp
• Xác định quyền tác giả
• Dịch máy
• Tóm tắt văn bản
• Hội thoại
• ….
Cách tiếp cận dựa trên thống kê có các phương pháp sau:

• Phương pháp tách từ sử dụng mô hình Markov ẩn


• Phương pháp tách từ sử dụng mô hình trường xác suất có điều kiện và độ hỗn loạn
cực đại
• Phương pháp tách từ sử dụng mô hình Pointwise
2.3.3. Biểu thức chính qui (Regular Expression)
Khi xử lý văn bản, chúng ta thường mong muốn chuẩn hóa và trích xuất một số
thông tin (như số, ngày tháng, v.v.) từ văn bản. Trên thực tế, văn bản có thể chứa những từ
và dấu câu không cần thiết, hoặc liên kết HTML cần được loại bỏ, hay số hoặc ngày tháng
cần được giảm tải, trích xuất.
Biểu thức chính quy (Regular Expression – Regex) giúp đơn giản hóa việc chuẩn
hóa văn bản cũng như trích xuất thông tin thông qua việc định nghĩa biểu thức chính quy
và sử dụng các hàm (có sẵn) để xử lý văn bản với biểu thức chính quy đó. Nói cách khác,
giúp các thao tác tìm kiếm, thay thế, loại bỏ kí tự trong văn bản trở nên dễ dàng, tạo điều
kiện cho việc xử lý và phân tích dữ liệu văn bản trở nên thuận tiện.

52
Biểu thức chính quy là một chuỗi các ký tự được định nghĩa theo một quy tắc định
trước nhằm xác định một tập hợp các chuỗi phù hợp với nó. Gọi tắt regex.
Các biểu thức chính quy có thể được ghép nối để tạo thành các biểu thức chính quy
mới. Nếu A và B là hai biểu thức chính quy thì AB cũng là 1 biểu thức chính quy và nếu
chuỗi a khớp với biểu thức A và một chuỗi b khác khớp với biểu thức B thì chuỗi ab sẽ
khớp với biểu thức AB. Do đó, các biểu thức phức tạp có thể được xây dựng từ nhiều biểu
thức đơn giản hơn.
Một số thuật ngữ cơ bản
\𝐰 đại diện cho bất kỳ ký tự chữ và số nào (bao gồm cả dấu gạch dưới)
\𝐝 đại diện cho bất kỳ chữ số nào
. đại diện cho bất kỳ ký tự nào (Ở đây không dùng với vai trò như một dấu chấm
câu)
𝐚𝐛𝐜 phù hợp với các ký tự abc trong một chuỗi
[𝐚𝐛𝐜] phù hợp với a hoặc b hoặc c (các ký tự trong dấu ngoặc vuông)
? đứng sau một ký tự cho biết rằng ký tự đó là tùy chọn
* đứng sau một ký tự cho biết nó có thể được lặp lại 0 hoặc nhiều lần
+ đứng sau một ký tự cho biết nó có thể được lặp lại 1 hoặc nhiều lần
\ được sử dụng để đánh dấu một chuỗi kí tự đặc biệt ví dụ “\d+” là chuỗi số
Các tình huống sử dụng Regex

1. Thời gian: ngày, tháng, năm

text = u'Ngày 14/12/1996 là ngày 14/12 của năm 1996. Tháng 12/2000 là tháng cuối cùng
của năm.'

datetime = '\d{1,2}\s?[:/-]\s?\d{1,2}\s?[:/-]\s?\d{4}' \

'|\d{1,2}\s?[:/-]\s?\d{4}' \

'|\d{1,2}\s?[:/-]\s?\d{1,2}' \

'|\d{4}'

53
import re

print re.findall(datetime, text)

Kết quả:
[u'14/12/1996', u'14/12', u'1996', u'12/2000']

2. Địa chỉ email

text = u'địa chỉ mail của mình là phamquang@gmail.com và


20172603@student.hust.edu.vn'

email = '[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+.[a-zA-Z0-9-.]+'

import re

print re.findall(email, text)

Kết quả:
[u'phamquang@gmail.com', u'20172603@student.hust.edu.vn']

3. link website

text = u'Đây là link bài viết mới nhất của mình trên viblo: https://viblo.asia/p/tro-chuyen-
voi-le-viet-quocquoc-le-chuyen-gia-tri-tue-nhan-tao-phia-sau-su-thanh-cong-cua-google-
automl-eW65GAW6ZDO'

url = 'https?:\/\/[^\s]*'

import re

print re.findall(url, text)

Kết quả:
[u'https://viblo.asia/p/tro-chuyen-voi-le-viet-quocquoc-le-chuyen-gia-tri-tue-nhan-tao-
phia-sau-su-thanh-cong-cua-google-automl-eW65GAW6ZDO']

4. Số thực

54
text = 'Mình nặng 70.5kg, nặng 175.8 cm.'

digit = '\d+[\.,]\d+'

import re

print re.findall(digit, text)

Kết quả:
['70.5', '175.8']

5. Phân số

text = u'đạt được kết quả PES1 22/100 điểm'

fraction = '\d+\/\d+'

import re

print re.findall(fraction, text)

Kết quả:
[u'22/100']

6. Chuẩn hóa tiền tệ

import re

text = u'mình có 2.000.000 yên trong tài khoản với hơn 2000$ tiền mặt mà k biết tiêu gì
nên đổi hơn 10 tỷ vnđ ra đốt chơi.'

moneytag = [u'k', u'đ', u'ngàn', u'nghìn', u'usd', u'tr', u'củ', u'triệu', u'yên', u'tỷ']

for money in moneytag:

text = re.sub(u'(^|\s)\d*([,.]?\d+)+\s*' + money, ' monney ', text)

text = re.sub('((^|\s)(\d+\s*\$)|((^|\s)\$\d+\s*))', ' monney ', text)

55
print text

Kết quả:
mình có monney trong tài khoản với hơn monney tiền mặt mà k biết tiêu gì nên đổi
hơn monney vnđ ra đốt chơi.

7. Chuẩn hóa láy âm tiết(thể hiện cảm xúc đặc biệt)

import re

text = u'Món này ngooon quá điiiiiiii!!!!!!!!!'

print re.sub(r'(\D)\1+', r'\1', text)

Kết quả:
Món này ngon quá đi!
Nhìn chung sử dụng biểu thức chính quy giúp ta dễ dàng hơn trong các xử lý cho
văn bản, tìm kiếm và trích rút thông tin một cách đơn giản và trực quan, xác thực dữ liệu
người dùng nhập vào đó đúng chuẩn mong muốn không, thay đổi một kiểu mẫu trong văn
bản lớn thành một mẫu khác,...
2.3.4 Automat hữu hạn
Automat hữu hạn
Một otomat hữu hạn (Finite Automata-FA) là một mô hình tính toán thực sự hữu
hạn với sự mô tả quá trình tính toán bởi các input (đầu vào) và các output (đầu ra). Tại mỗi
thời điểm, hệ thống có thể được xác định bởi một trong số các cấu hình nội tại, gọi là các
trạng thái (state status). Mỗi trạng thái của hệ thống thể hiện tóm tắt các thông tin liên quan
đến những input đã chuyển qua hệ thống, và xác định các trạng thái kế tiếp trên dãy input
tiếp theo.
Mỗi otomat hữu hạn có một số hữu hạn trạng thái được lưu ở bộ nhớ trong, tại mỗi
thời điểm i, nó ở một trong các trạng thái đó, chẳng hạn qi. Trạng thái qi+1 ở thời điểm sau
được xác định bởi qi và thông tin vào ai cho ở thời điểm i. Thông tin ra ở thời điểm i được
xác định bởi trạng thái qi (hay bởi cả ai và qi). Vì vậy, các otomat hữu hạn còn được gọi là
các “máy trạng thái”.

56
• Automat hữu hạn đơn định (Deterministic Finite Automat a– DFA)
• Automat hữu hạn không đơn định (Non deterministic Finite Automat a– NFA)
• Automat hữu hạn không đơn định, chấp nhận phép truyền rỗng (ε-NFA)
Định nghĩa otomat hữu hạn đơn định
Một otomat hữu hạn đơn định (Deterministic Finite Automata-DFA) là một bộ năm:

A = < Q, , , q0, F > trong đó:

Q là một tập hữu hạn khác rỗng, được gọi là tập các trạng thái (set of states);

 là một bảng chữ cái, được gọi là bảng chữ vào (input alphabet);

: D→ Q, là một ánh xạ từ D  Q ×  vào Q, được gọi là hàm chuyển trạng thái


(transition function);

q0  Q, được gọi là trạng thái khởi đầu (starting state);

F  Q được gọi là tập trạng thái kết thúc (final states).

Nếu D = Q × , tức là hàm hai biến (q, a) xác định với mọi cặp giá trị (q, a), với q
 Q, a   thì ta nói A là otomat đầy đủ, trái lại, nếu có những cặp giá trị (q, a) mà tại đó
hàm chuyển (q, a) không xác định, thì otomat A gọi là không đầy đủ. Sau này ta sẽ thấy
rằng mọi otomat hữu hạn đều đưa về được otomat hữu hạn đầy đủ tương đương.

Hoạt động của otomat hữu hạn đơn định A =< Q, , , q0, F > với một xâu vào  =
a1a2… an có thể được mô tả như sau:
Khi bắt đầu làm việc, otomat ở trạng thái khởi đầu q0 và đầu đọc đang nhìn vào ô
có ký hiệu a1. Tiếp theo, dưới tác động của ký hiệu vào a1, otomat chuyển từ trạng thái q0
về trạng thái mới q1 xác định bởi hàm chuyển, tức là (q0, a1) = q1 Q, và đầu đọc chuyển
sang phải một ô, tức là nhìn vào ô có ký hiệu a2. Sau đó otomat A có thể lại tiếp tục chuyển
từ trạng thái q1 nhờ hàm chuyển  về trạng thái mới q2 = (q1, a2). Quá trình đó sẽ tiếp tục
cho tới khi gặp một trong các tình huống sau:

a) Otomat A đọc hết xâu vào  và chuyển sang trạng thái qn, tức là A ở trạng thái
qn-1, đọc ký hiệu cuối cùng an và có (qn-1,an) = qn , khi đó nếu qn F, ta nói rằng A đoán
nhận xâu , trái lại nếu qn F thì ta nói otomat A không đoán nhận xâu .

57
b) Hoặc khi otomat A ở trạng thái qi nào đó, đọc đến ký hiệu aj của xâu vào, (j  n)
và hàm chuyển (qi, aj) không xác định, khi đó otomat A dừng, ta cũng nói A không đoán
nhận xâu .

Chú ý rằng nếu A là otomat đầy đủ thì tình huống a). luôn xảy ra, tức là xâu  luôn
được đọc hết, còn tình huống b). chỉ có thể xảy ra khi A là otomat không đầy đủ.

Hình dưới đây mô tả quá trình đoán nhận xâu  với tình huống otomat A đọc hết
xâu vào  và chuyển vể trạng thái qn. Khi đó nếu qn F, ta nói rằng A đoán nhận xâu ,
trái lại nếu qn F thì ta nói otomat A không đoán nhận xâu .

Biểu diễn otomat hữu hạn đơn định


Hàm chuyển trạng thái là một bộ phận quan trọng của một otomat hữu hạn đơn định.
Cho một otomat thực chất là cho hàm chuyển trạng thái của nó, có thể cho dưới dạng bảng
chuyển hoặc cho dưới dạng đồ thị chuyển. Ứng với mỗi cách cho hàm chuyển, ta có một
cách biểu diễn otomat.
Biểu diễn otomat bằng bảng chuyển trạng thái

Cho ôtômát A =< Q, , , q0, F > , với Q = {q0, q1, q2,…, qm} là tập trạng thái, và
bảng chữ cái  = {a1, a2,…, an}, khi đó hàm chuyển có thể cho bởi một bảng gồm m+1
hàng và n cột; trong đó ô (i, j) nằm trên dòng i cột j của bảng được ghi giá trị hàm chuyển
(qi,aj), và ô (i, j) là ô trống (hoặc ghi kí hiệu Ø) nếu (qi,aj) không xác định.
Cho bảng chuyển trạng thái, và chỉ rõ tập trạng thái kết thúc F, quy ước q0 là trạng
thái khởi đầu, ta sẽ hoàn toàn xác định được otomat A.
Bảng chuyển trạng thái của otomat A sẽ có dạng như sau

58
Biểu diễn otomat bằng đồ thị chuyển trạng thái

Cho otomat A =< Q, , , q0, F >. Hàm chuyển  có thể cho bằng một đa đồ thị có
hướng, có khuyên G, được gọi là đồ thị chuyển trạng thái (hay đồ thị chuyển) của otomat
A. Tập đỉnh của G được gán nhãn bởi các phần tử thuộc Q, còn các cung được gán nhãn
bởi các phần tử thuộc , tức là nếu a và từ trạng thái q chuyển sang trạng thái p theo
công thức (q, a) = p thì sẽ có một cung từ đỉnh q tới đỉnh p được gán nhãn a.

Đỉnh vào của đồ thị chuyển là đỉnh ứng với trạng thái ban đầu q0. Các đỉnh sẽ được
khoanh bởi các vòng tròn, tại đỉnh xuất phát q0 có mũi tên đi vào, riêng đỉnh với trạng thái
kết thúc được phân biệt bởi vòng tròn đậm, hoặc hình vuông…
Việc cho đồ thị chuyển với các quy ước như trên là hoàn toàn xác định được otomat
A.
Thí dụ 1: Cho hai otomat hữu hạn đơn định:

A1 = <{q0, q1, q2}, {a,b},, q0, {q2}>,

Với (q0, a) = q0, (q0, b) = q1, (q1, a) = q0, (q1, b) = q2, (q2, a) = q2, (q2, b) = q2.
Ta có bảng chuyển trạng thái và đồ thị chuyển trạng thái của otomat A1 được cho trong
hình dưới:

59
Dãy trạng thái của otomat A1 trong quá trình đoán nhận xâu vào  = ababbab là:

Như vậy, xâu  được đoán nhận bởi otomat A1.

A2 = <{q0, q1, q2, q3}, {0,1},, q0, {q0}>,

trong đó (q0, 0) = q2, (q0, 1) = q1, (q1, 0) = q3, (q1, 1) = q0, (q2, 0) = q0, (q2, 1)
= q3, (q3, 0) = q1, (q3, 1) = q2.

Ta có bảng chuyển trạng thái và đồ thị chuyển trạng thái của otomat A2 được cho
trong hình dưới:

60
Dãy trạng thái của otomat A2 trong quá trình đoán nhận xâu vào  = 1010100 được
mô tả trong hình dưới đây:

Như vậy, otomat A2 không chấp nhận xâu .

Ta có thể mô tả quá trình đoán nhận xâu vào của otomat hữu hạn đơn định đầy đủ
A bằng thuật toán mô phỏng sau:
Input :

Một xâu , kết thúc bởi ký hiệu kết thúc file là eof.
Một otomat hữu hạn đơn định đầy đủ A với trạng thái khởi đầu q0 và tập trạng thái
kết thúc là F.

61
Output:

Trả lời “Đúng” nếu A đoán nhận xâu .

Trả lời “Sai” nếu A không đoán nhận xâu .


Thuật toán:
Begin
S := q0;

C := ký hiệu đầu tiên của ;


While C < > eof do
begin

S:= (S, C);

C:= ký hiệu tiếp theo;


end;
if S in F return (True)
else return (False);
End
Phân tách từ trong văn bản tiếng Việt
Các bước giải quyết
1. Xây dựng ôtômát âm tiết đoán nhận tất cả các âm tiết tiếng Việt
2. Xây dựng ôtômát từ vựng đoán nhận tất cả các từ vựng tiếng Việt.
3. Dựa trên các ôtômát nêu trên, xây dựng đồ thị tương ứng với câu cần phân tích
và sử dụng thuật toán tìm kiếm trên đồ thị để liệt kê các cách phân tích có thể.
Bảng chữ cái của ôtômát âm tiết là bảng chữ cái tiếng Việt, mỗi cung chuyển được
ghi trên đó một ký tự.
Ví dụ, với ba âm tiết phương, pháp, trình ta sẽ có ôtômát đoán nhận âm tiết như
Hình dưới

62
Thuật toán xây dựng ôtômát âm tiết
Input: Từ điển âm tiết
Output: Ôtômát âm tiết.
Thuật toán:
1. Lập trạng thái khởi đầu q0 ;
2. Vòng lặp đọc cho tới khi hết tệp dữ liệu, lấy ra từng âm tiết. Gọi các ký tự của
âm tiết đó là c0, c1,…,cn-1.
a. p := q0; i := 0;
b. Vòng lặp trong khi (i ≤ n − 1)
i. Lấy ra ký tự ci ;
ii. Tìm trong các cung chuyển từ trạng thái p cung trên đó ghi ký tự ci . Nếu có
cung (p, q) như thế:
1. i := i + 1;
2. p := q;
iii. Nếu không có cung (p, q) nào như thế thì thoát khỏi vòng lặp b.
c. Với j từ i đến n − 1
i. Tạo mới trạng thái q , ghi nhận q là trạng thái không kết;
ii. Thêm cung chuyển (p, q) trên đó ghi ký tự cj ;
iii. p := q;

63
d. Ghi nhận q là trạng thái kết;
Ôtômát từ vựng được xây dựng tương tự, với điểm khác như sau: thay vì ghi trên
mỗi cung chuyển một âm tiết, ta ghi số hiệu của trạng thái (kết) của ôtômát âm tiết tại đó
đoán nhận mỗi âm tiết của từ nhằm giảm kích thước của ôtômát từ vựng. Ví dụ, với hai từ
phương pháp và phương trình, giả sử khi đưa lần lượt các âm tiết phương, pháp, trình qua
ôtômát âm tiết, ta đến được các trạng thái kết ghi các số n1, n2, n3 thì trên các cung chuyển
tương ứng ta ghi các số n1, n2, n3 (Hình dưới).

Thuật toán xây dựng ôtômát từ vựng


Input: Từ điển từ vựng, ôtômát âm tiết
Output: Ôtômát từ vựng.
Thuật toán:
1. Lập trạng thái khởi đầu q0;
2. Vòng lặp đọc cho tới khi hết tệp dữ liệu, lấy ra từng mục từ word. Gọi các âm tiết
của word là ;
3. Sử dụng ôtômát âm tiết để đoán nhận các âm tiết trên, được các số hiệu của trạng
thái (kết) tương ứng là m0, m1,…,mn-1
a. p := q0 ;i := 0;
b. Vòng lặp trong khi (i ≤ n − 1)
i. Lấy ra số mi ;

64
ii. Tìm trong các cung chuyển từ trạng thái p cung trên đó ghi số mi . Nếu có
cung (p, q) như thế
1. i := i + 1;
2. p := q;
iii.Nếu không có cung (p, q) nào như thế thì thoát khỏi vòng lặp b.
c. Với j từ i đến n − 1
i. Tạo mới trạng thái q , ghi nhận q là trạng thái không kết;
ii. Thêm cung chuyển (p, q) trên đó ghi số mj ;
iii. p := q;
d. Ghi nhận q là trạng thái kết
Tư tưởng của thuật toán phân tách từ vựng là quy việc phân tách câu về việc tìm
đường đi trên một đồ thị có hướng, không có trọng số.
Giả sử câu ban đầu là một dãy gồm n+1 âm tiết s0, s1, ..., sn. Ta xây dựng một đồ thị
có n+2 đỉnh v0, v1, ..., vn, vn+1, sắp thứ tự trên một đường thẳng từ trái sang phải; trong đó,
từ đỉnh vi đến đỉnh vj có cung (i < j) nếu các âm tiết si, si+1, ..., sj-1 theo thứ tự lập thành một
từ. Khi đó mỗi cách phân tách câu khác nhau tương ứng với một đường đi trên đồ thị từ
đỉnh đầu v0 đến đỉnh cuối vn+1. Trong thực tế, cách phân tích câu đúng đắn nhất thường
ứng với đường đi qua ít cung nhất trên đồ thị.
Lựa chọn cách tách từ

• Biểu diễn đoạn bằng chuỗi các âm tiết s1 s2 … sn


• Trường hợp nhập nhằng thường xuyên nhất là 3 từ liền nhau s1s2s3 trong đó s1s2 và
s2s3 đều là từ.

65
Biểu diễn 1 đoạn bằng đồ thị có hướng tuyến tính G = (V,E), V = {v0, v1, . . . , vn,
vn+1}

• Nếu các âm tiết si+1, si+2, . . . , sj tạo thành 1 từ -> trong G có cạnh (vi,vj)
• Các cách tách từ = các đường đi ngắn nhất từ v0 đến vn+1
Thuật toán. Xây dựng đồ thị cho chuỗi s1s2 . . . sn
1: V ← ∅;
2: for i = 0 to n + 1 do

3: V ← V  {vi };
4: end for
5: for i = 0 to n do
6: for j = i to n do
7: if (accept(AW, si · · · sj)) then

8: E ← E  {(vi , vj+1)};
9: end if
10: end for
11: end for
12: return G = (V,E);
Trong trường hợp câu có sự nhập nhằng thì đồ thị sẽ có nhiều hơn một đường đi
ngắn nhất từ đỉnh đầu đến đỉnh cuối, ta liệt kê toàn bộ các đường đi ngắn nhất trên đồ thị,
từ đó đưa ra tất cả các phương án tách câu có thể và để người dùng quyết định sẽ chọn
phương án nào, tuỳ thuộc vào ngữ nghĩa hoặc văn cảnh. Ví dụ, xét một câu có cụm "thuộc
địa bàn", ta có đồ thị như sau (Hình sau)

66
Cụm này có sự nhập nhằng giữa thuộc địa và địa bàn và ta sẽ có hai kết quả phân
tách là "thuộc địa / bàn" và "thuộc / địa bàn". Ta có thể chỉ ra rất nhiều những cụm nhập
nhằng trong tiếng Việt, chẳng hạn "tổ hợp âm tiết", "bằng chứng cớ",...
Trường hợp trong câu có âm tiết không nằm trong từ điển thì rõ ràng ôtômát âm tiết
không đoán nhận được âm tiết này. Kết quả là đồ thị ta xây dựng từ câu đó là không liên
thông. Dựa vào tính chất này, ta thấy rằng nếu đồ thị không liên thông thì dễ dàng phát
hiện ra rằng đơn vị âm tiết không đoán nhận được không nằm trong từ điển âm tiết, tức nó
bị viết sai chính tả hoặc là một đơn vị âm tiết (từ vựng) mới.
Đánh giá kết quả
Với cách tiếp cận như trên, bài toán phân tách từ vựng trong câu tiếng Việt về cơ
bản đã được giải quyết, đặc biệt là vấn đề tách các tổ hợp từ tương đương với một đơn vị
từ vựng, thường là các cụm từ cố định, ngữ cố định hoặc các thành ngữ trong tiếng Việt.
Với những câu nhập vào có sự nhập nhằng từ vựng, tức có nhiều hơn một cách phân tách
thì chương trình liệt kê toàn bộ các phương án tách từ có thể và giành quyền lựa chọn kết
quả cho người sử dụng. Trong tất cả các phương án phân tách đó bao giờ cũng tồn tại
phương án đúng.
Dưới đây là một số câu nhập vào và kết quả tách từ tương ứng.
1. Nó | là | một | bản | tuyên ngôn | đặc sắc | của | chủ nghĩa nhân đạo | , một | tiếng |
chuông | cảnh tỉnh | trước | hiểm họa | lớn lao | của | hành tinh | trước | sự | điên rồ | của |
những | kẻ | cuồng tín
2. Trong khi | các | thành phần | tư bản chủ nghĩa | có | những | bước | phát triển |
mạnh | hơn | thời kì | trước | thì | thế lực | của | giai cấp | địa chủ | vẫn | không hề | suy giảm.

67
Như vậy, vấn đề khó khăn cần phải tiếp tục nghiên cứu giải quyết là vấn đề giải
quyết nhập nhằng phân tách. Cần phải chọn một phương án đúng giữa nhiều phương án.
Các hướng tiếp cận khả thi cho vấn đề này có thể là:
- Dùng các quy tắc ngữ pháp do chuyên gia ngôn ngữ xây dựng. Tiến hành phân
tích cú pháp của câu với những phương án tách từ vựng có thể, từ đó loại ra những phương
án sai cú pháp.
- Dùng phương pháp xác suất - thống kê. Phải thống kê trong kho văn bản tương đối
lớn của tiếng Việt để tìm ra xác suất của các bộ đôi hay bộ ba từ loại hoặc từ vựng đi cạnh
nhau. Từ đó lựa chọn phương án phân tách có xác suất sai ít nhất
Mở rộng bài toán
Phương pháp học máy
● Y/c dữ liệu huấn luyện đã tách từ
● Áp dụng phương pháp học máy phù hợp với bài toán
● Tiến hành tách từ trên dữ liệu mới
Mở rộng từ điển
● Nhu cầu mở rộng từ điển:
Từ vựng không thể bao gồm hết các lĩnh vực
Từ vựng biến đổi theo thời gian
● Phương pháp:
Dựa trên chuyên gia ngôn ngữ về từ điển học
Dựa trên thống kê, học máy không hướng dẫn
Dựa trên học máy có hướng dẫn
Một số công cụ tách từ
JVnSegmenter
● Sử dụng dữ liệu huấn luyện
● Sử dụng thuật toán học máy Conditional Random Fields (CRFs)

68
● Nhập nhằng được giải quyết thông qua thuật toán học máy
● http://jvnsegmenter.sourceforge.net
● Nguyen C.T. et al. 2006. “Vietnamese Word Segmentation with CRFs and SVMs:
An Investigation”, In Proceedings of PACLIC 2006
Dongdu
● Sử dụng phương pháp học máy Support Vector Machines (SVMs)
● http://viet.jnlp.org/dongdu
● Luu T.A. and Yamamoto Kazuhid. 2012. "Ứng dụng phương pháp Pointwise vào
bài toán tách từ cho tiếng Việt"
VnTokenizer
● Dựa vào từ điển
● Sử dụng mô hình ngôn ngữ cấp hai để giải quyết nhập nhằng
● http://mim.hus.vnu.edu.vn/phuonglh/softwares/vnTokenizer
● Le H. P. et al. 2008. “A hybrid approach to word segmentation of Vietnamese
texts” in Proceedings of the 2nd International Conference on Language and Automata
Theory and Applications

69
Chương 3. Gán nhãn từ loại
3.1. Gán nhãn từ loại
Trong ngôn ngữ tự nhiên, từ vựng được chia thành thành các lớp (danh từ, động từ,
tính từ, giới từ, …) theo chức năng ngữ pháp. Việc xác định đúng loại từ đóng vai trò quan
trọng trong việc hiểu đúng và viết đúng. Chẳng hạn, một cụm danh từ chuẩn trong tiếng
Việt có tính từ đứng sau danh từ được dịch đúng sang tiếng Anh thì tính từ phải đứng trước
danh từ mà nó bổ nghĩa
Định nghĩa
Gán nhãn từ loại (Part of Speech tagging – POS tagging) là việc xác định các chức
năng ngữ pháp của từ trong câu hay là quá trình gán từng từ trong đoạn văn bản với các
đánh dấu từ loại hoặc cấu trúc ngữ pháp.

• Vào : 1 đoạn văn bản đã tách từ + tập nhãn


• Ra: cách gán nhãn chính xác nhất
Gán nhãn từ loại là một trong những bài toán cơ bản của xử lý ngôn ngữ tự nhiên,
là bước tiền xử lý quan trọng để phân tích văn phạm ở mức sâu hơn.
Ví dụ: cho chuỗi đầu vào “con ruồi đậu mâm xôi đậu”
Khi đó, ta có chuỗi các cặp từ và từ loại tương ứng như sau:
Con/D ruồi/N đậu/V mâm/N xôi/N/đậu/N
Ở đây, D: determinator (định từ), N: noun (danh từ), V: verb (động từ).
Con ngựa đá con ngựa đá
V N

Khi làm việc với bài toán này ta sẽ đối mặt với các thách thức:

70
• Nhập nhằng (ambiguity): một từ có thể có nhiều từ loại, hay một từ có thể có nhiều
nghĩa, Ví dụ “con ruồi đậu mâm xôi đậu“, từ “đậu” có lúc là động từ (hành động
đậu lên một vật thể) hoặc có lúc là danh từ (tên của một loài thực vật).
• Trong thực tế, có nhiều từ không xuất hiện trong ngữ liệu huấn luyện (training
corpus) nên khi xây dựng mô hình gán nhãn sẽ gặp nhiều khó khăn.
• Đối với tiếng Việt thiếu các kho ngữ liệu chuẩn

Các ứng dụng:

• Text-to-speech: record - N: [‘reko:d], V: [ri’ko:d]; lead –N [led], V: [li:d]


• Tiền xử lý cho PTCP. PTCP thực hiện việc gán nhãn tốt hơn nhưng đắt hơn
• Tổng hợp tiếng nói
• Các hệ thống dịch máy
• Nhận dạng tiếng nói, PTCP, tìm kiếm, v.v…
Tập từ loại tiếng Anh
Lớp đóng (các từ chức năng): số lượng cố định

• Giới từ (Prepositions): on, under, over,…


• Tiểu từ (Particles): abroad, about, around, before, in, instead, since, without,…
• Mạo từ (Articles): a, an, the
• Liên từ (Conjunctions): and, or, but, that,…
• Đại từ ( Pronouns): you, me, I, your, what, who,…
• Trợ động từ (Auxiliary verbs): can, will, may, should,…
Lớp mở: có thể có thêm từ mới
Lớp từ mở trong tiếng Anh

71
Kho ngữ liệu văn bản (Corpora)
Kho ngữ liệu văn bản bao gồm một tập hợp lớn các văn bản, có thể được phân tích
và xử lý phục vụ nhiều công việc của ngôn ngữ học tính toán. Thông tin ngôn ngữ trong
đó là cơ sở tri thức ngôn ngữ học, được sử dụng trong việc phân tích thống kê và kiểm
tra các giả thiết ngôn ngữ, kiểm tra sự xuất hiện hoặc xác nhận các quy tắc ngữ pháp trong
mỗi ngôn ngữ.
Kho ngữ liệu có thể chứa các văn bản của một ngôn ngữ (kho ngữ liệu đơn ngữ)
Hoặc chứa các văn bản của nhiều ngôn ngữ (kho ngữ liệu đa ngữ).
Nội dung của các kho ngữ liệu được lấy từ nhiều lĩnh vực như kinh tế, xã hội, văn
hóa, kỹ thuật v.v. Đa số, kho ngữ liệu có nguồn gốc từ tạp chí, báo, sách giáo khoa, báo
điện tử, web…. Những năm gần đây đã chứng tỏ Web là nguồn tài nguyên ngôn ngữ khổng
lồ, việc thu thập dữ liệu Web lại có ưu điểm là cho phép cập nhật ngữ liệu thường xuyên,
phát hiện những hiện tượng ngôn ngữ đa dạng và phong phú một cách khách quan hơn so
với thu thập dữ liệu truyền thống. Phương pháp thu thập kho ngữ liệu từ web cho tiếng
Anh và một số ngôn ngữ phổ biến khác đã được giới thiệu trong một số nghiên cứu.
Mỗi kho ngữ liệu được xây dựng, định dạng theo tiêu chí riêng nhưng vẫn phải tuân
thủ theo một số tiêu chuẩn chung. Chẳng hạn, xây dựng kho ngữ liệu cho việc nghiên
cứu từ vựng và xây dựng từ điển thì kho ngữ liệu phải có kích thước càng lớn càng tốt. Để
có thể sử dụng hữu ích trong lĩnh vực thống kê, các kho ngữ liệu văn bản phải được tách
từ và chú giải ngôn ngữ ở các mức: Mức từ loại (POS); Mức cú pháp nông hoặc đầy đủ.
Các kho ngữ liệu chú giải ở mức cú pháp còn được gọi là ngân hàng cây cú pháp (treebank).

72
Treebank - kho văn bản mà trong đó mỗi câu được chú giải cấu trúc cú pháp, thông
thường dưới dạng cấu trúc cây phân cấp, là nguồn tài nguyên rất hữu ích trong lĩnh vực xử
lý ngôn ngữ tự nhiên. Treebank có nhiều ứng dụng quan trọng như đánh giá, kiểm định các
công cụ xử lý ngôn ngữ tự động, các phần mềm dịch 2 máy, tóm tắt văn bản, các hệ thống
hỏi đáp… Các hệ thống treebank cho các thứ tiếng được nghiên cứu nhiều như Anh, Pháp,
Hoa… đã được xây dựng từ lâu.
Các treebank có thể được chú giải 2 dạng cấu trúc cú pháp, đó là cấu trúc phụ thuộc
và cấu trúc thành phần.
Các cây cú pháp thường được mã hóa theo hai cách. Cách thứ nhất đơn giản sử dụng
cấu trúc dấu ngoặc, theo cách này mỗi thành phần cú pháp sẽ có một cặp dấu ngoặc bao
quanh. Cách thứ hai là sử dụng lược đồ mã hóa XML (eXtended Markup Language). Cách
này đã được nghiên cứu kỹ lưỡng và được áp dụng vào một số dự án về xử lý ngôn ngữ
của Châu Âu.
Hiện nay trên thế giới có rất nhiều kho ngữ liệu được chia sẻ miễn phí cho cộng
đồng nghiên cứu. Dưới đây sẽ liệt kê một số kho ngữ liệu tiêu biểu.
Kho ngữ liệu Anh Mỹ (Brown Copus)
Kho ngữ liệu Brown cho tiếng Anh Mỹ (Brown Corpus) là kho ngữ liệu văn bản đã
được Henry Kucera và W. Nelson Francis biên soạn vào những năm 1960. Kho văn bản
này chứa 500 văn bản tiếng Anh, biên soạn từ các tác phẩm xuất bản tại Hoa Kỳ năm 1961,
tổng cộng 1.014.312 từ, được chú giải ở mức từ loại.
Kho ngữ liệu tiếng Anh (BNC - The British National Corpus)
Kho ngữ liệu này có khoảng 100 triệu từ của ngôn ngữ nói và viết được lấy từ nhiều
nguồn dữ liệu khác nhau, trong đó kho ngữ liệu viết chiếm 90 % đã được gán nhãn từ loại
được trích rút từ báo chí nội địa và Quốc gia, tạp chí dành cho mọi lứa tuổi, sách giáo
khoa…. Kho ngữ liệu này bắt đầu được xây dựng từ năm 1991 và hoàn thành năm 1994,
sau đó thì không có văn bản nào được thêm vào kho ngữ liệu trong dự án này này nhưng
kho ngữ liệu này đã được chỉnh sửa thành một phiên bản thứ hai là BNC Wold (2001) Và
phiên bản thứ ba BNC XML Edition (2007).
Kho ngữ liệu quốc gia Mỹ (ANC - The American National Corpus)
Kho ngữ liệu này hiện có 22 triệu từ thuộc ngôn ngữ viết và nói, được chú giải ở
mức từ loại, cú pháp nông, và các chú giải tên thực thể… khung chú giải 3 ngôn ngữ của
kho ngữ liệu được cung cấp theo các tiêu chuẩn thiết lập bởi tiểu ban kỹ thuật ISO/TC
37/SC4, sử dụng định dạng XML phù hợp với tiêu chuẩn mã hoá kho ngữ liệu XML (XML

73
Corpus Encoding Standard -XCES), hiện nay có khoảng 15 triệu từ đã được định dạng
GrAF (Graph Annotation Fortmat)
Hiện tại dự án xây dựng ANC đang tiếp tục được mở rộng thêm, mục đích là tạo ra
một bộ sưu tập điện tử khổng lồ toàn diện nhất của tiếng Anh Mỹ, sẽ là nguồn tài nguyên
hữu ích phục vụ cho giáo dục, cho nghiên cứu ngôn ngữ và phát triển công nghệ. Kho ngữ
liệu bao gồm văn bản của tất cả các thể loại và bảng dịch của dữ liệu nói được sản xuất từ
năm 1990 trở đi.
Kho ngữ liệu Anh Mỹ hiện đại (COCA - The Copus of Contemporary American
English)
Kho ngữ liệu hiện đại COCA là kho ngữ liệu lớn nhất cho tiếng Anh Mỹ, có khoảng
hơn 425 triệu từ và dữ liệu được lấy đều từ các nguồn tiểu thuyết, nói, các tạp chí nổi tiếng,
báo chí, và các văn bản học thuật, được xây dựng từ năm 1990-2011, kho ngữ liệu được
cập nhật một đến hai lần trong một năm (các văn bản gần đây nhất là từ tháng 3 năm 2012),
mỗi năm lấy khoảng 20 triệu từ. Do cách cập nhật, thiết lập dữ liệu, đây có lẽ là kho ngữ
liệu tiếng Anh phù hợp để nhìn vào hiện tại, thay đổi đang diễn ra trong ngôn ngữ.
Ngân hàng cây cú pháp PENN

Kho ngữ liệu này được xây dựng trong 8 năm (1989-1996), có khoảng 7 triệu từ đã
được gán nhãn từ loại, 3 triệu từ đã được phân tích cú pháp cơ bản, trên 2 triệu từ của văn
bản đã phân tích cú pháp cho cấu trúc đối vị từ, 1.6 triệu từ là dữ liệu tiếng nói (phiên âm).
Dữ liệu văn bản định dạng dưới dạng đặt ngoặc, mỗi câu trong kho ngữ liệu sẽ được đặt
ngoặc - mỗi thành phần cú pháp sẽ có một cặp dấu ngoặc bao quanh, ngay sau dấu ngoặc
đầu tiên là ký hiệu ngữ pháp và các thuộc tính (nếu có), tiếp theo là danh sách các thành
phần cú pháp con.
Kho văn bản này được lấy từ các nguồn sách máy tính của IBM, tạp chí tài chính
phố Wall, các cuộc đàm thoại. V.V. 4
Ngân hàng cây cú pháp TIGER tiếng Đức
Kho ngữ liệu Tiger (Tiger Treebank, phiên bản 2.1) có khoảng 900,000 từ (50,000
câu) Được lấy từ báo Frankfurter Rundschau của tiếng Đức. Kho ngữ liệu này đã được gán
nhãn từ loại và chú giải cú pháp cho các câu, việc chú giải được thực hiện bán tự động.
Ngoài các nhãn từ loại và nhãn cấu trúc cú pháp, kho ngữ liệu còn chứa các các thông tin về
hình thái, từ nguyên thể cho các nút từ vựng.
Ngân hàng cây cú pháp tiếng Trung (Chinese Treebank)

74
Kho ngữ liệu tiếng Trung (Chinese Treebank 7.0) được công bố qua Tổ chức dữ
liệu ngôn ngữ (LDCƯ Linguistic Data Consortium) Bao gồm khoảng 1 triệu từ đã được
chú giải cú pháp. Chinese Treebank được bắt đầu tại Đại học
Pennsylvania vào năm 1998, sau đó tiếp tục ở Đại học Colorado và là hiện đang
được phát triển tại Đại học Brandeis. Mục tiêu của dự án là cung cấp một kho ngữ liệu lớn
được chú giải từ loại và đặt ngoặc toàn bộ.
Một số kho ngữ liệu song ngữ
Kho ngữ liệu song ngữ song song do dự án EuroMatrix (tham khảo tại địa chỉ http:
// euromatrix. Net/) Xây dựng gồm các cặp ngôn ngữ khác nhau được lấy nguồn từ các kỷ
yếu của Quốc hội Châu Âu từ năm 1996–2006. Kho ngữ liệu này gồm 9 cặp ngôn ngữ khác
nhau;
Kho ngữ liệu song ngữ song song Anh - Pháp (Canadian Hansard) Của hiệp hội dữ
liệu ngôn ngữ học (LDC), kho ngữ liệu này gồm 2.8 triệu cặp câu. Dữ liệu văn bản thuần
chủ yếu được lấy từ trang web của Quốc hội Canada;
Kho ngữ liệu WaCky (Web as Corpus kool ynitiative)
Đây là kho ngữ liệu lớn, trong đó có 3 kho ngữ liệu của tiếng Anh (ukWaC), tiếng
Đức (deWaC) Và tiếng Ý (itWaC). Các kho ngữ liệu này được phát triển từ năm 2005 cho
đến năm 2007, mỗi kho ngữ liệu có khoảng hơn 1 tỷ từ đã được chú giải từ loại và được
thu thập từ Internet thông qua các trang web.
Kho ngữ liệu tiếng Việt
Kho ngữ liệu tiếng Việt VTB và VCor do Trung tâm Ngôn ngữ học Tính toán – ĐH
Khoa học Tự nhiên – Tp.HCM cung cấp. Ngữ liệu này được thu thập từ các trang báo điện
tử (www.tuoitreonline, www.vnexpress.net,…) trong giai đoạn từ năm 2000 trở lại đây.

75
VTB có 201.594 câu, 5.501.225 lượt từ, độ dài trung bình mỗi câu là 27,3 từ và tổng
số các từ/chuỗi (token) khác nhau là 118.455. Ngữ liệu VCor có 17.095.994 câu (42 lĩnh
vực), gồm 346.454.533 từ và 443.301.776 chữ (tiếng/âm tiết), trung bình mỗi câu có
khoảng 20 từ, mỗi từ có 1,28 âm tiết và mỗi âm tiết dài 3,27 con chữ. Các âm tiết của từ
đa tiết được nối với nhau bằng 1 dấu gạch dưới (vd: nguyên_nhân) và các cụm từ phái
sinh được nối với nhau bằng 2 dấu gạch dưới (vd: siêu__bão). Khái niệm “Từ” ở đây là “từ
từ điển”.
VLSP Corpus
Tóm lại, trên thế giới đã tồn tại rất nhiều kho ngữ liệu cho các thứ tiếng khác nhau, đây
chính là nguồn dữ liệu không thể thiếu được trong XLNNTN. Công việc xây dựng, mở
rộng kho ngữ liệu là vấn đề cần thiết đối với mọi ngôn ngữ, công việc này càng ngày càng
được quan tâm và phát triển bởi các nhà nghiên cứu và xử lý ngôn ngữ.

76
77
3.2. Các phương pháp gán nhãn từ loại
Các phương pháp gán nhãn từ loại

• Dựa trên xác suất: dựa trên xác suất lớn nhất, dựa trên mô hình Markov ẩn (hidden
markov model – HMM)
• Dựa trên luật
If <mẫu>
Then … <gán nhãn thẻ từ loại>
3.2.1. Gán nhãn dựa trên xác suất
MÔ HÌNH MARKOV ẨN (HIDDEN MARKOV MODEL – HMM)

78
Mô hình ra đời năm 1968
HMM là một mô hình thống kê có chứa các tham số quan sát được và các tham số
ẩn chưa biết. Mô hình Markov ẩn được biểu diễn dưới dạng đồ thị chuyển trạng thái (Hình
dưới). Các nút là các trạng thái, qi là các trạng thái ẩn, oi là các trạng thái quan sát được.
Các cung là các chuyển trạng thái có gán xác suất.

79
Việc xác định các tham số ẩn dựa vào các tham số đã biết thông qua các xác suất
chuyển trạng thái (từ trạng thái trước sang trạng thái qt) và xác suất nhả trạng thái (trạng
thái quan sát được ot nhận trạng thái ẩn qt).
Trong mô hình Markov ẩn tổng quát bậc n, trạng thái qt phụ thuộc vào n trạng thái
đứng trước nó. Trong nghiên cứu này chúng tôi chỉ xét với n = 1, tức trạng thái qt phụ thuộc
vào trạng thái qt-1 và độc lập với các trạng thái khác, tức là:
P(qt |qt-1,qt-2,…) = P(qt |qt-1) (1)
P(qt ,qt-1,qt-2,…) = P(qt |qt-1) P(qt-1|qt-2)… (2)
Mô tả bài toán
Đầu vào (Input) của bài toán là một câu hay một văn bản đã được tách từ. Ta cần
gán cho mỗi từ một nhãn từ loại tương ứng để thu được đầu ra (Output) mong muốn. Giả
sử cho một chuỗi các từ S = w1 w2 …wn và tập hữu hạn các nhãn từ loại T = {T1, T2, …,
Tm}. Khi đó, các từ wi là các đối tượng quan sát được và các nhãn ti là các trạng thái ẩn. Ta
phải xác định nhãn từ loại ti tương ứng cho mỗi từ wi để thu được T* = t1 t2 … tn (ti ∈ T)
để có P(T* /S) là lớn nhất. Tức là ta phải đi tìm:
T * = argmax P(T | S) (3)
Sử dụng Bayes, P(T|S) được viết theo công thức (4).

Ta đang quan tâm tới việc tìm chuỗi nhãn phù hợp nhất làm cực đại công thức (3)
nên mẫu số trong tất cả các trường hợp là giống nhau, vì vậy ta có thể loại bỏ nó. Do đó,
bài toán trở thành tìm chuỗi các nhãn thỏa mãn công thức (5):
T * = argmax P(S | T)P(T) (5)
Áp dụng luật chuỗi xác suất ta được (6) :
T * = argmax P(w1, w2,…, wn | t1, t2,…, tn)* P(t1, t2,…, tn) (6)
P(w1w2... wN | t1t2...tN) = P(w1 | t1t2...tN) P(w2 | w1,t1t2...tN)...P(wN | w1... wN-1, t1t2...tN)
P(t1t2...tN) = P(t1)P(t2 | t1) P(t3 | t1t2) ... P(tN | t1...tN-1)

80
Người ta đưa ra các giả thiết đơn giản hoá cho phép thu gọn mô hình xác suất về
một số hữu hạn các tham biến.
Đối với mỗi P(wi | w1... wi-1, t1t2...tN), giả thiết khả năng xuất hiện một từ khi cho
một nhãn từ loại là hoàn toàn xác định khi biết nhãn đó, nghĩa là P(wi | w1... wi-1, t1t2...tN)
= P(wi | ti).
Như vậy, xác suất P(w1w2... wN|t1t2...tN) chỉ phụ thuộc vào các xác suất cơ bản có
dạng P(wi|ti):
P(w1w2... wN | t1t2...tN) = P(w1|t1)P(w2 | t2) ... P(wN | tN)
Đối với các xác suất P(ti | t1...ti-1), giả thiết khả năng xuất hiện của một từ loại là
hoàn toàn xác định khi biết các nhãn từ loại trong một lân cận có kích thước k cố định,
nghĩa là: P(ti | t1...ti-1)= P(ti | ti-k...ti). Nói chung, các công cụ gán nhãn thường sử dụng giả
thiết k bằng 1 hoặc 2.
Sử dụng mô hình Markov ẩn bậc 1 công thức (6) trở thành công thức (7).

Chúng ta hãy xem xét một ví dụ do Dr.Luis Serrano đề xuất và tìm hiểu cách HMM
chọn chuỗi thẻ thích hợp cho một câu.

Trong ví dụ này, chúng ta xem xét 3 thẻ nhãn noun, model và verb.
Ví dụ tính xác suất chuyển từ loại (Transition Probability) và xác suất nhận nhãn từ
loại (Emission Probability) cho tập các câu sau:

81
• Mary Jane can see Will
• Spot will see Mary
• Will Jane spot Mary?
• Mary will pat Spot
Chú ý rằng Mary Jane, Spot và Will đều là tên người.

Trong các câu trên, từ Mary xuất hiện 4 lần như là một danh từ. Để tính xác suất
nhận nhãn từ loài, chúng ta tạo một bảng đếm.

82
Bây giờ, chúng ta hãy chia mỗi cột cho tổng số lần xuất hiện của chúng chẳng hạn,
‘noun’ xuất hiện 9 lần trong các câu trên bởi vậy chia mỗi từ này cho 9 trong cột noun. Kết
quả chúng ta có bảng sau:

Từ bảng trên, chúng ta có thể suy ra xác suất để Mary là Noun =4/9, xác suất để
Mary là Model =0, xác suất Will là Noun =1/9, xác suất Will là Model =3/4.
Kế tiếp, chúng ta tính xác suất chuyển đổi, chúng ta định nghĩa 2 thẻ <S> và <E>.
<S> được đặt đầu câu và <E> được đặt ở cuối câu.

83
Thực hiện tạo một bảng và điền vào bảng đó với số lần xuất hiện đồng thời của các
thẻ.

Trong hình trên, chúng ta thấy nhãn <S> được theo sau nhãn N ba lần, do đó ở ô
đầu tiên ta điền 3.

84
Kế tiếp chúng ta chia mỗi phần tử trong hàng của bảng với tổng số lần cặp thẻ đó
xuất hiện. Ví dụ thẻ model được theo sau bởi các thẻ khác là 4 lần, do vậy chúng ta chia
mỗi phần tử trong dòng 3 bởi 4.

Đây là các xác suất chuyển đổi tương ứng cho bốn câu trên. Bây giờ làm cách nào
để HMM xác định chuỗi thẻ thích hợp cho một câu cụ thể từ các bảng trên?
Lấy một câu mới và gắn thẻ chúng bằng các thẻ sai. Hãy để câu, 'Will can spot Mary'
được gắn thẻ là:

• Will gán nhãn model


• Can gán nhãn verb

85
• Spot gán nhãn noun
• Mary gán nhãn noun
Bây giờ hãy tính xác suất của dãy số này là đúng theo cách sau.

Xác suất của nhãn M đến sau nhãn <S> là ¼. Xác suất của từ Will là Model là ¾.
Tương tự như vậy tính xác suất cho các cung khác. Bây giờ, tích của các xác suất này là
khả năng chuỗi này đúng. Vì các thẻ không chính xác, nên tích này bằng không.
1/4*3/4*3/4*0*1*2/9*1/9*4/9*4/9=0
Khi các từ được gán thẻ chính xác, chúng ta tính được xác suất lớn hơn 0.

86
Tính xác suất chúng ta nhận được:
3/4*1/9*3/9*1/4*3/4*1/4*1*4/9*4/9=0.00025720164
Đối với ví dụ này, chỉ cần xem xét ba thẻ POS mà chúng ta đã đề cập, có thể hình
thành 81 tổ hợp thẻ khác nhau. Trong trường hợp này, việc tính toán xác suất của tất cả 81
tổ hợp dường như có thể thực hiện được. Nhưng khi nhiệm vụ là gắn thẻ một câu lớn hơn
và tất cả các thẻ POS trong dự án Penn Treebank được xem xét, số lượng các kết hợp có
thể tăng lên theo cấp số nhân và nhiệm vụ này dường như không thể thực được. Bây giờ
chúng ta hãy hình dung 81 sự kết hợp này dưới dạng các đường dẫn và sử dụng xác suất
chuyển tiếp và xác suất nhận nhãn từ loại đánh dấu từng đỉnh và cạnh như hình dưới đây.

Bước tiếp theo là xóa tất cả các đỉnh và cạnh có xác suất bằng không, cả các đỉnh
không dẫn đến điểm cuối cũng bị xóa.

87
Bây giờ có hai đường dẫn đến trạng thái cuối cùng, tính xác suất đối với mỗi đường
dẫn
<S>→N→M→N→N→<E> =3/4*1/9*3/9*1/4*1/4*2/9*1/9*4/9*4/9=0.00000846754

<S>→N→M→N→V→<E>=3/4*1/9*3/9*1/4*3/4*1/4*1*4/9*4/9=0.00025720164

Xác suất của chuỗi thứ 2 là cao hơn và do đó HMM sẽ gán thẻ theo chuỗi thứ 2 này.
Trong mô hình HMM, thuật toán Viterbi thường được sử dụng để tìm dãy trạng thái
tối ưu.
Thuật toán Viterbi

• Sử dụng một biểu đồ (chart) để lưu từng phần kết quả khi thực hiện
Tạo bảng TxN, ở đó là xác suất tốt nhất của chuỗi w1…wi mà nó kết thúc ở
trạng thái t.
• Điền mỗi cột từ trái qua phải, với

• Lưu lại đường đi (backtrace), cho mỗi ô, trạng thái nào tại i-1.

Cho ví dụ sau:

88
• W=the doctor is in
• Điền cột đầu tiên

89
• Điền cột thứ 2

Điền cột thứ 3

90
Điền cột thứ 4

Kết thúc câu

91
Thực hiện gán nhãn

Kết luận: the/Det doctor/Noun is/Verb in/Prep

Gán nhãn dựa trên chuyển đổi (Transformation-based Learning (TBL))

92
Giải thuật TBL (Transformation-Based Learning) là một giải thuật học giám sát được Eric
Brill đưa ra trong luật văn tiến sĩ của ông năm 1993. Giải thuật TBL được áp dụng rộng rãi
trong xử lý ngôn ngữ tự nhiên và được đánh giá là một trong những giải thuật cho kết quả
khả quan nhất đối với các bài toán xử lý ngôn ngữ tự nhiên như : các bài toán tách từ, tách
câu, gán nhãn từ loại, phân tích cú pháp khử nhập nhằng ngữ nghĩa…

Hình Sơ đồ hoạt động của giải thuật TLB


Mô tả hoạt động của giải thuật
Hình trên miêu tả sơ đồ hoạt động của giải thuật TLB. Đầu tiên dữ liệu chưa được gán nhãn
được chuyển qua một bộ gán nhãn khởi tạo (initial-state annotator). Chọn kết quả của một
giải thuật nào đó để gán nhãn cơ sở. Nhãn này có thể chính xác hoặc không chính xác. Sau
khi dữ liệu đã nhận trạng thái khởi tạo, dữ liệu này sẽ được so sánh với các trạng thái đúng
của chúng (truth: kho ngữ liệu được gán nhãn thủ công). Một danh sách các phép biến đổi
có thứ tự được học có thể được áp dụng cho đầu ra của trạng thái khởi tạo để cho nó giống
nhất với trạng thái đúng.

93
Qua việc so sánh này, các lỗi của dữ liệu hiện hành được xác định. Thông qua các lỗi này
chúng xác định được các luật chuyển đổi nhằm biến đổi ngữ liệu từ trạng thái khởi tạo
thành dạng giống hơn so với các trạng thái đúng.
Một tập hợp các khung luật lúc này được sử dụng để tạo ra các luật ứng viên. Các khung
luật được xác định trước.
……….
Thuật toán sinh ra các luật ứng viên bằng cách thay các giá trị có thể vào cho các biến trong
khung luật. Luật ứng viên sau khi được tạo ra nó sẽ được áp dụng vào trong ngữ liệu đang
được gán nhãn hiện hành để tạo ra ngữ liệu được gán nhãn khi áp dụng luật ứng viên này.
Ngữ liệu được gán nhãn theo luật ứng viên vừa tạo ra sẽ được so sánh đối chiếu với ngữ
liệu đúng. Khi so sánh với ngữ liệu chính xác chúng ta sẽ biết được luật ứng viên vừa tạo
ra chỉnh ngữ liệu từ đúng thành sai bao nhiêu trường hợp và từ sai thành đúng bao nhiêu
trường hợp. Từ đó ta tính ra được điểm cho luật ứng viên này. Điểm của luật ứng viên này
chính là hiệu số giữa số trường hợp luật chỉnh ngữ liệu từ sai thành đúng và số trường hợp
luật chỉnh ngữ liệu từ đúng thành sai. Sau khi tất cả các luật ứng viên được tạo ra chúng ta
sẽ biết được luật ứng viên nào có điểm cao nhất, luật ứng viên có điểm cao nhất sẽ được
giữ lại cho các lần gán nhãn sau nếu như luật này thỏa mãn điều kiện nó có điểm lớn hơn
một mức ngưỡng mà chúng ta cho trước. Luật này sẽ được áp dụng để chuyển ngữ liệu ở
trạng thái thứ k sang trạng thái mới trạng thái thứ k+1. Ngữ liệu ở trạng thái mới này lại
lần lượt thử trên các luật ứng viên để chọn ra luật tối ưu mới. Quá trình này sẽ được lặp lại
cho đến khi không còn có luật tối ưu nào có điểm lớn hơn mức ngưỡng.

94
Hình: Một ví dụ của giải thuật TLB
Hình trên chỉ ra một ví dụ của TLB. Trong ví dụ này, chúng ta giả sử rằng chúng ta chỉ có
4 phép biến đổi T1 đến T4,và hàm mục tiêu là tổng số lỗi. Ngữ liệu chưa được gán nhãn đi
qua bộ gán nhãn khởi tạo và kết quả là ngữ liệu được gán nhãn với tổng 5100 lỗi, xác định
bởi so sánh đầu ra của ngữ liệu qua bộ gán nhãn khởi tạo với ngữ liệu được gán nhãn thủ
công. Kế tiếp, chúng ta áp dụng từng luật biến đổi và cho điểm số văn bản được gán nhãn.
Trong ví dụ này, chúng ta áp dụng luật biến đổi T2, kết quả thu được số lỗi là giảm lớn
nhất, bởi vậy T2 được học như phép biến đổi đầu tiên. T2 sau đó được áp dụng cho toàn
bộ ngữ liệu, và việc học lại tiếp tục. Tại giai đoạn này, kết quả áp dụng phép biến đổi T3
có số lỗi giảm nhiều nhất, bởi vậy nó được học như phép biến đối thứ hai. Sau khi áp dụng
bộ gán nhãn khởi tạo, theo sau bởi T2 và sau đó T3, không thể giảm số lỗi sau khi áp dụng
bất kỳ phép biến đổi nào, bởi vậy quá trình học sẽ dừng.
Cách gắn thẻ 1(nonlexicalized version of the tagger): Mẫu chuyển đổi không quan tâm đến
từ.

95
Trong hình dưới, 20 phép biến đổi đầu tiên học được từ quá trình huấn luyện trên
Penn Treebank Wall Street Journal Corpus (Marcus, Santorini và Marcinkiewicz
Năm 1993). Phép biến đổi đầu tiên chỉ ra rằng một danh từ nên được đổi thành một động
từ nếu thẻ trước là TO, như: to/TO conflict/NN->VB with. Phép biến đổi thứ 2 sửa lỗi gắn
thẻ như: might/MD vanish/VBP->VB. Phép biến đổi thứ 3 sửa might/MD not reply/NN-
>.VB.

96
Hình 20 phép biến đổi
Cách gắn thẻ thứ 2 (Lexicalizing the Tagger):

97
Ví dụ:
From IN to RB if the word two positions to the right is as.
From VBP to VB if one of the previous two words is n't.
Ví dụ thay NN bằng VB khi thẻ trước đó là TO
Pos: ‘NN’>’VB’ ← pos: ‘TO’ @[-1] o

98
Mô hình này là một phương pháp tương đối uyển chuyển trong các phương pháp gán nhãn
từ loại. Ta có thể thêm bớt thay đổi các đặc trưng của nó. Tuy nhiên hạn chế lớn của mô
hình là đòi hỏi một bộ dữ liệu tương đối lớn thì kết quả sẽ khả quan hơn. Kết quả học phụ
thuộc nhiều vào kết quả gán nhãn cơ sở, thời gian học của giải thuật TBL là khá lớn.

99
Chương 4. Cú pháp
4.1. Một số khái niệm
Phân tích cú pháp là bước xử lý quan trọng trong các bài toán hiểu ngôn ngữ tự
nhiên. Nó cung cấp một nền tảng vững chắc cho việc xử lý văn bản thông minh như các hệ
thống hỏi đáp, khai phá văn bản và dịch máy.
Việc phân tích cú pháp câu có thể chia làm hai mức chính. Mức thứ nhất là tách từ
và xác định thông tin từ loại. Mức thứ hai là sinh cấu trúc cú pháp cho câu dựa trên các từ
và từ loại do bước trước cung cấp
Bài toán Phân tích cú pháp (PTCP)

Cụm từ
Đơn vị bắt đầu: các từ
the, cat, cuddly, by, door
Các từ kết hợp lại thành cụm từ:
the cuddly cat, by the door
Các cụm từ lại có thể kết hợp để thành cụm từ lớn hơn
the cuddly cat by the door
Cấu trúc phụ thuộc cho biết từ nào phụ thuộc vào (sửa đổi, đính kèm hoặc là đối số
của) từ nào khác.
Tại sao chúng ta cần cấu trúc câu:

100
Con người truyền đạt những ý tưởng phức tạp bằng cách ghép các từ lại với nhau
thành các đơn vị lớn hơn để truyền đạt ý nghĩa phức tạp.
Người nghe cần tìm ra điều gì sửa đổi [gắn liền với] điều gì
Một mô hình cần phải hiểu cấu trúc câu để được có thể giải thích ngôn ngữ một cách
chính xác

Khái niệm về văn phạm


Trước khi xem xét định nghĩa của văn phạm hình thức, ta hiểu văn phạm theo nghĩa
thông thường là các cú pháp đối với từng ngôn ngữ tự nhiên, đó là tập các quy tắc cấu tạo
từ, và quy tắc liên kết các từ lại thành một câu.
Chẳng hạn, ta xét một câu đơn trong ngôn ngữ tiếng Việt: ‘tôi ăn cơm’, câu này có
cây phân tích cú pháp như trong hình dưới đây:

101
Hình: Cây phân tích cú pháp trong văn phạm tiếng Việt
Xuất phát từ nút gốc: <câu>, sẽ sinh ra hai nút con là các thành phần và vị ngữ.
Mỗi nút con <chủ ngữ> và <vị ngữ>, lại sinh ra các thành phần ‘tôi’ và ‘ăn cơm’.
Hai thành phần cuối cùng này là các lá, nó không phải sinh ra thêm thành phần nào khác,
cho nên nó được coi như các ký hiệu kết thúc của hệ thống văn phạm, còn các thành phần
<câu> và <chủ ngữ>, <vị ngữ> đóng vai trò là các ký hiệu không kết thúc vì nó còn phải
sinh ra các thành phần khác. Chuỗi kết quả của cây cú pháp dưới đây là gồm một chuỗi
toàn các ký hiệu kết thúc, được phát sinh từ một nút khởi đầu là một ký hiệu không kết thúc
đặc biệt (start-S) được gọi là gốc của cây phân tích cú pháp, qua các nút trung gian có chứa
các ký hiệu không kết thúc. Đối với văn phạm hình thức, thì chuỗi kết quả (gồm toàn các
ký hiệu kết thúc) được coi là một từ sinh bởi văn phạm đã cho.
Tương tự như vây, văn phạm hình thức là một hệ thống sinh các từ của một ngôn
ngữ, được định nghĩa như sau:
Định nghĩa 4.1. Văn phạm (Grammar) G là một bộ sắp thứ tự gồm 4 thành phần:

G = < , , S, P >

trong đó:

102
  là một bảng chữ cái, gọi là bảng chữ cái chính (hay bảng chữ cái kết thúc), mỗi
phần tử của nó được gọi là một ký hiệu chính hay ký hiệu kết thúc (terminal),

  là một bảng chữ cái,    = , gọi là bảng ký hiệu phụ (hay báng chữ cái
không kết thúc), mỗi phần tử của nó được gọi là một ký hiệu phụ hay ký hiệu không kết
thúc (non terminal),

 S  được gọi là tiên đề hay ký hiệu xuất phát (start),

 P là tập hợp các quy tắc sinh (production) có dạng → , với ,  (  ) * ;


 được gọi là vế trái và  được gọi là vế phải của quy tắc này, và trong  phải chứa ít nhất
một ký hiệu phụ. Như vậy, các quy tắc hợp lệ của của P có dạng:

→  với  = α’Aα’’, trong đó A Δ, α’, α’’,  (  ) *

Chẳng hạn, với  = {0,1},  = {S, A, B} thì các quy tắc S→ 0S1A, 0AB→ 1A1B,
A→ ,… là các quy tắc hợp lệ vì vế trái luôn chứa ít nhất 1 ký hiệu phụ thuộc , nhưng
các quy tắc dạng: 0→ A, 01→ 0B,… là các quy tắc không hợp lệ

(Tập mọi xâu trên bảng chữ cái  được ký hiệu là  * , tập mọi xâu khác rỗng được
ký hiệu là  +)
Ví dụ: 2 bộ sau là văn phạm.
G1 = <{a, b, c}, {S, A, B, C}, S, P1>, với tập quy tắc P1 sau

S→ ABC, (1)

A→ aA, (2)

B→ bB, (3)

C→ cC, (4)

A→ a, (5)

B→ b, (6)

C→ c. (7)

G2 = < , , S, P2>, trong đó:

 = {tôi, anh, chị, ăn, uống, cơm, phở, sữa, café},

103
={<câu>,<chủ_ngữ>,<vị_ngữ>,<động_từ1>,<động_từ2>,<danh_từ1>,<danh_từ
2>}
S =<câu> ; với tập quy tắc P2:
<câu> → <chủ_ngữ><vị_ngữ>, (1)
<chủ_ngữ>→ tôi, (2)
<chủ_ngữ>→ anh, (3)
<chủ_ngữ>→ chị, (4)
<vị_ngữ>→ <động_từ1><danh_từ1>, (5)
<vị_ngữ>→ <động_từ2><danh_từ2> , (6)
<động_từ1>→ ăn, (7)
<động_từ2>→ uống, (8)
<danh_từ1>→ cơm, (9)
<danh_từ1>→ phở, (10)
<danh_từ2>→ sữa, (11)
<danh_từ2>→ café. (12)
Chú ý:
1. Nếu các quy tắc có vế trái giống nhau có thể viết gọn lại, chẳng hạn hai quy tắc:
→ , →  có thể được viết là →  | .
2. Người ta thường dùng các chữ cái in hoa: S, A, B, C để chỉ các ký hiệu phụ (kí
hiệu không kết thúc), đặc biệt S dùng để chỉ kí hiệu xuất phát, và các chữ cái in
thường: a, b, c… để chỉ các ký hiệu chính (kí hiệu kết thúc). Vì vậy, trong nhiều
trường hợp, khi cho một văn phạm, ta chỉ cần cho tập quy tắc là đủ để xác định được
tất cả các thành phần của văn phạm.
Ngôn ngữ sinh bởi văn phạm
Định nghĩa 4.2
Cho văn phạm G = < , , S, P>, nếu có quy tắc →  P thì ta nói xâu  =  suy dẫn
trực tiếp ra xâu  =  (với ,  (  ) * ), và ký hiệu là ├ G  hay ngắn gọn là ├
 (nếu suy dẫn được hiểu là trong văn phạm G)
Điều này có nghĩa là áp dụng quy tắc sinh →  vào xâu  =  thì được xâu  = 
Định nghĩa 4.3

104
Cho văn phạm G =< , , S, P> , nếu có các xâu 0, 1,… n  (  )*, sao cho 0├
1, 1├ 2,…, n-1├ n thì ta nói n được suy dẫn gián tiếp (hay suy dẫn) từ 0 trong G,
ký hiệu 0╞ G n hay ngắn gọn là 0╞ n (nếu các suy dẫn được hiểu là trong văn phạm
G).
 Dãy D = 0, 1,…, n được gọi là một dẫn xuất của n từ 0 trong G và số n được gọi
là độ dài của dẫn xuất này. Nếu 0 = S và n * thì dãy D gọi là dẫn xuất đầy đủ.
 Như vậy, 0╞ n khi và chỉ khi tồn tại dãy các suy dẫn trực tiếp: 0├ 1├ …├ n = .
 Nếu i được suy dẫn trực tiếp từ i-1 bằng việc áp dụng một quy tắc p nào đó trong G
thì ta nói quy tắc p được áp dụng ở bước thứ i.
Định nghĩa 4.4
Cho văn phạm G = < , , S, P>. Từ  * được gọi là sinh bởi văn phạm G nếu tồn tại
suy dẫn S╞ . Ngôn ngữ sinh bởi văn phạm G, ký hiệu L(G), là tập hợp tất cả các từ sinh
bởi văn phạm G:
L(G) = {  * | S ╞G }.
 Như vậy,  là một từ sinh bởi văn phạm G, hay  L(G), khi và chỉ khi tồn tại dãy các
suy dẫn trực tiếp được bắt đầu bằng một quy tắc có vế trái là S: S= 0├ 1├ …├ n =
  * .
Định nghĩa 4.5
Hai văn phạm G1 = < 1, 1, S1, P1>và G2 = < 2, 2, S2, P2> được gọi là tương đương nếu
L(G1) = L(G2).
Ví dụ
Xét văn phạm G1 trong thí dụ trên. Sử dụng quy tắc 1, rồi m -1 lần (m  1) quy tắc 2, n-1
lần (n  1) quy tắc 3, k-1 lần (k  1) quy tắc 4 (các quy tắc có thể xen kẽ), sau đó kết thúc
bởi các quy tắc 5, 6, 7, ta có: S ├ ABC ╞ amAbnBckC ╞ ambnck .
Do đó L(G1) = {ambnck | m  1, n  1, k  1}.
Dễ dàng thấy rằng: L(G2) = {tôi ăn cơm, anh ăn cơm, chị ăn cơm, tôi ăn phở, anh ăn phở,
chị ăn phở, tôi uống sữa, anh uống sữa, chị uống sữa, tôi uống café, anh uống café, chị
uống café}.
Ta có thể biểu diễn việc dẫn xuất từ ký hiệu ‘<câu>’ đến một từ trong L(G2), chẳng hạn từ
‘tôi ăn cơm’ bằng một cây gọi là cây dẫn xuất hay cây phân tích cú pháp như trong hình
trên, hay từ ký hiệu có thể dẫn xuất đến từ ‘anh uống café’như hình dưới đây.

105
Hình: cây cú pháp
Phân loại văn phạm theo Chomsky
Dựa vào đặc điểm của tập quy tắc mà người ta chia các văn phạm thành các nhóm khác
nhau. Noam Chomsky đã phân loại văn phạm thành bốn nhóm dưới đây:
 Nhóm 0: Văn phạm không hạn chế (Unrestricted Grammar-UG) (hay văn phạm ngữ cấu,
văn phạm tổng quát),
 Nhóm 1: Văn phạm cảm ngữ cảnh (Context Sensitive Grammar-CSG),
 Nhóm 2: Văn phạm phi ngữ cảnh (Context Free Grammar-CFG),
 Nhóm 3: Văn phạm chính quy. (Regular Grammar-RG)
Dưới đây là các định nghĩa cho các nhóm văn phạm nói trên.
Định nghĩa 4.6
Văn phạm G =< , , S, P> mà không có một ràng buộc nào đối với các quy tắc của nó
được gọi là văn phạm tổng quát hay văn phạm không hạn chế.
Như vậy, các quy tắc trong văn phạm nhóm 0 chỉ cần là các quy tắc hợp lệ (vế trái chứa ít
nhất một ký hiệu phụ: → , với  = α’Aα’’, A Δ, α’, α’’,  (  ) * ). Các quy tắc
của văn phạm nhóm 0 được gọi là quy tắc không hạn chế.
 Ngôn ngữ do văn phạm nhóm 0 sinh ra được gọi là ngôn ngữ tổng quát.

106
Định nghĩa 4.7
Văn phạm G =< , , S, P> với các quy tắc hợp lệ →, và |  | ≤ |  |, được gọi là văn
phạm nhóm 1 hay văn phạm cảm ngữ cảnh.
Các quy tắc trong văn phạm nhóm 1 được gọi là quy tắc cảm ngữ cảnh.
 Ngôn ngữ do văn phạm cảm ngữ cảnh sinh ra được gọi là ngôn ngữ cảm ngữ cảnh.
(Context Sensitive Language-CSL)
Các văn phạm mà các quy tắc của chúng có dạng trên, đồng thời chứa thêm quy tắc rỗng
S→ , cũng được xếp vào lớp văn phạm nhóm 1.
Ví dụ:
Cho văn phạm G =<{a, b, c}, {S, A, B, C}, S, P> , với tập quy tắc P sau:
S→ aSAC, (1)
S→ abC, (2)
CA→ BA, (3)
BA→ BC, (4)
BC→ AC, (5)
bA→ bb, (6)
C→ c. (7)
Các quy tắc của văn phạm G đều có dạng → , với | | ≤ |  |, vậy G là văn phạm cảm
ngữ cảnh.
Sử dụng n-1 lần (n  1) quy tắc 1, rồi quy tắc 2, kế đến sử dụng liên tiếp các quy tắc 3, 4,
5 (để đổi chỗ A và C), sau đó sử dụng n-1 lần quy tắc 6 và n lần quy tắc 7, ta có dãy suy
dẫn:
S╞ an-1S(AC)n-1├ anbC(AC)n-1╞ anbAn-1Cn ╞ anbncn.
Từ đó suy ra L(G) = {anbncn | n  1}
Định nghĩa 4.8
Văn phạm G =< , , S, P> mà các quy tắc của nó có dạng A→ , trong đó A ,  (
 ) * , được gọi là văn phạm nhóm 2 hay văn phạm phi ngữ cảnh.

107
Như vậy, các quy tắc trong văn phạm phi ngữ cảnh có vế trái chỉ chứa một ký hiệu phụ còn
vế phải là tùy ý, và được gọi là quy tắc phi ngữ cảnh.
Ngôn ngữ do văn phạm phi ngữ cảnh sinh ra được gọi là ngôn ngữ phi ngữ cảnh. (Context
Free Language-CFL).
Ví dụ:
Cho văn phạm G1 =<{a,b},{S,A}, S, P> , trong đó P:
S→ Sa, (1)
S→ Aa, (2)
A→ aAb, (3)
A→ ab. (4)
Các quy tắc đều có vế trái là một ký hiệu phụ, vậy G1 là văn phạm phi ngữ cảnh.
Sử dụng m-1 lần (m  1) quy tắc 1, rồi quy tắc 2, sau đó sử dụng n-1 lần (n  1) quy tắc 3,
cuối cùng là quy tắc 4, ta có dãy suy dẫn:
S ╞ Sam-1├ Aaam-1╞ an-1Abn-1am ├ anbnam.
Từ đó suy ra L(G1) = {anbnam| n  1, m  1}.
Chú ý rằng chỉ những quy tắc phi ngữ cảnh mà vế phải có chứa ký hiệu phụ ở vế trái, (gọi
là các quy tắc đệ quy) thì mới có thể áp dụng nhiều lần quy tắc này. (Ở thí dụ trên là quy
tắc 1 và quy tắc 3)
Định nghĩa 4.9
Văn phạm G =< , , S, P> mà các quy tắc của nó chỉ có dạng A→ aB, A→ a (còn gọi là
dạng tuyến tính phải-right linear) (hoặc chỉ có dạng A→ Ba, A→ a, còn gọi là dạng tuyến
tính trái-left linear), trong đó A, B , a , được gọi là văn phạm nhóm 3 hay văn phạm
chính quy.
Các văn phạm chính quy, đồng thời chứa thêm quy tắc rỗng S→  cũng được gọi là văn
phạm chính quy suy rộng. Các quy tắc tuyến tính phải hoặc tuyến tính trái trong văn phạm
chính quy được gọi là quy tắc chính quy.
 Ngôn ngữ do văn phạm chính quy sinh ra được gọi là ngôn ngữ chính quy. (Regular
Language-RL)

108
Ví dụ:
Cho văn phạm: G1 = <{1},{S, A, B}, S, P1>, với tập quy tắc P1
S→ , (1)
S→ 1A, (2)
A→ 1B, (3)
B→ 1A, (4)
A→ 1. (5)
Các quy tắc trong P1 đều là quy tắc chính quy, vậy G1 là văn phạm chính quy và ngôn ngữ
sinh bởi G1 là ngôn ngữ chính quy, L(G1) = {12n | n  0}. Thật vậy, sử dụng quy tắc 1, ta
có S├ , nếu sử dụng quy tắc 2, rồi n-1 lần (n  1) liên tiếp cặp quy tắc 3 và 4, cuối cùng
là quy tắc 5, ta có dãy suy dẫn:
S├ 1A ├ 11B ├ 111A ├… ╞ 1(12n-2 )A ├ 1(12n-2)1 = 12n.
Như vậy, ngôn ngữ L(G1) gồm mọi xâu có độ dài chẵn, chứa toàn ký hiêu ‘1’ .

Áp dụng tập luật ngữ pháp


􀁺S
→ NP VP
→ DT NNS VBD
→ The children slept

109
􀁺S
→ NP VP
→ DT NNS VBD NP
→ DT NNS VBD DT NN
→ The children ate the cake
Cấu trúc đoạn đệ qui

Nhận xét: Từ các định nghĩa trên, ta thấy lớp văn phạm không hạn chế là rộng nhất, nó
chứa đựng các văn phạm cảm ngữ cảnh, lớp văn phạm cảm ngữ cảnh chứa các văn phạm
phi ngữ cảnh và lớp văn phạm phi ngữ cảnh chứa các văn phạm chính quy.
Một ngôn ngữ hình thức được gọi tên bằng tên văn phạm sinh ra nó, tức là L là được gọi
ngôn ngữ tổng quát (hay ngôn ngữ cảm ngữ cảnh, phi ngữ cảnh, chính quy) nếu tồn tại văn
phạm loại tổng quát (tương ứng: văn phạm cảm ngữ cảnh, phi ngữ cảnh, chính quy) sinh
ra L. Vì vậy, đối với các lớp ngôn ngữ, nếu ký hiệu L0, L1, L2, L3 lần lượt là các lớp ngôn
ngữ tổng quát, ngôn ngữ cảm ngữ cảnh, ngôn ngữ phi ngữ cảnh và ngôn ngữ chính quy thì
ta có bao hàm thức:
L3  L2  L1  L0.
Theo sự phân loại của Chomsky, ta thấy lớp ngôn ngữ chính quy L3 là nhỏ nhất, nó bị chứa
thực sự trong lớp ngôn ngữ phi ngữ cảnh L2, lớp ngôn ngữ phi ngữ cảnh lại bị chứa thực
sự trong lớp ngôn ngữ cảm ngữ cảnh L1 và cuối cùng lớp ngôn ngữ tổng quát L0 (ngôn ngữ
ngữ cấu) là rộng nhất. Ta cũng thấy về mặt cấu trúc ngữ pháp thì các quy tắc của các văn
phạm phi ngữ cảnh và văn phạm chính quy là đơn giản hơn cả và chúng có nhiều ứng dụng
trong việc thiết kế các ngôn ngữ lập trình và trong nghiên cứu về chương trình dịch… Hình

110
vẽ dưới đây cho một sự so sánh về mức độ rộng lớn của các lớp ngôn ngữ theo phân loại
của Chomsky.

Hình: So sánh các lớp ngôn ngữ

Các ứng dụng của PTCP


􀁺 Dịch máy (Alshawi 1996, Wu 1997, ...)

􀁺 Nhận dạng tiếng nói sử dụng PTCP (Chelba et al 1998)


Put the file in the folder.
Put the file and the folder.
􀁺 Kiểm tra ngữ pháp (Microsoft)
􀁺 Trích rút thông tin (Hobbs 1996)

4.2. Phân tích cú pháp sử dụng văn phạm phi ngữ cảnh

111
PHÂN TÍCH CÚ PHÁP (PARSING)
Mục tiêu:
-Cho một chuỗi chứa các ký hiệu kết thúc.
-Xác định xem chuỗi này có thuộc văn phạm của ngôn ngữ đang xét hay không. Nếu có thì
hãy xây dựng cây phân tích cú pháp tương ứng.
Phần lớn các phương pháp phân tích cú pháp đều rơi vào một trong 2 lớp: phương pháp
phân tích từ trên xuống và phương pháp phân tích từ dưới lên. Những thuật ngữ này muốn
đề cập đến thứ tự xây dựng các nút trong cây phân tích cú pháp. Trong phương pháp đầu,
quá trình xây dựng bắt đầu từ gốc tiến hành hướng xuống các nút lá, còn trong phương
pháp sau thì thực hiện từ các nút lá hướng về gốc. Phương pháp phân tích từ trên xuống
thông dụng hơn nhờ vào tính hiệu quả của nó khi xây dựng theo lối thủ công. Ngược lại,
phương pháp phân tích từ dưới lên lại có thể xử lý được một lớp văn phạm và lược đồ dịch
phong phú hơn. Vì vậy, đa số các công cụ phần mềm giúp xây dựng thể phân tích cú pháp
một cách trực tiếp từ văn phạm đều có xu hướng sử dụng phương pháp từ dưới lên.

Phân tích cú pháp (PTCP) kiểu trên xuống (Top-Down)

• Cho 1 văn phạm phi ngữ cảnh G và 1 câu cần phân tích w.
• Xây dựng cây phân tích cú pháp cho câu đầu vào với:
o Ký hiệu bắt đầu của văn phạm làm gốc
o Dùng các luật sinh thích hợp để khai triển cây dần xuống cho tới khi sinh ra
được câu cần phân tích ở các nút lá.
􀁺 Hướng đích
􀁺 Khởi đầu với 1 danh sách các ký hiệu cần triển khai (S, NP,VP,…)
􀁺 Viết lại các đích trong tập đích bằng cách:
􀁺 tìm luật có vế trái trùng với đích cần triển khai
􀁺 triểu khai nó với vế phải luật, tìm cách khớp với câu đầu vào
􀁺 Nếu 1 đích có nhiều cách viết lại ->chọn 1 luật để áp dụng (bài toán tìm kiếm)

112
􀁺 Có thể sử dụng tìm kiếm rộng (breadth-first search) hoặc tìm kiếm sâu (depth-
first search)
Ví dụ
Câu đầu vào: John is playing game
Phân tách câu thành các từ: “John”, “is”, “playing”, “game”
Gán nhãn cho các từ: John-Noun, is-verb, playing-verb, game-Noun.
Cho văn phạm phi ngữ cảnh, S là ký hiệu khởi tạo
Tập luật P:
S → NP VP
S → NP AuxV VP
S → VP
NP → Proper-Noun
NP → Det Nominal
Nominal → Noun
Nominal → Noun Nominal
VP → Verb
VP → V NP
Thực hiện phân tích cú pháp từ trên xuống

Việc gán nhãn không phù hợp với chuỗi đầu vào, quay trở lại nút NP

113
Việc gán thẻ Verb không phù hợp chuỗi đầu vào, quay trở lại nút S, khi PNoun là
phù hợp

Khó khăn với PTCP trên xuống


􀁺 Các luật đệ qui trái
􀁺 PTCP trên xuống rất bất lợi khi có nhiều luật có cùng vế trái

􀁺 Nhiều thao tác thừa: triển khai tất cả các nút có thể phân tích trên xuống

114
􀁺 PTCP trên xuống sẽ làm việc tốt khi có chiến lược điều khiển ngữ pháp phù hợp
􀁺 PTCP trên xuống không thể triển khai các ký hiệu tiền kết thúc thành các ký hiệu
kết thúc. Trên thực tế, người ta thường sử dụng phương pháp dưới lên để làm việc này.
􀁺 Lặp lại công việc: bất cứ chỗ nào có cấu trúc giống nhau

PTCP dưới lên (Bottom-Up)

􀁺 Hướng dữ liệu
􀁺 Khởi tạo với xâu cần phân tích
􀁺 Nếu chuỗi trong tập đích phù hợp với vế phải của 1 luật → thay nó bằng vế trái
của luật
􀁺 Kết thúc khi tập đích = {S}.
􀁺 Nếu vế phải của các luật khớp với nhiều luật trong tập đích, cần lựa chọn luật áp
dụng (bài toán tìm kiếm)
􀁺 Có thể sử dụng tìm kiếm rộng (breadth-first search) hoặc tìm kiếm sâu (depth-
first search)
Ví dụ
Câu đầu vào: John is playing game
Phân tách câu thành các từ: “John”, “is”, “playing”, “game”
Gán nhãn cho các từ: John-Noun, is-verb, playing-verb, game-Noun.
Cho văn phạm phi ngữ cảnh, S là ký hiệu khởi tạo
Tập luật P:
S → NP VP
S → NP AuxV VP

115
S → VP
NP → Proper-Noun
Proper-Noun→ Noun
NP → Det Nominal
Nominal → Noun
Nominal → Noun Nominal
VP → Verb
VP → V NP
Thực hiện phân tích cú pháp từ dưới lên

116
Khó khăn với PTCP dưới lên
􀁺 Không hiệu quả khi có nhiều nhập nhằng mức từ vựng
􀁺 Lặp lại công việc: bất cứ khi nào có cấu trúc con chung
􀁺 Cả PTCP TD (LL) và BU (LR) đều có độ phức tạp là hàm mũ của độ dài câu.
Ví du: Phân tích câu: Beavis ate the cat

Thuật toán CKY (Cocke-Kasami-Younger)


CKY ( Coke- Kasami – Younger) là một thuật toán cải tiến của thuật toán phân tích
cú pháp Bottom-Up.

117
CKY có thể tránh được những cách phân tích cú pháp không hợp lý so với thuật
toán Buttom-Up thông thường. Do CKY sử dụng một hình thức văn phạm đặc biệt được
gọi là Chomsky Normal Form (CNF). Các giải pháp trung gian của thuật được lưu trữ và
chỉ triển khai những giải pháp trung gian nào có khả năng đóng góp vào việc phân tích đầy
đủ cấu trúc cú pháp câu.
Dạng chuẩn Chomsky (CNF)
Văn phạm phi ngữ cảnh ở dạng chuẩn Chomsky nếu mọi luật sinh đều có dạng
A → BC hoặc A → a

Dễ thấy mọi văn phạm phi ngữ cảnh không chứa suy dẫn rỗng (A → ) đều có thể
chuyển về dạng chuẩn Chomsky bằng thuật toán đơn giản sau

 Nếu luật sinh sẵn ở dạng chuẩn Chomsky thì giữ nguyên

 Nếu luật sinh không ở dạng chuẩn Chomsky thì sẽ có dạng A → B1B2…Bn , với
n>2
• Ta bổ sung các kí hiệu trung gian mới C1, C2,…, Cn-2
• Thay thế luật trên bằng các luật mới A → C1Bn, C1 → C2Bn-1,… Cn-2 →
B1B2, các luật mới này thỏa mãn chuẩn Chomsky
Ví dụ:
􀁺 Chuyển VP→V NP PP thành:
VP→V Arguments
Arguments → NP PP
Thuật toán CKY
􀁺 Vào: xâu n từ
Văn phạm phi ngữ cảnh ở dạng chuẩn Chomsky
􀁺 Ra: yes/no
􀁺 Cấu trúc ngữ pháp: bảng n x n ( chart table)
􀁺 hàng đánh số 0 đến n-1

118
􀁺 cột đánh số 1 đến n
􀁺 cell [i,j] liệt kê tất cả các nhãn cú pháp giữa i và j
Thuật toán CKY (bottom-up)

Luật kết hợp


􀁺 Ô Cell[i,j] chứa nhãn X nếu
􀁺 Có luật X→YZ;
􀁺 Cell[i,k] chứa nhãn Y và ô Cell[k,j] chứa nhãn Z, với k nằm giữa i và j;
􀁺 VD: NP → DT [0,1] NN[1,2]
Tính hiệu quả:
– CKY có thể được thực hiện với thời gian: O(n3), trong đó n=số từ của câu.
– Sự phức tạp của các vòng lặp trong.
– Nhiều quy tắc hơn, thì ít hiệu quả hơn, nhưng điều này làm tăng một tỉ lệ
hằng L = r2 với r là số lượng của các biến (non-terminals).
Ngữ pháp đòi hỏi:
– Các thuật toán cơ bản đòi hỏi một ngữ pháp nhị phân: ngữ
pháp CNF (Chomsky Normal Form).
– Tuy nhiên, việc chuyển đổi thành ngữ pháp CNF dễ dàng và hiệu quả hơn
so với phân tích với ngữ pháp tùy ý.
Ví dụ:
Phân tích một câu đơn giản theo văn phạm CNF
Câu: .0 the .1 chef .2 eats .3 fish .4 with .5 the .6 chopsticks .7
Phân tích theo văn phạm CNF là:

119
S → NP VBZ (1)
S → NP VP (2)
VP → VP PP (3)
VP → VBZ NP (4)
VP → VBZ PP (5)
VP → VBZ NNS (6)
VP → VBZ VP (7)
VP → VBP PP (8)
NP → DT NN (9)
NP → DT NNS (10)
PP → IN NP (11)
DT → the (12)
NN → chef (13)
NNS → fish (14)
NNS → chopsticks (15)
VBP → fish (16)
VBZ → eats (17)
IN → with (18)

the chef eats fish with the chopsticks

1 2 3 4 5 6 7

0 DT

1 NN

2 VBZ

120
3 NNS,VBP

4 IN

5 DT

6 NNS

121
Ô[0,2]=ô[0,1] ô[1,2]= DT NN
NP → DT NN (9)
Ô[0,2]: NP

the chef eats fish with the chopsticks

1 2 3 4 5 6 7

0 DT NP

1 NN

2 VBZ

3 NNS,VBP

4 IN

5 DT

6 NNS

122
the chef eats fish with the chopsticks

1 2 3 4 5 6 7

0 DT NP S

1 NN

2 VBZ

3 NNS,VBP

4 IN

5 DT

6 NNS

the chef eats fish with the chopsticks

1 2 3 4 5 6 7

0 DT NP S S

1 NN

2 VBZ VP

3 NNS,VBP

4 IN

5 DT

6 NNS

123
the chef eats fish with the chopsticks

1 2 3 4 5 6 7

0 DT NP S S

1 NN

2 VBZ VP

3 NNS,VBP

4 IN

5 DT

6 NNS

the chef eats fish with the chopsticks

1 2 3 4 5 6 7

0 DT NP S S

1 NN

2 VBZ VP

3 NNS,VBP

4 IN

5 DT

6 NNS

124
the chef eats fish with the chopsticks

1 2 3 4 5 6 7

0 DT NP S S S, S

1 NN

2 VBZ VP VP, VP

3 NNS,VBP VP

4 IN PP

5 DT NP

6 NNS

Bảng kết quả cuối cùng

the chef eats fish with the chopsticks

1 2 3 4 5 6 7

0 DT NP S S S, S

1 NN

2 VBZ VP VP, VP

3 NNS,VBP VP

4 IN PP

5 DT NP

6 NNS

125
Demo: https://thanhcuong1990.github.io/blog/cky/cky1.html
Giải thuật Earley
Giải thuật Earley là một trong những giải thuật được sử dụng phổ biến trong việc
xây dựng các hệ thống phân tích cú pháp. Giải thuật này sử dụng chiến lược phân tích kiểu
trên xuống (top-down), bắt đầu với một ký hiệu không kết thúc đại diện cho câu và sử dụng
các luật khai triển cho đến khi thu được câu vào. Hạn chế của cách tiếp cận này là không
chú trọng nhiều đến các từ đầu vào. Vì vậy trong quá trình phân tích, giải thuật Earley sản
sinh ra rất nhiều luật dư thừa.
Giải thuật Earley cơ bản được phát biểu như sau:
Đầu vào: Văn phạm G = (N, T, S, P), trong đó:
• N: tập kí hiệu không kết thúc
• T: tập kí hiệu kết thúc
• S: kí hiệu không kết thúc bắt đầu
• P: tập luật cú pháp
Xâu vào w = a1a2 ... an
Đầu ra: Phân tích đối với w hoặc "sai"
Kí hiệu
• α, β, γ biểu diễn xâu chứa các kí hiệu kết thúc, không kết thúc hoặc rỗng
• X, Y, Z biểu diễn các kí hiệu không kết thúc đơn
• a biểu diễn kí hiệu kết thúc
Earley sử dụng cách biểu diễn luật thông qua dấu chấm “• ”
X→ α • β có nghĩa :
• Trong P có một luật sản xuất X→ α β
• α đã được phân tích
• β đang được chờ phân tích

126
• Khi dấu chấm “• ” được chuyển ra sau β có nghĩa đây là một luật hoàn thiện. Thành
phần X đã được phân tích đầy đủ, ngược lại nó là một luật chưa hoàn thiện.
Đối với mỗi từ thứ j của xâu đầu vào, bộ phân tích khởi tạo một bộ có thứ tự các
trạng thái S(j). Mỗi bộ tương ứng với một cột trong bảng phân tích. Mỗi trạng thái có dạng
(i, X → α • β), xác định rằng luật này được phát sinh từ cột thứ i.
Khởi tạo
• S(0) được khởi tạo chứa ROOT → • S.
• Nếu tại bộ cuối cùng ta có luật (0, ROOT → S•) thì có nghĩa xâu vào được phân
tích thành công.
Thuật toán
Thuật toán phân tích thực hiện 3 bước: Dự đoán (Predictor), Duyệt (Scanner), và
Hoàn thiện (Completer) đối với mỗi bộ S(j).
Dự đoán
Với mọi trạng thái trong S(j): (i, X → α • Y β), ta thêm trạng thái (j, Y → • γ) vào
S(j) nếu có luật sản xuất Y → γ trong P.
Duyệt
Nếu a là kí hiệu kết thúc tiếp theo.
Với mọi trạng thái trong S(j): (i, X → α • a β), ta thêm trạng thái (i, X → α a • β)
vào S(j+1).
Hoàn thiện
Với mọi trạng thái trong S(j): (i, X → γ• ), ta tìm trong S(i) trạng thái (k, Y → α • X β), sau
đó thêm (k, Y → α X • β) vào S(j).
Ở mỗi bộ S(j) phải kiểm tra xem trạng thái đã có chưa trước khi thêm vào để tránh trùng
lặp.

127
Cho chuỗi đầu vào:

128
129
130
131
132
133
134
135
136
137
Ví dụ:
Câu: .0 the .1 chef .2 eats .3 fish .4 with .5 the .6 chopsticks .7
ROOT →S (1) S → NP VBZ (2)
S → NP VP (3) VP → VP PP (4)

138
VP → VBZ NP (5) VP → VBZ PP (6)
VP → VBZ NNS (7) VP → VBZ VP (8)
VP → VBP PP (9) NP → DT NN (10)
NP → DT NNS (11) PP → IN NP (12)
DT → the (13) NN → chef (14)
NNS → fish (15) NNS → chopsticks (16)
VBP → fish (17) VBZ → eats (18) IN → with (19)
Chương 5. Ngữ nghĩa
5.1. Một số khái niệm
Phân tích ngữ nghĩa: là quá trình liên hệ cấu trúc ngữ nghĩa, từ cấp độ cụm từ,
mệnh đề, câu và đoạn đến cấp độ toàn bài viết, với ý nghĩa độc lập của chúng. Nói
cách khác, việc này nhằm tìm ra ngữ nghĩa của đầu vào ngôn từ. Phân tích ngữ nghĩa
bao gồm hai mức độ: Ngữ nghĩa từ vựng biểu hiện các ý nghĩa của những từ thành
phần, và phân biệt nghĩa của từ; Ngữ nghĩa thành phần liên quan đến cách thức các
từ liên kết để hình thành những nghĩa rộng hơn.

Phân tích ngữ nghĩa: thêm ngữ nghĩa vào các cấu trúc được tạo ra bởi bộ phân tích
cú pháp.
Tại sao cần phân tích ngữ nghĩa:

• trả lời và cho điểm bài đọc hiểu


• đọc thực đơn và đặt món ăn
• đọc hướng dẫn sử dụng để hiểu cách sử dụng
Thế nào được coi là hiểu?
… nếu có thể phản ứng phù hợp
VD: “cho tất cả đồ chơi vào giỏ”
… nếu có thể xác định 1 phát biểu là đúng hay sai
hiểu NP nghĩa là xác định được NP đó đề cập đến cái gì
… nếu có thể sử dụng nội dung đó để trả lời câu hỏi
Dễ: Mai ăn kẹo. →Mai ăn gì?

139
Khó: Nước đi đầu tiên của quân trắng là P-Q4. → Quân đen có thể chiếu tướng
không?
… nếu có thể dịch: phụ thuộc vào ngôn ngữ đích
Sử dụng logic vị từ
Ví dụ
(1) a. Some politicians are mortal.
a. ∃x (politician(x) ˄ mortal(x))
[There is an x (at least one) so that x is a politician and x is mortal.]
(2) a. All Australian students like Kevin Rudd.
b. ∀x ((student(x) ˄ Australian(x)) →like(x, k))
[For all x with x being a student and Australian, x likes Kevin Rudd.]
Trong các công thức này x là một biến, k là một thực thể, politician, mortal,
like,…là các vị từ
(3) a. Modusponens:
(i) P (premise)
(ii) P → Q (premise)
(iii) Q (conclusion)
b. (i) Conrad is tired (P: tired(c))
(ii) Whenever Conrad is tired, he sleeps (P: tired(c), Q: sleep(c), P→ Q)
(iii) Conrad sleeps (Q: sleep(c))
Logic: thuật ngữ Lambda

• λ: là cách để viết 1 hàm “bất kỳ”


Không có tên hàm
Được dùng để định nghĩa tính chất cơ bản của hàm
Định dạng: λ <tên biến> <biểu thức>
Ví dụ:
Cho square = λp p*p
Tương đương với int square(p) { return p*p; }

140
Cho square = λp p*p
Khi đó square(3) = (λp p*p)(3) = 3*3
Chú ý: square(x) không phải là hàm, chỉ là giá trị của x*x.
Hàm: λx square(x) = λx x*x = λp p*p = square

Cho even = λp (p mod 2 == 0) vị từ trả về giá trị True/False


even(x) = true nếu x chẵn
Còn even(square(x))?
λx even(square(x)) = true với các số x có square(x) chẵn
λx (even(x*x)) = λx (x*x mod 2 == 0)
Logic: Một số vị từ
most – 1 vị từ trên 2 vị từ khác

• most(pig, big) = “most pigs are big”


o tương đương với, most(λx pig(x), λx big(x))
• trả về true nếu đa số giá trị thỏa vị từ đầu tiên cũng thỏa vị từ thứ 2
tương tự:

• all(pig,big) (tương đương với ∀x pig(x) ⇒ big(x))


• exists(pig,big) (tương đương với ∃x pig(x) AND big(x))
Cách biểu diễn vị từ
Gilly swallowed a goldfish
swallowed(Gilly, goldfish)
goldfish không phải là tên một đối tượng duy nhất như là Gilly
Vấn đề
Gilly swallowed a goldfish and Milly swallowed a goldfish
chuyển thành:

141
swallowed(Gilly, goldfish) AND swallowed(Milly, goldfish)
nhưng không phải cùng 1 goldfish …
Sử dụng lượng từ
Gilly swallowed a goldfish
swallowed(Gilly, goldfish)
Tốt hơn: ∃g goldfish(g) AND swallowed(Gilly, g)
Hoặc sử dụng vị từ lượng từ:
exists(λg goldfish(g), λg swallowed(Gilly,g))
tương đương: exists(goldfish, swallowed(Gilly))
“trong tập cá có 1 con cá bị nuốt bởi Gilly”
Thời
Gilly swallowed a goldfish
exists(goldfish, λg swallowed(Gilly,g))
Cải tiến:
swallowed(Gilly,g) chuyển thành swallow(t,Gilly,g), t là thời gian
∃t past(t) AND exists(λg goldfish(g), λg swallow(t,Gilly,g))
“Có lúc nào đó trong quá khứ, con cá là 1 trong các vật bị Gilly nuốt”

Các thuộc tính về sự kiện


Gilly swallowed a goldfish
∃t past(t) AND exists(goldfish, swallow(t,Gilly))
Một phát biểu có thể có các thuộc tính khác nữa:
[Gilly] swallowed [a goldfish] [on a dare] [in a telephone booth] [with 30
other freshmen] [after many bottles of vodka had been consumed]
xác định ai? làm gì? tại sao? khi nào? (who what why when)

142
Thay biến thời gian t với biến sự kiện e
∃e past(e), act(e,swallowing), swallower(e,Gilly), exists(goldfish,
swallowee(e)), exists(booth, location(e)), …
Có thể biểu diễn quá khứ bằng λe ∃t before(t,now), ended-at(e,t)
Trật tự của lượng từ
Ví dụ
In this country a woman gives birth every 15 min. Our job is to find that
woman and stop her.

• ∃woman (∀15min gives birth during(woman 15min))


• ∀15min (∃woman gives-birth-during(15min, woman))
Từ đồng âm
Từ đồng âm (Homonymy): là những từ trùng nhau về hình thức ngữ âm nhưng khác
nhau về nghĩa

• Từ đồng âm, đồng tự (Homograph) : các từ với cùng cách viết nhưng có
nghĩa khác nhau. Ví dụ:
􀁺 dove - dive into water, white bird
􀁺 saw

• Từ đồng âm, không đồng tự (Homophone): các từ có cách viết khác nhau
nhưng có cùng âm. Ví dụ:
􀁺 see, sea; meat, meet
Phân loại từ đồng âm tiếng Việt
Đồng âm từ với từ, gồm:

• Đồng âm từ vựng: Tất cả các từ đều thuộc cùng một từ loại. Ví dụ:
o đường1 (đắp đường) - đường2 (đường phèn).
o đường kính1 (đường để ăn) - đường kính2 (…của đường tròn).
o cất1 (cất vó) - cất2 (cất tiền vào tủ) - cất3 (cất hàng) - cất4 (cất rượu)

143
• Đồng âm từ vựng-ngữ pháp: Các từ trong nhóm đồng âm với nhau chỉ khác
nhau về từ loại. Ví dụ:
o chỉ1 (cuộn chỉ) - chỉ2 (chỉ tay năm ngón) - chỉ3 (chỉ còn có dăm đồng).
o câu1 (nói vài câu) - câu2 (rau câu) - câu3 (chim câu) - câu4 (câu cá)
Từ đa nghĩa, đồng nghĩa
Từ đa nghĩa (Polysemy): một từ nhiều nghĩa, biểu thị những đặc điểm, thuộc tính
khác nhau của một đối tượng, hoặc biểu thị những đối tượng khác nhau của thực tại.
Ví dụ: đi chỉ việc dịch chuyển bằng hai chi dưới hoặc chỉ một người nào đó đã chết
Đồng nghĩa (Synonymy): là những từ tương đồng với nhau về nghĩa, khác nhau về
âm thanh. Ví dụ
cố, gắng
car, automobile
Nghĩa từ vựng
Ngữ nghĩa nghiên cứu ý nghĩa của các phát biểu dạng ngôn ngữ
Nghĩa từ vựng (Lexical semantics) nghiên cứu:

• (quan hệ từ vựng) sự liên hệ về mặt ngữ nghĩa giữa các từ


• (ràng buộc về lựa chọn) cấu trúc liên hệ ngữ nghĩa bên trong của từng từ
• bao gồm lý thuyết về phân loại và phân rã nghĩa của từ, sự giống và khác
trong cấu trúc từ vựng – ngữ nghĩa giữa các ngôn ngữ, và quan hệ nghĩa của
từ với cú pháp và ngữ nghĩa của câu.
5.2. WordNet- cơ sở dữ liệu các mối quan hệ từ vựng
Các mối quan hệ trên ý nghĩa của từ
Từ vốn được hình thành để chỉ các khái nhiệm. VD: Từ “mèo” dùng để chỉ một loài vật có
bốn chân, ăn chuột, nhìn rõ về đêm, …. hay từ “chim” dùng để chỉ loài vật có lông vũ, biết
bay, …. Ngữ nghĩa không phụ thuộc vào ngôn ngữ. Người Anh, người Mỹ, người Trung
Quốc hay người Việt Nam đều có chung khái niệm về con mèo, chỉ khác nhau về hình thức
biểu đạt (vd trong tiếng Anh là “cat”, trong tiếng Việt là “mèo”). Nhờ sự giống nhau trong
khái niệm mà ta có thể dịch từ tiếng này sang tiếng khác.
Một hình thái của từ (word form) hay gọi ngắn gọn là từ có thể có nhiều hơn một ý nghĩa

144
biểu đạt đồng thời một nghĩa có thể được thể hiện bằng nhiều từ. Giữa các từ với nhau cũng
có mối quan hệ về ngữ nghĩa, vd: “chó” là một loài “động vật”, “rễ” là một bộ phận của
“cây”, ….
Tổng hợp lại, ta có các dạng quan hệ sau: đồng nghĩa, trái nghĩa, đồng âm, đa nghĩa, hạ
danh, thượng danh, bộ phận, bao hàm, kéo theo, cách thức.
Đồng Nghĩa (Synonymy): Các từ có hình thức biểu đạt khác nhau nhưng cùng chỉ một
khái niệm. Ví dụ trong tiếng Việt, từ “lợn” và từ “heo” là các từ đồng nghĩa, trong tiếng
Anh, từ “chance” và từ “opportunity” là các từ đồng nghĩa.
Trái Nghĩa (Antonym): Các từ chỉ các khái niệm trái ngược nhau. Từ “White” trái nghĩa
với “Black”, “Xấu” trái nghĩa với “Đẹp”, “Sống” trái nghĩa với “Chết”.
Đồng Âm (Homonym): Những từ có cùng cách viết (đọc) nhưng có nghĩa hoàn toàn khác
nhau. Từ “bank” có nghĩa là ngân hàng nhưng cũng có nghĩa là bờ sông. Nói đúng hơn là
ta có 2 từ “bank”, một từ chỉ ngân hàng và một từ chỉ bờ sông và hai từ này có cách viết
giống nhau. Tương tự trong tiếng Việt ta có “đông” có thể chỉ sự đông đúc, nhiều người
hoặc chỉ hướng đông, hoặc chỉ mùa đông.
Đa Nghĩa (Polysemy): Các từ giống nhau về cách viết (đọc) và nghĩa có mối liên hệ với
nhau. Ví dụ trong câu “I work in a company” thì “company” chỉ công ty còn trong câu
“The company sends me an email” thì “company” ám chỉ ban điều hành công ty (trong câu
này không thể là công ty và vật vô tri không thể gửi email). Ta thấy có sự gần gũi giữa
nghĩa công ty và ban điều hành công ty.
Hạ Danh (Hyponymy): Từ X là hạ danh của từ Y nếu X là một tập con của Y. Ví dụ: tất
cả các con mèo đều là động vật, hay “mèo” là tập con của tập “động vật” nên “mèo” là hạ
danh của “động vật”.
Thượng Danh (Hypernym): nếu X là hạ danh của Y thì Y chính là thượng danh của X.
“động vật” là thượng danh của “mèo”, “thực vật” là thượng danh của “cây xoài”, ….
Bộ Phận (Meronymy): X là bộ phận của Y có nghĩa là Y bao gồm cả X. Ví dụ: “cây” gồm
rễ, thân, lá thì “rễ”, “thân”, “lá” chính là bộ phận của “cây”; “bánh xe” là bộ phận của
“chiếc xe”.
Bao Hàm (Holonym) X là bộ phận của Y thì Y chính là bao hàm của X. “cây” bao hàm
“rễ”, “thân”, “lá”; “chiếc xe” bao hàm “bánh xe”.
Kéo Theo (Entailment): Hành động X xảy ra nghĩa là hành động Y xảy ra, hay để xảy ra
X thì phải xảy ra Y. Ví dụ: “ngáy” là một kéo theo của “ngủ”.
Cách Thức (Troponym): Hành động X là một cách thức xảy ra của Y. Ví dụ “nói nhỏ”,
“thì thầm” là một phương thức của “nói” hay “đi khập khiễng” là một phương thức của
“đi”.
WordNet: Giới thiệu

145
Chúng ta nhận thấy rằng quan hệ về ngữ nghĩa chia làm hai loại chính là quan hệ
thứ tự và quan hệ tương đương. Các từ đồng nghĩa, trái nghĩa, đồng âm, đa nghĩa là các từ
có mối quan hệ tương đương hay quan hệ ngang hàng. Từ A đồng nghĩa với từ B thì ngược
lài từ B cũng đồng nghĩa với từ A, tương tự cho trái nghĩa, đồng âm, …. Các quan hệ còn
lại là các quan hệ thứ tự và phân thành các cặp như từ A là thượng danh của từ B thì từ B
sẽ là hạ danh của từ A. Quan hệ thứ tự này còn có tính chất bắc cầu, nếu C là hạ danh của
B, B là hạ danh của A thì C cũng là hạ danh của A. Ví dụ: sữa là một loại đồ uống, đồ uống
là một loại chất lỏng thì sữa là một loại chất lỏng.
Nếu ta biểu diễn các ngữ nghĩa của từ thành một nút và các quan hệ giữa chúng là các cung
thì ta sẽ có một mạng ngữ nghĩa với các từ có quan hệ tương đương thì sẽ nằm trong một
lớp và các lớp này nối với nhau thành từng tầng dựa theo quan hệ thứ tự. Đó chính là mạng
ngữ nghĩa WordNet.
Năm 1980, Miller và cộng sự tại trường Đại học Princeton (Mỹ) đã xây dựng lên
một hệ cơ sở tri thức ngữ nghĩa từ vựng mang tên WordNet. WordNet là một cơ sở dữ liệu
tri thức ngữ nghĩa từ vựng bằng tiếng Anh. Người ta xây dựng WordNet dựa trên những lý
thuyết về ngôn ngữ_tâm lý theo cách liên tưởng từ ngữ của con người. WordNet là một cơ
sở dữ liệu từ vựng lớn về các từ tiếng Anh. Danh từ, động từ, tính từ và trạng từ được nhóm
lại thành các tập hợp các từ đồng nghĩa nhận thức được gọi là 'synsets', theo đó các từ được
sắp xếp trong dãy của những tập hợp đồng nghĩa, giúp cho việc xác định nghĩa của từ và
để phân biệt được nghĩa đang xét với các nghĩa khác. Nguyên lí tổ chức chung của WordNet
là mạng lưới quan hệ ngữ nghĩa. Đó là quan hệ đồng nghĩa (synonym): dog – domestic
dog; quan hệ trái nghĩa (antonym): rich – poor; quan hệ trên dưới (hyponym): maple – tree,
parent – father; quan hệ chỉnh thể – bộ phận (meronym): body – limb; quan hệ kéo theo
(entailment): snore – sleep (cho động từ); v.v. Chẳng hạn, thông tin hyponym của mục dog
được miêu tả trong WordNet như sau:

146
147
WordNet bao gồm 3 bộ dữ liệu riêng biệt, một bộ của danh từ, một bộ của động từ,
một bộ của tính từ và trạng từ. Tính đến phiên bản 3.0, bộ dữ liệu WordNet dành cho tiếng
anh đã có khoảng 117000 danh từ, 11400 động từ, 22000 tính từ và 4600 trạng từ.
Mạng WordNet được tổ chức theo mô hình cây như mô tả ở trên, mỗi node chứa một từ
nguyên mẫu (lemma) cùng với tập các từ đồng nghĩa với nó (synset). Mạng WordNet chỉ
thể hiện quan hệ về ngữ nghĩa chứ không thể hiện quan hệ về ngữ âm hay hình thái. Trong
các ngôn ngữ biến cách như tiếng Anh, một từ có nhiều biến thể theo thì (tense), số lượng
(plural) như “eats”, “mice”, “teeth”, …. Xét về mặt ngữ nghĩa thì các từ này và các từ
nguyên mẫu tương ứng của chúng nói đến cùng một khái niệm nên trong bộ dữ liệu
WordNet thì các từ biến cách được gộp chung vào từ nguyên mẫu của chúng và cùng nằm
trong một node.

148
Hiện tại WordNet không chỉ có bộ dữ liệu dành cho tiếng Anh mà còn có bộ dữ liệu dành
cho các thứ tiếng khác như tiếng Pháp, tiếng Trung Quốc,… và có cả bộ dữ liệu WordNet
của tiếng Việt [www.globalwordnet.org].
Các quan hệ khác trong WordNet
•Các từ nối theo chiều dọc biểu diễn quan hệ rộng (holonymy) - hẹp (hypernymy),
theo chiều ngang biểu diễn quan hệ bộ phận meronymy (part_of) và holonymy (has_part)
.
•Mỗi nghĩa của từ được biểu diễn bằng 1 số synset

Một số hạn chế


-Thiếu sắc thái:
Ví dụ, “proficient” được liệt kê đồng nghĩa với “good”. Tuy nhiên điều này chỉ đúng
trong một số ngữ cảnh.
- WordNet thay đổi rất phức tạp, WordNet mang tính chủ quan do một số người làm.
-Không thể tính toán độ chính xác tương tự từ
Một số ứng dụng của bộ dữ liệu WordNet
Đo khoảng cách về nghĩa của các từ
Ta có thể dùng WordNet như một độ đo khoảng cách về ngữ nghĩa của các từ. Khoảng
cách giữa các từ sẽ được đo bằng độ dài đường đi ngắn nhất trong trong mạng WordNet.
Ví dụ: Ta có “cat”, “dog” là hạ danh trực tiếp của “animal”. Như vậy khoảng cách giữa

149
“cat” và “animal” là 1 còn khoảng cách từ “cat” đến “dog” là 2 (cat -> animal -> dog). Các
từ đồng nghĩa trong WordNet sẽ có khoảng cách là 0.
Việc xây dựng độ đo như vậy có ý nghĩa quan trọng trong bài toán tìm từ thay thế trong
văn bản. Ví dụ cho câu “I have a cat” và cần thay từ “cat” thành từ khác sao cho nghĩa ít
biến đổi nhất. Theo độ đo của WordNet thì ta thấy việc thay “cat” thành “animal” sẽ phù
hợp hơn “dog” vì độ đo giữa “cat” và “animal” ngắn hơn. Thực tế đã kiểm nghiệm điều
đó, rõ ràng là câu “I have an animal” gần nghĩa với câu “I have a cat” hơn là câu “I have a
dog”.
Kiểm tra ràng buộc về nghĩa trong câu
Chúng ta đã biết phân tích cú pháp văn phạm cho ta cấu trúc cú pháp của câu. Tuy nhiên
phân tích văn phạm chỉ có thể kiểm tra tính đúng về văn phạm chứ không kiểm tra tính
đúng về ngữ nghĩa. Xét câu “the table eats the chicken”, nếu đem câu này đi phân tích thì
ta nhận thấy câu này hoàn toàn đúng về ngữ pháp (“the table” là NP đóng vai trò chủ ngữ,
“eats” là V, “the chicken” là NP đóng vai trò bổ nghĩa cho V). Tuy nhiên rõ ràng là cái bàn
(table) không thể “ăn” được con gà (chicken), thay vào đó nếu đổi thành “the dog eats the
chicken” thì sẽ hợp lý hơn. Vậy làm sao biết được “table” hay “dog” có thể “eats the
chicken”? – Bằng cách sử dụng quan hệ hạ danh-thượng danh trong WordNet. Giả sử ra
có một heuristic là chỉ có “animal” mới có thể thực hiện động từ “eat” (tức là chỉ có động
vật mới có thể ăn). Như vậy, để kiểm tra một vật có biết ăn hay không ta sẽ kiểm tra xem
nó có phải “animal” hay không bằng cách duyệt các thượng danh của nó. Bằng cách duyệt
ngược về các thượng danh, ta dễ dàng kiểm tra được là “dog” có thể thực hiện hành động
“eat” còn “table” thì không thể. Tương tự, ta có thể thêm các ràng buộc về ngữ nghĩa để
kiểm tra tính đúng đắn về ngữ nghĩa trong câu.

150
Chương 6. Xử lý ngôn ngữ tự nhiên trong học sâu
Chỉ trong khoảng năm năm gần đây, học sâu đã mang đến nhiều bất ngờ trên quy
mô toàn cầu và dẫn đường cho những tiến triển nhanh chóng trong nhiều lĩnh vực khác
nhau như thị giác máy tính, xử lý ngôn ngữ tự nhiên (natural language processing), nhận
dạng giọng nói tự động (automatic speech recognition), học tăng cường (reinforcement
learning), và mô hình hoá thống kê (statistical modeling). Với những tiến bộ này, chúng
ta bây giờ có thể xây dựng xe tự lái với mức độ tự động ngày càng cao (nhưng chưa nhiều
tới mức như vài công ty đang tuyên bố), xây dựng các hệ thống giúp trả lời thư tự động khi
con người ngập trong núi email, hay lập trình phần mềm chơi cờ vây có thể thắng cả nhà
vô địch thế giới, một kỳ tích từng được xem là không thể đạt được trong nhiều thập kỷ tới.
Những công cụ này đã và đang gây ảnh hưởng rộng rãi tới các ngành công nghiệp và đời
sống xã hội, thay đổi cách tạo ra các bộ phim, cách chẩn đoán bệnh và đóng một vài trò
ngày càng tăng trong các ngành khoa học cơ bản – từ vật lý thiên văn tới sinh học.
Mô hình mạng truy hồi
Mô hình LSTM
Mạng nơ ron tích chập (Convolutional neural network)
Cơ chế chú ý
Mô hình Transformer

6.1 Word Embedding

151
Một trong những thành công của học sâu đó là học ra biểu diễn từ phân tán
(Distributed word representation) trong không gian véc tơ. Biểu diễn từ là một véc tơ và
còn được gọi là từ nhúng (word embedding). Thay vì sử dụng véc tơ one-hot qua việc đánh
chỉ mục các từ trong bộ từ vựng, từ nhúng được học bởi các từ xung quanh và được ánh xạ
lên không gian số thực nhiều chiều nhưng có số chiều thấp hơn nhiều so với kích thước
của từ điển. Cách học véc tơ từ nhúng này khai thác được các đặc trưng về ngữ nghĩa và
cú pháp của từ và câu. Có những nghiên cứu học biểu diễn quan hệ mà quan hệ này cung
cấp thông tin giữa hai từ được liên kết như thế nào trong câu, sử dụng phương pháp tương
tự sau khi phân tích cú pháp trên dữ liệu văn bản lớn bằng bộ phân tích cú pháp phụ thuộc
. Cách nhúng quan hệ này giúp đạt được thông tin giàu cú pháp và ngôn ngữ. Hiệu quả của
việc sử dụng cả nhúng quan hệ và từ với nhau được thấy qua bài toán trích xuất tri thức và
trích xuất thuật ngữ. Các từ nhúng học được sau đó được sử dụng để tạo ra biểu diễn câu.
Một cách đơn giản là thực hiện lấy tổng hoặc lấy trung bình của các véc tơ của các từ nhúng
trong câu. Ngoài ra các mô hình như RNN, CNN, LSTM cũng được sử dụng để tạo ra biểu
diễn câu. Các phương pháp này đều sử dụng từ nhúng là thành phần cơ sở đưa vào các mô
hình này.
Có nhiều phương pháp biểu diễn từ nhúng như biểu diễn bằng véc tơ one-hot, ma
trận đồng xuất hiện. Tuy nhiên trong phần này, chúng tôi trình bày phương pháp biểu diễn
từ chiếm ưu thế hiện nay và mang lại hiệu quả cao trong các bài toán NLP đó là Word2vec,
Glove, fastText, BERT.
Để có thể đưa text vào mô hình deep learning, việc đầu tiên chúng ta cần làm là số
hóa các từ đầu vào (embedding). Ở phần này chúng ta sẽ thảo luận về các mô hình nhúng
từ (word embedding) và sự ra đời của mô hình word2vec rất nổi tiếng được google giới
thiệu vào năm 2013.
Biểu diễn các từ như tập các ký hiệu rời rạc
Các phương pháp trước đây
One hot encoding
Phương pháp này là phương pháp đơn giản nhất để đưa từ về dạng số hóa vector với
chiều bằng với kích thước bộ từ điển. Mỗi từ sẽ được biểu diễn bởi 1 vector mà giá trị tại
vị trí của từ đó trong từ điển bằng 1 và giá trị tại các vị trí còn lại đều bằng 0.

152
Trong NLP truyền thống, chúng ta coi các từ là các ký hiệu rời rạc. Các ký hiệu rời
rạc biểu diễn cho từ, sử dụng vector one-hot (vị trí có nghĩa là 1, còn lại là 0)
Ví dụ: Ta có 3 câu đầu vào: "Tôi đang đi học", "Mình đang bận nhé", "Tôi sẽ gọi
lại sau". Xây dựng bộ từ điển: "Tôi, đang , đi, học, Mình, bận, nhé, sẽ , gọi, lại, sau". Ta có
các biểu diễn one hot encoding của từng từ như sau:
Tôi: [1,0,0,0,0,0,0,0,0,0,0],
đang: [0,1,0,0,0,0,0,0,0,0,0],
...
Mình: [0,0,0,0,1,0,0,0,0,0,0],
...
sau: [0,0,0,0,0,0,0,0,0,0,1].
Cách biểu diễn này rất đơn giản, tuy nhiên ta có thể nhận thấy ngay các hạn chế của
phương pháp này. Trước hết, one hot encoding không thể hiện được thông tin về ngữ nghĩa
của từ, ví dụ như khoảng cách(vector(Tôi) - vector(Mình)) = khoảng cách(vector(Tôi) -
vector(đang)), trong khi rõ ràng từ "Tôi" và từ "Mình" trong ngữ cảnh như trên có ý nghĩa
rất giống nhau còn từ "Tôi" và từ "đang" lại khác nhau hoàn toàn. Tiếp nữa, mỗi từ đều
được biễu diễn bằng một vector có độ dài bằng kích thước bộ từ điển, như bộ từ điển của
google gồm 13 triệu từ, thì mỗi one hot vector sẽ dài 13 triệu chiều. Cách biểu diễn này tốn
rất nhiều tài nguyên nhưng thông tin biễu diễn được lại rất hạn hẹp.
Ví dụ: motel = [0 0 0 0 0 0 0 0 0 0 1 0 0 0 0]
hotel = [0 0 0 0 0 0 0 1 0 0 0 0 0 0 0]
Số chiều của từ vựng = số từ trong từ điển (ví dụ 500.000 từ)
Ví dụ: trong tìm kiếm trên web, nếu người dùng tìm kiếm “Seattle motel”, chúng ta muốn
đối sánh tài liệu có chứa “Seattle hotel” nhưng 2 vector biểu diễn từ motel và hotel là trực
giao với nhau (2 vetor nhân với nhau bằng 0), mặc dù 2 từ này có nghĩa gần giống nhau.
Không có khái niệm tự nhiên về sự giống nhau cho các vectơ one-hot!
=> Cần một cách biểu diễn từ ít chiều hơn và mang nhiều thông tin hơn.
Giải pháp:

153
• Có thể thử dựa vào danh sách các từ đồng nghĩa của WordNet để tìm ra sự tương tự của
các từ, nhưng ở đây chưa có một độ đo để đo chính xác độ tương tự giữa các từ là bao
nhiêu. Wordnet vẫn chưa hoàn thiện, v.v.
• Thay vào đó: học cách mã hóa sự tương tự trong chính các vectơ

Co-occurrence Matrix
Năm 1957, nhà ngôn ngữ học J.R. Firth phát biểu rằng: "Bạn sẽ biết nghĩa của một từ nhờ
những từ đi kèm với nó.". Điều này cũng khá dễ hiểu. Ví dụ nhắc đến Việt Nam, người ta
thường có các cụm từ quen thuộc như "Chiến tranh Việt Nam", "Cafe Việt Nam", "Việt
Nam rừng vàng biển bạc", dựa vào những từ xung quanh ta có thể hiểu hoặc mường tượng
ra được "Việt Nam" là gì, như thế nào. Co-occurrence Matrix được xây dựng dựa trên nhận
xét trên, co-occurrence đảm bảo quan hệ ngữ nghĩa giữa các từ, dựa trên số lần xuất hiện
của các cặp từ trong "context window". Một context window được xác dựa trên kích thước
và hướng của nó, ví dụ của context window:

Hình 18.5: Ví dụ về context window


Co-ocurrence matrix là một ma trận vuông đối xứng, mỗi hàng, mỗi cột sẽ làm vector đại
diện cho từ tương ứng. Từ ví dụ trên ta tiếp tục xây dựng co-ocurrence matrix:

154
Hình 18.6: Ví dụ về co-ocurrence matrix
Trong đó, giá trị tại ô [i, j] là số lần xuất hiện của từ i nằm trong context window của từ j.
Cách biểu diễn trên mặc dù đã giữ được thông tin về ngữ nghĩa của một từ, tuy vẫn còn
các hạn chế như sau:
• Khi kích thước bộ từ điển tăng, chiều vector cũng tăng theo.
• Lưu trữ co-ocurrence matrix cần rất nhiều tài nguyên về bộ nhớ.
• Các mô hình phân lớp bị gặp vấn đề với biểu diễn thưa (có rất nhiều giá trị 0 trong ma
trận).
Để làm giảm kích thước của co-ocurrence matrix người ta thường sử dụng phép SVD
(Singular Value Decomposition) để giảm chiều ma trận. Ma trận thu được sau SVD có
chiều nhỏ hơn, dễ lưu trữ hơn và ý nghĩa của từ cũng cô đọng hơn. Tuy nhiên, SVD có độ
phức tạp tính toán cao, tăng nhanh cùng với chiều của ma trận (O(mn2 ) với m là chiều của
ma trận trước SVD, n là chiều của ma trận sau SVD và n < m ) , ngoài ra phương pháp này
cũng gặp khó khăn khi thêm các từ vựng mới vào bộ từ điển.
=> Cần phương pháp khác lưu trữ được nhiều thông tin và vector biểu diễn nhỏ.
Word2vec
Với tư tưởng rằng ngữ cảnh và ý nghĩa của một từ có sự tương quan mật thiết đến
nhau, năm 2013 nhóm của Mikolov đề xuất một phương pháp mang tên Word2vec.
Ý tưởng chính của Word2vec

155
• Thay thế việc lưu thông tin số lần xuất hiện của các từ trong context window như
co-occurrence matrix, word2vec học cách dự đoán các từ lận cận.
• Tính toán nhanh hơn và có thể transfer learning khi thêm các từ mới vào bộ từ
điển.
Biểu diễn các từ bởi ngữ cảnh của chúng
Ý nghĩa của một từ được đưa ra bởi những từ thường xuyên xuất hiện gần nó.
Một trong những ý tưởng thành công nhất của NLP thống kê hiện đại.
Khi một từ w xuất hiện trong văn bản, ngữ cảnh của nó là tập hợp các từ xuất hiện
gần đó (trong một cửa sổ có kích thước cố định). Sử dụng nhiều ngữ cảnh của w để xây
dựng biểu diễn của w.
Nghĩa của từ sẽ được biết bởi các từ đứng gần nó. Từ thường xuất hiện trong ngữ cảnh
tương tự thì thường có nghĩa tương tự nhau
Ví dụ: tôi đi xe máy đi học
Tôi đi ô tô đi học
Xe máy, ô tô có nghĩa tương tự

Word vectors
Chúng ta sẽ xây dựng một vectơ dày đặc cho mỗi từ, được chọn sao cho nó giống với
vectơ của các từ xuất hiện trong các ngữ cảnh tương tự.

156
2 vector gần giống nhau thì nghĩa sẽ gần giống nhau
Word vectors còn được gọi là word embeddings hay (neural) word representations
Chúng là một biểu diễn phân tán (distributed representation)

157
Hoặc thể hiện mối quan hệ giữa các từ

Cần một hàm W(word) trả về một vector mã hóa cho từ đó

158
Các câu hỏi đặt ra:
Cỡ véc tơ của từ là bao nhiêu? (nếu chọn cỡ vector cao quá thì nó sẽ bị hiện tượng
thưa, nếu chọn nhỏ quá thì nó sẽ bị hiện tượng gần như tắc nghẽn cổ chai)
Tìm hàm W như thế nào? (coi như một bài toán phân lớp, dự báo)
Mô hình Word2vec giúp học biểu diễn câu có số chiều cố định mà biểu diễn này thể
hiện được ngữ nghĩa và quan hệ của các từ tốt hơn phương pháp one-hot. Đồng thời phương
pháp này cũng nhanh hơn và có thể dễ dàng kết hợp một câu, một văn bản mới hoặc thêm
vào từ vựng so với phương pháp dùng ma trận đồng xuất hiện.
Ý tưởng cơ bản của word2vec có thể được gói gọn trong các ý sau:

• Hai từ xuất hiện trong những văn cảnh giống nhau thường có ý nghĩa gần với nhau.
• Ta có thể đoán được một từ nếu biết các từ xung quanh nó trong câu. Ví dụ, với câu
“Hà Nội là … của Việt Nam” thì từ trong dấu ba chấm khả năng cao là “thủ đô”.
Với câu hoàn chỉnh “Hà Nội là thủ đô của Việt Nam”, mô hình word2vec sẽ xây
dựng ra embeding của các từ sao cho xác suất để từ trong dấu ba chấm là “thủ đô”
là cao nhất.
Ý tưởng chính của phương pháp này đó là học dự đoán từ lân cận của các từ. Với
mỗi từ t, phương pháp này thực hiện dự đoán các từ trong cửa sổ bán kính m của tất cả các
từ.

• Chúng ta có một ngữ liệu văn bản lớn

159
• Mỗi từ trong một từ vựng cố định được biểu diễn bằng một vectơ (khởi tạo chọn
mỗi từ biểu diễn bằng one-hot vector)
• Đi qua từng vị trí t trong văn bản, chọn từ đó là từ trung tâm c và các từ ngữ cảnh
(“bên ngoài”) o
• Sử dụng sự tương tự của vectơ từ cho c và o để tính xác suất của o được cho bởi
c (hoặc ngược lại)

• Tiếp tục điều chỉnh các vectơ từ để tối đa hóa xác suất này

Hàm mục tiêu (Object function)


Đối với mỗi vị trí t = 1, … , T, hãy dự đoán các từ ngữ cảnh trong một
cửa sổ có kích thước cố định m, cho trước từ trung tâm wj. Data likelihood:

160
Cực tiểu hóa hàm mục tiêu ⟺ Tối đa hóa độ chính xác dự đoán
Chúng ta muốn cực tiểu hóa hàm mục tiêu:

Vấn đề là làm thế nào để tính P(wt+j|wt; )


Chúng ta sử dụng hai véc tơ cho mỗi từ w: vw khi w là từ trung tâm, uw khi w là từ
ngữ cảnh.
Sau đó, đối với một từ trung tâm c và một từ ngữ cảnh o:

Ví dụ cửa sổ và quá trình tính toán P(wt+j|wt)

161
Hàm dự đoán

Huấn luyện mô hình: Tối ưu hóa giá trị tham số để tối thiểu mất mát
Để huấn luyện một mô hình, chúng ta dần dần điều chỉnh các tham số để giảm thiểu
tổn thất.

 đại diện cho tất cả các tham số mô hình, trong một véc tơ dài
• Trong trường hợp của chúng tôi, với vectơ d chiều và V từ

162
• Ghi nhớ: từ nào cũng có hai vectơ

Chúng ta tối ưu hóa các tham số này bằng cách đi xuống gradient. Chúng ta tính
toán tất cả các gradient vector.
Tối ưu hóa: Gradient Descent

Chúng ta có một hàm cho phí J(), chúng ta muốn cực tiểu hóa

• Gradient Descent là thuật toán để cực tiểu J()

• Ý tưởng: với giá trị hiện tại của , tính gradient của J(), sau đó đi từng bước nhỏ
theo hướng của gradient âm. Lặp lại.

163
Stochastic Gradient Descent

164
Vấn đề: J() là một hàm của tất cả các cửa sổ trong ngữ liệu (có thể là hàng tỷ!). •
Vì vậy, J() rất tốn kém để tính toán. Chúng ta sẽ đợi rất lâu trước khi thực hiện một bản
cập nhật! Ý tưởng rất tồi đối với gần như tất cả các mạng lưới thần kinh!
• Giải pháp: Giảm dần độ dốc ngẫu nhiên (SGD)
Lặp đi lặp lại các cửa sổ mẫu và cập nhật sau mỗi cửa sổ
Thuật toán

Công cụ Word2vec gồm hai mô hình: skip-gam và túi từ liên tục (continuous bag
of words – CBOW). Tiếp theo, ta sẽ xem xét hai mô hình này và phương pháp huấn luyện
chúng.
Có hai cách xây dựng ngữ cảnh :
• Đầu vào cho biết ngữ cảnh và đầu ra thực hiện dự đoán từ mục tiêu (CBOW)
• Đầu vào cho một từ và đầu ra thực hiện dự đoán ngữ cảnh (Skip-gram)

165
Thực nghiệm cho thấy mô hình Skip-gram cho kết quả vượt trội so với CBOW.

6.1.1 Mô hình Skip-Gram

Mô hình skip-gam giả định rằng một từ có thể được sử dụng để sinh ra các từ xung quanh
nó trong một chuỗi văn bản. Ví dụ, giả sử chuỗi văn bản là “the”, “man”, “loves”, “his”
và “son”. Ta sử dụng “loves” làm từ đích trung tâm và đặt kích thước cửa sổ ngữ cảnh
bằng 2. Như mô tả trong hình dưới, với từ đích trung tâm “loves”, mô hình skip-gram
quan tâm đến xác suất có điều kiện sinh ra các từ ngữ cảnh (“the”, “man”, “his” và “son”)
nằm trong khoảng cách không quá 2 từ:

P("the","man","his","son"∣"loves").

Ta giả định rằng, với từ đích trung tâm cho trước, các từ ngữ cảnh được sinh ra độc lập
với nhau. Trong trường hợp này, công thức trên có thể được viết lại thành

P("the"∣"loves")⋅P("man"∣"loves")⋅P("his"∣"loves")⋅P("son"∣"loves").

Mô hình skip-gram quan tâm đến xác suất có điều kiện sinh ra các từ ngữ cảnh với một từ
đích trung tâm cho trước.

Trong mô hình skip-gam, mỗi từ được biểu diễn bằng hai vector d-chiều để tính xác suất
có điều kiện. Giả sử chỉ số của một từ trong từ điển là i, vector của từ được biểu diễn
là vi∈Rd khi từ này là từ đích trung tâm và là ui∈Rd khi từ này là một từ ngữ cảnh.
Gọi c và o lần lượt là chỉ số của từ đích trung tâm wc và từ ngữ cảnh wo trong từ điển. Có
thể thu được xác suất có điều kiện sinh ra từ ngữ cảnh cho một từ đích trung tâm cho trước
bằng phép toán softmax trên tích vô hướng của vector:

166
trong đó, tập chỉ số trong bộ từ vựng là V={0,1,…,|V|−1}. Giả sử trong một chuỗi văn
bản có độ dài T, từ tại bước thời gian t được ký hiệu là w(t). Giả sử rằng các từ ngữ cảnh
được sinh độc lập với từ trung tâm cho trước. Khi kích thước cửa sổ ngữ cảnh là m, hàm
hợp lý (likelihood) của mô hình skip-gam là xác suất kết hợp sinh ra tất cả các từ ngữ
cảnh với bất kỳ từ trung tâm cho trước nào

Ở đây, bất kỳ bước thời gian nào nhỏ hơn 1 hoặc lớn hơn T đều có thể được bỏ qua.
Huấn luyện Mô hình Skip-Gram
Các tham số trong mô hình skip-gram là vector từ đích trung tâm và vector từ ngữ cảnh
cho từng từ riêng lẻ. Trong quá trình huấn luyện, chúng ta sẽ học các tham số mô hình
bằng cách cực đại hóa hàm hợp lý, còn gọi là ước lượng hợp lý cực đại. Việc này tương
tự với việc giảm thiểu hàm mất mát sau đây:

Nếu ta dùng SGD, thì trong mỗi vòng lặp, ta chọn ra một chuỗi con nhỏ hơn bằng
việc lấy mẫu ngẫu nhiên để tính toán mất mát cho chuỗi con đó, rồi sau đó tính gradient để
cập nhật các tham số mô hình. Điểm then chốt của việc tính toán gradient là tính gradient
của logarit xác suất có điều kiện cho vector từ trung tâm và vector từ ngữ cảnh. Đầu tiên,
theo định nghĩa ta có

167
Phép tính cho ra xác suất có điều kiện cho mọi từ có trong từ điển với từ đích trung
tâm wc cho trước. Sau đó, ta lại sử dụng phương pháp đó để tìm gradient cho các vector từ
khác.
Sau khi huấn luyện xong, với từ bất kỳ có chỉ số là i trong từ điển, ta sẽ nhận được tập hai
vector từ vi và ui. Trong các ứng dụng xử lý ngôn ngữ tự nhiên, vector từ đích trung tâm
trong mô hình skip-gram thường được sử dụng để làm vector biểu diễn một từ.
Nhận xét:
-Làm việc tốt với dữ liệu nhỏ, đặc biệt hiệu quả biễu diễn các từ ít xuất hiện

Ví dụ
-Tập từ vựng có 10000 từ
-Vector embbeding là 300 chiều (thường hay chọn từ 200 đến dưới 500)

168
-Bởi vậy lớp ẩn biểu diễn ma trận 10000x300

Vấn đề: 10000 từ, và 300 chiều của embbeding cần một không gian lớn các tham số. Và
con số 10000 từ là khá nhỏ đối với các ứng dụng thực tế. Các bài toán thực tế thường quy
định số từ vựng là trên 50000 thì mới bao phủ được các từ thông dụng.
Nhiều tham số dẫn đến huấn luyện rất là chậm do phải tính tất cả các gradient cho các
cửa sổ

6.1.2. Mô hình Túi từ Liên tục (CBOW)

Bag of word: bỏ qua thứ tự của từ, mô hình rời rạc

Mô hình túi từ liên tục (Continuous bag of words - CBOW) tương tự như mô hình skip-
gram. Khác biệt lớn nhất là mô hình CBOW giả định rằng từ đích trung tâm được tạo ra
dựa trên các từ ngữ cảnh phía trước và sau nó trong một chuỗi văn bản. Với cùng một
chuỗi văn bản gồm các từ “the”, “man”, “loves”, “his” và “son”, trong đó “love” là từ
đích trung tâm, với kích thước cửa sổ ngữ cảnh bằng 2, mô hình CBOW quan tâm đến
xác suất có điều kiện để sinh ra từ đích “love” dựa trên các từ ngữ cảnh “the”, “man”,
“his” và “son” (minh họa ở hình dưới) như sau:

P("loves"∣"the","man","his","son").

169
Fig. 14.1.2 Mô hình CBOW quan tâm đến xác suất có điều kiện tạo ra từ đích trung
tâm dựa trên các từ ngữ cảnh cho trước.

170
V chính là V từ, N là độ dài của vector từ

171
Chúng ta có thể xem xét W hoặc W’ là biểu diễn từ hoặc thậm chí có thể lấy trung bình

Vì có quá nhiều từ ngữ cảnh trong mô hình CBOW, ta sẽ lấy trung bình các vector
từ của chúng và sau đó sử dụng phương pháp tương tự như trong mô hình skip-gram để
tính xác suất có điều kiện. Giả sử vi∈Rd và ui∈Rd là vector từ ngữ cảnh và vector từ đích
trung tâm của từ có chỉ số i trong từ điển (lưu ý rằng các ký hiệu này ngược với các ký hiệu
trong mô hình skip-gram). Gọi c là chỉ số của từ đích trung tâm wc, và o1,…,o2m là chỉ số
các từ ngữ cảnh wo1,…,wo2m trong từ điển. Do đó, xác suất có điều kiện sinh ra từ đích
trung tâm dựa vào các từ ngữ cảnh cho trước là:

172
Cho một chuỗi văn bản có độ dài T, ta giả định rằng từ xuất hiện tại bước thời
gian t là w(t), và kích thước của cửa sổ ngữ cảnh là m. Hàm hợp lý của mô hình CBOW là
xác suất sinh ra bất kỳ từ đích trung tâm nào dựa vào những từ ngữ cảnh.

Huấn luyện Mô hình CBOW


Quá trình huấn luyện mô hình CBOW khá giống với quá trình huấn luyện mô hình skip-
gram. Uớc lượng hợp lý cực đại của mô hình CBOW tương đương với việc cực tiểu hóa
hàm mất mát:

Lưu ý rằng

Thông qua phép đạo hàm, ta có thể tính log của xác suất có điều kiện của gradient
của bất kỳ vector từ ngữ cảnh nào voi (i = 1, . . . , 2m) trong công thức trên.

Sau đó, ta sử dụng cùng phương pháp đó để tính gradient cho các vector của từ khác.
Không giống như mô hình skip-gam, trong mô hình CBOW ta thường sử dụng vector từ
ngữ cảnh làm vector biểu diễn một từ.
Nhận xét:
Cbow biểu diễn tốt các từ thường xuất hiện. Huấn luyện nhanh

173
6.2. Huấn luyện gần đúng

Hãy nhớ lại nội dung của phần trước. Đặc điểm cốt lõi của mô hình skip-gram là
việc sử dụng các toán tử softmax để tính xác suất có điều kiện sinh ra từ ngữ cảnh wo dựa
trên từ đích trung tâm cho trước wc.

Mất mát logarit tương ứng với xác suất có điều kiện trên được tính như sau

Do toán tử softmax xem xét từ ngữ cảnh có thể là bất kỳ từ nào trong từ điển V, nên mất
mát được đề cập ở trên thật ra bao gồm phép lấy tổng qua tất cả phần tử trong từ điển. Ở
phần trước, ta đã biết rằng cả hai mô hình skip-gram và CBOW đều tính xác suất có điều
kiện thông qua toán tử softmax, do đó việc tính toán gradient cho mỗi bước bao gồm phép
lấy tổng qua toàn bộ các phần tử trong từ điển. Đối với các từ điển lớn hơn với hàng trăm
nghìn hoặc thậm chí hàng triệu từ, chi phí tính toán cho mỗi gradient có thể rất cao. Để
giảm độ phức tạp tính toán này, chúng tôi sẽ giới thiệu hai phương pháp huấn luyện gần
đúng trong phần này, đó là lấy mẫu âm (negative sampling) và toán tử softmax phân cấp
(hierarchical softmax). Do không có sự khác biệt lớn giữa mô hình skip-gram và mô hình
CBOW, trong phần này ta chỉ sử dụng mô hình skip-gram làm ví dụ để giới thiệu hai
phương pháp huấn luyện trên.

6.2.1 Lấy mẫu Âm

Thay vì cập nhật tất cả các trọng số thì ta chỉ cập nhật một lượng nhỏ mà tính hiệu
quả tương đương với việc cập nhật toàn bộ.
Mẫu dương (positive samples): các từ xuất hiện gần với mỗi từ khác (xuất hiện trong
cửa sổ)
Mẫu âm (negative samples): lấy ngẫu nhiên các từ trong từ vựng, các từ không xuất
hiện gần ngữ cảnh ta cần dự đoán.

174
Lúc này ta quy về bài toán nhị phân, đối với mỗi từ xem từ này có phải là ngữ cảnh
của nó hay không
Chọn 4-5 mẫu âm thay vì phải chọn tất cả
Cập nhật trọng số cho từ positive (“jump”), cập nhật trọng số cho 5 từ khác mà
chúng ta muốn đầu ra là 0, vậy tổng là 6 nơ ron, và tổng là 1800 (giả sử chiều của véc tơ
embedding là 300). Do đó chỉ 0,06% của 3 triệu tham số ở đầu ra (10000 từ vựng x300)
Do vậy thuật toán chạy rất là nhanh.
Lấy mẫu âm xây dựng hàm mất mát bằng cách xét các sự kiện độc lập bao gồm cả
mẫu âm lẫn mẫu dương. Chi phí tính toán gradient tại mỗi bước trong quá trình huấn luyện
có mối quan hệ tuyến tính với số từ nhiễu mà ta lấy mẫu.
Phương pháp lấy mẫu âm sửa đổi hàm mục tiêu ban đầu. Cho một cửa sổ ngữ cảnh
với từ đích trung tâm wc, ta xem việc từ ngữ cảnh wo xuất hiện trong cửa sổ ngữ cảnh là
một sự kiện và tính xác suất của sự kiện này theo

Ở đây, hàm σ có cùng định nghĩa với hàm kích hoạt sigmoid:

175
Đầu tiên, ta sẽ xem xét việc huấn luyện vector từ (word vector) bằng cách cực đại
hóa xác suất kết hợp của tất cả các sự kiện trong chuỗi văn bản. Cho một chuỗi văn bản có
độ dài T, ta giả sử rằng từ tại bước thời gian t là w(t) và kích thước cửa sổ ngữ cảnh là m.
Bây giờ, ta sẽ xem xét việc cực đại hóa xác suất kết hợp.

Tuy nhiên, các sự kiện trong mô hình chỉ xem xét các mẫu dương. Trong trường
hợp này, chỉ khi tất cả các vector từ bằng nhau và giá trị của chúng tiến tới vô cùng, xác
suất kết hợp trên mới có thể đạt giá trị cực đại bằng 1. Rõ ràng, các vector từ như vậy là vô
nghĩa. Phương pháp lấy mẫu âm khiến hàm mục tiêu có ý nghĩa hơn bằng cách lấy thêm
các mẫu âm. Giả sử sự kiện P xảy ra khi từ ngữ cảnh wo xuất hiện trong cửa sổ ngữ cảnh
của từ đích trung tâm wc, và ta lấy mẫu K từ không xuất hiện trong cửa sổ ngữ cảnh, đóng
vai trò là các từ nhiễu, theo phân phối P(w). Ta giả sử sự kiện từ nhiễu wk(k=1,…,K) không
xuất hiện trong cửa sổ ngữ cảnh của từ đích trung tâm wc là Nk. Giả sử các sự
kiện P và N1,…,NK cho cả mẫu dương lẫn và mẫu âm là độc lập với nhau. Bằng cách xem
xét phương pháp lấy mẫu âm, ta có thể viết lại xác suất kết hợp chỉ xem xét các mẫu dương
ở trên như sau

Ở đây, xác suất có điều kiện được tính gần đúng bằng

Đặt chỉ số của từ w(t) trong chuỗi văn bản tại bước thời gian t là it và chỉ số của từ
nhiễu wk trong từ điển là hk. Mất mát logarit cho xác suất có điều kiện ở trên là

176
Ở đây, tính toán gradient trong mỗi bước huấn luyện không còn liên quan đến kích thước
từ điển, mà có quan hệ tuyến tính với K. Khi K có giá trị nhỏ hơn, thì phương pháp lấy
mẫu âm có chi phí tính toán cho mỗi bước thấp hơn.
6.2.2 Softmax Phân cấp
Softmax phân cấp sử dụng một cây nhị phân và xây dựng hàm mất mát dựa trên đường đi
từ nút gốc đến nút lá. Chi phí phụ trợ khi tính toán gradient tại mỗi bước trong quá trình
huấn luyện có mối quan hệ theo hàm logarit với kích thước từ điển.
Softmax phân cấp (Hierarchical softmax) là một phương pháp huấn luyện gần đúng khác.
Phương pháp này sử dụng cấu trúc dữ liệu cây nhị phân như minh hoạ trong hình dưới, với
các nút lá của cây biểu diễn tất cả các từ trong từ điển V.

Hình: Softmax Phân cấp. Mỗi nút lá của cây biểu diễn một từ trong từ điển.

177
Ta giả định L(w) là số nút trên đường đi (gồm cả gốc lẫn các nút lá) từ gốc của cây nhị
phân đến nút lá của từ w. Gọi n(w, j) là nút thứ j trên đường đi này, với vector ngữ cảnh
của từ là un(w,j) . Ta sử dụng ví dụ trong hình trên, theo đó L(w3) = 4. Softmax phân cấp
tính xấp xỉ xác suất có điều kiện trong mô hình skip‐gram như sau

Trong đó hàm σ có định nghĩa giống với hàm kích hoạt sigmoid, và leftChild(n) là nút con
bên trái của nút n. Nếu x đúng thì [[x]] = 1; ngược lại [[x]] = −1. Giờ ta sẽ tính xác suất có
điều kiện của việc sinh ra từ w3 dựa theo từ wc được cho trong hình trên. Ta cần tìm tích
vô hướng của vector từ vc (cho từ wc) với mỗi vector nút mà không phải là nút lá trên đường
đi từ nút gốc đến w3. Do trong cây nhị phân, đường đi từ nút gốc đến nút lá w3 là trái, phải,
rồi lại trái (đường đi được in đậm trong hình trên) nên ta có

Do σ(x) + σ(−x) = 1 nên điều kiện mà tổng xác suất có điều kiện của bất kì từ nào trong từ
điển V được sinh ra dựa trên từ đích trung tâm cho trước wc phải bằng 1 cũng được thoả
mãn:

Hơn nữa, do độ lớn của L(wo) − 1 là O(log2 |V|) nên khi kích thước từ điển V lớn, chi phí
tính toán phụ trợ tại mỗi bước trong softmax phân cấp được giảm đáng kể so với khi không
áp dụng huấn luyện gần đúng.
Một số kết quả thú vị
Dự đoán từ

178
Có a đi với b, hỏi c đi với từ nào
Từ d cần tìm được tính theo công thức trên
x là từ trong tập từ vựng, ta thử tất cả các từ trong tập từ vựng
Thử công thức trên ta được từ queen tương ứng với king
Thể hiện được quan hệ với các từ.
Ví dụ mối quan hệ giữa đất nước với thủ đô

179
6.3 Embedding từ với Vector Toàn cục (GloVe)
Trước tiên, ta sẽ xem lại mô hình skip‐gram trong word2vec. Xác suất có điều kiện P(wj |
wi) được biểu diễn trong mô hình skip‐gram bằng hàm kích hoạt softmax sẽ được gọi là qij
như sau:

Ở đây vi và ui là các biểu diễn vector từ wi với chỉ số i, lần lượt khi nó là từ trung tâm và
từ ngữ cảnh, và V = {0, 1, . . . , |V| − 1} là tập chứa các chỉ số của bộ từ vựng.
Từ wi có thể xuất hiện trong tập dữ liệu nhiều lần. Ta gom tất cả các từ ngữ cảnh mỗi khi
wi là từ trung tâm và giữ các lần trùng lặp, rồi ký hiệu đó là tập bội Ci. Số lượng của một
phần tử trong tập bội được gọi là bội số của phần tử đó. Chẳng hạn, giả sử rằng từ wi xuất
hiện hai lần trong tập dữ liệu: khi hai từ wi đó là từ trung tâm trong chuỗi văn bản, hai cửa

180
sổ ngữ cảnh tương ứng chứa các chỉ số từ ngữ cảnh 2, 1, 5, 2 và 2, 3, 2, 1. Khi đó, ta sẽ có
tập bội Ci = {1, 1, 2, 2, 2, 2, 3, 5}, trong đó bội số của phần tử 1 là 2, bội số của phần tử 2
là 4, và bội số của phần tử 3 và 5 đều là 1. Ta ký hiệu bội số của phần tử j trong tập bội Ci
là xij: nó là số lần từ wj xuất hiện trong cửa sổ ngữ cảnh khi từ trung tâm là wi trong toàn
bộ tập dữ liệu. Kết quả là hàm mất mát của mô hình skip‐gram có thể được biểu diễn theo
một cách khác:

Ta tính tổng số lượng tất cả các từ ngữ cảnh đối với từ trung tâm wi để có xi , rồi thu được
xác suất có điều kiện để sinh ra từ ngữ cảnh wj dựa trên từ trung tâm wi là pij bằng xij/xi .
Ta có thể viết lại hàm mất mất của mô hình skip‐gram như sau

Trong công thức trên,  j∈V pij log qij tính toán phân phối xác suất có điều kiện pij của việc
sinh từ ngữ cảnh dựa trên từ đích trung tâm wi và entropy chéo với phân phối xác suất có
điều kiện qij được dự đoán bởi mô hình. Hàm mất mát được đánh trọng số bằng cách sử
dụng tổng số từ ngữ cảnh cho từ đích trung tâm wi. Việc cực tiểu hóa hàm mất mát theo
công thức trên cho phép phân phối xác suất có điều kiện được dự đoán một cách gần nhất
có thể tới phân phối xác suất có điều kiện thật sự.
Tuy nhiên, mặc dù là hàm mất mát phổ biến nhất, đôi khi hàm mất mát entropy chéo lại
không phải là một lựa chọn phù hợp. Một mặt chi phí để mô hình đưa ra dự đoán qij trở
thành phân phối xác suất hợp lệ gồm phép lấy tổng qua toàn bộ các từ trong từ điển ở mẫu
số của nó. Điều này có thể dễ dàng khiến tổng chi phí tính toán trở nên quá lớn. Mặt khác,
thường sẽ có rất nhiều từ hiếm gặp trong từ điển, và chúng ít khi xuất hiện trong tập dữ
liệu. Trong hàm mất mát entropy chéo, dự đoán cuối cùng cho phân phối xác suất có điều
kiện trên một lượng lớn các từ hiếm gặp rất có thể sẽ không được chính xác.
6.3.1 Mô hình GloVe

181
Quan sát tỷ lệ xác xuất các từ đồng xuất hiện có tiềm năng mã hóa một số nghĩa, nhiều khi
một từ nghĩa phụ thuộc vào những từ ở khoảng cách rất xa. Word embeding vẫn mã hóa
cục bộ dựa trên kích thước giới hạn của cửa sổ.
Ví dụ xem xét xác suất đồng xuất hiện từ ice và steam
Ice thường đồng xuất hiện với solid hơn từ gas
Steam thường đồng xuất hiện từ gas hơn là solid
Cả 2 từ thường đồng xuất hiện với từ water, và không xuất hiện với từ fashion
Ưu điểm ở đây là sử dụng được ngữ cảnh toàn cục
Để giải quyết vấn đề trên, GloVe (Pennington et al., 2014), một mô hình embedding từ
xuất hiện sau word2vec đã áp dụng mất mát bình phương và đề xuất ba thay đổi trong mô
hình skip‐gram dựa theo mất mát này.
1. Ở đây, ta sử dụng các biến phân phối phi xác suất p ′ ij = xij và q ′ ij = exp(uj ⊤ vi) rồi tính
log của chúng. Do đó, ta có mất mát bình phương (log p ′ij − log q ′ij)2 = (u⊤j vi − log xij)2
2. Ta thêm hai tham số mô hình cho mỗi từ wi: hệ số điều chỉnh bi (cho các từ trung tâm)
và ci (cho các từ ngữ cảnh).
3. Thay thế trọng số của mỗi giá trị mất mát bằng hàm h(xij). Hàm trọng số h(x) là hàm đơn
điệu tăng trong khoảng [0, 1].
Do đó, mục tiêu của GloVe là cực tiểu hóa hàm mất mát.
Ở đây, có một đề xuất đối với việc lựa chọn hàm trọng số h(x): khi x < c (ví dụ c = 100)
thì h(x) = (x/c)α (ví dụ α = 0.75), nếu không thì h(x) = 1. Do h(0) = 0, ta có thể đơn thuần
bỏ qua mất mát bình phương tại xij = 0. Khi sử dụng minibatch SGD trong quá trình huấn
luyện, ta tiến hành lấy mẫu ngẫu nhiên để được một minibatch xij khác không tại mỗi bước
thời gian và tính toán gradient để cập nhật các tham số mô hình. Các giá trị xij khác không
trên được tính trước trên toàn bộ tập dữ liệu và là thống kê toàn cục của tập dữ liệu. Do đó,
tên gọi GloVe được lấy từ “Global Vectors (Vector Toàn cục)”.
Chú ý rằng nếu từ wi xuất hiện trong cửa sổ ngữ cảnh của từ wj thì từ wj cũng sẽ xuất hiện
trong cửa sổ ngữ cảnh của từ wi. Do đó, xij = xji. Không như word2vec, GloVe khớp log xij
đối xứng thay vì xác suất có điều kiện pij bất đối xứng. Do đó, vector từ đích trung tâm và
vector từ ngữ cảnh của bất kì từ nào đều tương đương nhau trong GloVe. Tuy vậy, hai tập

182
vector từ được học bởi cùng một mô hình về cuối có thể sẽ khác nhau do giá trị khởi tạo
khác nhau. Sau khi học tất cả các vector từ, GloVe sẽ sử dụng tổng của vector từ đích trung
tâm và vector từ ngữ cảnh để làm vector từ cuối cùng cho từ đó.
6.3.2 Lý giải GloVe bằng Tỷ số Xác suất Có điều kiện
Ta cũng có thể cố gắng lý giải embedding từ GloVe theo một cách nhìn khác. Ta sẽ tiếp
tục sử dụng các ký hiệu như ở trên, P(wj|wi) biểu diễn xác suất có điều kiện sinh từ ngữ
cảnh wj với từ tâm đích wi trong tập dữ liệu, và xác suất này được ghi lại bằng pij . Xét ví
dụ thực tế từ một kho ngữ liệu lớn, ở đây ta có hai tập các xác suất có điều kiện với “ice”
và “steam” là các từ tâm đích và tỷ số giữa chúng:

Ta có thể quan sát thấy các hiện tượng như sau:


Với từ wk liên quan tới từ “ice (đá)” nhưng không liên quan đến từ “steam (hơi nước)”,
như là wk = solid (rắn), ta kỳ vọng là tỷ số xác suất có điều kiện sẽ lớn hơn, như trường
hợp này là 8.9 ở hàng cuối cùng của bảng trên. Với từ wk liên quan tới từ “steam (hơi
nước)” mà không có liên quan nào với từ “ice (đá)”, như là wk = gas (khí), ta kỳ vọng là tỷ
số xác suất có điều kiện sẽ nhỏ hơn, như trường hợp này là 0.085 ở hàng cuối cùng của
bảng trên. Với từ wk liên quan tới cả hai từ “steam (hơi nước)” và từ “ice (đá)”, như là wk
= water (nước), ta kỳ vọng là tỷ số xác suất có điều kiện sẽ gần với 1, như trường hợp này
là 1.36 ở hàng cuối cùng của bảng trên. Với từ wk không liên quan tới cả hai từ “steam
(hơi)” và từ “ice (đá)”, như là wk = fashion (thời trang), ta kỳ vọng là tỷ số xác suất có điều
kiện sẽ gần với 1, như trường hợp này là 0.96 ở hàng cuối cùng của bảng trên.
Có thể thấy rằng tỷ số xác suất có điều kiện thể hiện mối quan hệ giữa các từ khác nhau
trực quan hơn. Ta có thể tạo một hàm vector của từ để khớp tỷ số xác suất có điều kiện một
cách hiệu quả hơn. Như đã biết, để thu được bất cứ tỷ số nào loại này đòi hỏi phải có ba từ
wi, wj , và wk. tỷ số xác suất có điều kiện với wi làm từ trung tâm là pij/pik. Ta có thể tìm
một hàm dùng các vector từ để khớp với tỷ số xác suất có điều kiện này.

183
Thiết kế khả dĩ của hàm f ở đây không phải duy nhất. Ta chỉ cần quan tâm một lựa chọn
hợp lý hơn. Do tỷ số xác suất có điều kiện là một số vô hướng, ta có thể giới hạn f vào một
hàm vô hướng: f(uj, uk, vi) = f((uj-uk)Tvi). Sau khi hóan đổi chỉ số j và k, ta có thể thấy rằng
hàm f thỏa mãn điều kiện f(x)f(−x) = 1, do đó một lựa chọn có thể là f(x) = exp(x). Ta có:

Một xác suất thỏa mãn vế phải biểu thức xấp xỉ là exp (u⊤j vi ) ≈ αpij , ở đây α là một hằng
số. Xét pij = xij/xi, sau khi lấy logarit ta được u⊤j vi ≈ log α+log xij −log xi. Ta sử dụng thêm
hệ số điều chỉnh để khớp − log α + log xi, cụ thể là hệ số điều chỉnh từ trung tâm bi và hệ
số điều chỉnh từ ngữ cảnh cj:

Bằng cách lấy sai số bình phương và đặt trọng số vào vế trái và vế phải của biểu thức trên,
ta tính được hàm mất mát của GloVe.
Tóm tắt
•Trong một số trường hợp, hàm mất mát entropy chéo có sự hạn chế. GloVe sử dụng mất
mát bình phương và vector từ để khớp các thống kê toàn cục được tính trước dựa trên toàn
bộ dữ liệu.
• Vector từ đích trung tâm và vector từ ngữ cảnh của bất kì từ nào là như nhau trong GloVe.

Embedding từ con

Các từ tiếng Anh thường có những cấu những trúc nội tại và phương thức cấu thành.
Chẳng hạn, ta có thể suy ra mối quan hệ giữa các từ “dog”, “dogs” và “dogcatcher”
thông qua cách viết của chúng. Tất cả các từ đó có cùng từ gốc là “dog” nhưng có hậu
tố khác nhau làm thay đổi nghĩa của từ. Hơn nữa, sự liên kết này có thể được mở rộng
ra đối với các từ khác. Chẳng hạn, mối quan hệ giữa từ “dog” và “dogs” đơn giản

184
giống như mối quan hệ giữa từ “cat” và “cats”. Mối quan hệ giữa từ “boy” và
“boyfriend” đơn giản giống mối quan hệ giữa từ “girl” và “girlfriend”. Đặc tính này
không phải là duy nhất trong tiếng Anh. Trong tiếng Pháp và Tây Ban Nha, rất nhiều
động từ có thể có hơn 40 dạng khác nhau tùy thuộc vào ngữ cảnh. Trong tiếng Phần
Lan, một danh từ có thể có hơn 15 dạng. Thật vậy, hình thái học (morphology) là một
nhánh quan trọng của ngôn ngữ học chuyên nghiên cứu về cấu trúc và hình thái của
các từ.
Fast text
Fast text được phát minh bởi facebook năm 2016, giải quyết được vấn đề unknown
word, một từ chia ra thành nhiều phần nhỏ, sau đó nối lại.
Trong word2vec, ta không trực tiếp sử dụng thông tin hình thái học. Trong cả mô hình
skip-gram và túi từ (bag-of-word) liên tục, ta sử dụng các vector khác nhau để biểu
diễn các từ ở các dạng khác nhau. Chẳng hạn, “dog” và “dogs” được biểu diễn bởi hai
vector khác nhau, trong khi mối quan hệ giữa hai vector đó không biểu thị trực tiếp
trong mô hình. Từ quan điểm này, fastText [Bojanowski et al., 2017] đề xuất phương
thức embedding từ con (subword embedding), thông qua việc thực hiện đưa thông tin
hình thái học vào trong mô hình skip-gram trong word2vec.
Trong fastText, mỗi từ trung tâm được biểu diễn như một tập hợp của các từ con.
Dưới đây ta sử dụng từ “where” làm ví dụ để hiểu cách các từ tố được tạo thành.
Trước hết, ta thêm một số ký tự đặc biệt “<” và “>” vào phần bắt đầu và kết thúc của
từ để phân biệt các từ con được dùng làm tiền tố và hậu tố. Rồi ta sẽ xem từ này như
một chuỗi các ký tự để trích xuất n-grams. Chẳng hạn, khi n=3, ta có thể nhận tất cả
từ tố với chiều dài là 3:
"<wh", "whe", "her", "ere", "re>",
và từ con đặc biệt "<where>""<where>".
Trong fastText, với một từ w, ta ghi tập hợp của tất cả các từ con của nó với chiều dài
từ 3 đến 6 và các từ con đặc biệt là Gw. Do đó, từ điển này là tập hợp các từ con của tất
cả các từ. Giả sử vector của từ con g trong từ điển này là zg. Thì vector từ trung
tâm uw cho từ w trong mô hình skip-gram có thể biểu diễn là

185
Phần còn lại của tiến trình xử lý trong fastText đồng nhất với mô hình skip-gram, vì vậy
ta không mô tả lại ở đây. Như chúng ta có thể thấy, so sánh với mô hình skip-gram, từ
điển của fastText lớn hơn dẫn tới nhiều tham số mô hình hơn. Hơn nữa, vector của một từ
đòi hỏi tính tổng của tất cả vector từ con dẫn tới độ phức tạp tính toán cao hơn. Tuy
nhiên, ta có thể thu được các vector tốt hơn cho nhiều từ phức hợp ít thông dụng, thậm
chí cho cả các từ không hiện diện trong từ điển này nhờ tham chiếu tới các từ khác có cấu
trúc tương tự.

Mã hoá cặp byte

Trong fastText, tất cả các từ con được trích xuất phải nằm trong khoảng độ dài cho trước,
ví dụ như từ 33 đến 66, do đó kích thước bộ từ vựng không thể được xác định trước. Để
cho phép các từ con có độ dài biến thiên trong bộ từ vựng có kích thước cố định, chúng ta
có thể áp dụng thuật toán nén gọi là mã hoá cặp byte (Byte Pair Encoding -BPE) để trích
xuất các từ con [Sennrich et al., 2015].
Mã hóa cặp byte thực hiện phân tích thống kê tập dữ liệu huấn luyện để tìm các ký hiệu
chung trong một từ, chẳng hạn như các ký tự liên tiếp có độ dài tùy ý. Bắt đầu từ các ký
hiệu có độ dài bằng 11, mã hóa cặp byte lặp đi lặp lại việc gộp các cặp ký hiệu liên tiếp
thường gặp nhất để tạo ra các ký hiệu mới dài hơn. Lưu ý rằng để tăng hiệu năng, các cặp
vượt qua ranh giới từ sẽ không được xét. Cuối cùng, chúng ta có thể sử dụng các ký hiệu
đó như từ con để phân đoạn các từ. Mã hóa cặp byte và các biến thể của nó đã được sử
dụng để biểu diễn đầu vào trong các mô hình tiền huấn luyện cho xử lý ngôn ngữ tự
nhiên phổ biến như GPT-2 [Radford et al., 2019] và RoBERTa [Liu et al., 2019].
Các ứng dụng của word embedding
Rất nhiều ứng dụng sử dụng word embbeding, các ngôn ngữ khác nhau
Kết hợp nhiều dữ liệu khác nhau như ảnh, văn bản
Là mô hình nền tảng cho các mô hình hiện đại sau này
6.4 Recurrent Neural Networks (RNN)
Dữ liệu dạng sequence
Trong xử lý ngôn ngữ tự nhiên dữ liệu chính là dưới dạng sequence (chuỗi)

186
Time series data: ví dụ dữ liệu cổ phiếu
Văn bản từ sau phụ thuộc vào từ trước, một từ phụ thuộc vào từ đằng trước nó và từ đằng
sau nó
Dữ liệu có thứ tự như các ảnh tách từ video ở trên được gọi là sequence, time-series data.
Trong bài toán dự đoán đột quỵ tim cho bệnh nhân bằng các dữ liệu tim mạch khám trước
đó. Input là dữ liệu của những lần khám trước đó, ví dụ i1 là lần khám tháng 1, i2 là lần
khám tháng 2,... i8 là lần khám tháng 8. (i1,i2,..i8) được gọi là sequence data. RNN sẽ
học từ input và dự đoán xem bệnh nhân có bị đột quy tim hay không.
Ví dụ khác là trong bài toán dịch tự động với input là 1 câu, ví dụ "tôi yêu Việt Nam" thì
vị trí các từ và sự xắp xếp cực kì quan trọng đến nghĩa của câu và dữ liệu input các từ
[’tôi’, ’yêu’, ’việt’, ’nam’] được gọi là sequence data. Trong bài toán xử lý ngôn ngữ
(NLP) thì không thể xử lý cả câu được và người ta tách ra từng từ (chữ) làm input, giống
như trong video người ta tách ra các ảnh (frame) làm input.
Recurrent Neural Networks (RNN)
Rất thích hợp với dữ liệu dạng chuỗi
Ứng dụng bài toán RNN
• Speech to text: Chuyển giọng nói sang text.
• Sentiment classification: Phân loại bình luận của người dùng, tích cực hay tiêu cực.
• Machine translation: Bài toán dịch tự động giữa các ngôn ngữ.
• Video recognition: Nhận diện hành động trong video.

187
• Heart attack: Dự đoán đột quỵ tim.
- Image captioning

Hình 16.2: Ví dụ image captioning

Phân loại bài toán RNN

Hình 16.1: Các dạng bài toán RNN


One to one: mẫu bài toán cho Neural Network (NN) và Convolutional Neural Network
(CNN), 1 input và 1 output, ví dụ với bài toán phân loại ảnh MNIST input là ảnh và
output là ảnh đấy là số nào.
One to many: bài toán có 1 input nhưng nhiều output, ví dụ với bài toán caption cho ảnh,
input là 1 ảnh nhưng output là nhiều chữ mô tả cho ảnh đấy, dưới dạng một câu.

188
Many to one: bài toán có nhiều input nhưng chỉ có 1 output, ví dụ bài toán phân loại hành
động trong video, input là nhiều ảnh (frame) tách ra từ video, ouptut là hành động trong
video. Hay bài toán phân tích quan điểm
Many to many: bài toán có nhiều input và nhiều output, ví dụ bài toán dịch từ tiếng anh
sang tiếng việt, input là 1 câu gồm nhiều chữ: "I love Vietnam" và output cũng là 1 câu
gồm nhiều chữ "Tôi yêu Việt Nam". Để ý là độ dài sequence của input và output có thể
khác nhau. Bài toán nhận dạng tiếng nói, bài toán gán nhãn từ loại.
1 cell RNN
Tầng ẩn h0, đầu vào x1, đầu ra là h1 (tầng ẩn)

Có thể có đầu ra y1

Ví dụ: đầu vào là c, đầu ra là e

189
Khi có nhiều từ đầu vào, trải ra ta sẽ có như sau:

Ưu điểm: tận dụng được thông tin ngữ cảnh của những từ trước đó
Ví dụ dưới là sequence to sequence tức là có nhiều đầu ra

190
Có the đoán từ tiếp theo là cat
Có từ the cat từ tiếp theo đoán là likes
Ví dụ với bài toán phân tích quan điểm đầu ra chỉ có một (many to one)

191
Bài toán: Nhận diện hành động trong video 30s. Đây là dạng bài toán many to one trong
RNN, tức nhiều input và 1 output.
Input ta sẽ tách video thành 30 ảnh (mỗi giây một ảnh). Các ảnh sẽ được cho qua
pretrained model CNN để lấy ra các feature (feature extraction) vector có kích thước n*1.
Vector tương ứng với ảnh ở giây thứ i là xi
Output là vector có kích thước d*1 (d là số lượng hành động cần phân loại), softmax
function được sử dụng.

Hình 16.3: Mô hình RNN cho bài toán.


Ta có: • Mô hình có 30 input và 1 output, các input được cho vào model đúng với thứ tự
ảnh trong video x1, x2,...x30.

192
• Mỗi hình tròn được gọi là 1 state, state t có input là xt và st−1 (output của state trước);
output là st = f(U ∗ xt +W ∗ st−1). f là activation function thường là Tanh hoặc ReLU.
• Có thể thấy st mang cả thông tin từ state trước ( st−1) và input của state hiện tại => st
giống như memory nhớ các đặc điểm của các input từ x1 đến xt
• s0 được thêm vào chỉ cho chuẩn công thức nên thường được gán bằng 0 hoặc giá trị
ngẫu nhiên. Có thể hiểu là ban đầu chưa có dữ liệu gì để học thì memory rỗng.
• Do ta chỉ có 1 output, nên sẽ được đặt ở state cuối cùng, khi đó s30 học được thông tin từ
tất cả các input.

g là activation function, trong bài này là bài toán phân loại nên sẽ dùng softmax.
Ta thấy là ở mỗi state các hệ số W, U là giống nhau nên model có thể được viết lại thành:

Hình 16.4: Mô hình RNN rút gọn


Tóm lại:
• xi là vector có kích thước n*1, si là vector có kích thước m*1, yi là vector có kích thước
d*1. U là ma trận có kích thước m*n, W là ma trận có kích thước m*m và V là ma trận
có kích thước d*m.

193
• s0 = 0,st = f(U ∗ xt +W ∗ st−1) với t >= 1
• yˆ = g(V ∗ s30)
Loss function
Loss function của cả mô hình bằng tổng loss của mỗi output, tuy nhiên ở mô hình trên chỉ
có 1 output và là bài toán phân loại nên categorical cross entropy loss sẽ được sử dụng.

Hình 16.5: Loss function


Backpropagation Through Time (BPTT)

194
Giả sử activation là tanh function, st = tanh(U ∗ xt +W ∗ st−1)

Ta có thể thấy là các state càng xa ở trước đó thì càng bị vanishing gradient và các hệ số
không được update với các frame ở xa. Hay nói cách khác là RNN không học được từ các
thông tin ở trước đó xa do vanishing gradient.
Nhìn vào công thức tính đạo hàm của L với W ở trên ta có thể thấy hiện tượng vanishing
gradient ở các state đầu nên ta cần mô hình tốt hơn để giảm hiện tượng vaninshing gradient
=> Long short term memory (LSTM) ra đời và sẽ được giới thiệu ở bài sau. Vì trong bài
toán thực tế liên quan đến time-series data thì LSTM được sử dụng phổ biến hơn là mô
hình RNN thuần.
Như vậy về lý thuyết là RNN có thể mang thông tin từ các layer trước đến các layer sau,
nhưng thực tế là thông tin chỉ mang được qua một số lượng state nhất định, sau đó thì sẽ

195
bị vanishing gradient, hay nói cách khác là model chỉ học được từ các state gần nó => short
term memory.
Cùng thử lấy ví dụ về short term memory. Bài toán là dự đoán từ tiếp theo trong đoạn văn.
Đoạn đầu tiên "Mặt trời mọc ở hướng ...", ta có thể chỉ sử dụng các từ trước trong câu để
đoán là đông. Tuy nhiên, với đoạn, "Tôi là người Việt Nam. Tôi đang sống ở nước ngoài.
Tôi có thể nói trôi chảy tiếng ..." thì rõ ràng là chỉ sử dụng từ trong câu đấy hoặc câu trước
là không thể dự đoán được từ cần điền là Việt. Ta cần các thông tin từ state ở trước đó rất
xa => cần long term memory điều mà RNN không làm được => Cần một mô hình mới để
giải quyết vấn đề này => Long short term memory (LSTM) ra đời.
Một số các biến thế khác của RNN

196
Mạng chồng thêm cho nó sâu, người ta mong muốn mạng như thế này sẽ học được mịn
hơn
Huấn luyện mạng RNN khá là khó do có nhiều cell, layer
6.5 Long short term memory (LSTM)
Thiết kế này được lấy cảm hứng từ các cổng logic trong máy tính. Để kiểm soát một ô nhớ
chúng ta cần một số các cổng. Một cổng để đọc các thông tin từ ô nhớ đó (trái với việc đọc
từ các ô khác). Chúng ta sẽ gọi cổng này là cổng đầu ra (output gate). Một cổng thứ hai để
quyết định khi nào cần ghi dữ liệu vào ô nhớ. Chúng ta gọi cổng này là cổng đầu vào (input
gate). Cuối cùng, chúng ta cần một cơ chế để thiết lập lại nội dung chứa trong ô nhớ, được
chi phối bởi một cổng quên (forget gate). Động lực của thiết kế trên đó là để đưa ra quyết
định khi nào cần nhớ và khi nào nên bỏ qua đầu vào trong trạng thái tiềm ẩn thông qua một
cơ chế chuyên dụng. Chúng ta hãy xem thiết kế này hoạt động như thế nào trong thực tế.

197
Mỗi cell bây giờ thêm 3 cái cổng: cổng input, output, forget. Thêm thông tin về ngữ
cảnh c, c gần như là nơi để chứa thông tin hiện tại
Cách đọc biểu đồ trên: chúng ta nhìn thấy kí hiệu σ, tanh ý là bước đấy dùng sigma,
tanh activation function. Phép nhân ở đây là element-wise multiplication, phép cộng
là cộng ma trận.
Ở state thứ t của mô hình LSTM:
• Input: ct−1, ht−1, xt . Trong đó xt là input ở state thứ t của model. ct−1, ht−1 là output
của layer trước. h đóng vai trò khá giống như s ở RNN, trong khi c là điểm mới của
LSTM.
Những đầu vào này được xử lý bởi một tầng kết nối đầy đủ và một hàm kích hoạt
sigmoid để tính toán các giá trị của các cổng đầu vào, cổng quên và cổng đầu ra. Kết
quả là, tất cả các giá trị đầu ra tại ba cổng đều nằm trong khoảng [0,1].
• Output: ct ,ht , ta gọi c là cell state, h là hidden state.

198
• Cổng quên quyết định sẽ bỏ đi bao nhiêu lượng thông tin đến từ trạng thái trước đó.
Đầu ra sẽ trả về giá trị nằm giữa 0 và 1 (nếu là 0 thì quên luôn).
• Cổng vào giúp quyết định bao nhiêu lượng thông tin đầu vào sẽ ảnh hưởng đến trạng
thái mới. Quyết định bằng cách nào, thông qua đặc điểm của hàm sigmoid (đầu ra
nằm trong khoảng [0,1]), như vậy khi một vector thông tin đi qua đây, nếu nhân với
0, vector sẽ bị triệt tiêu hoàn toàn. Nếu nhân với 1, hầu hết thông tin sẽ được giữ lại.
• Cổng đầu ra: Cổng điều chỉnh lượng thông tin có thể ra ngoài và lượng thông tin
truyền tới trạng thái tiếp theo.

199
𝐶̃𝑡 được gọi là ô nhớ tiềm năng. Các phép tính toán cũng tương tự như ba cổng mô tả
ở trên, ngoài trừ việc ở đây ta sử dụng hàm kích hoạt tanh với miền giá trị nằm trong
khoảng [−1,1]
Trong LSTM, chúng ta có hai tham số, it điều chỉnh lượng dữ liệu mới được lấy vào
thông qua 𝐶̃𝑡 và tham số quên ft chỉ định lượng thông tin cũ cần giữ lại trong ô
nhớ Ct−1. Sử dụng cùng một phép nhân theo từng điểm (pointwise) như trước đây,
chúng ta đi đến phương trình cập nhật như trên.
Nếu giá trị ở cổng quên luôn xấp xỉ bằng 1 và cổng đầu vào luôn xấp xỉ bằng 0, thì
giá trị ô nhớ trong quá khứ Ct−1 sẽ được lưu lại qua thời gian và truyền tới bước thời
gian hiện tại. Thiết kế này được giới thiệu nhằm giảm bớt vấn đề tiêu biến gradient
cũng như nắm bắt các phụ thuộc dài hạn trong chuỗi thời gian tốt hơn.

Nhìn vào công thức, có thể thấy Ct nó là tổng hợp của bộ nhớ trước Ct−1 đã được lọc
qua cổng quên f, cộng với trạng thái ẩn 𝐶̃𝑡 đã được lọc bởi cổng vào i. Cell state sẽ mang
thông tin nào quan trọng truyền đi xa hơn và sẽ được dùng khi cần. Đây chính là long term
memory.
• Cuối cùng, chúng ta cần phải xác định cách tính trạng thái ẩn ht. Đây là nơi cổng
đầu ra được sử dụng. Trong LSTM, đây chỉ đơn giản là một phiên bản có kiểm soát
của hàm kích hoạt tanh trong ô nhớ.

Điều này đảm bảo rằng các giá trị của ht luôn nằm trong khoảng (−1,1). Bất cứ khi
nào giá trị của cổng đầu ra là 1, thực chất chúng ta đang đưa toàn bộ thông tin trong
ô nhớ tới bộ dự đoán. Ngược lại, khi giá trị của cổng đầu ra là 0, chúng ta giữ lại tất
cả các thông tin trong ô nhớ và không xử lý gì thêm.

Nhận xét: ht,𝐶̃𝑡 khá giống với RNN, nên model có short term memory. Trong khi đó ct
giống như một băng chuyền ở trên mô hình RNN vậy, thông tin nào cần quan trọng và
dùng ở sau sẽ được gửi vào và dùng khi cần => có thể mang thông tin từ đi xa=> long term
memory. Do đó mô hình LSTM có cả short term memory và long term memory.

200
Nếu nhìn kỹ một chút, ta có thể thấy RNN truyền thống là dạng đặc biệt của LSTM.
Nếu thay giá trị đầu ra của input gate là 1 và đầu ra forget gate là 0 (không nhớ trạng
thái trước), ta được RNN thuần.

LSTM chống vanishing gradient.


Hàm Ct là hàm tuyến tính

201
Hình: Mô hình LSTM
Ta cũng áp dụng thuật toán back propagation through time cho LSTM tương tự như
RNN

LSTM chỉ giảm phần nào vanishing gradient, nó vẫn có thể bị vanishing gradient
Một biến thể
Tóm tắt

• LSTM có ba loại cổng để kiểm soát luồng thông tin: cổng đầu vào, cổng quên và
cổng đầu ra.
• Đầu ra tầng ẩn của LSTM bao gồm các trạng thái ẩn và các ô nhớ. Chỉ các trạng
thái ẩn là được truyền tới tầng đầu ra. Các ô nhớ hoàn toàn được sử dụng nội bộ
trong tầng.
• LSTM có thể đối phó với vấn đề tiêu biến và bùng nổ gradient.

6.6 Gated Recurrent Unit (GRU- Nút hồi tiếp có cổng)


Đây là một biến thể của LSTM

202
Sự khác biệt chính giữa RNN thông thường và GRU là GRU hỗ trợ việc kiểm soát
trạng thái ẩn. Điều này có nghĩa là ta có các cơ chế được học để quyết định khi nào
nên cập nhật và khi nào nên xóa trạng thái ẩn. Ví dụ, nếu ký tự đầu tiên có mức độ
quan trọng cao, mô hình sẽ học để không cập nhật trạng thái ẩn sau lần quan sát đầu
tiên. Tương tự, mô hình sẽ học cách bỏ qua những quan sát tạm thời không liên quan,
cũng như cách xóa trạng thái ẩn khi cần thiết. Dưới đây ta sẽ thảo luận chi tiết vấn đề
này.
Cổng Xóa và Cổng Cập nhật
Đầu tiên ta giới thiệu cổng xóa và cổng cập nhật. Ta thiết kế chúng thành các vector có
các phần tử trong khoảng (0,1) để có thể biểu diễn các tổ hợp lồi. Chẳng hạn, một biến
xóa cho phép kiểm soát bao nhiêu phần của trạng thái trước đây được giữ lại. Tương tự,
một biến cập nhật cho phép kiểm soát bao nhiêu phần của trạng thái mới sẽ giống trạng
thái cũ.
Ta bắt đầu bằng việc thiết kế các cổng tạo ra các biến này. Hình dưới minh họa các đầu
vào cho cả cổng xóa và cổng cập nhật trong GRU, với đầu vào ở bước thời gian hiện
tại Xt và trạng thái ẩn ở bước thời gian trước đó Ht−1. Đầu ra được tạo bởi một tầng kết
nối đầy đủ với hàm kích hoạt sigmoid.

203
Hoạt động của Cổng Xóa
Ta bắt đầu bằng việc tích hợp cổng xóa với một cơ chế cập nhật trạng thái tiềm ẩn thông
thường. Trong RNN thông thường, ta cập nhật trạng thái ẩn theo công thức

204
Điều này về cơ bản giống với những gì đã thảo luận ở phần trước, mặc dù có thêm tính phi
tuyến dưới dạng hàm tanh để đảm bảo rằng các giá trị trạng thái ẩn nằm trong
khoảng (−1,1). Nếu muốn giảm ảnh hưởng của các trạng thái trước đó, ta có thể
nhân Ht−1 với Rt theo từng phần tử. Nếu các phần tử trong cổng xóa Rt có giá trị gần với 1,
kết quả sẽ giống RNN thông thường. Nếu tất cả các phần tử của cổng xóa Rt gần với 0,
trạng thái ẩn sẽ là đầu ra của một perceptron đa tầng với đầu vào là Xt. Bất kỳ trạng thái ẩn
nào tồn tại trước đó đều được đặt lại về giá trị mặc định. Tại đây nó được gọi là trạng thái
ẩn tiềm năng, và chỉ là tiềm năng vì ta vẫn cần kết hợp thêm đầu ra của cổng cập nhật.

Hình sau minh họa luồng tính toán sau khi áp dụng cổng xóa. Ký hiệu ⊙⊙ biểu thị phép
nhân theo từng phần tử giữa các tensor.

Hoạt động của Cổng Cập nhật


Tiếp theo ta sẽ kết hợp hiệu ứng của cổng cập nhật Zt như trong hình dưới. Cổng này xác
định mức độ giống nhau giữa trạng thái mới Ht và trạng thái cũ Ht−1, cũng như mức độ
̃𝑡 được sử dụng. Biến cổng (gating variable) Zt được sử dụng
trạng thái ẩn tiềm năng 𝐻

205
cho mục đích này, bằng cách áp dụng tổ hợp lồi giữa trạng thái cũ và trạng thái tiềm
năng. Ta có phương trình cập nhật cuối cùng cho GRU.

Nếu các giá trị trong cổng cập nhật Zt bằng 1, chúng ta chỉ đơn giản giữ lại trạng thái cũ.
Trong trường hợp này, thông tin từ Xt về cơ bản được bỏ qua, tương đương với việc bỏ
qua bước thời gian t trong chuỗi phụ thuộc. Ngược lại, nếu Zt gần giá trị 0, trạng thái
̃𝑡 . Những thiết kế trên có thể giúp chúng ta giải
ẩn Ht sẽ gần với trạng thái ẩn tiềm năng 𝐻
quyết vấn đề tiêu biến gradient trong các mạng RNN và nắm bắt tốt hơn sự phụ thuộc xa
trong chuỗi thời gian. Tóm lại, các mạng GRU có hai tính chất nổi bật sau:

• Cổng xóa giúp nắm bắt các phụ thuộc ngắn hạn trong chuỗi thời gian.
• Cổng cập nhật giúp nắm bắt các phụ thuộc dài hạn trong chuỗi thời gian.

6.6. Sequence 2 sequence

206
207
208
6.7 CÁC ỨNG DỤNG CỦA XỬ LÝ NGÔN NGỮ TỰ NHIÊN
6.7.1. Dịch máy
Dịch máy (Machine Translation -MT)
Dịch máy là một trong những ứng dụng chính của xử lý ngôn ngữ tự nhiên, dùng máy tính
để dịch văn bản từ ngôn ngữ này sang ngôn ngữ khác. Ngày nay, nhu cầu của một hệ thống
dịch tự động đang trở nên vô cùng bức thiết khi số lượng văn bản xuất hiện trên môi trường
mạng toàn cầu gia tăng một cách khủng khiếp. Sự tồn tại của một hệ dịch tự động hiệu quả
sẽ giúp tiết kiệm một khoảng chi phí không nhỏ cho các tổ chức, và cá nhân. Chất lượng
của bản dịch phụ thuộc nhiều vào phương pháp dịch thuật. Mặc dù dịch máy đã được
nghiên cứu và phát triển hơn 50 năm qua, xong vẫn tồn tại nhiều vấn đề cần nghiên cứu. Ở
Việt Nam, dịch máy đã được nghiên cứu hơn 20 năm, nhưng các sản phẩm dịch máy hiện
tại cho chất lượng dịch còn nhiều hạn chế.

Hiện nay dịch máy được phân chia thành một số phương pháp như: dịch máy trên cơ sở
luật, dịch máy thống kê và dịch máy trên cơ sở ví dụ.
Máy dịch gần tương đương với con người.

209
1. Dịch máy dựa trên luật
Là việc áp dụng các tri thức ngôn ngữ của các cặp ngôn ngữ nguồn và ngôn ngữ đích do
các nhà ngôn ngữ học xây dựng (rule-based machine translation).
Cách tiếp cận này đòi hỏi rất nhiều công sức để xây dựng nên cơ sở tri thức cần thiết cho
một hệ thống dịch máy. Hơn nữa sẽ có những lỗi do mâu thuẫn giữa các luật hoặc do tập
luật không bao quát sẽ dẫn đến hiệu quả không cao. Khó
khăn lớn nhất trong việc áp dụng cách tiếp cận này đối với những ngôn ngữ mới là
những yêu cầu về phân tích từ pháp, cú pháp,...cũng như những yêu cầu nghiên cứu về việc
chuyển đổi từ vựng, cấu trúc giữa cặp ngôn ngữ. Vì vậy, xây dựng một hệ dịch trên ngôn
ngữ mới (với ngôn ngữ tiếng Việt chẳng hạn) sẽ gặp rất nhiều khó khăn.
2. Dịch máy dựa trên thống kê
Dịch máy dựa trên thống kê là hướng tiếp cận hoàn toàn dựa trên dữ liệu nên nó có tính
độc lập ngôn ngữ. Xây dựng một hệ thống dịch dựa trên
hướng tiếp cận này chỉ cần tối thiểu một ngữ liệu song ngữ giữa cặp ngôn ngữ của
hệ thống. Những tham số thống kê thu
được từ việc huấn luyện trên ngữ liệu song ngữ sẽ được sử dụng cho việc dịch ở
lần sau. Do vậy, không cần phải có một đội ngũ các chuyên gia ngôn ngữ học để hỗ trợ,
kiểm tra các tri thức ngôn ngữ. Với yêu cầu tối thiểu của một hệ thống dịch máy, chi
phí để xây dựng sẽ giảm được rất nhiều cũng như thời gian xây dựng một hệ thống dịch
máy cho một cặp ngôn ngữ mới cũng sẽ giảm đi đáng kể. Và điểm đặc biệt hơn cả nếu ngữ
liệu song ngữ được bổ sung càng nhiều sẽ càng nâng cao chất lượng cho hệ dịch.
3. Dịch máy dựa trên ví dụ
Hiện tại, dịch máy thống kê đang ngày càng khẳng định sức mạnh của nó do ngày càng có
nhiều kho ngữ liệu lớn cho việc thống kê, nhưng nó không cho được kết quả như ý muốn
trong một số trường hợp như các câu chuyên ngành.

210
Các tiếp cận theo dịch máy dựa trên ví dụ rất đơn giản, không đòi hỏi phải có sự phân tích
ngôn ngữ học, cú pháp, ngữ nghĩa vì mọi câu dịch đều dựa vào việc “so khớp” mẫu. Việc
“so khớp” mẫu dựa hoàn toàn vào kho ngữ liệu song ngữ để xác định mẫu nào gần đúng
nhất và xuất ra thành phần dịch tương ứng của mẫu đó. Vậy thì việc xây dựng kho ngữ liệu
song ngữ như thế nào để hệ dịch máy dựa trên ví dụ có thể dịch ra kết quả khả quan hơn là
điều đáng quan tâm.
Tuy nhiên, hiện nay chất lượng của các bản dịch tự động chưa thật tốt, các bản dịch chỉ
cho biết đại ý và nó hoàn toàn có thể dịch sai một phần hoặc toàn bộ nội dung cốt lõi của
văn bản. Vì vậy, hầu hết các sản phẩm dịch tự động đều chỉ mang tính tham khảo.
Phương pháp dịch máy dựa trên ví dụ được đề xuất lần đầu tiên bởi Makoto Nagao năm
1984.[1] Ông đã chỉ ra sự thích hợp đặc biệt của phương pháp này trong việc dịch hai ngôn
ngữ hoàn toàn khác nhau, chẳng hạn như tiếng Anh và tiếng Nhật. Với cách này, một câu
có thể được dịch thành nhiều câu với cấu trúc ngữ pháp thích hợp với một ngôn ngữ khác.
Ví dụ ngữ liệu song ngữ

Tiếng Việt Tiếng Nhật

Cái ô đỏ đó giá bao nhiêu? Ano akai kasa wa ikura desu ka.

Máy ảnh nhỏ đó giá bao nhiêu? Ano chiisai kamera wa ikura desu ka.

Hệ thống EBMT được "đào tạo" từ kho ngữ liệu song ngữ có chứa nhiều cặp câu song song
như ví dụ trên. Các cặp câu bao gồm một câu trong ngôn ngữ này và câu đã được sịch sang
ngôn ngữ khác. Ví dụ trên là một cặp tối thiểu, có nghĩa là chỉ có một phần tử khác nhau ở
2 cặp câu. Những cặp này giúp máy học bản dịch các phần của một câu một cách dễ dàng
hơn. Cụ thể, một hệ thống dịch máy EMBT sẽ học được ba đơn vị dịch từ ví dụ trên:

1. X đó giá bao nhiêu ? tương ứng với Ano X wa ikura desu ka.
2. ô đỏ tương ứng với akai kasa
3. máy ảnh nhỏ tương ứng với chiisai kamera
Kết hợp các đơn vị dịch tương tự như trên là một chìa khoá cho phương án dịch mới mẻ
và khả thi trong tương lai. Ví dụ, nếu ta đã được "huấn luyện" cách sử dụng một số văn
bản có chứa các câu Tổng thống Kennedy bị bắn chết trong lễ duyệt binh. và Kẻ gây án đã
bỏ trốn vào ngày 15/7, ta có thể dịch câu Kẻ gây án đã bị bắn chết trong lễ duyệt binh. bằng
cách thay thế các bộ phận thích hợp của câu.

211
Các vấn đề
1. Xử lý sự giống và khác nhau giữa các ngôn ngữ
Hình vị: # số âm tiết/từ:
Ngôn ngữ đơn âm tiết ( tiếng Việt, Trung Quốc) – 1 tiếng/từ
Ngôn ngữ đa âm tiết (Siberian Yupik), 1 từ = cả 1 câu
Mức độ phân chia âm tiết
2. Cú pháp: trật tự từ trong câu
To Yukio; Yukio nè
Tiếng Anh – tiếng Việt:
The (affix1) red (affix2) flag (head)
Lá cờ (head) đỏ (affix2) ấy (affix1)
3. Các nét riêng biệt

Ba khối chính trong dịch máy

212
Hiểu ngôn ngữ
1. Nhập nhằng từ vựng:
English: book - Spanish libro, reservar ⇒ Sử dụng thông tin cú pháp
2. Nhập nhằng cú pháp:
I saw the guy on the hill with the telescope
3. Nhập nhằng ngữ nghĩa:
E: While driving, John swerved & hit a tree
John’s car
S: Minetras que John estaba manejando, se desvio y golpeop con un arbo

Dịch máy thống kê


Dịch máy dựa trên phương pháp thống kê đang là một hướng phát triển đầy tiềm
năng bởi những ưu điểm vượt trội so với các phương pháp khác. Thay vì xây dựng các từ

213
điển, các quy luật chuyển đổi bằng tay, hệ dịch này tự động xây dựng các từ điển, các quy
luật dựa trên kết quả thống kê có được từ các kho ngữ liệu. Chính vì vậy, dịch máy dựa
vào thống kê có tính khả chuyển cao áp dụng được cho bất kỳ cặp ngôn ngữ nào. Dịch máy
dựa trên phương pháp thống kê sẽ tìm câu ngôn ngữ đích e phù hợp nhất (có xác suất cao
nhất) khi cho trước câu ngôn ngữ nguồn f.

Một hệ dịch máy dựa trên phương pháp thống kê có thể được mô hình hoá như sau:

214
Ý tưởng cơ bản của cách tiếp cận này là từ một câu f ở ngôn ngữ nguồn, hệ thống
đi tìm một câu e ở ngôn ngữ đích sao cho xác suất điều kiện Pr(e|f) đạt giá trị lớn nhất,
nghĩa là e* = argmaxe P(e|f).
Theo định lý Bayes thì P(e|f) = P(f|e) * P(e) / P(f) (1)
Trong (1) thì P(f) không đổi với mỗi câu f nên:
e* = argmaxe P(e|f) = argmaxe P(f|e)* P(e) (2)
Để tính được các xác suất P(f|e) và P(e) cần 2 thông tin sau:
- Mô hình ngôn ngữ (P(e)): mô hình ngôn ngữ sẽ gán xác suất cao hơn cho những
câu đúng ngữ pháp hơn. Xác suất này được ước lượng bằng cách sử dụng ngữ liệu đơn
ngữ.
- Mô hình dịch (P(f|e)): Xác suất này được ước lượng bằng cách sử dụng ngữ liệu
song ngữ.
Tùy vào đơn vị được tính xác suất trong mô hình dịch mà SMT sẽ có 3 hướng tiếp
cận chính: dựa trên từ (word-based), dựa trên đoạn câu (phrase-based) và dựa trên cú pháp
(syntax-based).
Dịch máy thống kê dựa trên từ (Word-based SMT)
Dịch máy thống kê dựa trên từ, mô hình dịch P(f|e) sẽ được tính dựa vào xác suất
dịch của từ hay còn gọi là gióng hàng từ dựa vào ngữ liệu song ngữ. Tới đây, ta thấy xuất
hiện vấn đề con gà – quả trứng, nếu chúng ta có sẵn các gióng hàng từ thì dễ dàng ước

215
lượng xác suất, và nếu có xác suất trước thì dễ dàng xác định gióng hàng từ. Vậy làm sao
để giải quyết vấn đề này? Câu trả lời là dùng mô hình huấn luyện EM (Expectation
Maximization), Cụ thể như sau:
- Với một cặp câu được xem là bản dịch của nhau, ta giả định một từ ở câu nguồn
có khả năng gióng hàng đến tất cả các từ ở câu đích.
- Mô hình sẽ học để chọn ra cặp từ nào thường gióng hàng với nhau nhất.
- Sau một số lần lặp, xác suất này sẽ hội tụ và không thay đổi nhiều, khi đó ta được
cả hai thông tin là thông tin về gióng hàng từ và xác suất của nó. Theo hướng dịch trên từ,
mô hình dịch P(f|e) sẽ được phân rã dựa trên gióng hàng a từ theo công thức (3) như sau:

Dịch máy thống kê dựa trên ngữ (Phrase-based SMT)


Theo hướng tiếp cận dựa trên ngữ, f sẽ được tách thành một chuỗi gồm I ngữ f1I với
giả định là có một phân phối xác suất chuẩn giữa các ngữ này. Mỗi ngữ fi trong chuỗi f1I
sẽ được dịch thành một ngữ ei tương ứng; việc dịch ngữ này được thực hiện dựa vào phân
phối xác suất (fi |ei), ngoài ra các ei sẽ chuyển đổi trật tự dựa trên mô hình chuyển đổi
d(ai – bi-1), với ai là vị trí bắt đầu của ngữ fi và bi-1 là vị trí kết thúc của ngữ ei-1.
Tóm lại, câu dịch e tốt nhất là câu dịch thỏa công thức (2) ở trên nhưng mô hình
dịch P(f|e) được phân rã thành:

Có nhiều mô hình khác nhau được áp dụng để tính xác suất dịch ngữ hay còn gọi là
xác suất gióng hàng ngữ (fi |ei) đã thực nghiệm trên ba phương pháp sau:
- Việc tách ngữ và tính xác suất gióng hàng ngữ dựa vào kết quả gióng hàng từ..
- Tách ngữ dựa vào đặc điểm cú pháp theo các bước sau:
o Gióng hàng từ ngữ liệu song ngữ
o Phân tích cú pháp câu ngôn ngữ nguồn và ngôn ngữ đích

216
o Chỉ rút ra các ngữ là cây con của cây cú pháp và có các từ được gióng hàng với
nhau ở cả hai ngôn ngữ.
- Dùng mô hình kết hợp.
Dịch máy thống kê dựa trên cú pháp (Syntax-based SMT)
Trong các hướng tiếp cận trên, việc lựa chọn câu dịch đa số dựa vào các con số
thống kê mà rất ít sử dụng các tri thức về ngôn ngữ. Dịch máy thống kê dựa trên cú pháp
là một hướng tiếp cận cố gắng dung hòa giữa kết quả thống kê và một số qui định, ràng
buộc trong ngữ pháp (ngôn ngữ học).
Một số điểm thuận lợi trong hướng tiếp cận này:
- Chuyển đổi trật tự từ/ngữ dựa trên cây cú pháp.
- Dịch các từ chức năng (function words) tốt hơn, ví dụ như giới từ (preposition), từ
hạn định (determiner),…
- Dịch các từ có quan hệ cú pháp tốt hơn, ví dụ: việc dịch động từ có thể phụ thuộc
vào chủ từ hoặc tân từ.
- Tận dụng các mô hình ngôn ngữ cú pháp (syntactic language models).
Câu dịch tốt là câu dịch có cây cú pháp “đúng” dựa vào mô hình ngôn ngữ cú pháp,
ngoài ra mô hình này còn cho phép chúng ta kiểm tra một số ràng buộc của các từ cách xa
nhau (trật tự từ) trong câu. Ví dụ, xét hai cây cú pháp sau:

217
218
Bằng cách sử dụng mô hình ngôn ngữ cú pháp, cây cú pháp ở hình (a) sẽ được chọn
lựa thay vì chọn cây cú pháp ở hình (b). Nguyên nhân là do “VP → is the man” là cây cú
pháp không tồn tại trong mô hình cú pháp.
Có nhiều mô hình khác nhau cho hướng dịch máy thông kê dựa trên cú pháp, có thể
nêu một số trường hợp tiêu biểu sau:
- Dịch từ câu sang cây cú pháp (string to tree)
- Chuyển đổi dựa trên cây cú pháp của cả hai ngôn ngữ (tree-based transfer)
- Chuyển đổi dựa trên cấu trúc kế thừa (hierarchical transfer)
- Dịch dựa trên mệnh đề (clause level restructuring)
Qua các những phân tích ở trên, có thể tổng quát một hệ thống dịch máy thống kê
như hình vẽ sau:

219
Một số hệ thống dịch máy trên Internet
Google dịch
http://translate.google.com.

Google Dịch đã làm như thế nào?

Google Dịch là dịch vụ miễn phí của Google dịch nhanh các từ, cụm từ và trang web giữa
tiếng Việt và hơn 100 ngôn ngữ khác. Dịch vụ này được triển khai từ tháng 4-2006, Google
Dịch được cung cấp với dạng ứng dụng (app) trên Android vào tháng 1-2010 và trên iOS
vào tháng 2-2011.

Google Dịch không thực hiện phương pháp dịch như trình tự lý thuyết nêu ở trên (dịch
nghĩa từng từ, chọn nghĩa phù hợp nhất của từ trong ngữ cảnh, căn cứ theo quy luật ngữ
pháp để bố trí các từ trong câu sao cho hợp lý) mà nó tiếp cận theo một phương pháp khác,
gọi là dịch máy thống kê (Statistical Machine Translation, SMT). Theo phương pháp này,
Google nhập hàng trăm triệu tài liệu đã được con người dịch sẵn, khi có một câu cần dịch
nó sẽ đối chiếu với các cặp câu dịch sẵn đã có, thông qua một số phân tích và dự đoán (nếu
không có cặp câu hoàn toàn khớp) để chọn kết quả phù hợp. Từ năm 2005, Google đã lưu
trữ sẵn khoảng 200 tỷ từ gồm các tài liệu của LHQ đã được dịch ra nhiều thứ tiếng khác
nhau để làm kho dữ liệu dịch ban đầu. Google Dịch (và những phần mềm dịch khác) cũng
đã lưu trữ hàng trăm triệu tài liệu được con người dịch sẵn để áp dụng phương pháp SMT
này. Nhược điểm của phương pháp này là thay vì dịch trực tiếp từ ngôn ngữ nguồn sang
ngôn ngữ đích, nó phải dịch sang ngôn ngữ trung gian là tiếng Anh. Ngoài ra, SMT sử
dụng các thuật toán tiên đoán để dịch văn bản, nên nó có độ chính xác ngữ pháp kém.

Tháng 11-2016, Google cho biết Google Dịch sẽ chuyển sang một công cụ dịch máy mô
phỏng dây thần kinh (Google Neural Machine Translation, GNMT), theo đó công cụ này
sẽ “dịch toàn bộ câu tại một thời điểm, chứ không phải từng mảnh một. Nó sử dụng ngữ

220
cảnh rộng hơn này để giúp nó tìm ra bản dịch phù hợp nhất, sau đó nó sắp xếp lại và điều
chỉnh để giống như một người nói với ngữ pháp thích hợp hơn”. Kể từ đó, chất lượng dịch
của Google Dịch tốt hơn hẳn. Điều đáng chú ý là GNMT do một người Việt Nam đóng vai
trò phát triển chủ chốt, đó là chàng trai gốc Huế - TS Lê Viết Quốc.

Theo Google, tại thời điểm năm 2018, Google Dịch dịch được 100 tỷ từ mỗi ngày. Hiện
nay, Google Dịch hỗ trợ 103 ngôn ngữ.

Nỗ lực của Facebook trong lĩnh vực dịch máy

Không có ứng dụng độc lập như Google, nhưng Facebook cũng có chức năng dịch tự động
để hỗ trợ người dùng. Cụ thể là khi bạn xem trên trang Facebook của mình (Facebook
News Feed), nếu có những câu viết bằng tiếng nước ngoài thì Facebook hiện ngay bên cạnh
là phần chọn Xem bản dịch để nó sẽ tự động dịch ra tiếng Việt cho bạn (ảnh dưới).

Theo Facebook, hiện nay mỗi ngày họ cung cấp 20 tỷ bản dịch trên Facebook News Feed.
Trên Facebook, mọi người đăng nội dung bằng 160 ngôn ngữ khác nhau trên hàng tỷ bài
viết, trong số đó 2/3 không phải là tiếng Anh. Chính vì vậy, việc dịch từ ngôn ngữ nguồn
sang ngôn ngữ đích mà lại phải thông qua ngôn ngữ trung gian là tiếng Anh như hầu hết
các nơi đều làm sẽ ảnh hưởng rất lớn đến tính chính xác của nội dung.

Mới đây, ngày 19-10-2020, bộ phận Trí tuệ nhân tạo của Facebook (Facebook AI) đã giới
thiệu M2M-100, mô hình dịch máy đa ngôn ngữ (Multilingual Machine Translation, MMT)
đầu tiên có thể dịch giữa bất kỳ cặp 100 ngôn ngữ nào mà không cần dựa vào dữ liệu tiếng
Anh.

221
Khi dịch từ tiếng Nhật sang tiếng Việt chẳng hạn, hầu hết các mô hình đa ngôn ngữ đều
lấy tiếng Anh làm trung tâm vì dữ liệu đào tạo tiếng Anh là phổ biến nhất, nên nó sẽ dịch
từ Nhật sang Anh rồi mới dịch từ Anh sang Việt. Mô hình mới của Facebook dịch trực tiếp
dữ liệu từ tiếng Nhật sang tiếng Việt để giữ nội dung chính xác hơn.

Sự kiện quan trọng này là đỉnh cao nhiều năm nghiên cứu căn bản của Facebook AI trong
lĩnh vực dịch máy. Facebook đang chia sẻ chi tiết về cách họ xây dựng mô hình và tập dữ
liệu đào tạo MMT đa dạng hơn cho 100 ngôn ngữ. Facebook cũng đang phát hành mô hình,
đào tạo và đánh giá để giúp các nhà nghiên cứu khác tái tạo và nâng cao hơn nữa các mô
hình đa ngôn ngữ.

Khối lượng dữ liệu cần thiết để “huấn luyện” cho máy tăng lên theo bậc hai với số lượng
ngôn ngữ được hỗ trợ. Ví dụ: nếu chúng ta cần 10 triệu cặp câu cho mỗi hướng (ví dụ
hướng Việt - Nhật, Hàn - Pháp…), thì cần khai thác 1 tỷ cặp câu cho 10 ngôn ngữ và 100
tỷ cặp câu cho 100 ngôn ngữ. Bằng cách sử dụng các chiến lược khai thác mới để tạo dữ
liệu dịch, Facebook đã xây dựng tập dữ liệu thực sự “nhiều - nhiều” đầu tiên với 7,5 tỷ câu
cho 100 ngôn ngữ. Tất cả các tài nguyên khai thác dữ liệu này đều tận dụng dữ liệu có sẵn
công khai và có nguồn mở.

Tiếng Việt

• Lạc Việt (công ty từng phát triển và đưa ra bộ từ điển Lạc Việt): chỉ hỗ trợ dịch
từ Anh sang Việt có thêm phần dịch chuyên ngành (tin học, toán học, y học và
kế toán) và hỗ trợ dịch tốt hơn bởi người dùng. Liên kết: tratu.coviet.vn/hoc-
tieng-anh/dich-van-ban.html

222
• Vdict: Dịch vụ trực tuyến đầu tiên dịch tự động Anh-Việt, mua lại bản quyền
phần mềm EVTRAN của Softex (Phòng Công nghệ Phần Mềm - Viện Ứng dụng
công nghệ - Bộ Khoa học và Công nghệ Việt Nam) phát triển, sau đó từ bỏ phần
mềm này (trong một thời gian ngắn) để sử dụng công nghệ của Google
Translate. Tuy nhiên, vì trong nhiều trường hợp EVTRAN dịch tốt hơn Google
Translate nên Vdict đã sử dụng lại EVTRAN đồng thời với Google Translate:
hiện nay khi dịch Anh<->Việt, vdict cho ra cả hai kết quả. Không hỗ trợ dịch
chuyên ngành cũng như trợ giúp từ phía người dùng. Liên
kết: vdict.com/?autotranslation#translation
• EVTRAN: Phần mềm dịch tự động Anh-Việt, Việt-Anh đầu tiên do người Việt
làm ra.
• VIKI Translator: Phần mềm dịch tự động Anh-Việt, Việt-Anh và từ điển, xây
dựng từ năm 2017. Liên kết: vikitranslator.com

• Ứng dụng Dịch

Sử dụng hầu hết các thiết bị di động phổ biến, hệ thống dịch hiện có thể được thực
hiện ở khắp mọi nơi thông qua các ứng dụng trên điện thoại thông minh hoặc máy
tính bảng. Bên cạnh Google Translate, có nhiều ứng dụng dịch khác. Microsoft

223
Translator, iTranslate, TripLingo, và SayHi Translate chỉ là một vài trong số đó.
Đây là công cụ rất tiện lợi cho du khách. Họ có thể thực hiện văn bản cũng như dịch
tiếng nói.
6.7.2. Phân loại văn bản
Trong các ứng dụng của NLP, bài toán phân lớp văn bản là một trong những bài
toán quan trọng và kinh điển nhất. Mục tiêu của một hệ thống phân lớp văn bản là nó có
thể tự động phân lớp một văn bản cho trước, để xác định xem văn bản đó thuộc lớp nào.
Phân loại văn bản (Text Classification) là bài toán thuộc nhóm học có giám sát (Supervised
learning) trong học máy. Bài toán này yêu cầu dữ liệu cần có nhãn (label). Mô hình sẽ học
từ dữ liệu có nhãn đó, sau đó được dùng để dự đoán nhãn cho các dữ liệu mới mà mô hình
chưa gặp.

Lấy ví dụ, chúng ta cần xây dựng một mô hình học máy để dự đoán chủ đề (Kinh tế, Xã
hội, Thể thao,…) của một bài báo bất kỳ. Khi đó, chúng ta cần rất nhiều dữ liệu có gán
nhãn; tức là chúng ta cần rất nhiều bài báo mà mỗi bài báo đó chúng ta phải biết trước nó
nằm trong chủ đề nào rồi. Vấn đề dữ liệu có lẽ là vấn đề nan giải nhất của mô hình học
giám sát này.

Ví dụ bài toán một cửa, email hoặc tin nhắn yêu cầu của người dân, cần phân loại nội dung
để gửi đến bộ phận tương ứng.

Đánh giá một nhận xét là tiêu cực hay tích cực

Ví dụ Báo mới là tập hợp của rất nhiều bài báo, phân loại chủ đề, báo này không có phóng
viên.

Các ứng dụng của phân lớp văn bản:

• Phân loại thư (cuộc hẹn, công việc, khẩn, bạn bè, thư rác, …)
• Phân lớp tin tức, các bài báo điện tử
• Hiểu được ý nghĩa, đánh giá, bình luận của người dùng
• Phân tích cảm xúc

224
Các phương pháp phân loại

Hand-coded rules

-Lựa chọn đặc trưng

-Dựa trên các luật kết hợp các từ hoặc các đặc trưng khác

Nếu rule thiết kế tốt-> cho kết quả tốt

Nhưng chi phí duy trì đắt do hiện tại rất nhiều biến đổi, ví thư do máy phát minh.

Dựa vào học máy (Supervised Machine Learning)

Hình ảnh dưới đây sẽ cho chúng ta cái nhìn tổng quát về cách hoạt động của một bài toán
phân loại văn bản

225
• Giai đoạn (a): Huấn luyện (training) là giai đoạn học tập của mô hình phân loại
văn bản. Ở bước này, mô hình sẽ học từ dữ liệu có nhãn (trong ảnh trên nhãn là
Possitive, Negative, Neutral). Dữ liệu văn bản sẽ được số hóa thông qua bộ trích
xuất đặc trưng (feature extractor) để mỗi mẫu dữ liệu trong tập huấn luyện trở
thành 1 vector nhiều chiều (đặc trưng). Thuật toán máy học sẽ học và tối ưu các
tham số để đạt được kết quả tốt trên tập dữ liệu này. Nhãn của dữ liệu được dùng
để đánh giá việc mô hình học tốt không và dựa vào đó để tối ưu.
• Giai đoạn (b): Dự đoán (prediction), là giai đoạn sử dụng mô hình học máy sau
khi nó đã học xong. Ở giai đoạn này, dữ liệu cần dự đoán cũng vẫn thực hiện các
bước trích xuất đặc trưng. Mô hình đã học sau đó nhận đầu vào là đặc trưng đó
và đưa ra kết quả dự đoán.

Để giải quyết một bài toán phân lớp văn bản, thường trải qua 4 giai đoạn:
• Chuẩn bị dữ liệu (Data Preparation)

226
• Trích chọn đặc trưng (Feature Engineering)
• Xây dựng mô hình phân lớp (Buil Model)
• Tinh chỉnh mô hình và cải thiện hiệu năng (Improve Performance)

Càng nhiều đặc trưng càng phân loại tốt


Đặc trưng mã hóa bằng véc tơ.

Đặc trưng hiệu quả là đặc trưng phân biệt tốt giữa các lớp
Phân lớp quan điểm

227
Nhược điểm: chiều véc tơ lớn, vecto thưa
Tích hợp các ngôn ngữ sẽ hiệu quả hơn
Nếu đủ dữ liệu thì bộ phân lớp nào cũng hiệu quả, tuy nhiên thực tế thường thiếu dữ
liệu đặc biệt là dữ liệu có nhãn.
Tiếp sau đây, chúng ta sẽ đi vào từng bước của quá trình xây dựng một mô hình
phân loại văn bản tin tức tiếng Việt sau:

228
Bài toán: Xây dựng mô hình phân loại văn bản tin tức tiếng Việt cho trang báo điện
tử X. Mỗi khi một bài báo được đăng, chương trình cần phải tự động xác định được bài
báo đó nằm trong danh mục nào. Các danh mục gồm có: Kinh tế, Thể thao, Giáo dục, Sức
khỏe, Du lịch, Pháp luật,…

Chuẩn bị dữ liệu

Dữ liệu là yếu tố quan trọng nhất và cũng là vấn đề mà chúng ta cần quan tâm nhất. Trong
quá trình xây dựng một hệ thống phân loại văn bản, bước chuẩn bị và tiền xử lý dữ liệu
quyết định tới thành bại của hệ thống hơn cả.

Với bài toán phân loại văn bản tin tức tiếng Việt, dữ liệu bạn cần chuẩn bị là dữ liệu các
bài báo tiếng Việt kèm theo chủ đề của bài báo đó. Loại dữ liệu này nhìn chung là rất dễ
kiếm, bởi vì có vô số website tin tức mỗi ngày. Chúng ta có thể tự thu thập hoặc lấy từ
những nguồn có sẵn.

Tiền xử lý dữ liệu văn bản

Bước tiền xử lý dữ liệu là bước đầu tiên cần làm, nó cần được làm trước bước feature
extractor. Việc tiền xử lý dữ liệu là quá trình chuẩn hóa dữ liệu và loại bỏ các thành
phần không có ý nghĩa cho việc phân loại văn bản.

Tiền xử lý dữ liệu tiếng Việt cho bài toán phân loại văn bản thường gồm các việc sau:

• Xóa HTML code (nếu có)

Dữ liệu được thu thập từ các website đôi khi vẫn còn sót lại các đoạn mã HTML.
Các mã HTML code này là rác, chẳng những không có tác dụng cho việc phân
loại mà còn làm kết quả phân loại văn bản bị kém đi.

• Chuẩn hóa bảng mã Unicode (đưa về Unicode tổ hợp dựng sẵn)

Hiện nay, có 2 loại mã Unicode được sử dụng phổ biến, Unicode tổ hợp và
Unicode dựng sẵn

• Chuẩn hóa kiểu gõ dấu tiếng Việt (dùng òa úy thay cho oà uý)

229
• Thực hiện tách từ tiếng Việt (sử dụng thư viện tách từ như pyvi, underthesea,
vncorenlp,…)
• Đưa về văn bản viết thường (lowercase)

Việc đưa dữ liệu về chữ viết thường là rất cần thiết. Bởi vì đặc trưng này không
có tác dụng ở bài toán phân loại văn bản. Đưa về chữ viết thường giúp giảm số
lượng đặc trưng (vì máy tính hiểu hoa thường là 2 từ khác nhau) và tăng độ chính
xác hơn cho mô hình.

• Xóa các ký tự không cần thiết


tiền xử lý bao gồm việc loại bỏ các dữ liệu không có tác dụng cho việc phân loại văn bản.
Việc này giúp:

Giảm số chiều đặc trưng, tăng tốc độ học và xử lý

Tránh làm ảnh hưởng xấu tới kết quả của mô hình
Các dấu ngắt câu, số đếm và các ký tự đặc biệt khác không giúp bạn phân loại một văn bản
thuộc chuyên mục nào. Do đó, chúng ta nên loại bỏ nó đi.

Riêng với số đếm, ngày tháng, email (Các token đặc biệt). Chúng ta nên đưa nó về các
token chung như: <number>, <date>, <email>, … Việc này có thể không giúp ích cho mô
hình học tốt hơn nhưng sẽ giúp ích cho chúng ta trong việc giữ được mạch của dữ liệu.

• Loại bỏ các stopword

StopWords là những từ xuất hiện nhiều trong ngôn ngữ tự nhiên, tuy nhiên lại không mang
nhiều ý nghĩa. Để loai bỏ StopWords có 2 cách chính là dùng từ điển (corpus) hoặc dựa
theo tần suất xuất hiện của từ. Với tiếng anh, những từ StopWords bao gồm: the, this, that,
these, is, are, was, were….đã được tổng hợp vào trong một corpus trong thư viện NLTK.
Chuẩn hóa từ:

Trong tiếng Anh, mỗi một từ có thể có nhiều biến thể khác nhau. Điều này làm cho việc so
sánh giữa các từ là không thể mặc dù về mặt ý nghĩa cơ bản là như nhau. Ví dụ như các từ
“walks”, “walking”, “walked” đều là biến thể của từ “walk”. Để biến đổi các từ này về
dạng gốc 2 kỹ thuật thường được sử dụng là Stremming và Lemmatiaztion.

Trích chọn đặc trưng

230
Ở bước này, chúng ta sẽ đưa dữ liệu dạng văn bản đã được xử lý về dạng vector thuộc tính
có dạng số học. Có nhiều các khác nhau để đưa dữ liệu văn bản dạng text về dữ liệu dạng
số mà chúng ta có thể thực hiện như:

1. Count Vectors as features

Khi sử dụng phương pháp này, chúng ta sẽ thu được một ma trận mà trong đó, mỗi
hàng sẽ đại diện cho một văn bản, mỗi cột đại diện cho một từ có trong từ điển, và
mỗi ô (cell) sẽ chứa tần suất xuất hiện của từ trong văn bản tương ứng.

2. TF-IDF (Term Frequency - Inverse Document Frequency) Vectors as features

TF(t) = (Number of times term t appears in a document) / (Total number of terms in


the document)

IDF(t) = log_e(Total number of documents / Number of documents with term t in


it)

o Word level

Thực hiện tính toán dựa trên mỗi thành phần là một từ riêng lẻ.

o N-Gram level

Kết hợp n thành phần (từ) liên tiếp nhau. Ví dụ: "thủ_tướng đức nhận_lời
tham_dự lễ kỷ_niệm". Khi đó, 2-gram cho ta kết quả: {thủ_tướng đức, đức
nhận_lời, nhận_lời tham_dự, tham_dự lễ , lễ kỷ_niệm}. Mõi phần từ là cặp 2
từ liên tiếp nhau.

o Character level

Dựa trên n-gram của ký tự.

Sau khi thực hiện TF-IDF, chúng ta dễ dàng nhận thấy rằng, ma trận mà chúng ta thu được
có kích thước rất lớn, và việc xử lý tính toán với ma trận này đòi hỏi thời gian và bộ nhớ
khá tốn kém. Giả sử, chúng ta có 100.000 văn bản và bộ từ điển bao gồm 50000 từ, khi đó
ma trận mà chúng ta thu được sẽ có kích thước là 100000 * 50000. Giả sử mỗi phần tử được
lưu dưới dạng float32 - 4 byte, bộ nhớ mà chúng ta cần sử dụng là:
100000 \times 50000 \times 4 = 20000000000\ byte100000×50000×4=20000000000 byte

tức là chúng ta tốn tầm 18.63GB bộ nhớ, khó có thể lưu hết vào RAM để thực hiện tính
toán. Trong thực tế, với số lượng văn bản khổng lồ và từ điển lên đến hàng trăm nghìn từ,

231
bộ nhớ mà chúng ta sử dụng còn tốn kém hơn rất nhiều. Để xử lý vấn đề này, chúng ta sẽ
sử dụng thuật toán SVD (singular value decomposition) nhằm mục đích giảm chiều dữ liệu
của ma trận mà chúng ta thu được, mà vẫn giữ nguyên được các thuộc tính của ma trận gốc
ban đầu.

3. Word Embeddings as features

Trong phương pháp này, chúng ta sẽ chuyển mỗi từ trong từ điển về một vector n
chiều, bằng cách sử dụng thuật toán Bag-of-words. Từ đó chúng ta có thể sử dụng
chúng cho các mô hình Deep Learning như Deep Neural Network, Recurrent Neural
Networks, Convolutional Neural Networks để phân loại văn bản.

4. Text / NLP based features


5. Topic Models as features

Xây dựng mô hình phân loại văn bản

• Naive Bayes Classifier


• Linear Classifier
• Support Vector Machine
• Bagging Models
• Boosting Models
• Shallow Neural Networks
• Deep Neural Networks
o Convolutional Neural Network (CNN)
o Long Short Term Model (LSTM)
o Gated Recurrent Unit (GRU)
o Bidirectional RNN
o Recurrent Convolutional Neural Network (RCNN)
o Other Variants of Deep Neural Networks
• Doc2Vec model

Phân lớp văn bản sử dụng mô hình học máy Naïve Bayes
Thuật toán phân lớp Naïve Bayes

232
Naive Bayes Classifiers (NBC) là một trong những thuật toán tiêu biểu cho bài toán
phân lớp dựa trên lý thuyết xác suất áp dụng định lý Bayes.
Định lý Bayes cho phép chúng ta có thể tính toán một xác suất chưa biết dựa vào
các xác suất có điều kiện khác. Với công thức tổng quát tính xác suất của biến cố A với
điều kiện biến cố Bk xảy ra trước (hay được gọi là xác suất hậu nghiệm):
Với P(A) > 0 và {𝐵1, 𝐵2, …, 𝐵𝑛} là một hệ đầy đủ các biến cố thỏa mãn tổng xác
suất của hệ bằng 1 (∑𝑛𝑘=1 𝑃(𝐵𝑘 ) = 1) và từng đôi một xung khắc (𝑃(𝐵𝑖 ∩ 𝐵𝑗) = 0). Khi đó
ta có:

Bộ phân lớp Naive bayes hoạt động như sau:


- Gọi D là tập dữ liệu huấn luyện, trong đó mỗi phần tử dữ liệu A chứa n giá trị
thuộc tính B1, B2,...,Bn được biểu diễn bằng một vector n thành phần {x1,x2,...,xn}
- Giả sử có m lớp C1, C2,..,Cm. Cho một phần tử dữ liệu A, bộ phân lớp sẽ gán nhãn
cho A là lớp có xác suất hậu nghiệm lớn nhất. Cụ thể, bộ phân lớp Bayes sẽ dự đoán A
thuộc vào lớp Ci nếu và chỉ nếu:
P(Ci|A) > P(Cj|A) (1 ≤ i, j ≤ m i ≠ j)
Giá trị này sẽ tính dựa trên định lý Bayes.
- Để tìm xác suất lớn nhất, ta nhận thấy các giá trị P(A) là giống nhau với mọi lớp
nên không cần tính. Do đó ta chỉ cần tìm giá trị lớn nhất của P(A|Ci) * P(Ci). Chú ý rằng
P(Ci) được ước lượng bằng |Di |/|D|, trong đó Di là tập các phần tử dữ liệu thuộc lớp Ci.
Nếu xác suất tiền nghiệm P(Ci) cũng không xác định được thì ta coi chúng bằng nhau P(C1)
= P(C2) = ... = P(Cm), khi đó ta chỉ cần tìm giá trị P(A|Ci) lớn nhất.
- Khi số lượng các thuộc tính mô tả dữ liệu là lớn thì chi phí tính toán P(A|Ci) là rất
lớn, do đó có thể giảm độ phức tạp của thuật toán Naive Bayes nếu giả thiết các thuộc tính
độc lập nhau. Khi đó ta có thể tính:
P(A|Ci) = P(x1|Ci)…..P(xn|Ci)

233
NBC có thể hoạt động với các vector đặc trưng mà một phần là liên tục (sử dụng
Gaussian Naive Bayes), phần còn lại ở dạng rời rạc (sử dụng Multinomial hoặc Bernoulli).
Trong phần thực nghiệm, tác giả sử dụng MultinomialNB để xây dựng mô hình. Mỗi văn
bản được biểu diễn bởi một vector có độ dài d chính là số từ trong từ điển. Giá trị của thành
phần thứ i trong mỗi vector chính là số lần từ thứ i xuất hiện trong văn bản đó.
Khi đó, P(xi|Cj) tỉ lệ với tần suất từ thứ i (hay thuộc tính thứ i cho trường hợp tổng
quát) xuất hiện trong các văn bản của lớp Cj. Giá trị này có thể được tính bằng cách

Trong đó:
• Nci là tổng số lần từ thứ i xuất hiện trong các văn bản của lớp Cj, nó được tính bằng
tổng của tất cả các thành phần thứ i của các vector thuộc tính ứng với lớp Cj
• Nc là tổng số từ (kể cả lặp) xuất hiện trong lớp Cj. Nói cách khác, nó bằng tổng độ
dài của toàn bộ các văn bản thuộc vào lớp Cj.
Cách tính này có một hạn chế là nếu có một từ mới chưa bao giờ xuất hiện trong lớp
Cj thì biểu thức (1) sẽ bằng 0, điều này dẫn P(A|Ci) = 0 bất kể các giá trị còn lại có lớn thế
nào. Việc này sẽ dẫn đến kết quả không chính xác. Để giải quyết việc này, một kỹ thuật
được gọi là Laplace smoothing được áp dụng như trong biểu thức (5):

Với α là một số dương, thường bằng 1, để tránh trường hợp tử số bằng 0. Mẫu số
được cộng với dα để đảm bảo tổng xác suất ∑𝑑𝑖=1 𝑃(𝑥𝑖 |𝐶𝑗 ) = 1.

Trích chọn đặc trưng TF-IDF


Thuật ngữ TF-IDF (Term Frequency – Inverse Document Frequency) là một
phương thức thống kê được biết đến rộng rãi để xác định độ quan trọng của một từ trong
đoạn văn bản trong một tập nhiều đoạn văn bản khác nhau.
TF-IDF xác định trọng số của một từ trong văn bản thu được qua thống kê thể hiện
mức độ quan trọng của từ này trong một văn bản, mà bản thân văn bản đang xét nằm trong
một tập hợp các văn bản. Giá trị TF-IDF cao thể hiện độ quan trọng cao và nó phụ thuộc

234
vào số lần từ xuất hiện trong văn bản nhưng bù lại bởi tần suất của từ đó trong tập dữ liệu.
Một vài biến thể của TF-IDF thường được sử dụng trong các hệ thống tìm kiếm như một
công cụ chính để đánh giá và sắp xếp văn bản dựa vào truy vấn của người dùng. TF-IDF
cũng được sử dụng để lọc những từ stopwords trong các bài toán như tóm tắt văn bản và
phân lớp văn bản.
TF (Term Frequency) – Tần suất xuất hiện của từ là số lần từ xuất hiện trong văn
bản. Vì các văn bản có thể có độ dài ngắn khác nhau nên một số từ có thể xuất hiện nhiều
lần trong một văn bản dài hơn là một văn bản ngắn. Như vậy, TF thường được chia cho độ
dài văn bản (tổng số từ trong một văn bản).

Trong đó:
• TF(t, d) - Tần suất xuất hiện của từ t trong văn bản d.
• f(t,d) - Số lần xuất hiện của từ trong văn bản d.
• max{f(w,d): w d} – Số lần xuất hiện của từ có số lần xuất hiện nhiều nhất trong
văn bản d.
IDF (Inverse Document Frequency) – Nghịch đảo tần suất của văn bản, giúp đánh
giá tầm quan trọng của một từ. Khi tính tần số xuất hiện TF thì các từ đều được coi là quan
trọng như nhau. Tuy nhiên có một số từ thường được được sử dụng nhiều nhưng không
quan trọng để thể hiện ý nghĩa của đoạn văn. Vì vậy ta cần giảm đi mức độ quan trọng của
những từ đó bằng cách sử dụng IDF:

Trong đó:
• IDF(t, D) – Giá trị IDF của từ t trong tập văn bản D.
• |D| - Tổng số văn bản trong tập D.

• – Thể hiện số văn bản trong tập D có chứa từ t.

235
Cơ số logarit trong công thức này không làm thay đổi giá trị IDF của từ mà chỉ thu
hẹp khoảng giá trị của từ đó. Việc sử dụng logarit nhằm giúp giá trị TF-IDF của một từ
nhỏ hơn, do công thức tính TF-IDF của một từ trong một văn bản là tích của TF và IDF
của từ đó. Công thức tính TF_IDF được xác định như sau:
𝑇𝐹 − 𝐼𝐷𝐹(𝑡, 𝑑,𝐷) = 𝑇𝐹(𝑡, 𝑑)𝑥 𝐼𝐷𝐹(𝑡, 𝐷) (8)
Từ (8) cho thấy những từ có giá trị TF-IDF cao là những từ xuất hiện nhiều trong
văn bản này, và xuất hiện ít trong các văn bản khác. Việc này giúp lọc ra những từ phổ
biến và giữ lại những từ có giá trị cao chính là các từ khóa của văn bản đó
6.7.3. Tìm kiếm thông tin
Tìm kiếm thông tin (Information Retrieval – IR) là tìm kiếm các tài nguyên thông
tin phi cấu trúc (thường là văn bản) từ một nguồn thông tin lớn (thường được lưu
trên máy tính), đáp ứng được nhu cầu thông tin.
Những hệ thống truy xuất thông tin phổ biến nhất bao gồm các công cụ tìm kiếm
như Google, Yahoo, hoặc Bing search. Những công cụ này cho phép tiếp nhận một
câu truy vấn dưới dạng ngôn ngữ tự nhiên làm đầu vào và cho ra một danh sách các
tài liệu được sắp xếp theo mức độ phù hợp.

Dữ liệu có cấu trúc thường thể hiện dưới dạng bảng

Cho phép tìm kiếm trong khoảng và tìm kiếm so khớp.


Ví dụ Salary < 60000 AND Manager = Smith
Dữ liệu phi cấu trúc: Thường đề cập đến dữ liệu văn bản dạng tự do
􀁺 Cho phép
􀁺 Các truy vấn sử dụng từ khóa kết hợp các phép toán
􀁺 Sử dụng quan hệ ngữ nghĩa giữa các khái niệm
􀁺 Ví dụ: tìm tất cả các trang web có liên quan đến công nghệ

236
Dữ liệu bán cấu trúc
􀁺 Trên thực tế hầu hết dữ liệu đều không ở dạng phi cấu trúc
Nếu tính đến cả khả năng suy diễn cấu trúc yếu từ dữ liệu phi cấu trúc:
vd., có thể chia slide này thành hai phần là tiêu đề và nội dung
Khái niệm bán cấu trúc nằm giữa khái niệm phi cấu trúc và khái niệm có cấu trúc
theo mức độ chặt chẽ,
Có thể kết hợp phong cách tìm kiếm trên dữ liệu phi cấu trúc và phong cách tìm
kiếm trên dữ liệu có cấu trúc cho dữ liệu bán cấu trúc.
vd., Tiêu đề có từ thông tin và Nội dung có từ tìm kiếm.
Tiêu đề nói về lập trình C++ và Tác giả có tên như là stro*rup.
Nguyên tắc hoạt động
Nguyên tắc hoạt động cơ bản của hệ thống tìm kiếm thông tin là so khớp nhu cầu
thông tin của người sử dụng với các tài liệu được lưu trữ trong cơ sở dữ liệu của hệ thống.
Đối tượng tài liệu thường là văn bản hoặc những loại dữ liệu khác như hình ảnh, đồ thị,…
Bắt đầu với nhu cầu chung về quản lý và truy tìm thông tin, các tài liệu thô ban đầu
như sách, tạp chí,… sẽ được lưu trữ dưới dạng tài liệu điện tử. Qua quá trình xử lý, các tài
liệu này sẽ được chuyển sang biểu diễn dưới dạng cấu trúc đặc biệt nhằm giúp hệ thống có
thể truy tìm thông tin một cách tốt nhất. Quá trình này được gọi là lập chỉ mục (indexing).
Sau quá trình lập chỉ mục sẽ thu được một tập chỉ mục có lưu trữ các tài liệu dưới dạng
biểu diễn mới. Từ đó, mọi thông tin truy vấn sẽ thao tác trực tiếp trên tập chỉ mục này.
Cũng như các tài liệu, nhu cầu truy vấn của người sử dụng sẽ được phân tích và biểu
diễn ở một dạng cấu trúc đặc biệt. Để xác định được các tài liệu liên quan, hệ thống sẽ tiến
hành so khớp câu truy vấn và các tài liệu trong tập chỉ mục. Sau cùng sẽ tiến hành đánh giá
kết quả, có thể dựa trên cách xếp hạng của tài liệu hay mức độ thoả mãn nhu cầu của người
sử dụng.
Mô hình hoạt động cơ bản của một hệ thống IR (Hồ Bảo Quốc), (Tanveer Siddiqui)
được minh họa cụ thể trong hình sau.

237
Mô hình tìm kiếm thông tin
“Mô hình tìm kiếm là nền tảng lý thuyết để xây dựng công cụ tìm kiếm.”
Nếu biết mô hình được sử dụng để xây dựng công cụ tìm kiếm thì có thể giải thích
và dự đoán được hành vi của hệ thống tìm kiếm, v.d., vì sao văn bản A được trả về trước
văn bản B? vì sao văn bản C không được trả về? làm thế nào để chiếm thứ hạng cao trong
xếp hạng? V.v.
Mô hình tìm kiếm quyết định các yếu tố sau:
D: Cách biểu diễn văn bản;
Q: Cách biểu diễn truy vấn;
F: Nền tảng lý thuyết (toán học) tương thích với D và Q, giữ vai trò cơ sở để thực
hiện các suy diễn xếp hạng;
R(d, q): Hàm xếp hạng, là hàm định lượng mức độ phù hợp giữa văn bản và truy
vấn.
Biểu diễn văn bản còn được gọi là mô hình văn bản;

238
Truy vấn về bản chất là biểu diễn của nhu cầu thông tin bằng ngôn ngữ của hệ thống
tìm kiếm;
Một vài nền tảng lý thuyết quan trọng: tập hợp, đại số, xác suất,...
Mô hình Boolean
D: Văn bản được biểu diễn dưới dạng tập từ;
Q: Biểu thức Boolean trên từ, ràng buộc sự xuất hiện của từ trong văn bản;
F: Lý thuyết tập hợp, đại số Boolean;
R: Một văn bản phù hợp nếu nó thỏa mãn biểu thức truy vấn. R(d, q) chỉ trả về hai
giá trị 0: không phù hợp, 1: phù hợp.
Ví dụ
Truy vấn: ((văn bản ˅ thông tin) ˄ tìm kiếm ˄ ¬lý thuyết)
Văn bản:
1. “Tìm kiếm thông tin”
2. “Lý thuyết thông tin”
3. “Tìm kiếm thông tin hiện đại: lý thuyết và thực hành”
4. “Phương pháp nén văn bản”
Thực hiện truy vấn Boolean trên dữ liệu nhỏ
Kiểm tra tuần tự tất cả văn bản:
Đơn giản, nhưng…
.. Sẽ rất chậm khi chạy trên bộ dữ liệu lớn
Các vấn đề
􀁺 Đa nghĩa: 1 từ - n nghĩa
􀁺 Đồng nghĩa: n từ - 1 nghĩa
􀁺 Kích thước: các hệ thống IR phải có khả năng xử lý tập ngữ liệu cỡ ~Gb
􀁺 Độ phủ: Các hệ thống IR phải có khả năng xử lý câu truy vấn thuộc bất kỳ lĩnh
vực nào

239
Lấy từ gốc
􀁺 Gắn các thuật ngữ trong câu truy vấn với các biến thể của từ (cùng gốc từ) trong
các tài liệu
􀁺 VD: assassination -> assassinate
Assassination Assassinations
Assassinate Assassinated
Assassinating
􀁺 Vấn đề:
􀁺 Lỗi: organization - organ past - paste
Từ dừng
􀁺 Là các từ thường xuất hiện ở hầu hết các tài liệu. Các từ này không chứa nhiều
thông tin
􀁺 Không đưa vào file nghịch đảo -> giảm kích thước của file này
􀁺 Các từ dừng: a, an, the, he, she, of, to, by, should, can,…

Nhược điểm của việc bỏ từ dừng


􀁺 Có thể bỏ tên người như “The”
􀁺 Các từ dừng có thể là thành phần quan trọng của đoạn. Ví dụ, 1 câu nói của
Shakepeare: “to be or not to be”
􀁺 Một số từ dừng (vd., giới từ) cung cấp các thông tin quan trọng về mối quan hệ
􀁺 Bộ nhớ ngày nay đã rẻ hơn -> tiết kiệm bộ nhớ không còn là vấn đề quan trọng
như trước nữa
Khái niệm chỉ mục
“Chỉ mục là cấu trúc dữ liệu chuyên biệt để tối ưu hóa tốc độ thực hiện truy vấn.”
Thuật ngữ tiếng anh là Index
Ý tưởng sử dụng chỉ mục

240
1: từ xuất hiện trong văn bản; 0: từ không xuất hiện.
Xử lý truy vấn trên ma trận đánh dấu
Xử lý các truy vấn Boolean có thể quy về thực hiện phép toán logic theo bit:
Ví dụ, truy vấn a AND b AND NOT d được thực hiện như sau:
1101001 AND 1001101 AND 1011010 = 1001000
Ưu điểm: Nhanh hơn kiểm tra tuần tự;
Nhược điểm: nhưng sẽ cần rất nhiều bộ nhớ;
Phương hướng giải quyết nhược điểm: chỉ mục ngược.
Chỉ mục ngược
Ý tưởng: Gần giống với ma trận đánh dấu, chỉ lưu các giá trị 1.
Tối ưu hơn ma trận đánh dấu về mặt lưu trữ;
Thực hiện truy vấn trên các danh sách:
Không thực hiện phép toán logic trên bit như đối với ma trận đánh dấu;
Thực hiện các phép toán tập hợp trên danh sách: lấy phần tử chung của hai danh
sách ( ∩), kết hợp hai danh sách (∪ );
Nếu sắp xếp văn bản theo trật tự tăng dần mã văn bản, thì có thể thực hiện truy vấn
với độ phức tạp tuyến tính.
File nghịch đảo (Inverted Files)

241
􀁺 Để biểu diễn tài liệu trong kho ngữ liệu
􀁺 Là 1 bảng từ với 1 danh sách các tài liệu chứa 1 từ
􀁺 Assassination: (doc1 doc4 doc35,… )
􀁺 Murder: (doc3, doc7, doc36,…)
􀁺 Kennedy: (doc24, doc27, doc29,…)
􀁺 Conspiracy: (doc3, doc55, doc90,…)
􀁺 Thông tin bổ sung:
􀁺 vị trí của từ trong tài liệu
􀁺 thông tin xấp xỉ: để so khớp hoặc so gần đúng các đoạn
Chỉ số nghịch đảo
Với mỗi thuật ngữ t, lưu danh sách các tài liệu chứa t.
Định nghĩa mỗi tài liệu bởi docID, là số thứ tự của tài liệu

Vấn đề gì xảy ra nếu từ Caesar được thêm vào tài liệu 14?
„ Ta cần các danh sách với độ dài thay đổi
„ Có thể sử dụng linked list hoặc mảng có độ dài thay đổi

242
Các thuật ngữ:
Mỗi mục từ là một bộ ba gồm một từ duy nhất trong bộ từ vựng, df và con
trỏ tới danh sách thẻ định vị của từ đó;
Thẻ định vị, là một cấu trúc lưu thông tin tương ứng với một văn bản (mã
văn bản, các vị trí xuất hiện từ, v.v.). Từ định vị mang ý nghĩa xác định vị trí xuất
hiện của từ;
Tất cả các danh sách thẻ định vị gộp lại được gọi chung là bộ thẻ định vị.
Các bước cơ bản xây dựng chỉ mục ngược trong bộ nhớ: Tách từ →Sinh thẻ
định vị→ Sắp xếp thẻ định vị →Tổng hợp danh sách thẻ định vị →Lưu bộ từ vựng
và bộ thẻ định vị
Xây dựng chỉ số nghịch đảo

243
Bước đánh chỉ số: Chuỗi từ

Bước đánh chỉ số: Sắp xếp

244
Bước đánh chỉ số: Từ điển và danh sách

245
Xử lý truy vấn: AND
„ Xét câu truy vấn: Brutus AND Caesar
„ Định vị Brutus trong từ điển: Lấy danh sách của nó.
„ Định vị Caesar trong từ điển: Lấy danh sách của nó.
„ Trộn 2 danh sách

„ Duyệt qua 2 danh sách, thời gian tỉ lệ với số nút

246
Nếu 2 danh sách có độ dài là x và y, phép trộn có độ phức tạp O(x+y) .
Vấn đề cốt yếu: các danh sách sắp theo docID
Trộn 2 danh sách

Câu truy vấn logic: so khớp


􀁺 Mô hình phản hồi Boolean có thể trả lời câu truy vấn ở dạng biểu thức Boolean
􀁺 Câu truy vấn sử dụng AND, OR và NOT để kết nối các thuật ngữ
􀁺 Coi mỗi tài liệu là 1 tập các từ
􀁺 Chính xác: tài liệu thỏa điều kiện hoặc không
􀁺 Đây là mô hình IR đơn giản nhất

Từ và thuật ngữ
􀁺 IR quan tâm đến thuật ngữ
􀁺 VD: câu truy vấn
􀁺 What kind of monkeys live in Costa Rica?
􀁺 từ?
􀁺 từ nội dung?
􀁺 gốc từ?

247
􀁺 các nhóm từ?
􀁺 các đoạn?
Cụm từ (các từ thường đi liền nhau)
􀁺 kick the bucket
􀁺 directed graph
􀁺 iambic pentameter
􀁺 Osama bin Laden
􀁺 United Nations
􀁺 real estate
􀁺 quality control
􀁺 international best practice
􀁺 … có ý nghĩa riêng, cách dịch riêng.
Các hệ thống IR phức tạp hơn
􀁺 IR đa ngôn ngữ
􀁺 Hỏi đáp
􀁺 Tóm tắt văn bản
􀁺 Khai phá văn bản
􀁺…
6.7.4. Hệ hỏi đáp
Hệ thống hỏi đáp (Question Answering system: QA) là một nhánh trong xử lý ngôn
ngữ tự nhiên và tìm kiếm thông tin. QA liên quan tới việc phát triển một hệ thống mà hệ
thống này cung cấp câu trả lời cho câu hỏi được diễn tả bằng ngôn ngữ tự nhiên một cách
tự động. Về khía cạnh tìm kiếm thông tin thì QA được định nghĩa như sau: QA là hệ thống
IR nâng cao trong đó thông tin mà người dùng cần được diễn tả bởi ngôn ngữ tự nhiên hoặc
câu hỏi của người dùng được biểu diễn qua dạng tương tác tự nhiên giữa người và máy.
Còn theo khía cạnh của NLP thì QA sử dụng các kỹ thuật trong NLP như biểu diễn và hiểu
câu hỏi để trích rút câu trả lời đối với câu hỏi. Như vậy chức năng chính của hệ thống QA

248
là sinh ra câu trả lời cho câu hỏi bằng cách tìm kiếm nội dung có chứa thông tin liên quan
tới câu hỏi của người dùng. Cơ sở dữ liệu có thể là dữ liệu dạng không cấu trúc như tập
văn bản hoặc có thể là dạng có cấu trúc như cơ sở dữ liệu tri thức
Hệ thống hỏi đáp có thể chia làm hai loại: hỏi đáp miền mở và hỏi đáp miền đóng.
Hỏi đáp miền mở là các câu hỏi liên quan tới mọi lĩnh vực trong khi đó hỏi đáp miền đóng
câu hỏi chỉ liên quan tới miền dữ liệu cụ thể. Do đó hỏi đáp miền mở có nhiều thách thức
hơn hỏi đáp miền đóng do phải trích rút thông tin từ nhiều nguồn dữ liệu phức tạp hơn.
Hệ thống hỏi đáp là một trong những nỗ lực đưa ra cho người dùng câu trả lời chính
xác thay vì liệt kê các văn bản liên quan. Ví dụ hệ thống hỏi đáp LUNAR là hệ thống QA
trả lời các câu hỏi về phân tích địa chất của các tảng đá được Apollo gửi về Apple Siri. Sau
đó hệ thống hỏi đáp được phát triển như là một trợ giúp cá nhân thông minh.

Kiến trúc của hệ thống QA

249
Hình trên mô tả kiến trúc chung của hệ thống hỏi đáp. Hệ thống QA bao gồm 3
thành phần chính:
• Xử lý câu hỏi: câu hỏi đặt ra sử dụng ngôn ngữ tự nhiên. Vì vậy chức năng chính
của thành phần này là phân tích để hiểu yêu cầu của câu hỏi. Trước hết là việc phân tích
câu hỏi để xác định câu hỏi tập trung vào cái gì. Sau đó thành phần này xác định xem câu
hỏi thuộc lớp ngữ nghĩa nào. Thông thường lớp câu hỏi thường chia theo các từ để hỏi như:
cái gì, ai, ở đâu, khi nào, tại sao. Qua việc phân lớp câu hỏi modul xử lý câu hỏi có thể xác
định loại câu trả lời tiềm năng và giúp hệ thống tìm kiếm xác định câu trả lời. Ví dụ câu
hỏi: "Bác Hồ sinh ra ở đâu?. Quá trình xử lý câu hỏi sẽ phân tích xác định đối tượng cần
chú ý là "Bác Hồ" và loại câu hỏi "ở đâu" có nghĩa liên quan tới vị trí, nơi chốn.
Các loại câu hỏi
● Câu hỏi đóng:
Ai?
Ai là tác giả của cuốn sách “Suối nguồn tươi trẻ”?
Tác phẩm “Suối nguồn tươi trẻ” do ai sáng tác?
Tiểu thuyết “Suối nguồn tươi trẻ” được viết bởi nhà văn nào?
Ai là người đầu tiên dịch “Suối nguồn tươi trẻ” sang tiếng Việt?

250
Bao giờ?
Bài hát “Người lạ ơi” được viết khi nào?
Bài “Người lạ ơi” được sáng tác năm nào?
Tác phẩm “Người lạ ơi” được sáng tác vào thời điểm nào?

Ở đâu?
Tuyên ngôn độc lập được đọc ở đâu?
Tuyên ngôn độc lập được viết ở đâu?
Địa điểm nổ ra Cách mạng tháng Tám ở đâu?

Bao nhiêu?
Một ngày cần uống ít nhất bao nhiêu nước?
Lượng nước tối thiểu phải uống một ngày là bao nhiêu?

Đúng/sai, lựa chọn


Có phải Mặt trời và các hành tinh quay xung quanh Trái Đất không?
Nếu cùng lúc có tín hiệu điều khiển của đèn báo và cảnh sát giao thông thì tuân theo
cái nào?
Trong bài toán phân tích từ loại có nhất thiết phải tiến hành tách từ không?

● Câu hỏi mở
Định nghĩa
Xử lý ngôn ngữ tự nhiên là gì?
NLP là gì?

251
Ngôn ngữ tự nhiên là gì?

Giải thích
Tại sao tách từ trong tiếng Việt lại phức tạp hơn tiếng Anh?
Vì sao từ Trái đất không thể quan sát được toàn bộ bề mặt Mặt Trăng?
Do đâu giải Nobel không có lĩnh vực Toán học?

So sánh
Con voi và con kiến con nào nặng hơn?
Đường thẳng và đường cong đường nào ngắn hơn?
Số lượng dân ở đô thị hay nông thôn nhiều hơn?

• Xử lý văn bản và tìm kiếm thông tin: Modul này thực hiện tìm kiếm thông tin liên
quan tới dữ liệu phân tích trong phần xử lý câu hỏi. Quá trình này bao gồm ba công
việc: Tìm kiếm, lọc và sắp xếp. Tìm kiếm ở đây là tìm kiếm các văn bản hoặc các
đoạn văn bản liên quan tới thông tin được lọc ở phần xử lý câu hỏi. Có nhiều kỹ
thuật được sử dụng vào công việc tìm kiếm các đoạn hoặc văn bản liên quan. Ví dụ
như kỹ thuật phù hợp các từ khóa (keyword matching), đếm tần suất xuất hiện của
từ khóa là những kỹ thuật phổ biến. Sau đó các đoạn hoặc văn bản tìm được sẽ được
lọc để chọn ra những văn bản hoặc các đoạn chứa câu trả lời. Cuối cùng những đoạn
hoặc văn bản này sẽ được sắp xếp theo xác suất về khả năng chứa câu trả lời. Kết
quả của giai đoạn này sẽ là danh sách văn bản ứng viên chứa câu trả lời.
Cách tiếp cận IR

252
• Xử lý câu trả lời: Từ danh sách văn bản hoặc đoạn văn bản ứng viên được xác định
từ giai đoạn tìm kiếm sẽ được trích rút để đưa ra câu trả lời chính xác. Một tập hợp
các luật cùng với các kinh nghiệm được sử dụng để trích rút ra câu trả lời cuối cùng.
Câu trả lời được trích rút từ các văn bản liên quan được đưa ra cho người dùng. Một
số hệ thống hỏi đáp còn đưa thêm phép toán thẩm định câu trả lời để đánh giá độ tin
cậy của câu trả lời trước khi trả lời cho người dùng. Ví dụ, từ điển wordnet hoặc vài
nguồn dữ liệu tri thức đặc biệt được dùng để thẩm định câu trả lời. Một cách khác
nữa là tìm kiếm câu trả lời trên nguồn thông tin khác, nếu câu trả lời hai hệ thống
mà giống nhau thì sẽ làm tăng độ tin cậy của câu trả lời.
Các cách tiếp cận tới các hệ thống QA
Có nhiều cách tiếp cận để phát triển hệ thống QA. Trong đó các cách tiếp cận đều liên
quan tới việc xử lý câu hỏi và phân tích văn bản liên quan của hệ thống hỏi đáp:
• Phân lớp câu hỏi: Phân lớp câu hỏi là thực hiện gán câu hỏi vào một lớp câu hỏi nào
đó. Một trong những cách tiếp cận đó là dựa vào luật. Các luật thường được thiết kế thủ
công. Sử dụng cách tiếp cận phù hợp mẫu (pattern matching) để kiểm tra một câu hỏi
có liên quan tới một lớp nào đó. Nếu câu hỏi có chứa trực tiếp các từ để hỏi như who,
what, where, when, whom, why có thể dễ dàng xác định lớp của câu hỏi qua ánh xạ
trực tiếp. Tuy nhiên những câu hỏi nhập nhằng như câu hỏi which, what thì cần sử dụng
cơ sở dữ liệu từ vựng Wordnet kết hợp với ngữ cảnh để xác định lớp câu hỏi. Một cách
tiếp cận khác để phân lớp câu hỏi sử dụng các thuật toán học máy như máy véc tơ hỗ
trợ (Support Vector Machines, SVM), láng giềng gần nhất (Nearest Neighbor NN),
Naive Bayes, cây quyết định.

253
• Tiếp cận trong tìm kiếm thông tin (Information Retrieval-IR): IR liên quan đặc biệt
tới hệ thống hỏi đáp. Trong hệ thống hỏi đáp mở, dữ liệu từ website là nguồn dữ
liệu quan trọng. Vì vậy, IR được áp dụng một cách trực tiếp sử dụng truy vấn trong
máy tìm kiếm và xử lý kết quả trả về. Trong hệ thống hỏi đáp đơn giản, tập văn bản
được xử lý trước khi câu hỏi được đưa lên hệ thống. Các câu hỏi và các thực thể
được gán nhãn trong cơ sở dữ liệu văn bản được dùng để xác định loại câu trả lời
và tìm ra các đoạn văn bản ứng viên cho câu trả lời. Các phương pháp tìm kiếm
khác nhau nếu nguồn dữ liệu là có cấu trúc, không có cấu trúc hay bán cấu trúc.
BASEBALL và LUNAR là hai hệ thống hỏi đáp ra đời sớm nhất sử dụng cơ sở dữ
liệu có cấu trúc và câu hỏi dùng ngôn ngữ tự nhiên. Câu hỏi ở dạng ngôn ngữ tự
nhiên được chuyển sang dạng truy vấn để phục vụ cho việc trích rút ra câu trả lời từ
cơ sở dữ liệu. Hệ thống hỏi đáp START2 , tất cả thông tin được biểu diễn qua cơ sở
tri thức bằng một biểu thức ba ngôi lồng nhau. Chúng ta có thể hình dung ra cơ sở
tri thức như là một tóm tắt cô đọng qua một cấu trúc cú pháp của câu. Phép toán 3
ngôi (ternary expression) là cách đầy đủ để biểu diễn thông tin và ánh xạ câu hỏi
với các ứng viên câu trả lời một cách dễ dàng.
• Trích rút câu trả lời: Trong hệ thống hỏi đáp START, khi câu hỏi ở dạng ngôn ngữ
tự nhiên được đăng lên hệ thống, câu hỏi đó sẽ được chuyển sang một dạng biểu
diễn (ví dụ như dùng toán tử ba ngôi). Để tìm ra câu trả lời, câu hỏi được so sánh
với các chú thích ngôn ngữ tự nhiên và nó lại được biểu diễn bằng biểu thức ba ngôi.
Nếu hai biểu thức này phù hợp với nhau thì đoạn thông tin tương ứng sẽ được tìm
thấy và được xử lý để đưa ra câu hỏi cuối cùng.
Quá trình xây dựng hệ thống hỏi đáp chia làm 3 giai đoạn chính: Phân tích câu hỏi
bao gồm phân tích cú pháp, phân lớp câu hỏi và biểu diễn lại truy vấn (query
reformulation); Phân tích văn bản bao gồm trích rút ra các văn bản ứng viên và xác
định câu trả lời; Phân tích câu trả lời bao gồm trích rút các câu trả lời ứng viên và
sắp xếp theo thứ tự liên quan tới câu hỏi. Các nhiệm vụ này cần kết hợp nhiều lĩnh
vực như trí tuệ nhân tạo, xử lý ngôn ngữ tự nhiên (Natural Language Processing -
NLP), phù hợp mẫu (pattern matching), tìm kiếm thông tin và trích rút thông tin. Để
phát triển hệ thống QA các nhà phát triển hệ thống kết hợp vài hoặc tất cả các hướng
tiếp cận trên. Các cách tiếp cận được chia thành ba loại:

254
Nhóm thứ nhất là sử dụng kỹ thuật trong xử lý ngôn ngữ tự nhiên như tách từ, gán
nhãn từ loại (part-of-speech tagging, POS-tagging) và phân tích cú pháp (parsing).
Hệ thống QA yêu cầu hiểu ngôn ngữ tự nhiên và các tri thức thông thường. Các nhà
khoa học đã dùng trí tuệ nhân tạo tích hợp với NLP và cơ sở tri thức. Các kỹ thuật
NLP được áp dụng vào việc phân tích câu hỏi và chuyển sang dạng truy vấn. Đây
là dạng tiếp cận để có thể trích rút câu trả lời từ các nguồn dữ liệu như văn bản hoặc
cơ sở dữ liệu. Nguồn dữ liệu thường là cơ sở tri trức (Knowledge base) thường tổ
chức theo khung hoặc template, web ngữ nghĩa và nó chứa những thông tin cụ thể)
được dùng trong suốt quá trình phân tích cặp câu hỏi-câu trả lời. Các hệ thống QA
sử dụng các kỹ thuật này như LUNAR, BASEBALL. Hạn chế của những hệ thống
này là do thông tin được lưu dưới dạng cơ sở dữ liệu có cấu trúc nên khả năng hỏi
đáp chỉ đáp ứng trong miền hạn chế. Do khả năng đáp ứng thông tin có hạn của cơ
sở dữ liệu tri thức (knowledge base), đã sử dụng phương pháp tăng cường dữ liệu
online. Phương pháp này cho phép người dùng hỏi câu hỏi thông thường mà còn hỏi
những câu hỏi không lường trước nhờ vào thành phần suy diễn.
Nhóm thứ hai đó là dựa vào thống kê. Trong bối cảnh khi dữ liệu trực tuyến (online)
trên các website ngày càng lớn. Điều này tạo điều kiện thuận lợi cho các phương
pháp học thống kê, nó phù hợp với dữ liệu lớn và không đồng nhất. Các phương
pháp này đòi hỏi một lượng dữ liệu đủ lớn để học được chính xác. Khi được học
chính xác các phương pháp này có thể cho kết quả tốt hơn những phương pháp khác.
Phương pháp thống kê có ưu điểm là có thể tùy chỉnh sang miền dữ liệu độc lập mới
(ngôn ngữ mới). Nhược điểm của phương pháp này đó là coi từng thuật ngữ một
cách độc lập mà không xét tới đặc trưng của ngôn ngữ (ví dụ như sự kết hợp của
các từ và cụm từ). Thuật toán học trên lượng dữ liệu lớn. Nhìn chung các phương
pháp thống kê đã áp dụng thành công trong một số giai đoạn của hệ thống QA. Ví
dụ phân lớp câu hỏi như mô hình SVM, Bayesian classifiers, Maximum Entropy.
Các thuật toán được học trên tập dữ liệu văn bản đã được gán nhãn. Một số mô hình
thống kê cũng được sử dụng để tính độ tương đồng giữa câu hỏi với với văn bản
hoặc một đoạn văn bản như mô hình n-gram, mô hình Okapi, mô hình độ tương tự
câu. Các kỹ thuật này thực hiện phân tích câu hỏi với các văn bản dựa vào nhiều đặc
trưng độ tương tự để xác định các ứng viên câu trả lời gần với câu hỏi nhất.

255
Thứ ba là nhóm phương pháp phù hợp mẫu (pattern-matching). Ví dụ câu hỏi where
was the World Cup held?, mẫu của câu này là Where was held? và mẫu câu trả lời
sẽ có dạng was held . Có nhiều phương pháp để học ra mẫu văn bản từ một đoạn mà
không phải thực hiện các kỹ thuật phức tạp như phân tích cú pháp hay nhận dạng
tên thực thể. Có hai loại mẫu được áp dụng vào hệ thống QA để tìm câu trả lời đó
là mẫu văn bản bề mặt (surface text patterns) và dựa vào các mẫu [15]. Cách tiếp
cận dựa vào mẫu bề mặt dựa vào danh sách lớn các mẫu. Để tìm ra câu trả lời ứng
viên, tính độ tương tự của mẫu của câu trả lời và mẫu của câu hỏi được tính toán.
Mẫu này bản chất là một biểu thức chính quy. Mặc dù thiết kế các mẫu rất mất thời
gian và cần nhiều kĩ năng, nhưng hệ thống lại cho câu trả lời chính xác. Phương
pháp tiếp cận dựa vào bản mẫu template, sử dụng các template được định nghĩa
trước để mô tả câu hỏi. Template có các vị trí thực thể mà các vị trí này cần được
điền vào để tạo mẫu truy vấn để tìm các phản hồi tương ứng trong cơ sở dữ liệu.
Những cách tiếp cận dựa vào phương pháp phù hợp mẫu có nhược điểm là không
quan tâm tới ngữ nghĩa của câu mà chỉ quan tâm tới cú pháp của câu.
Thách thức của hệ thống QA
Mặc dù hỏi đáp tự động là một bước tiến trong tìm kiếm thông tin nhưng vẫn có
nhiều thách thức cần giải quyết:
• Thách thức lớn nhất của hệ thống hỏi đáp là xác định câu trả lời đúng khi mà lượng
dữ liệu trên internet ngày càng tăng với lượng rất lớn và đa dạng. Từ đó dẫn tới
thách thức là làm thế nào để biểu diễn cơ sở tri thức một cách hiệu quả để có thể
truy cập và tìm kiếm câu trả lời được nhanh hơn và chính xác hơn.
• Thứ hai đó là hiểu ngôn ngữ tự nhiên một cách thấu đáo và suy ra ý nghĩa chính
xác và đưa ra câu trả lời chính xác. Để làm được điều này phải giải quyết thách thức
liên quan tới thách thức về khoảng cách từ vựng giữa biểu diễn câu hỏi bằng ngôn
ngữ tự nhiên và ngữ nghĩa của cơ sở tri thức (knowledge base) có cấu trúc. Khoảng
cách từ vựng là sự khác biệt trong việc biểu diễn câu giữa câu hỏi được biểu diễn
qua ngôn ngữ tự nhiên không có cấu trúc với cơ sở tri thức có cấu trúc.
• Thách thức về vấn đề nhập nhằng: tức là liên quan tới việc cùng sử dụng cụm từ
giống nhau nhưng có nghĩa khác nhau.
• Xác định thực thể và liên kết. Đây cũng là một thách thức quan trọng của hệ thống
hỏi đáp. Xác định thực thể và liên kết liên quan tới khả năng hệ thống xác định chính

256
xác thực thể trong câu hỏi và liên kết tới cơ sở tri thức. Nếu câu hỏi có nhiều thực
thể, nó cũng là thách thức liên quan tới việc xác định thực thể nào liên kết với cơ sở
tri thức liên quan.
• Đoạn hỏi đáp: câu trả lời của những câu hỏi non-factoid (thường là câu hỏi tại sao,
như thế nào) thường là một đoạn. Việc tìm câu trả lời cho câu hỏi dạng này nó đòi
hỏi phải có biểu diễn hiệu quả mà biểu diễn được mối quan hệ ngữ nghĩa phức tạp
giữa câu hỏi và câu trả lời, đặc biệt là khi câu hỏi phức tạp nhập nhằng và tri thức
phân tán.

Hỏi đáp cộng đồng


Hỏi đáp cộng đồng (Community Question Answering - CQA) cũng là hệ thống hỏi
đáp và tìm kiếm thông tin nhưng tiếp cận theo hướng khác. Đó là câu trả lời nhận
được từ cộng đồng. Những ứng dụng này cung cấp giao diện cho phép người dùng
đăng câu hỏi về bất cứ chủ đề gì và mong muốn nhận được câu trả lời từ người dùng
khác. Những câu trả lời được cung cấp từ người dùng thường rõ ràng và có độ chính
xác cao. Những ứng dụng như vậy thường được gọi là hỏi đáp dựa vào cộng đồng.
Yahoo!Answer là một ví dụ. Đây là trang hỏi đáp cho phép người dùng đặt ra các
câu hỏi về tất cả các lĩnh vực để mong nhận được câu trả lời từ cộng đồng và cũng
có thể trả lời câu hỏi của người dùng khác. Stackoverflow4 là một hệ thống hỏi đáp
về chủ đề trong lĩnh vực lập trình. Quora (https://www.quora.com/) là hệ thống hỏi
đáp về các nội dung liên quan tới công việc và cuộc sống hàng ngày

257
Những forum hỏi đáp cộng đồng là kênh chứa nhiều tri thức của người dùng và
được các hệ thống khác và người dùng khai thác. Vì vậy hệ thống này cũng có nhiều
bài toán cần được giải quyết để hệ thống ngày càng đáp ứng yêu cầu của người dùng
tốt hơn.
Kiến trúc của hệ thống CQA

258
Hình trên mô tả kiến trúc và quá trình tương tác giữa các thành phần trong hệ thống
CQA. Hệ thống bao gồm quá trình xử lý câu hỏi, quá trình xử lý câu trả lời và quản lý các
thành viên tham gia.
• Xử lý câu hỏi: Quá trình xử lý câu hỏi bắt đầu với việc người dùng đăng câu hỏi
bao gồm phần tiêu đề và mô tả chi tiết về câu hỏi. Sau đó câu hỏi được hiển thị để người
dùng khác có thể đọc và trả lời câu hỏi. Người dùng có thể bình chọn cho những câu hỏi
mà mình thấy thú vị và cũng có thể gợi ý cho người dùng khác trả lời câu hỏi. Thông
thường có một tỉ lệ rất nhỏ người dùng bình chọn cho câu hỏi đặt ra.
• Xử lý câu trả lời: Khi câu hỏi được người hỏi đăng lên, người dùng khác có thể
đăng câu trả lời cho câu hỏi hoặc bình luận để làm rõ cho câu hỏi. Người dùng trong hệ
thống có thể bình chọn cho câu trả lời của người dùng khác. Khi người hỏi thấy thỏa mãn
về câu trả lời họ có thể bình chọn câu trả lời tốt nhất trong số các câu trả lời được đưa ra.
Câu trả lời đó gọi là câu trả lời tốt nhất. Trong trường hợp người hỏi chưa chọn được câu
trả lời tốt nhất thì hệ thống dựa vào số lượng bình chọn để chọn ra câu trả lời tốt nhất.
Trong trường hợp không câu trả lời được bình chọn hoặc số bình chọn quá ít thì câu hỏi
vẫn được mở và hệ thống sẽ tự động gợi ý câu trả lời tốt nhất một cách tự động (tùy hệ
thống).
• Thành viên trong hệ thống CQA: Thành viên trong hệ thống bao gồm người hỏi,
người trả lời và người bình chọn. Thông tin chi tiết về người dùng được lưu vào hồ sơ
người dùng. Các hoạt động của người dùng đều được module quản lý thành viên xử lý và
lưu trữ.
So sánh hệ thống QA và CQA
Hệ thống hỏi đáp tự động và hệ thống hỏi đáp cộng đồng có những điểm khác nhau
như sau:
• Sự khác nhau đầu tiên đó là loại câu hỏi. Hầu hết câu hỏi trong hệ thống hỏi đáp
QA tự động là câu đơn (câu hỏi chỉ gồm 1 câu). Trong khi đó câu hỏi trong hệ thống CQA
là câu phức tạp, câu hỏi gồm nhiều câu, nhiều ý hỏi. Ví dụ câu hỏi trong hệ thống hỏi đáp
Yahoo!answer như sau: "Em năm nay 16t ạ. Cao 1m6 nhưng lại có 36kg rất gầy luôn ạ
nên đi đâu cũng bị hỏi và chê gầy @@ điều đó làm em khó chịu và đau đầu . Mặc dù em
đã sử dụng sữa bột tăng cân , sữa bí đỏ tăng cân , ăn đêm , ăn nhiều . Nhưng số cân nặng

259
đó vẫn duy trì từ lớp 6 tới lớp 10 luôn ạ :(( em tính chuyển qua dùng thuốc tăng cân thì có
nên ko ? Dùng thuốc nào ? Hay có cách nào để tăng cân ko ạ :(( "

• Điểm khác nhau thứ hai là sự khác nhau về nguồn câu trả lời. Hệ thống QA câu trả
lời được lấy ra từ nguồn văn bản đối với những hệ thống QA nguồn đóng hoặc từ
dữ liệu trên web với QA nguồn mở. Còn đối với hệ thống CQA câu trả lời được lấy
từ kho dữ liệu CQA được đóng góp từ người dùng. Do người dùng khác nhau dẫn
tới độ dài nội dung, cấu trúc và phong cách viết của mỗi người khác nhau cho nên
chất lượng câu trả lời khác nhau. Đây cũng là thách thức trong hệ thống CQA khi
đánh giá chất lượng câu trả lời.
• Điểm thứ ba là về chất lượng câu trả lời, liên quan tới chất lượng của hệ thống hỏi
đáp. Hệ thống QA trích rút câu trả lời từ những nguồn có uy tín nên câu trả lời đáng tin
cậy. Tuy nhiên trong hệ thống CQA do câu trả lời được đóng góp từ nhiều người dùng khác
nhau với mức độ uy tín khác nhau. Việc xác định chất lượng câu trả lời trở thành bài toán
quan trọng trong hệ thống CQA khi một câu hỏi có nhiều câu trả lời.
• Điểm khác nhau thứ tư là liên quan tới việc khai thác một số đặc trưng có sẵn
trong hệ thống CQA như các bình chọn tích cực hoặc tiêu cực cho câu trả lời. Những thuộc
tính này tạo ra tương tác giữa người dùng, từ đó làm giàu thêm thông tin cho hệ thống CQA
đồng thời góp phần cho việc xác định chất lượng câu hỏi. Trong khi đó hệ thống QA thông
thường không chứa những thuộc tính này.
• Điểm khác biệt cuối cùng đó là độ trễ khi nhận được câu trả lời của hệ thống. Đối
với hệ thống QA, câu trả lời được thực hiện trích rút tự động từ văn bản nên hệ thống gần
như không có độ trễ. Còn trong hệ thống CQA thì thời gian nhận câu trả lời phụ thuộc vào
người dùng trả lời câu hỏi. Tất cả những đặc điểm trên dẫn tới các bài toán nghiên cứu
chính của hệ thống CQA liên quan tới việc phân tích câu hỏi mà sử dụng ngôn ngữ tự nhiên
trong hệ thống và liên quan tới xác định chất lượng câu trả lời. Cụ thể các bài toán và các
thách thức được trình bày trong phần tiếp theo dưới đây.
Các bài toán trong hệ thống hỏi đáp cộng đồng CQA
Xác định chất lượng của câu trả lời
Hệ thống hỏi đáp cộng đồng là hệ thống cho phép người dùng trả lời câu hỏi mà họ
quan tâm và muốn chia sẻ kiến thức. Do đó, một câu hỏi khi được đăng lên có thể có nhiều

260
câu trả lời ứng viên. Đây là hệ thống mở, dễ dàng chia sẻ và trao đổi thông tin dẫn tới sự
tăng trưởng mạnh mẽ của các loại hệ thống này. Tuy nhiên hệ thống cũng có những điểm
hạn chế. Hạn chế thứ nhất đó là nội dung đa dạng về chủ đề nhưng lại thiếu cấu trúc phù
hợp với từng loại. Điểm thứ hai liên quan tới những câu trả lời kém chất lượng được tạo ra
bởi một số lý do như nhận thức của người dùng về một số lĩnh vực còn hạn chế, thiếu tập
trung và không chuẩn bị kĩ càng khi trả lời. Do là người dùng khác nhau nên các câu trả
lời có sự khác biệt lớn về chất lượng, cấu trúc và phạm vi câu trả lời. Do đó, hệ thống CQA
cần có phương pháp toàn diện khai thác câu trả lời để đưa ra câu trả lời tốt nhất của câu hỏi
hoặc gợi ý câu trả lời tốt nhất cho câu hỏi mới.
Hệ thống CQA hiện tại có hai bài toán giúp người dùng tổng hợp câu trả lời tốt nhất
một cách tự động đó là bài toán xếp hạng các câu trả lời ứng viên theo mức độ liên quan
tới câu hỏi và bài toán tóm tắt câu trả lời giúp người dùng có câu trả lời đầy đủ nhất. Hai
bài toán này góp phần đáp ứng tiêu chí giảm thời gian cho người dùng khi phải tìm và tổng
hợp câu trả lời.
Bài toán tìm câu trả lời tốt nhất trong hệ thống hỏi đáp
Forum hỏi đáp cộng đồng ngày càng phổ biến tuy nhiên những website này hầu như
không được kiểm soát. Do đó, hệ thống này có điểm hạn chế vì lý do bất kì ai cũng có thể
đăng câu hỏi và trả lời câu hỏi. Ưu điểm của việc làm này đó là mọi người có thể tự do hỏi
bất kì câu hỏi gì mà mình muốn và mong đợi rằng nhận được câu trả lời tốt và trung thực.
Như vậy khi một câu hỏi được đăng lên sẽ có nhiều người dùng vào trả lời cho câu hỏi đó.
Người hỏi sẽ phải rất nỗ lực và mất thời gian để đọc tất cả các câu trả lời đó (có những câu
hỏi có đến hàng trăm câu trả lời do người dùng khác tham gia trả lời) và hiểu được chúng.
Vì vậy việc đề xuất bài toán tự động tìm những câu trả lời tốt nhất trong số các câu trả lời
của người dùng đã trả lời cho câu hỏi đó sẽ hỗ trợ cho người dùng có thể đánh giá và tìm
được câu trả lời mong muốn một cách nhanh nhất.
Bài toán tóm tắt câu trả lời
Bài toán thứ hai nằm trong nội dung đánh giá chất lượng câu trả lời đó là bài toán
tóm tắt câu trả lời. Các forum hỏi đáp là nguồn dữ liệu giàu tri thức. Nó thường chứa những
thông tin về các chủ đề mà khó tìm qua máy tìm kiếm. Các câu trả lời có thể không được
chuẩn bị kĩ lưỡng, chứa spam hoặc thậm chí là những câu đùa cợt hoặc quảng cáo. Đặc
biệt, một số câu hỏi dạng giải thích, quan điểm hoặc liệt kê (câu hỏi non-factoid) thì câu

261
trả lời nhận được thường không đầy đủ kể cả những câu trả lời tốt nhất. Đây cũng là khó
khăn cho người đọc khi phải đọc qua tất cả các câu trả lời này để tổng hợp câu trả lời tốt
nhất. Vì lý do này mà bài toán tóm tắt câu trả lời được đặt ra hỗ trợ người dùng tổng hợp
câu trả lời một cách tự động.
Bài toán tìm câu hỏi tương đồng
Cùng với sự phát triển của các web-forum, ngày càng có nhiều người sử dụng hệ
thống này để tìm kiếm câu trả lời cho câu hỏi mà họ cần. Để hệ thống hoạt động tốt hơn và
đáp ứng yêu cầu của người dùng, các hệ thống này cũng hướng tới giải quyết thách thức
về độ trễ khi chờ câu trả lời từ người dùng. Thực tế cho thấy rằng có những câu hỏi khi
đăng lên vài ngày sau mới nhận được câu trả lời, thậm chí là không có ai trả lời. Vấn đề
này được giải quyết dựa vào ý tưởng sử dụng các câu trả lời đã có của các câu hỏi trước đó
của hệ thống thông qua các câu hỏi tương đồng với câu hỏi mới. Cụ thể là thông qua việc
tìm câu hỏi tương đồng của câu hỏi mới và tận dụng câu trả lời có sẵn của những câu hỏi
tương đồng này để tìm ra câu trả lời cho câu hỏi mới. Điều này giúp cho hệ thống giảm
thời gian chờ như đã đề cập ở phần trên.Do đó bài toán tìm câu hỏi tương đồng được đặt
ra để giải quyết.
Thách thức của hệ thống hỏi đáp
CQA Với các phân tích ở phần trên, thách thức lớn nhất của hệ thống hỏi đáp cộng
đồng là vấn đề khoảng cách từ vựng (lexical gap) bao gồm:
• Khoảng cách từ vựng giữa các câu hỏi: đây là thách thức quan trọng trong hệ thống
hỏi đáp nói chung. Nó liên quan tới sự sai khác trong cách dùng ngôn ngữ tự nhiên khi diễn
tả giữa các câu hỏi khác nhau. Trong hệ thống cộng đồng có nhiều người dùng cho nên
cách diễn đạt câu hỏi khác nhau (dùng từ vựng khác nhau) nhưng cùng diễn đạt một ý như
nhau. Hơn nữa, đây lại là dữ liệu cộng đồng. Các câu hỏi được đặt ra trong hệ thống hỏi
đáp cộng đồng sử dụng ngôn ngữ tự nhiên, chứa nhiều ý hỏi và phức tạp, trong câu chứa
nhiều nội dung không liên quan trực tiếp tới câu hỏi và câu trả lời (ví dụ như lời chào hỏi,
câu đùa cợt,...). Do vậy, việc xác định tính tương đồng của hai câu hỏi càng khó khăn.

• Khoảng cách từ vựng giữa câu hỏi và câu trả lời: giống như thách thức trên về ngôn
ngữ giữa các câu hỏi, trong cặp câu hỏi-câu trả lời còn có thêm sự sai khác rất lớn
do thông tin của câu hỏi và câu trả lời không đối xứng. Ngoài tiêu chí về độ chính
xác của các hệ thống dự đoán còn có tiêu chí quan trọng không kém đó là tiêu chí

262
về thời gian phản hồi thông tin của người dùng. Khi tập dữ liệu CQA ngày càng lớn
thì việc xác định độ tương đồng ngữ nghĩa của câu hỏi mới với các câu hỏi trong
kho dữ liệu CQA gặp thách thức về mặt thời gian. Vì vậy việc nghiên cứu bài toán
tìm câu hỏi tương đồng càng có ý nghĩa.
6.7.5. Mô hình ngôn ngữ
Mô hình ngôn ngữ
Mô hình ngôn ngữ là tập hợp các kiến thức trước đó về một ngôn ngữ nhất định, các
kiến thức này có thể là các kiến thức về từ vựng, về ngữ pháp, về tần suất xuất hiện của các
cụm từ, ... Một mô hình ngôn ngữ có thể được xây dựng theo hướng chuyên gia hoặc hướng
dữ liệu.
Mô hình ngôn ngữ là một phân bố xác suất trên các tập văn bản, cung cấp các thông
tin về phân bố xác suất tiền nghiệm (prior distribution) p(w1...wn) với (w1,...,wn) là các từ
vựng trong bộ từ điển của một ngôn ngữ nhất định. Nói đơn giản, mô hình ngôn ngữ có thể
cho biết xác suất một câu (hoặc cụm từ) thuộc một ngôn ngữ là bao nhiêu.

Ví dụ: khi áp dụng mô hình ngôn ngữ cho tiếng Việt:

1. P[“hôm nay là thứ bảy”] = 0.001


2. P[“bảy thứ hôm là nay”] = 0

Ví dụ trên cho thấy, câu "hôm nay là thứ bảy" có khả năng là một câu tiếng Việt cao hơn so
với câu "bảy thứ hôm là nay". Đây là ví dụ đơn giản nhất để các bạn có thể hình dung được
một mô hình ngôn ngữ làm gì. Vậy câu hỏi tiếp theo được đặt ra là chúng ta tính cái xác
suất p(w1...wn) kia như thế nào, hay làm thể nào để xây dựng mô hình ngôn ngữ ?

● Tìm từ tiếp theo biết các từ đằng trước

263
“Hôm nay tôi đi...”
P(học| hôm_nay tôi đi) = ?
P(chơi| hôm_nay tôi đi) = ?
● Tính xác suất của một chuỗi
P(<s> hôm_nay tôi đi học <e>) = ?
● Ứng dụng
Sửa lỗi chính tả
Dịch máy
Tóm tắt văn bản
Biểu diễn văn bản

Các hướng tiếp cận


Để xây dựng mô hình ngôn ngữ, chúng ta có thể tiếp cận theo 3 hướng chính: Knowledge-
based Language Model, Statistical Language Model (Count-based), và Neural Network
Language Model (Continuous-space). Ngoài ra còn một số mô hình ngôn ngữ khác chẳng
hạn như KenLM, ...

• Knowledge-based Language Model

Đây là những mô hình ngôn ngữ được xây dựng dựa trên những kiến thức đã được con
người (cụ thể là các chuyên gia về ngôn ngữ học) tích luỹ, phân tích từ cú pháp một câu,
cách chia động từ hoặc sự phân rã của tính từ ... .

264
Khi các kiến thức này được định nghĩa bằng các luật, nó sẽ xây dựng lên một mô hình ngôn
ngữ, do đó Knowledge-based Language Model còn được gọi là rule-based language model.

Một số thách thức và bất lợi khi cố gắng xây dựng một Knowledge-based Language Model
có thể kể đến như:

• Khó xây dựng: Trước tiên, cần phải là một chuyên gia ngôn ngữ học. Tiếp theo,
chúng ta cần đủ khả năng để tổng hợp và tái cấu trúc lại các kiến thức của bạn về
một ngôn ngữ thành tập các luật biểu diễn nó.
• Chỉ nhận diện được các từ thuộc intra-grammatical: Intra-grammatical có thể hiểu
như là văn viết (formal), trái ngược với extra-grammatical là văn nói (informal).
Nếu học ngôn ngữ thì ngôn ngữ nào cũng có sự khác biệt giữa văn nói và văn viết.
• Thiếu tính tần số (Lack of frequencies): Độ phổ biến của câu từ đóng vai trò không
kém quan trọng, chẳng hạn như "How to recognize speech" và "How to wreck a
nice beach" đều đúng ngữ pháp nhưng câu đầu đúng hơn vì phổ biến hơn và câu sau
có nghĩa hơi kì lạ.
• Chỉ phân biệt được hợp lý hay không: Do cấu trúc của mô hình nên kết quả của mô
hình này đối với một câu là có hợp lý (hay đúng ngữ pháp) của một ngôn ngữ hay
không chứ không có dự đoán hay gợi ý được từ.

• Statistical Language Model

Xây dựng mô hình ngôn ngữ dựa trên thống kê là việc cố gắng đi xác định giá trị của p(w1
...wn) từ tập dữ liệu thu thập được.

p(w1...wn) hiểu đơn giản là xác suất cụm từ w1...wn thuộc một ngôn ngữ cụ thể, mà trong
trường hợp với tập dữ liệu thu thập được, ta có thể tính

với N là số lượng cụm từ có độ dài N trong tập dữ liệu. Do đó, Statistical Language Model
còn được gọi là Count based Model

Hoặc trong trường hợp việc xác định N là khó thực hiện, chúng ta hoàn toàn có thể sử dụng
công thức xác suất có điều kiện trong trường hợp này :

265
Trong đó.

Dựa theo cách thức xác định giá trị xác suất p(w1...wn), trong Statistical Language
Model lại được chia thành 2 hướng tiếp cận nhỏ hơn

N-gram Language Models

Việc tính giá trị p(w1...wn) trong trường hợp n vô hạn, thực tế là vô cùng khó khăn. Để giảm
độ phức tạp cho việc tính toán cũng như tạo ra một hướng đi khả thi để có thể mô hình hóa
ngôn ngữ, mô hình n-gram ra đời. Mô hình n-gram giả định việc mô hình ngôn ngữ là một
chuỗi Markov, thỏa mãn tính chất Markov. Chúng ta có tính chất Markov được định nghĩa
như sau:
Một quá trình mang tính ngẫu nhiên có thuộc tính Markov nếu phân bố xác suất có
điều kiện của các trạng thái tương lai của quá trình, khi biết trạng thái hiện tại, phụ thuộc
chỉ vào trạng thái hiện tại đó
Hiểu một cách đơn giản, nếu giả định mô hình ngôn ngữ có thuộc tính Markov, ta có
thể tính xác suất p(w1...wn) theo công thức sau:
p(w1...wn)=p(w1)∗p(w2∣w1)∗p(w3∣w1w2)∗...∗p(wn∣w1...wn−1)=p(w1)∗p(w2∣w1
)∗p(w3∣w2)∗...∗p(wn∣wn−1)
Mô hình unigram
● p(w|w1 w2 … wn) = p(w)
p(<s> hôm_nay tôi đi học <e>) = p(<s>) * p(hôm_nay) * p(tôi) * p(đi) * p(học) * p(<e>)
Mô hình bigram
● p(w|w1 w2 … wn) = p(w|wn)
p(<s> hôm_nay tôi đi học <e>) = p(hôm_nay|<s>)* p(tôi|hôm_nay) * p(đi|tôi) *
p(học|đi) * p(<e>|học)

Ví dụ, chúng ta có câu : W = "Today is Sarturday and tomorrow is Sunday". Khi đó với mô
hình markov bậc 2

266
p(W)=p(today)∗...∗p(sunday|today is sarturday and tomorrow is )=p(today)∗...∗p(sunday|t
owmorrow is )

Structured Language Models

Một nhược điểm của mô hình n-gram là không đánh giá được ngữ cảnh của toàn bộ câu, do
đó, trong nhiều trường hợp, nó không thể đưa ra một xác suất chính xác. Một ví dụ có thể
kể đến như W = "The dogs chasing the cat bark" (tạm dịch là Những con chó vừa nãy đuổi
con mèo thì đang sủa). Động từ "bark" (sủa) ở đây nhận chủ ngữ là "The dogs", tuy nhiên,
nếu sử dụng 3-gram, mô hình sẽ đi tính xác suất p(bark|the cat), và kết quả thu được sẽ là
bằng 0.

Để giải quyết vấn đề này, Structured Language Models ra đời. Structured Language Models
hay mô hình ngôn ngữ có cấu trúc, cố gắng hướng đến một hệ thống phân cấp cho các từ
vựng trong một câu văn. Việc này kết hợp với n-gram sẽ cho kết quả bao quát được ngữ
cảnh của toàn câu văn, cải thiện độ chính xác của mô hình

• Neural Network Language Model

Neural Network Language Model là những phương pháp mới nhất dựa trên mạng Neural
để xây dựng mô hình ngôn ngữ, các mô hình này còn có một tên gọi khác là Continuous-
space language models.

267
6.7.6. Tóm tắt văn bản
Trong kỷ nguyên số và mạng Internet phát triển mạnh mẽ như hiện nay, các tài
nguyên trên internet như các trang web, đánh giá của người dùng, tin tức, blog, mạng xã
hội,…là những nguồn dữ liệu văn bản to lớn. Bên cạnh đó, có một khối lượng nội dung
văn bản phong phú khác trên các kho lưu trữ như các bài báo tin tức, tiểu thuyết, sách, văn
bản pháp luật, tài liệu y sinh, bài báo khoa học,…. Các nội dung văn bản này tăng lên theo
cấp số nhân hàng ngày. Do đó, người dùng mất rất nhiều thời gian để tìm kiếm thông tin
mà mình mong muốn. Kết quả là người dùng thậm chí không thể đọc và hiểu hết được tất
cả nội dung văn bản kết quả tìm kiếm. Có nhiều thông tin bị lặp lại hoặc không quan trọng
trong các văn bản kết quả tìm kiếm. Do đó việc tóm tắt và cô đọng các nguồn văn bản trở
nên cấp thiết và quan trọng hơn rất nhiều. Tóm tắt văn bản thủ công là một nhiệm vụ tốn
kém và tiêu tốn nhiều thời gian và công sức của con người. Trên thực tế, con người cũng
rất khó tóm tắt thủ công với lượng dữ liệu văn bản khổng lồ này. Để giải quyết các vấn đề
này, các phương pháp tóm tắt văn bản tự động được quan tâm nghiên cứu để phát triển các
hệ thống tóm tắt văn bản tự động.
Mục tiêu chính của các hệ thống tóm tắt văn bản tự động là tạo ra bản tóm tắt bao
gồm các ý chính của một văn bản hoặc nhiều văn bản đầu vào và thông tin lặp lại ít nhất.
Các hệ thống tóm tắt văn bản tự động sinh ra các văn bản tóm tắt giúp người dùng nắm
được những điểm chính của văn bản gốc mà không cần phải đọc toàn bộ văn bản. Người
dùng sẽ được hưởng lợi từ các bản tóm tắt được sinh ra tự động, tiết kiệm được nhiều thời
gian và công sức.
Các hệ thống tóm tắt văn bản tự động hiện nay có thể được chia thành hai loại là
tóm tắt đơn văn bản và tóm tắt đa văn bản. Tóm tắt đơn văn bản sinh ra bản tóm tắt từ một
văn bản đầu vào, trong khi tóm tắt đa văn bản sinh ra bản tóm tắt từ một tập các văn bản
đầu vào. Các hệ thống tóm tắt văn bản tự động này được phát triển bằng việc áp dụng một
trong các phương pháp tiếp cận chủ yếu là tóm tắt văn bản hướng trích rút và tóm tắt văn
bản hướng tóm lược.
Tóm tắt văn bản hướng trích rút: là phương pháp lựa chọn những câu quan trọng
nhất trong một văn bản nguồn (hoặc một tập văn bản nguồn) và sử dụng các câu này để
sinh bản tóm tắt. Phương pháp này bao gồm các nhiệm vụ xử lý chính như: Tạo một biểu

268
diễn thích hợp cho văn bản đầu vào, cho điểm các câu, trích rút các câu có điểm cao. Các
hệ thống tóm tắt văn bản hướng trích rút có thể chia thành các phương pháp chủ yếu sau:

• Phương pháp dựa trên thống kê


• Phương pháp dựa trên khái niệm
• Phương pháp dựa trên chủ đề
• Phương pháp dựa trên trọng tâm hay phân cụm câu
• Phương pháp dựa trên đồ thị
• Phương pháp dựa trên ngữ nghĩa
• Phương pháp dựa trên học máy
• Phương pháp dựa trên học sâu
Các hệ thống tóm tắt hướng trích rút này có ưu điểm là thực thi đơn giản, nhanh và cho
độ chính xác cao vì phương pháp này thực hiện trích rút trực tiếp các câu để người đọc
có thể đọc bản tóm tắt với các thuật ngữ chính xác có trong văn bản gốc. Tuy nhiên
phương pháp này có những hạn chế cần quan tâm như: vấn đề dư thừa thông tin trong
một số câu tóm tắt, các câu được trích rút có thể dài hơn mức trung bình, vấn đề xung
đột về thời gian trong bài toán tóm tắt đa văn bản vì các bản tóm tắt trích rút được chọn
từ nhiều văn bản đầu vào khác nhau, thiếu ngữ nghĩa và tính liên kết trong các câu tóm
tắt vì liên kết không chính xác giữa các câu.
Tóm tắt văn bản hướng tóm lược: Phương pháp tiếp cận này biểu diễn văn bản đầu vào
ở dạng trung gian, sau đó sinh bản tóm tắt với các từ và câu khác với các câu trong văn
bản nguồn. Các hệ thống tóm tắt hướng tóm lược sinh ra bản tóm tắt bằng cách hiểu
các khái niệm chính trong văn bản đầu vào sử dụng các phương pháp xử lý ngôn ngữ
tự nhiên, sau đó diễn giải văn bản để diễn đạt các khái niệm đó với số từ ít hơn và sử
dụng ngôn ngữ rõ ràng. Một hệ thống tóm tắt tóm lược có thể bao gồm các nhiệm vụ
xử lý chính sau: Biểu diễn ngữ nghĩa văn bản và sử dụng các kỹ thuật sinh ngôn ngữ tự
nhiên để sinh bản tóm tắt gần với các bản tóm tắt của con người tạo ra. Các nghiên cứu
theo phương pháp tiếp cận này có thể chia thành các loại chính sau:

• Phương pháp dựa trên cấu trúc


• Phương pháp dựa trên ngữ nghĩa
• Phương pháp dựa trên học sâu

269
Ưu điểm của các phương pháp tóm tắt hướng tóm lược là sinh ra các bản tóm tắt tốt hơn
với các từ có thể không có trong văn bản gốc bằng cách sử dụng các biểu diễn dựa trên
diễn giải, nén. Bản tóm tắt được sinh ra gần với bản tóm tắt thủ công của con người hơn.
Tuy nhiên, việc sinh một bản tóm tắt tóm lược có chất lượng tốt là rất khó khăn. Các hệ
thống tóm tắt tóm lược có chất lượng tốt rất khó phát triển vì các hệ thống này yêu cầu sử
dụng kỹ thuật sinh ngôn ngữ tự nhiên mà kỹ thuật này vẫn là một lĩnh vực đang được
nghiên cứu phát triển hiện nay. Hầu hết các bản tóm tắt tóm lược đều gặp phải vấn đề lặp
từ và không xử lý được vấn đề thiếu từ trong bộ từ vựng một cách thích hợp.
Ngoài ra,một phương pháp tiếp cận khác là tóm tắt văn bản dựa trên kỹ thuật nén câu cũng
đạt được những kết quả nhất định. Tuy nhiên, các mô hình tóm tắt văn bản sử dụng các kỹ
thuật nén yêu cầu chi phí cao. Bên cạnh đó, chất lượng của bản tóm tắt tạo ra phụ thuộc rất
nhiều vào chất lượng của các kỹ thuật nén câu được sử dụng.

270
Tài liệu tham khảo
􀁺 Christopher Manning and Hinrich Schütze. 1999. Foundations of Statistical
Natural Language Processing. The MIT Press.
􀁺 Dan Jurafsky and James Martin. 2000. Speech and Language Processing.
PrenticeHall.
􀁺 James Allen. 1994. Natural Language Understanding. The
Benjamins/Cummings Publishing Company Inc.

271

You might also like