Các quy tắc của ngữ pháp tạo sinh trong Chatbot AI và xử lý ngôn ngữ tự nhiên

Phân tích cú pháp có thể được hình dung như trái tim của một mô hình xử lý ngôn ngữ tự nhiên. Nó có nhiệm vụ xác định cấu trúc của một câu, lượng hoá sự phụ thuộc giữa các từ trong câu. Nó cố gắng hiểu một câu của ngôn ngữ con người bằng cách chuyển đổi câu đó sang một mô hình toán học chính xác, gán cấu trúc phi ngữ cảnh cho một đoạn văn và làm cho máy tính hiểu được nó. 
Các quy tắc của ngữ pháp tạo sinh trong Chatbot AI và xử lý ngôn ngữ tự nhiên
Các quy tắc của ngữ pháp tạo sinh trong Chatbot AI và xử lý ngôn ngữ tự nhiên
Nguyễn Văn Hiến
13:35 ngày 26/11/2023
0
0

Là con người, chúng ta có khả năng phân tích và hiểu ngữ pháp của ngôn ngữ mẹ đẻ rất giỏi giang. Khi đối thoại, những suy nghĩ hay ho trong đầu chúng ta đột nhiên nảy lên và trào dâng với những lời hay ý đẹp, cho dù nhiều khi chúng ta chưa từng xếp đặt nó. Hiện tượng ấy của não bộ cho đến tận bây giờ khoa học cũng chưa thể hiểu được một cách tường tận dù đã có rất nhiều tiến bộ trong lĩnh vực thần kinh học.

Quả thật, con người thông hiểu nhau bởi vì họ dùng chung một ngôn ngữ, người Việt giao tiếp với nhau thì nói tiếng Việt. Còn nếu ra tầm quốc tế, chúng ta và bạn bè nước khác hiểu được nhau nhờ dùng chung Anh ngữ. Cũng vậy, để máy tính hiểu được ngôn ngữ của con người thì phải "phiên dịch" chữ viết, âm thanh, hình ảnh... sang tiếng nói của người máy.

Khi mà các mô hình xử lý ngôn ngữ tự nhiên phát triển mạnh mẽ, các kỹ sư lập trình mong muốn máy tính càng ngày càng thông minh hơn. Và để làm được điều đó, công tác phân tích cú pháp là quá trình không thể bỏ qua. Do nhu cầu đó mà nảy sinh ra nhu cầu phân tích cú pháp, chuyển đổi ngôn ngữ con người sang cấu trúc ngôn ngữ mà máy tính có thể hiểu được.

Các định dạng phổ biến của ngữ pháp tạo sinh

Phân tích cú pháp có thể được hình dung như trái tim của một mô hình xử lý ngôn ngữ tự nhiên. Nó có nhiệm vụ xác định cấu trúc của một câu, lượng hoá sự phụ thuộc giữa các từ trong câu. Nó cố gắng hiểu một câu của ngôn ngữ con người bằng cách chuyển đổi câu đó sang một mô hình toán học chính xác, gán cấu trúc phi ngữ cảnh cho một đoạn văn và làm cho máy tính hiểu được nó. 

Có nhiều mô hình khác nhau được dùng để phân tích cú pháp, ví dụ như: phân tích dựa trên cấu trúc cụm từ, phân tích dựa trên quan hệ phụ thuộc.

Trong lĩnh vực phân tích ngữ pháp phi ngữ cảnh có nhiều các định dạng mô hình khác nhau như Avram Noam Chomsky (CNF), Kuroda, Hyperedge Replacement Grammars (HRG), Weak Greibach, Context Free Grammar (CFG), Probabilistic Context-Free Grammar (PCFG) và Context Sensitive Grammar. Trong đó, các mô hình CNF và CFG là tương đối dễ hiểu nên chúng ta cần tìm hiểu trước.

Các cấu trúc ngữ pháp tạo sinh đơn giản

Các thuật toán phân tích cú pháp dễ tiếp cận nhất là dựa trên lý thuyết của nhà ngôn ngữ học người Mỹ, Avram Noam Chomsky, Context Free Grammar (CFG) và mô hình khác là Griebach (GNF).

Cấu trúc CNF (chuẩn Chomsky)

Năm 1957, Chomsky công bố nghiên cứu quy tắc ngữ pháp tạo sinh, đặt nền tảng cho lý thuyết khoa học máy tính về xử lý ngôn ngữ tự nhiên. Ông cho rằng: ngôn ngữ của con người là di truyền và cấu trúc ngữ pháp mà trí não dùng để sắp đặt từ vựng thành một câu có ngữ nghĩa là khả năng thiên bẩm.

Trong cấu trúc ngữ pháp phi ngữ cảnh chúng ta cần quan tâm đến 4 biến: V (variable - non terminals), P hoặc R (production rule), T (terminal) và S (start symbol).

Công thức chuyển đổi thành cấu trúc ngữ pháp phi ngữ cảnh có dạng sau:

A → a
A → BC
S → ε

Nếu phần ngữ pháp bên phải của quy tắc là 2 biến non-terminals, hoặc một biến terminals thì đó là dạng chuẩn  Chomsky. Trong đó:

V = A,B,C (Trong đó B,C không phải là biến khởi động)
T = a
S = Biến khởi động
ε = Là chuỗi rỗng

Thuật toán CYK 

Cocke–Younger–Kasami (CYK) là thuật toán dùng để chứng minh lý thuyết Chomsky, được 3 nhà toán học John Cocke, Daniel Younger và Tadao Kasami phát triển vào những năm 1987. Thuật toán CYK hoạt động phân tích theo hướng BOTTOM - TOP, nó dựa trên ý tưởng lập trình động.

Bây giờ chúng ta xem xét một ví dụ sử dụng thuật toán CYK để chuyển đổi một câu sang định dạng cấu trúc phi ngữ cảnh: "The rat ate cheese".

Trước hết chúng ta xem xét tiến trình phân tích - các thuật ngữ viết tắt ở cuối bài viết: 

S → NP VP
NP → DT NN
VP → VBD NP
DT → the
NN → rat
NN → cheese
VBD → ate

Chúng ta triển khai sơ đồ trên lên tam giác ma trận (n + 1) * (n + 1) như hình minh hoạ bên dưới:

Định dạng của cấu trúc CFG (Context Free Grammar) 

Một cây ngữ pháp phi ngữ cảnh theo tiêu chuẩn CFG có cấu trúc như sau:

Grammar = <V(n), V(t),R, S>

T (terminals): Là những từ, cụm từ, hoặc chữ cái... làm nên nội dung kết cho câu. Ví dụ: the, a, boy, see, cat, dirty

V (variable / non terminals): Biến V có vai trò như một phụ đề. Và biến V phải tuân theo cấu trúc. Các biến (variable) này chỉ có trách này nhiệm giữ chổ cho terminals và không được tạo đầu ra. Ví dụ: S, NP, VP, ART, N, V;

S (start symbol): S giống như một nút khởi động của chiếc xe máy. Nó là phần tử thuộc nhóm biến V, nó được tạo ra từ các quy tắc ngữ pháp.

P hoặc R (production rule): Là tập hợp các quy tắc dùng để chuyển đổi ngôn ngữ tự nhiên thành cấu trúc phi ngữ cảnh. Ví dụ như VP -> V NP; ART -> the|a...;

Xác định cấu trúc CFG bằng thuật toán CYK

Cả hai cấu trúc CNF (Chomsky Chomsky Normal Form) và CFG (Context-Free Grammars) đều đều thuộc về ngữ pháp phi ngữ cảnh (context-free grammars), nhưng chúng có một số điểm khác biệt cơ bản.

Các biến của CNF phải tuân theo quy tắc và ràng buộc còn CFG thì không. Do đó, để kiểm tra cấu trúc CFG thì cần phải chuyển đổi định dạng của nó về chuẩn CNF.

Ứng dụng của cấu trúc ngôn ngữ tạo sinh

Việc phân tích chuyển đổi từ ngôn ngữ tự nhiên sang định dạng cấu trúc phi ngữ cảnh được ứng dụng vào các công việc như sau:

- Phân tích cú pháp và kiểm tra xem câu đó có đạt chuẩn ngữ pháp hay không;

- Tạo sinh văn bản, giống như CHAT-GPT; 

- Giúp các mô hình trí tuệ nhân tạo dịch từ ngôn ngữ này sang ngôn ngữ khác;

Các cấu trúc ngữ pháp tạo sinh đặc biệt

Các cấu trúc ngữ pháp như CNF, CFG tương đối dễ hiểu, dễ triển khai tuy nhiên điểm hạn chế của chúng là không thể xử lý được các cấu trúc câu phức tạp.

Ví dụ: Nó đá cục đá là một câu hợp ngữ pháp nhưng không thể xác minh bằng các quy tắc của CNF hay CFG. Để xử lý điểm yếu, chúng ta cần xem xét đến các cấu trúc khác như Context Sensitive Grammar (CSG), Weak Greibach...

Ghi chú một số thuật ngữ

VP (verb pharase) = Ngữ đoạn động từ
VP ngữ đoạn động từ là một cấu trúc ngữ pháp trong tiếng Việt. Nó được sử dụng để biểu thị hành động của chủ thể. VP ngữ đoạn động từ bao gồm động từ và các từ đi kèm, như trạng từ, giới từ, danh từ, đại từ, và các từ chỉ số lượng. Ví dụ: “đang ăn cơm”, “đã đi học”, “sẽ đến vào lúc 7 giờ”

CC    Coordinating conjunction
CD    Cardinal number
DT    Determiner
EX    Existential there
FW    Foreign word
IN    Preposition or subordinating conjunction
JJ    Adjective
JJR    Adjective (comparative)
JJS    Adjective (superlative)
LS    List item marker
MD    Modal
NN    Noun (singular or mass)
NNS    Noun (plural)
NNP    Proper noun (singular)
NNPS    Proper noun (plural)
PDT    Predeterminer
POS    Possessive ending
PRP    Personal pronoun
PRP$    Possessive pronoun
RB    Adverb
RBR    Adverb (comparative)
RBS    Adverb (superlative)
RP    Particle
SYM    Symbol
TO    to
VB    Verb (base form)
VBD    Verb (past tense)
VBG    Verb (gerund or present participle)
VBN    Verb (past participle)
VBP    Verb (non-3rd person singular present)
VBZ    Verb (3rd person singular present)
WDT    Wh-determiner
WP    Wh-pronoun
WP$    Possessive wh-pronoun
WRB    Wh-adverb

ADJP    Adjective Phrase
ADVP    Adverb Phrase
CONJP    Conjunction Phrase
FRAG    Fragment
INTJ    Interjection
LST    List marker
NAC    Not a Constituent
NP    Noun Phrase
NX    marks the head of the NP
PP    Prepositional Phrase
PRN    Parenthetical
PRT    Particle
QP    Quantifier Phrase
RRC    Reduced Relative Clause
UCP    Unlike Coordinated Phrase
VP    Verb Phrase
WHADJP    Wh-adjective Phrase
WHAVP    Wh-adverb Phrase
WHNP    Wh-noun Phrase
WHPP    Wh-prepositional Phrase
X    Unknown, uncertain, or unbracketable

S    Simple declarative clause
SBAR    Clause introduced by a (possibly empty) subordinating conjunction
SBARQ    Direct question introduced by a wh-word or a wh-phrase
SINV    Inverted declarative sentence
SQ    Inverted yes/no question, or main clause of a wh-question, following the wh-phrase in SBARQ

Tác giả

Nguyễn Văn Hiến

Tôi là Nguyễn Văn Hiến, Founder của Tummosoft. Tôi có hơn 20 năm lập trình, vào thời điểm máy vi tính còn là tài sản quý giá của người giàu. Nhưng sức đam mê công nghệ của tôi đã giúp tôi vượt qua những khó khăn và theo đuổi nghề lập trình. Đối với tôi, sáng tạo các sản phẩm công nghệ bằng ngôn ngữ cũng giống như người nghệ sĩ sáng tác những họa phẩm.

Tổng quan về xử lý ngôn ngữ tự nhiên

Chatbot ngày nay đã vượt qua vai trò là công cụ tiêu khiển, nó thông minh hơn, hiểu biết nhiều vấn đề hơn, biết lập trình và biết xử lý cả tình huống…. Và để có được thành tựu như hôm nay, chatbot đã khởi đầu bằng công nghệ kiểu như robot ELIZA.

Hệ thống lý luận Bayesian

Từ những năm 1960, việc sử dụng kho ngữ liệu lớn để xử lý ngôn ngữ tự nhiên bắt đầu được định hình. Bộ sưu tập Ameriacan English đã tổng hợp được hơn một triệu văn bản từ các tạp chí, báo, tiểu thuyết...

Mô hình xác xuất The Noisy Channel, giải pháp xử lý tín hiệu bị nhiễu sau truyền dẫn

Giai đoạn thứ 3 (1970-1983) chứng kiến sự phát triển mạnh mẽ của ngành xử lý ngôn ngữ tự nhiên và nhận dạng tiếng nói và đồng thời các thuật toán và mô hình đã được phát triển đó vẫn được duy trì phát triển.

Mô hình ẩn Hidden Markov Model (HMM), bước tiến lớn trong lĩnh vực trí tuệ nhân tạo

Mô hình ẩn Hidden Markov Model (HMM) được phát triển trên lý thuyết xác xuất thông kê, giả định rằng: Có 2 nguồn thông tin: (1) Một nguồn thì có thể thu thập được; và nguồn thứ (2) thì không thu thập được (bị ẩn). Và chúng ta có thể giải mã nguồn thông tin thứ 2 qua xác xuất và suy luận.

Xác suất có điều kiện (conditional probability) và ví dụ bằng Java

Xác suất có điều kiện là bài toán dùng để tính một sự kiện B có (hoặc không) khả năng xảy ra khi biết rằng sự kiện A đã xảy ra. Công thức dùng để tính xác xuất có điều kiện là P(B|A).

Automata không có gì khó hiểu!

Khi nhắc đến Lý thuyết tính toán (Theory of Computation) nghĩa là chúng ta đang bàn đến một nhánh của Khoa học máy tính (Coputer Science), lĩnh vực có thể giải quyết các vấn đề tính toán bằng cách sử dụng thuật toán (algorithm) và các mô hình tính toán (model of computation).