boo and replace-string "\\ldots" "\\ldots{}"
[vspell.git] / thesis / main.tex
blob5396da45b625addb01949ab6a931104404fc8b49
1 \documentclass[a4paper,oneside,12pt]{book} % -*- coding: vietnamese-utf8 mode: latex -*-
2 \usepackage[utf8]{vietnam}
3 \renewcommand{\rmdefault}{utm}
4 \renewcommand{\sfdefault}{uhv}
5 \renewcommand{\ttdefault}{ucr}
7 \usepackage[hmargin={2cm,2.5cm}]{geometry}
8 \usepackage{graphicx}
9 \usepackage{amsmath}
10 \usepackage[vietnam]{minitoc}
11 \usepackage{tabularx}
12 \usepackage{footnote}
13 \usepackage{tipa}
14 \usepackage{subfigure}
16 \usepackage{theorem}
17 \theoremstyle{break}
18 \newtheorem{algo}{Thuật toán}
20 \setlength{\parskip}{1.6ex plus 0.7ex minus 0.6ex}
22 \setcounter{minitocdepth}{4}
24 \newcommand{\note}[1]{\underline{#1}}
25 \newcommand{\comment}[1]{}
27 \title{Chương trình bắt lỗi chính tả tiếng Việt}
28 \author{Nguyễn Thái Ngọc Duy\\0012020}
30 \begin{document}
31 \dominitoc
32 %\doparttoc
33 \maketitle
35 \begin{titlepage}
36 \begin{center}
37 \Large Lời cảm ơn
38 \end{center}
39 Xin chân thành cám ơn TS. Đinh Điền và các thành viên trong nhóm VCL
40 đã hỗ trợ hoàn thành luận văn này.
41 \begin{flushright}
42 Nguyễn Thái Ngọc Duy
43 \end{flushright}
44 \end{titlepage}
46 \tableofcontents
47 %\listoffigures
48 %\listoftables
49 %\large%
51 %% \chapter{Giới thiệu}
52 %% \label{cha:intro}
53 %% \begin{center}
55 %% I kept the right ones out
57 %% And let the wrong ones in
59 %% Had an angel of mercy
61 %% To see me through all my sins
63 %% There were times in my life
65 %% When I was goin' insane
67 %% Tryin' to walk through the pain
69 %% ****
71 %% And when I lost my grip
73 %% And I hit the floor
75 %% Yeah, I thought I could leave
77 %% But couldn't get out the door
79 %% I was so sick n' tired
81 %% Of livin' a lie
83 %% I was wishing that I would die
85 %% ****
87 %% It's amazing
89 %% With the blink of an eye
91 %% You finally see the light
93 %% It's amazing
95 %% That when the moment arrives
97 %% You know you'll be alright
99 %% It's amazing
101 %% And I'm saying a prayer
103 %% To the desperate hearts tonight
106 %% ****
109 %% That one last shot's a Permanent Vacation
111 %% And a how high can you fly with broken wings
113 %% Life's a journey - not a destination
115 %% And I just can't tell just what tomorrow brings
118 %% ****
121 %% You have to learn to crawl
123 %% Before you learn to walk
125 %% But I just couldn't listen
127 %% To all that righteous talk
129 %% I was out on the street
131 %% Just tryin' to survive
133 %% Scratchin' to stay alive
136 %% ****
139 %% ``To all of you people out there
141 %% Wherever you are - remember:
143 %% The light at the end of the tunnel
145 %% May be you - goodnight''
146 %%\end{center}
148 \chapter{Tổng quan}
149 \label{cha:overview}
150 \minitoc
153 Ngôn ngữ là một phần quan trọng của đời sống, là phương tiện chuyển
154 tải thông tin trong đời sống. Trong thời đại bùng nổ thông tin hiện
155 nay thì ngôn ngữ đóng vai trò hết sức quan trọng, đặc biệt là ngôn ngữ
156 viết.
158 % Tại sao lại làm đề tài này? (Đặt vấn đề)
159 Khi viết, đôi khi ta mắc phải những lỗi sai chính tả. Chữ quốc ngữ
160 chịu ảnh hưởng mạnh của ngôn ngữ nói. Một số âm tiết lại rất dễ
161 lầm lẫn, khó phân biệt rõ ràng. Ngôn ngữ nói ở những vùng khác nhau lại
162 có những dị biệt riêng. Những dị biệt này rất dễ gây ra
163 những lỗi chính tả khi viết nếu người viết không hiểu rõ về tiếng
164 Việt.
166 Những thao tác chuyển thông tin ở dạng khác thành văn bản cũng có thể
167 gây ra lỗi chính tả. Ví dụ, nếu nhập liệu không cẩn thận dẫn đến lỗi
168 sai chính tả. Khi ghi lại lời nói của người khác mà người đó sử dụng
169 giọng địa phương cũng có thể dẫn đến lỗi chính tả. Quét các văn bản
170 giấy thành văn bản điện tử, sử dụng chương trình nhận dạng chữ, cũng
171 có thể dẫn đến lỗi chính tả do chương trình nhận dạng nhầm lẫn~\ldots{}
173 Văn bản dễ bị sai chính tả do nhiều yếu tố khách quan. Để kiểm lỗi
174 chính tả những văn bản này đòi hỏi nhiều công sức và thời gian, đặc
175 biệt khi khối lượng văn bản bùng nổ như hiện nay. Do đó cần có một
176 công cụ hỗ trợ kiểm lỗi chính tả, giúp nhanh chóng phát hiện lỗi chính
177 tả và đề nghị cách khắc phục.
179 Trong thời đại tin học hoá, máy tính được tận dụng để giảm thiểu công
180 sức của con người, đồng thời tăng tính hiệu quả. Tin học đã được áp
181 dụng trong nhiều lĩnh vực khác nhau và chứng tỏ tính hiệu quả của
182 nó. Tuy nhiên, việc ứng dụng tin học nhằm hỗ trợ bắt lỗi
183 chính tả tiếng Việt chỉ mới được bắt đầu trong thời gian gần
184 đây. Những ứng dụng bắt lỗi chính tả hiện có vẫn còn khá đơn
185 giản, chưa đáp ứng được nhu cầu thực tế. Luận văn này đề ra một giải
186 pháp khác để bắt lỗi chính tả, với hy vọng góp phần nâng cao chất
187 lượng ứng dụng bắt lỗi chính tả tiếng Việt bằng máy tính.
189 \section{Nội dung bài toán}
191 Bài toán có thể được phát biểu như sau:
192 Cho một văn bản tiếng Việt. Tìm tất cả các từ sai chính tả trong văn bản
193 và đề nghị cách giải quyết lỗi nếu có.
195 % Phạm vi bài toán
197 Do ngôn ngữ là một lĩnh vực quá rộng. Việc bắt lỗi chính tả tiếng Việt
198 tổng quát là cực kỳ khó khăn. Do vậy đề tài này chỉ giới hạn bắt lỗi
199 chính tả trong các văn bản hành chính.
201 Chỉ sử dụng từ điển từ, từ điển tiếng và ngữ liệu thô làm đầu vào.
203 Khái niệm từ ở đây là ``từ từ điển'' --- tức là các từ đơn, từ ghép,
204 cụm từ được lưu trong từ điển.
206 Lỗi chính tả ở đây bao gồm chủ yếu hai loại lỗi sau:
207 \begin{itemize}
208 \item Lỗi nhập liệu sai: lỗi gõ thiếu chữ, gõ dư chữ, gõ nhầm vị trí
209 hai chữ liên tiếp nhau, gõ nhầm một chữ bằng một chữ khác, sai sót
210 do bộ gõ tiếng Việt~\ldots{}
211 \item Lỗi phát âm sai: chủ yếu là do đặc điểm phát âm của từng vùng,
212 dẫn đến sai chính tả khi viết.
213 \end{itemize}
215 Không xử lý lỗi từ vựng, lỗi cú pháp.
217 Giả định rằng, nếu từ bị sai chính tả, thì chỉ sai bởi một trong những
218 lý do nêu trên {\em một lần}. Nghĩa là không xét những trường hợp sai
219 chính tả, vừa gõ nhầm chữ này bằng chữ khác, vừa gõ dư chữ.
221 Giả định người dùng chỉ sử dụng một trong hai cách gõ tiếng Việt là
222 VNI hoặc TELEX.
224 Văn bản tiếng Việt được coi là thuần Việt. Không kiểm tra chính tả đối
225 với những từ nước ngoài. Những từ nước ngoài và các ký hiệu khác đều
226 bị coi là sai chính tả.
228 \section{Đặc điểm}
230 Bắt lỗi chính tả, xét từ quan điểm tin học, là một bài toán khó. Khó
231 bởi vì ngôn ngữ là một phần rất quan trọng của đời sống xã hội, nó bao
232 hàm rất nhiều khía cạnh của văn hoá, xã hội. Ngôn ngữ dùng để diễn đạt
233 suy nghĩ, chuyển tải thông tin, nên nó chứa đựng một khối lượng tri
234 thức đồ sộ. Để xử lý ngôn ngữ tự nhiên một cách đúng đắn đòi hỏi một
235 trình độ nhất định. Bởi vậy, việc giải quyết bài toán bắt lỗi chính tả
236 bằng máy tính là hết sức khó khăn.
238 Bắt lỗi chính tả đôi khi được mở rộng để phát hiện những lỗi khác
239 trong văn bản như lỗi cú pháp, lỗi từ vựng~\ldots{} Điều này cũng dễ
240 hiểu vì người sử dụng cần một chương trình giúp họ phát hiện và loại
241 bỏ tất cả các lỗi trong văn bản, không quan trọng lỗi đó thuộc loại
242 lỗi nào. Thông thường những lỗi từ vựng thường bị nhầm lẫn với lỗi
243 chính tả, buộc chương trình bắt lỗi chính tả phải phát hiện cả lỗi từ
244 vựng. Đây là một vấn đề khó vì để bắt lỗi từ vựng, đôi khi cần phải
245 hiểu nội dung cả văn bản.
247 Nếu tìm hiểu sâu hơn về bài toán này, ta lại gặp một khó khăn khác do
248 bản chất của tiếng Việt. Đối với tiếng Việt, cũng như một số
249 ngôn ngữ châu Á khác, một từ chính tả có thể không tương ứng với một
250 ``từ'' trên văn bản. Đối với các thứ tiếng châu Âu, ta có thể dễ dàng
251 nhận ra một từ, do các từ được phân cách bằng khoảng trắng. Điều đó
252 không đúng với tiếng Việt. Trong tiếng Việt, các tiếng được phân cách
253 bởi khoảng trắng, không phải các từ. Điều này dẫn đến một bài toán
254 mới: tách từ trong tiếng Việt. Do tiếng Việt là ngôn ngữ nói sao viết
255 vậy, nên rất ít khi gặp lỗi sai về tiếng. Đa số các lỗi chính tả là
256 lỗi sai từ, nên việc xác định đâu là từ cực kỳ quan trọng.
258 Vấn đề càng trở nên khó khăn hơn khi phải thực hiện cùng lúc hai bài
259 toán là tách từ tiếng Việt và kiểm tra chính tả. Thật sự là tách từ
260 tiếng Việt trước, sau đó bắt lỗi chính tả. Tuy nhiên, do khi tách từ
261 thường ngầm định là dữ liệu đúng chính xác. Nên khi phải tách từ trước
262 bước kiểm tra chính tả, ngầm định trên không còn đúng. Bài toán tách
263 từ trở thành một bài toán khác, phức tạp hơn.
265 Do tài nguyên ngữ liệu tiếng Việt, đặc biệt là ngữ liệu tiếng Việt
266 trên máy tính vẫn còn hạn chế, đề tài này chỉ sử dụng các cách hình
267 thành lỗi chính tả, từ điển từ tiếng Việt và ngữ liệu văn bản dạng
268 thô. Việc không thể áp dụng được những thông tin cấp cao hơn như từ
269 loại, cú pháp, ngữ nghĩa~\ldots{} sẽ làm hạn chế đáng kể khả năng của
270 chương trình.
272 %% Dùng sai từ là lỗi từ vựng
274 \section{Hướng giải quyết}
276 % Bối cảnh %%%%Nổ thêm về bối cảnh ở đây. Cố để lấn qua trang kế%%%
278 Bài toán bắt lỗi chính tả đã được tìm hiểu từ rất lâu. Tuy nhiên đa số
279 đều tập trung vào các ngôn ngữ phổ dụng ở châu Âu. Trong khi đó các ngôn
280 ngữ châu Á, đặc biệt là tiếng Việt, có những đặc trưng riêng, đặt ra
281 nhiều thách thức mới. Bài toán bắt lỗi chính tả trên các ngôn ngữ châu
282 Á như tiếng Trung Quốc, tiếng Hàn Quốc, tiếng Nhật, tiếng Thái và tiếng Việt
283 chỉ bắt đầu được nghiên cứu gần đây.
285 Đối với các ngôn ngữ châu Âu, cách giải quyết đơn giản là dựa vào từ
286 điển. Nếu một từ trên văn bản không có trong từ điển nghĩa là từ đó
287 sai chính tả.
289 Đối với các ngôn ngữ như tiếng Trung Quốc, tiếng Nhật~\ldots{}, nhiều
290 giải pháp được đề ra để giải quyết bài toán. Tuy nhiên hầu hết các
291 giải pháp đều dựa trên ý tưởng áp dụng tập nhầm lẫn để phát sinh các
292 từ gần đúng, sau đó sử dụng mô hình ngôn ngữ để định lượng, xác định
293 xem từ nào là đúng nhất.
296 Đề tài này áp dụng cách giải quyết truyền thống, so sánh từ dựa trên
297 từ điển. Nếu từ không có trong từ điển nghĩa là sai chính tả, từ đó
298 đưa ra những gợi ý thích hợp.
300 Bài toán đặt ra một bái toán con khác là tách từ tiếng Việt trong điều
301 kiện văn bản bị sai chính tả. Cách giải quyết bài toán này là phát sinh
302 mọi cách tách từ có thể, sử dụng tập nhầm lẫn, và sau đó áp dụng mô hình
303 ngôn ngữ để tìm ra cách tách từ đúng nhất. Tập nhầm lẫn được phát sinh
304 dựa vào nguồn gốc gây lỗi. Các lỗi về phát âm sẽ dựa trên các thói
305 quen phát âm của từng vùng để tạo tập nhầm lẫn. Các lỗi về nhập liệu
306 sẽ dựa trên các nghiên cứu về lỗi nhập liệu để đưa ra tập nhầm lẫn
307 tương ứng.
310 \section{Bố cục luận văn}
312 Luận văn được chia thành các chương sau:
313 \begin{itemize}
314 \item Chương 1 giới thiệu chung về luận văn, các vấn đề cần giải
315 quyết, đặc điểm, phạm vi của bài toán và hướng giải quyết.
316 \item Chương 2 trình bày cơ sở lý thuyết ngôn ngữ học.
317 \item Chương 3 trình bày cơ sở lý thuyết toán học/tin học. Các mô hình
318 được áp dụng để giải quyết bài toán.
319 \item Chương 4 trình bày mô hình đề nghị cho bắt lỗi chính tả tiếng Việt.
320 \item Chương 5 trình bày các chi tiết khi cài đặt chương trình.
321 \item Chương 6 tóm tắt luận văn, các kết quả đạt được, tìm hiểu các
322 đặc điểm của mô hình cũng như chương trình cài đặt, các hạn chế và
323 các hướng giải quyết trong tương lai.
324 \item Phần phụ lục trình bày XXX.
325 \end{itemize}
327 \chapter{Cơ sở lý thuyết ngôn ngữ}
328 \label{cha:vietnamese}
329 \minitoc
332 \section{Âm tiết}
334 Ngôn ngữ là một hệ thống tín hiệu. Khi nói, vỏ vật chất của tín hiệu
335 là âm thanh, khi viết nó được thể hiện bằng chữ. Không phải chữ viết
336 lúc nào cũng phản ánh chính xác các âm tố tương ứng. Vì vậy, các âm tố
337 được biểu diễn bằng những ký hiệu đặc biệt, gọi là phiên âm. Các ký
338 hiệu phiên âm thường đặt giữa \textipa{/\quad/} hoặc
339 \textipa{[\quad]}.
341 Âm thanh trong tự nhiên được tạo thành nhờ sự rung động của một vật
342 thể đàn hồi. Âm thanh của tiếng nói được hình thành nhờ ``bộ máy phát
343 âm'' của con người --- bao gồm môi, răng, lưỡi, khoang miệng, khoang
344 mũi, yết hầu, thanh hầu, phổi~\ldots{}. Ngoài ra, tai người chỉ có thể
345 tiếp nhận một khoảng âm thanh nhất định. Những chấn động không nghe
346 được gọi là siêu âm và âm ngoại.
348 Âm học phân biệt các âm thanh theo những đặc trưng khác nhau, bao gồm:
349 độ cao, độ mạnh, độ dài. Độ cao phụ thuộc vào tần số dao động. Tần số
350 dao động càng lớn thì âm thanh càng cao. Tai người có khả năng nhận
351 biết độ cao trong khoảng từ 16 đến 20.000 $H_z$. Độ mạnh (cường độ)
352 phụ thuộc vào biên độ dao động. Biên độ càng lớn, âm thanh càng
353 to. Cường độ âm thanh trong ngôn ngữ đảm bảo sự xác minh trong giao tế
354 và là cơ sở để tạo thành các kiểu trọng âm khác nhau. Độ dài (trường
355 độ) là khoảng thời gian kéo dài của âm thanh. Ngôn ngữ chỉ quan trọng
356 thời gian tương đối của âm thanh. Ví dụ, các nguyên âm có trọng âm
357 thường dài hơn nguyên âm không có trọng âm.
360 \subsection{Nguyên âm và phụ âm}
362 Các âm tố có thể chia thành nguyên âm và phụ âm, dựa vào các đặc điểm
363 âm học, cấu âm và vai trò trong cấu tạo âm tiết.
365 Nguyên âm có đặc điểm cấu tạo:
366 \begin{itemize}
367 \item Luồng hơi ra tự do, không bị cản trở, không có vị trí cấu âm.
368 \item Bộ máy phát âm căng thẳng toàn bộ.
369 \item Luồng hơi ra yếu.
370 \end{itemize}
372 Phụ âm có đặc điểm cấu tạo hoàn toàn trái ngược với nguyên âm:
373 \begin{itemize}
374 \item Luồng hơi bị cản trở do sự xuất hiện chướng ngại trên lối ra của
375 luồng không khí, chướng ngại thường xuất hiện ở các khoang trên
376 thanh hầu do các khí quan tiếp xúc nhau hay nhích gần nhau mà thành,
377 điểm có chướng ngại được gọi là vị trí cấu âm của phụ âm.
378 \item Bộ máy phát âm không căng thẳng toàn bộ mà sự căng thẳng cơ thịt
379 tập trung ở vị trí cấu âm.
380 \item Luồng hơi ra mạnh.
381 \end{itemize}
383 Nguyên âm và phụ âm có chức năng khác nhau trong cấu tạo âm tiết. Các
384 nguyên âm thường làm hạt nhân hay đỉnh của âm tiết, còn phụ âm thường
385 là yếu tố đi kèm, không tạo thành âm tiết (trừ các âm phụ vang).
387 Những âm tố có đặc tính giống nguyên âm nhưng thường chỉ đi kèm, bản
388 thân không tạo thành âm tiết được gọi là {\em bán nguyên âm}. Ví dụ,
389 các âm tố viết là u, i trong các âm ``sau'', ``mai'' trong tiếng Việt.
392 \subsection{Âm vị}
394 Âm vị là đơn vị nhỏ nhất của cơ cấu âm thanh ngôn ngữ, dùng để cấu tạo
395 và phân biệt hình thức ngữ âm của những đơn vị có nghĩa của ngôn ngữ
396 --- từ và hình vị. Ví dụ, các từ ``tôi'' và ``đôi'', ``ta'' và ``đa''
397 được phân biệt bởi các âm vị \textipa{/t/}\textipa{/d/}.
399 Âm vị là đơn vị nhỏ nhất, vì về mặt tuyến tính nó không thể phân chia
400 nhỏ hơn nữa. Nếu thay âm vị này bằng âm vị khác trong cùng một bối
401 cảnh ngữ âm sẽ làm cho từ thay đổi nghĩa hoặc mất nghĩa. Ví dụ, thay
402 âm \textipa{/t/} trong từ ``toàn'' bằng âm \textipa{/h/} sẽ được
403 ``hoàn'' có nghĩa khác, hoặc nếu thay bằng âm \textipa{/n/} sẽ được
404 ``noàn'' hoàn toàn vô nghĩa.
406 Âm vị có thể được so sánh như những viên gạch trong việc xây dựng mỗi
407 ngôn ngữ. Các viên gạch thường giống nhau, nhưng các âm vị về nguyên
408 tắc phải khác nhau, ít nhất ở một đặc trưng nào đó. Sự khác biệt này
409 tạo ra khác biệt về hình thức âm thanh của hình vị và từ, tạo ra tín
410 hiệu khác biệt đối với sự thụ cảm của con người. Vậy âm vị có hai chức
411 năng cơ bản là {\em chức năng khu biệt} (vỏ âm thanh của hình vị và
412 từ) và {\em chức năng cấu tạo} (chất liệu để cấu tạo nên
413 những thành tố của những đơn vị có nghĩa).
416 \subsection{Âm tiết}
418 Chuỗi lời nói của con người được chia ra làm những khúc đoạn khác
419 nhau, từ lớn đến nhỏ. Âm tiết là đơn vị phát âm nhỏ nhất, được phân
420 định tự nhiên trong lời nói con người.
422 Về phương diện phát âm, dù lời nói chậm đến đâu cũng chỉ phân chia đến
423 giới hạn của âm tiết mà thôi. Nhưng về phương diện thính giác thì âm
424 tiết là một tổ hợp âm thanh, có thể gồm nhiều âm tố hoặc đôi khi chỉ
425 có một âm tố. Mỗi âm tiết chỉ có một âm tố âm tiết tính (có khả năng
426 tạo thành âm tiết), còn lại là những yếu tố đi kèm, không tự mình tạo
427 thành âm tiết. Âm tố âm tiết tính thường được phân bố ở đỉnh hay ở
428 trung tâm, làm hạt nhân âm tiết, thường là các nguyên âm. Các phụ âm
429 thường là các yếu tố đi kèm, đứng ngoài biên, hay ở ranh giới của âm
430 tiết. Đôi khi âm tiết chỉ gồm một nguyên âm.
432 Trong một số trường hợp, âm tiết có thể có hai hoặc ba nguyên âm. Tuy
433 nhiên trong số đó chỉ có một nguyên âm tạo đỉnh, các âm tố khác không
434 tạo thành âm tiết, gọi là bán nguyên âm.
436 Âm tiết có một số chức năng sau:
437 \begin{itemize}
438 \item Âm tiết có chức năng tổ chức chất liệu âm thanh của ngôn ngữ
439 bằng cách hợp nhất các âm tố trong một đơn vị phát âm nhỏ nhất.
440 \item Âm tiết là môi trường để hiện thực hoá các hiện tượng ngôn điệu
441 như trọng âm, âm điệu.
442 \item Âm tiết có chức năng cấu thành tiết điệu của lời nói~\ldots{} Chức
443 năng này thể hiện rõ trong ngôn ngữ thơ.
444 \end{itemize}
446 Trong các ngôn ngữ âm tiết tính như tiếng Trung Quốc, tiếng Miến Điện,
447 tiếng Việt~\ldots{} nói chung âm tiết trùng với hình vị --- đơn vị cơ
448 bản của ngữ pháp. Âm tiết có chức năng là vỏ ngữ âm của hình vị, tạo
449 nên một đơn vị đặc biệt, gọi là {\em hình tiết}.
451 Tính chất âm tiết của tiếng Việt đưa đến nhiều hệ quả quan trọng về
452 ngữ âm cũng như về ngữ pháp. Về mặt ngữ âm, do mỗi âm tiết là vỏ ngữ
453 âm của một hình vị, và cũng thường là vỏ ngữ âm của từ đơn, nên số
454 lượng các âm tiết là hữu hạn\footnote{Theo Nguyễn Phan Cảnh ``tiếng
455 Việt đưa ra hơn 17.000 âm tiết --- tín hiệu với tự cách là vỏ ngữ âm
456 khả năng, và chỉ sử dụng hơn 6.900 với tư cách là các âm tiết tồn tại
457 thực'' (Nguyễn Phan Cảnh, ``Bản chất cấu trúc âm tiết tính của ngôn
458 ngữ: Dẫn luận vào một miêu tả không phân lập đối với âm vị học Việt
459 Nam, tạp chí ngôn ngữ, H. 1978, số 2)}.
461 Là vỏ ngữ âm của một hình vị hay một từ đơn, mỗi âm tiết Tiếng Việt
462 bao giờ cũng tương ứng với một ý nghĩa nhất định, nên việc phá vỡ cấu
463 trúc âm tiết trong ngữ lưu, tức xê dịch vị trí các âm tố (âm vị) của
464 cùng một hình vị từ âm tiết này sang âm tiết khác, là điều ít xảy
465 ra. Kết quả là trong tiếng Việt, âm tiết có một cấu trúc chặt chẽ, mỗi
466 âm tố (âm vị) có một vị trí nhất định trong âm tiết. Đứng đầu âm tiết
467 bao giờ cũng là một phụ âm, cuối âm tiết là một phụ âm hoặc một bán
468 nguyên âm. Phụ âm cuối luôn luôn ở cuối âm tiết, không thể trở thành
469 âm đầu được. Do đó, phụ âm cuối và âm đầu làm thành hai đối hệ khác
470 nhau, có vị trí và chức năng khác nhau trong cấu trúc âm tiết.
472 Một đặc điểm khác của âm tiết tiếng Việt là mỗi âm tiết đều mang
473 một thanh điệu nhất định. Việc thể hiện thanh điệu đòi hỏi âm tiết
474 phải có một trường độ cố định. Tính chất này làm cho các yếu tố bên
475 trong âm tiết, trừ phụ âm đầu, không có một trường độ cố định, mà đắp
476 đổi lẫn nhau, liên quan với nhau rất chặt chẽ.
479 \subsubsection{Cấu trúc âm tiết tiếng Việt}
481 Trên bình diện ngữ âm học, các cứ liệu thực nghiệm cho thấy âm tiết
482 Tiếng Việt được cấu tạo bởi ba thành tố độc lập là thanh điệu, phụ âm
483 đầu và phần còn lại.
485 Thanh điệu là yếu tố luôn có mặt trong mọi âm tiết tiếng Việt. Tính
486 chất độc lập về mặt ngữ âm của thanh điệu thể hiện ở chỗ nó có đường
487 nét và trường độ tương đối ổn định tùy thuộc vào các loại hình âm
488 tiết.
490 Phụ âm đầu là yếu tố mở đầu của âm tiết. Tính chất độc lập của phụ âm
491 đầu thể hiện ở chỗ nó không tham gia vào việc đắp đổi về trường độ
492 giữa các yếu tố bên trong âm tiết.
494 Phần còn lại của âm tiết có từ một đến ba yếu tố, gồm một bán nguyên
495 âm chiếm vị trí trung gian giữa phụ âm đầu và phần còn lại, một nguyên
496 âm âm tiết tính và một phụ âm hoặc bán nguyên âm cuối, có vai trò kết
497 thúc âm tiết. Trừ bán nguyên âm trước nguyên âm tiết tính, các yếu tố
498 của phần còn lại liên kết với nhau rất chặt chẽ, làm thành một
499 khối. Để đảm bảo cho tính chất cố định về trường độ của âm tiết, các
500 yếu tố của phần còn lại có sự đắp đổi nhau về trường độ: nếu nguyên âm
501 dài thì phụ âm hay bán âm cuối ngắn, ngược lại nếu nguyên âm ngắn thì
502 âm cuối dài. Các yếu tố của phần còn lại không có một trường độ cố
503 định, và do đó mức độ độc lập về mặt ngữ âm của chúng thấp hơn so với
504 phụ âm mở đầu âm tiết. Phần còn lại của âm tiết được gọi là phần vần,
505 vì đây là bộ phận đoạn tính kết hợp với thanh điệu tạo nên vần thơ.
507 Tóm lại, các yếu tố của âm tiết tiếng Việt có mức độ độc lập khác
508 nhau, chia làm hai bậc:
510 \begin{itemize}
511 \item Bậc một là những yếu tố độc lập về mặt ngữ âm và có thể được
512 tách rời về mặt hình thái học. Đó là thanh điệu, âm đầu và vần.
513 \item Bậc hai là các yếu tố của phần vần, gồm bán nguyên âm trước
514 nguyên âm âm tiết tính (được gọi là âm đệm), nguyên âm âm tiết tính
515 (được gọi là âm chính), phụ âm hoặc bán nguyên âm cuối (được gọi là
516 âm cuối). Các yếu tố này gắn liền với nhau về mặt ngữ âm do tính
517 chất cố định về trường độ của âm tiết và chỉ được tách ra bằng những
518 ranh giới thuần túy ngữ âm học.
519 \end{itemize}
521 Các thành tố của âm tiết tiếng Việt và quan hệ hai bậc giữa các thành
522 tố được trình bày trong hình~\ref{fig:cautrucamtiet}.
524 \begin{figure}[htbp]
525 \centering
526 \begin{tabular}{|c|c|c|c|}
527 \hline
528 \multicolumn{4}{|c|}{Thanh điệu}\\\hline
529 Âm đầu&\multicolumn{3}{c|}{Vần}\\\cline{2-4}
530 &Âm đệm&Âm chính&Âm cuối\\\hline
531 \end{tabular}
532 \caption{Cấu trúc âm tiết}
533 \label{fig:cautrucamtiet}
534 \end{figure}
536 %\subsection{Các hiện tượng liên quan đến âm tiết}
539 %\subsubsection{Nguyên âm đôi}
542 % Sự biến hoá ngữ âm
544 Khái niệm âm tiết liên quan mật thiết đến sự biến hoá ngữ âm. Vì các
545 âm tố lời nói không phát âm đơn lập mà được phát âm trong dòng lời nói
546 liên tục, cho nên các âm tố có thể ảnh hưởng lẫn nhau, đặc biệt là
547 những âm tố lân cận được phát âm trong cùng một âm tiết, hoặc ở những
548 âm tiết đi liền nhau. Một số hiện tượng biến hoá ngữ âm thường gặp
549 trong tiếng Việt:
550 \begin{itemize}
551 \item Sự thích nghi. Xuất hiện giữa phụ âm và nguyên âm đứng cạnh
552 nhau. Nếu âm tố sau biến đổi cho giống âm tố đi trước, đó là thích
553 nghi xuôi. Nếu âm tố trước biến đổi cho hợp với âm tố sau là thích
554 nghi ngược. Trong tiếng Việt, nguyên âm và phụ âm cuối kết hợp với
555 nhau rất chặt chẽ, tạo thành vần của âm tiết. Hiện tượng thích nghi
556 biểu hiện rõ rệt trong những vần có nguyên âm dòng trước và dòng sau
557 tròn môi kết hợp với phụ âm cuối ``ng'' và ``c''.
558 \item Sự đồng hoá (một yếu tố thay đổi để giống yếu tố kia). Ví dụ,
559 ``vỏn vẹn'' và ``vẻn vẹn''.
560 \item Sự dị hoá (hiện tượng rút gọn cho dễ phát âm). Ví dụ, ``ba mươi
561 mốt'' và ``băm mốt''.
562 \end{itemize}
564 \subsection{Phụ âm đầu}
566 Phụ âm đầu luôn gắn liền với vị trí và chức năng mở đầu âm tiết. Đi
567 sau âm đầu trong âm tiết là bán nguyên âm không thành âm tiết (hay còn
568 gọi là âm đệm).
570 Hệ thống phụ âm đầu tiếng Việt với số lưỡng đối lập âm vị học tối đa
571 được thể hiện trên chữ viết. Riêng những âm tiết như ``ăn'',
572 ``uống''~\ldots{} tuy không ghi phụ âm đầu, nhưng thực tế vẫn tồn tại
573 phụ âm đầu (âm tắt thanh hầu \textipa{/P/}). Trong từng phương ngữ,
574 một số đối lập có trên chữ viết có thể bị mất đi hoặc bị thay thế. Ví
575 dụ, trong tiếng Hà Nội không còn đối lập các phụ âm đầu giữa
576 ch--tr,x--s và gi,d với r. Trong tiếng miền Nam, \textipa{/v/}
577 \textipa{/z/} được thay bằng \textipa{/j/}.
579 Hiện nay, hệ thống phụ âm đầu được sử dụng thực tế trong nhà trường và
580 trên các văn bản, chung cho các phương ngữ, là hệ thống phụ âm đầu
581 hình thành trên cơ sở phát âm Hà Nội với sự phân biệt các phụ âm
582 ch--tr, x--s, g,gi--r gồm 22 phụ âm sau: \textipa{/b, m, f, v, t,
583 t\super{h}, d, n, s, z, l, \:t, \:s, \:z, c, \textltailn, k, N, x,
584 G, P, h/}\footnote{Phụ âm \textipa{/p/} gặp trong từ vay mượn hoặc
585 phiên âm tiếng nước ngoài, không được đưa vào hệ thống này}
587 Hệ thống phụ âm đầu của tiếng địa phương miền Bắc, mà cở sở là phát âm
588 Hà Nội có 19 phụ âm (kể cả âm tắc thanh hầu \textipa{/P/}). Trong phát
589 âm Hà Nội không có loạt phụ âm uốn lưỡi \textipa{/\:t, \:s, \:z/}. Các
590 phụ âm này đều được chuyển thành các âm đầu lưỡi hoặc mặt lưỡi tương
591 ứng \textipa{/c, s, z/}. Ví dụ,
592 \begin{itemize}
593 \item ``cha'' và ``tra'' đều phát âm thành ``cha'' \textipa{/ca/}
594 \item ``sa'' và ``xa'' đều phát âm thành ``xa'' \textipa{/sa/}
595 \item ``da'', ``gia'' và ``ra'' đều được phát âm thành ``da'' \textipa{/da/}
596 \end{itemize}
598 Trong các thổ ngữ vùng Bắc Trung Bộ (Nghệ Tĩnh --- Bình Trị Thiên) còn
599 giữ loạt các phụ âm cong lưỡi \textipa{/\:t, \:s, \:z/}. Ở một số nơi
600 thuộc Nghệ Tĩnh, phụ âm ``ph'' được phát âm như âm mặt lưỡi sau bật
601 hơi \textipa{/k\super{h}/}. Vì vậy hệ thống phụ âm đầu những nơi này
602 có thêm dãy âm bật hơi \textipa{/p\super{j}, \:t\super{h},
603 k\super{h}/}. Trong khi đó các thổ ngữ miền Bắc và miền Nam chỉ còn
604 lại một âm bật hơi \textipa{/t\super{h}/} mà thôi. Vùng Bình Trị Thiên
605 không có phụ âm ``nh''. Phụ âm này thường được phát âm thành
606 \textipa{/j/}. Ví dụ, ``nhà'' được phát âm thành ``dà''. Nếu coi hệ
607 thống phụ âm đầu vùng Vinh là đại diện cho phương ngự Bắc Trung Bộ thì
608 hệ thống này có 22 phụ âm đầu.
610 Hệ thống phụ âm đầu miền Nam (từ đèo Hải Vân trở vào) không có các phụ
611 âm xát hữu thanh \textipa{/v, z/}. Tương ứng với \textipa{/v, z/}
612 trong phát âm Hà Nội, phát âm miền Nam có phụ âm mặt lưỡi giữa
613 \textipa{/j/}. Đôi khi âm \textipa{/v/} được phát âm thành âm môi-môi,
614 xát, vang ngạc hoá \textipa{/Bj/}. Hiện nay các âm cong lưỡi đang
615 trong quá trình biến đổi trong tiếng miền Nam. Phụ âm \textipa{/\:s/}
616 là phụ âm ít bền vững nhất thường được phát âm thành
617 \textipa{/s/}. Các phụ âm cong lưỡi khác như \textipa{/\:t/}
618 \textipa{/\:z/} vẫn còn giữ lại, phân biệt với \textipa{/c/}
619 \textipa{/j/} nhưng không đều đặn ở các thổ ngữ. Trong phát âm miền
620 Nam có phụ âm đầu \textipa{/w/}\footnote{Giá trị âm vị học của
621 \textipa{/w/} là vấn đề còn đang bàn cãi} xát, môi-môi, tương ứng
622 với các phụ âm tắc, lưỡi sau và thanh hầu tiếng Bắc khi kết hợp với âm
623 đệm \textipa{/-u-/}. Ví dụ, ``qua'' \textipa{/wa/}, ``ngoại''
624 \textipa{/wai/}, hoa \textipa{/wa/}. Nếu lấy hệ thống phụ âm đầu của
625 tiếng thành phố Hồ Chí Minh làm cơ sở cho phương ngữ miền Nam thì hệ
626 thống này có 21 phụ âm đầu.
629 \subsubsection{Quan hệ phân bố giữa phụ âm đầu và âm đệm}
631 Âm đệm là thành tố đi sau phụ âm đầu trong âm tiết. Trong tiếng Việt
632 chỉ có một âm đệm là \textipa{/-u-/}, thể hiện trên chữ viết bằng hai
633 chữ ``u'' và ``o''. Ví dụ, ``hoa'', ``quế''. Trong phát âm, âm đệm chỉ
634 được thể hiện ở tiếng địa phương miền Bắc và Bắc Trung Bộ, còn trong
635 tiếng địa phương miền Nam thường không có âm đệm \textipa{/-u-/}.
637 Trong phát âm Hà Nội, hầu hết loạt phụ âm lưỡi và thanh hầu có thể
638 phân bố trước âm đệm. Ví dụ, ``toa'', ``đoán'', ``nhoà''~\ldots{} Riêng
639 loạt âm môi \textipa{/b, m, v, f/} không phân bố trước âm đệm
640 \textipa{/-u-/} vì chúng có cấu âm môi giống nhau. Trong tiếng Việt,
641 hễ những âm có cấu âm giống nhau hay tương tự nhau thì không phân bố
642 cạnh nhau.
644 Ngoài các âm môi, một vài phụ âm lưỡi như \textipa{/n, \:z, G/} cũng
645 rất ít xuất hiện trước âm đệm.
647 \subsection{Vần}
650 \subsubsection{Âm đệm}
652 Trong âm tiết, âm đệm \textipa{/-u-/} đứng sau phụ âm đầu và đứng
653 trước âm chính. Nó đóng vai trò một âm lướt trong kết cấu âm tiết. Về
654 mặt cấu âm, âm đệm \textipa{/-u-/} được phát âm giống như nguyên âm
655 \textipa{[u]} nhưng không làm đỉnh âm tiết. Đó là một bán nguyên âm
656 môi-ngạc mềm, được phiên âm là \textipa{[-u-]} hay
657 \textipa{[-w-]}. Động tác cấu âm này diễn ra đồng thời với các giai
658 đoạn phát âm của phụ âm đầu và phần vần đầu của nguyên âm làm âm
659 chính. Về mặt âm học, âm đệm \textipa{/-u-/} có tác dụng làm biến đổi
660 âm sắc của âm tiết, làm trầm hoá âm sắc của âm tiết.
662 Âm đệm \textipa{/-u-/}, với tính chất là một bán nguyên âm môi-ngạc
663 mềm, có độ mở rộng hay hẹp tương ứng với độ mở của nguyên âm đi sau
664 nó. Trước nguyên âm hẹp \textbf{i}, âm đệm \textipa{/-u-/} được thể
665 hiện bằng một bán âm hẹp tương ứng là \textipa{[u]}, ví dụ
666 ``tuy''. Trước các nguyên âm có độ mở trung bình \textbf{ê, ơ, â}, âm
667 đệm \textipa{/-u-/} được thể hiện bằng một bán âm độ mở vừa
668 \textipa{[o]}, ví dụ ``khuê'', ``huơ'', ``huân''. Trước các nguyên âm
669 có độ mở rộng \textbf{e, a, ă}, âm đệm \textipa{/-u-/} được thể hiện
670 bằng một bán âm có độ mở tương ứng là \textipa{[O]}, ví dụ ``khỏe'',
671 ``khoắn'', ``khoan''.
673 Âm đệm \textipa{/-u-/} xuất hiện phần lớn ở các từ gốc Hán như
674 ``thuyền'', ``loan'', ``uyên''. Về mặt phân bố, như đã nói, âm đệm có
675 thể xuất hiện sau hầu hết các phụ âm đầu, trừ các phụ âm môi
676 \textipa{/b, m, f, v/}. Sau các phụ âm môi, âm đệm chỉ có mặt trong
677 một ít từ phiên âm tiếng nước ngoài như ``buýt'', ``phuy'',
678 ``voan''. Ngoài ra, sau các phụ âm \textipa{/n, \:z, G/}, âm đệm
679 \textipa{/-u-/} cũng chỉ xuất hiện trong một vài từ như ``noãn'',
680 ``roa'', ``goá''.
682 Âm đệm \textipa{/-u-/} cũng không xuất hiện trước các nguyên âm tròn
683 môi \textbf{u, uô, ô, o}. Sự phân bố của âm đệm sau phụ âm đầu và
684 trước các nguyên âm thể hiện một quy luật của ngữ âm tiếng Việt: các
685 âm có cấu âm giống nhau hoặc gần gũi nhau không được phân bố cạnh
686 nhau.
688 Về mặt chữ viết, âm đệm \textipa{/-u-/} được ghi bằng con chữ ``o''
689 trước ba nguyên âm rộng \textbf{e, a, ă} và được ghi bằng con chữ
690 ``u'' trước các nguyên âm còn lại. Ví dụ, ``thuý'', ``thuê'', ``loe'',
691 ``loa''. Riêng trường hợp sau phụ âm đầu \textipa{/k-/}, âm đệm
692 \textipa{/-u-/} luôn được ghi bằng con chữ ``u'' dù sau nó là nguyên
693 âm rộng. Ví dụ: ``quạ'', ``quý'' (trong những trường hợp này âm
694 \textipa{/k-/} được ghi bằng con chữ ``q'')\footnote{Do đó về mặt chữ
695 viết, sau con chữ ``q'', con chữ ``u'' luôn luôn có giá trị là một
696 âm đệm. Điều này giúp ta phân biệt ``ua'' là một nguyên âm đôi trong
697 từ ``của'' với ``ua'' trong tổ hợp âm đệm+nguyên âm trong
698 ``quả''. Riêng trường hợp ``quốc'' thì ``uô'' là nguyên âm đôi nhưng
699 \textipa{/k-/} vẫn được ghi bằng ``q''. Sự phân biệt về mặt con chữ ở
700 đây có giá trị phân biệt nghĩa hai từ đồng âm ``cuốc'' và ``quốc'' đều
701 được phát âm là \textipa{/kuok/}.}.
703 Âm đệm \textipa{/-u-/}, vốn là yếu tố có mặt trong phương ngữ Bắc và
704 Bắc Trung Bộ, lại hoàn toàn vắng mặt trong phương ngữ Nam Bộ. Do đó,
705 cấu trúc âm tiết của phương ngữ Nam Bộ chỉ có ba thành phần đoạn tính:
706 âm đầu, âm chính, âm cuối.
708 Sự vắng mặt của âm đệm trong phương ngữ Nam Bộ có thể đưa đến một số
709 biến đổi ở âm đầu và âm chính. Đáng chú ý là sự biến đổi của các phụ
710 âm mặt lưỡi sau và thanh hầu, thành các phụ âm môi. Ví dụ, ``hoa''
711 thành ``wa'', khuya thành ``phia''.
713 Hiện nay dưới sự ảnh hưởng của ngôn ngữ văn học, đã thấy xuất hiện âm
714 đệm sau các phụ âm đầu lưỡi, mặt lưỡi giữa và mặt lưỡi sau trong cách
715 phát âm của tầng lớp trí thức, của giới trẻ, trừ trường hợp hai phụ âm
716 thanh hầu \textipa{/h-,P-/} và phụ âm mặt lưỡi sau \textipa{/k-/}, vẫn
717 được phát âm thành \textipa{[w-]} trong các từ ``hoa'', ``oa'',
718 ``qua'' (đều phát âm là \textipa{[wa]}).
720 \subsubsection{Âm chính}
722 Âm chính trong âm tiết tiếng Việt có thể là một nguyên âm đơn hoặc một
723 nguyên âm đôi.
726 \paragraph{Nguyên âm đơn}
728 Tiếng Việt có 11 nguyên âm đơn làm âm chính. Căn cứ vào vị trí lưỡi,
729 hình dáng môi, các nguyên âm đơn được chia ra:
730 \begin{itemize}
731 \item Các nguyên âm giòng trước không tròn môi: \textipa{/i, e, E/}.
732 \item Các nguyên âm giòng sau không tròn môi: \textipa{/W, 7, \v{7},
733 a, \v{a}/}.
734 \item Các nguyên âm giòng sau tròn môi: \textipa{/u, o, O/}.
735 \end{itemize}
737 Căn cứ vào độ mở miệng, có thể chia thành:
738 \begin{itemize}
739 \item Các nguyên âm có độ mở miệng hẹp: \textipa{/i, W, u/}.
740 \item Các nguyên âm có độ mở trung bình: \textipa{/e, 7, \v{7}, o/}.
741 \item Các nguyên âm có độ mở rộng: \textipa{/E, a, \v{a}, O/}.
742 \end{itemize}
744 Căn cứ vào âm sắc, có thể chia ra:
745 \begin{itemize}
746 \item Các nguyên âm bổng: \textipa{/i, e, E/}.
747 \item Các nguyên âm trung bình: \textipa{/W, 7, \v{7}, a, \v{a}/}.
748 \item Các nguyên âm trầm: \textipa{/u, o, O/}.
749 \end{itemize}
751 Căn cứ vào trường độ, có thể chia ra:
752 \begin{itemize}
753 \item Các nguyên âm dài: \textipa{/i, e, E, W, 7, a, u, o, O/}.
754 \item Các nguyên âm ngắn: \textipa{/\v{7}, \v{a}/}.
755 \end{itemize}
758 \paragraph{Nguyên âm đôi}
760 Ngoài 11 nguyên âm đơn, còn có 3 nguyên âm đôi âm vị tính là
761 \textipa{/ie, W7, uo/}.
763 \subsubsection{Âm cuối}
765 Âm cuối là yếu tố kết thúc âm tiết. Các âm tiết trong tiếng Việt có
766 thể kết thúc bằng cách biến đổi âm sắc của âm chính do động tác khép
767 lại của bộ máy phát âm, làm cho nó bổng hơn hoặc trầm hơn. Âm cuối
768 trong trường hợp này là hai bán nguyên âm \textipa{/-u/}
769 \textipa{/-i/}. Âm tiết tiếng Việt còn có thể kết thúc bằng động tác
770 khép của bộ máy phát âm với một phụ âm tắc (mũi hoặc miệng).
772 Hệ thống âm cuối trong tiếng Việt gồm có 2 bán nguyên âm và 6 phụ
773 âm. Sau phụ âm bao gồm: \textipa{/m, p, n, t, N, k/}.
776 \subsubsection{Quy luật phân bố của các âm cuối sau âm chính}
778 Về mặt phân bố, các bán nguyên âm cuối \textipa{/-u/}
779 \textipa{/-i/} chỉ xuất hiện sau các nguyên âm không cùng âm sắc với
780 nó. Bán nguyên âm cuối \textipa{/-i/} chỉ xuất hiện sau các bán nguyên
781 âm không phải giòng trước. Bán nguyên âm cuối \textipa{/-u/} chỉ xuất
782 hiện sau các bán nguyên âm không tròn môi. Sự kết hợp giữa nguyên âm
783 và bán nguyên âm cuối, giống như sự kết hợp giữa âm đệm và nguyên âm
784 làm âm chính, tuân theo quy luật dị hoá. Theo đó, các âm có cấu âm
785 giống nhau hoặc gần nhau không bao giờ được phân bố cạnh nhau.
787 Có thể hình dung khả năng kết hợp giữa nguyên âm làm âm chính với hai
788 bán nguyên âm cuối \textipa{/-i/}\textipa{/-u/} như sau:
789 \begin{itemize}
790 \item Các nguyên âm có thể đứng trước bán nguyên âm \textipa{/-i/} bao
791 gồm các âm biểu hiện bởi các chữ: ư, ươ, ơ, â, a, ă, u, uô, ô, o.
792 \item Các nguyên âm có thể đứng trước bán nguyên âm \textipa{/-u/} bao
793 gồm các âm biểu hiện bởi các chữ: i, iê, ê, e, ư, ươ, ơ, â, a, ă.
794 \end{itemize}
796 Các phụ âm cuối khác, nói chung được phân bố đều đặn sau các nguyên
797 âm, trừ hai âm cuối mũi \textipa{/-m, -p/} không xuất hiện sau
798 \textipa{/W/}.
801 \subsubsection{Sự thể hiện của nguyên âm và phụ âm trong các tiếng địa
802 phương}
804 Trong phương ngữ Nam Bộ, các nguyên âm đôi \textipa{/ie, W7, uo/} khi
805 kết hợp với các âm cuối \textipa{/-i, -u, -m, -p/} được thể hiện thành
806 các nguyên âm đơn \textipa{/i, W, u/}. Ví dụ, ``chuối'' --- ``chúi'',
807 ``bưởi'' --- ``bửi'', ``tiếp'' --- ``típ''.
809 Ở một vài địa phương thuộc phương ngữ Trung Bộ, các nguyên âm đôi được
810 thể hiện bằng các nguyên âm cùng dòng, độ mở rộng. Ví dụ, ``người''
811 --- ``ngài'', ``ruột'' --- ``rọt'', ``miếng'' --- ``méng''.
813 Hai phụ âm cuối \textipa{/-n, -t/} được thể hiện thành \textipa{/-N,
814 -k/} trong phương ngữ Nam Bộ, khi chúng đi sau các nguyên âm đơn và
815 đôi, trừ \textipa{/i, e/} là hai nguyên âm giòng trước, độ mở hẹp và
816 trung bình. Ví dụ, ``đen'' -- ``đeng'', ``đét'' --- ``đéc''.
818 Sau ba nguyên âm giòng trước \textipa{/i, e, E/}, hai phụ âm
819 \textipa{/-N, -k/} được thể hiện trong các phương ngữ Nam Bộ thành
820 \textipa{/-n, -t/}, đồng thời các nguyên âm này có cấu âm lui về phía
821 sau nhiều hơn so với các nguyên âm trong phương ngữ Bắc Bộ, trở thành
822 các nguyên âm giòng giữa nghe gần giống như ư, ơ (hoặc â) và ă.
824 Điểm đáng lưu ý là trong phương ngữ Nam Bộ, sau \textipa{/i, e/} hai
825 âm cuối \textipa{/-n, -t/} vẫn được phát âm không đổi. Sự khác biệt
826 trong các vần này giữa phương ngữ Bắc Bộ và Nam Bộ xảy ra ở nguyên âm.
828 Trong phương ngữ Nam Bộ không có các âm cuối \textipa{/-\textltailn,
829 -c/}. Âm cuối này được phát âm thành \textipa{/-n, -t/}.
831 \subsection{Thanh điệu}
833 Thanh điệu là đặc trưng ngôn điệu của âm tiết. Người ta gọi thanh điệu
834 là âm vị siêu đoạn tính. Số lượng thanh điệu trong tiếng Việt khác
835 nhau giữa các tiếng địa phương. Số lượng nhiều nhất là 6 thanh trong
836 phát âm Hà Nội, hay trong các tiếng Bắc nói chung, và được phản ánh
837 trên chữ viết. Đó là các thanh: sắc, huyền, ngã, hỏi, nặng, và thanh
838 không dấu.
840 Trong các tiếng địa phương từ Thanh Hoá trở vào Nam thường chỉ có năm
841 thanh, thanh ngã trùng với thanh hỏi (trong một số vùng Thanh Hoá,
842 tiếng Bình Trị Thiên, Nam Trung Bộ và Nam Bộ), hoặc thanh ngã trùng
843 với thanh nặng (trong tiếng vùng Nghệ An, Hà Tĩnh). Ngoài ra trong một
844 vài thổ ngữ lẻ tẻ ở Nghệ An và Quảng Bình chỉ có 4 thanh điệu.
847 \subsubsection{Sự phân bố của thanh điệu}
849 Như đã biết, thanh điệu là đặc tính siêu đoạn của âm tiết. Các đặc
850 trưng của thanh điệu được thể hiện đồng thời với các thành phần cấu
851 trúc khác của âm tiết. Vì vậy, trong chừng mực nào đó nó bị chế định
852 bởi các thành phần này.
854 Về mặt âm vị học, âm tiết tiếng Việt trước hết được chia thành hai đơn
855 vị là phụ âm đầu và vần. Phần vần, trong đó có nguyên âm, là phân luôn
856 luôn mang thanh tính của âm tiết. Các đặc điểm về âm vực và âm điệu
857 của thanh điệu chỉ được biểu hiện trong phần mang thanh tính mà
858 thôi. Vì vậy, trong sự đối lập và thống nhất các thanh điệu, phần vần
859 đóng vai trò quan trọng. Phụ âm đầu hầu như không đóng vai trò gì
860 trong sự đối lập các thanh. Về mặt ngữ âm, đặc tính của thanh điệu
861 cũng hầu như không lan truyền lên phụ âm đầu, hoặc có chăng (trong
862 trường hợp phụ âm đầu hữu thanh) thì trong đoạn đầu của âm tiết, các
863 đặc trưng khu biệt của thanh điệu cũng chưa thể hiện rõ.
865 Phần vần có thể bao gồm âm đệm, một âm chính và có thể có bán nguyên
866 âm hoặc phụ âm cuối. Sự khác nhau của thanh điệu biểu hiện tập trung ở
867 giữa và cuối vần (tức phần nguyên âm và phụ âm cuối).
870 Trong các vần không có âm cuối, có âm cuối là bán nguyên âm hoặc phụ
871 âm vang, các đặc trưng của thanh điệu được thể hiện dễ dàng.
872 Với các vần kết thúc bằng các phụ âm cuối vô thanh, khép, các đặc
873 trưng của thanh được biểu hiện rất hạn chế.
874 Có thể nói rằng, trong mối quan hệ với các thành phần chiết đoạn của
875 âm tiết, thanh điệu bị sự chế định rõ ràng nhất của âm cuối. Vì vậy sự
876 phân bố của thanh điệu trong âm tiết phụ thuộc vào loại hình kết thúc
877 âm tiết.
879 Số lượng các thanh điệu xuất hiện trong những âm tiết kết thúc bằng
880 phụ âm cuối vô thanh rất hạn chế, thường chỉ có thể có thanh sắc hoặc
881 thanh nặng.
883 Thanh sắc và thanh nặng trong những âm tiết có âm cuối vô thanh có
884 những đặc điểm riêng về độ dài và đường nét âm điệu khác với thanh sắc
885 và thanh nặng trong các âm tiết còn lại. Vì vậy trước đây đã từng có
886 quan niệm cho rằng các thanh điệu trong các âm tiết có âm cuối vô
887 thanh là những thanh điệu đặc biệt, tạo thành hệ thống 8 thanh điệu:
888 tan, tàn, tãn, tản, tán, tạn, tát, tạt.
893 \section{Từ}
895 Khái niệm từ, mặc dù nghe qua rất thông dụng, dễ hiểu, nhưng định
896 nghĩa chính xác thế nào là từ không đơn giản. Từ trước đến nay đã có
897 nhiều định nghĩa về từ được đưa ra. Các định nghĩa đều đúng, tuy nhưng
898 không hoàn chỉnh. Viện sĩ L. V. Sherba thừa nhận rằng: ``Trong thực
899 tế, từ là gì? Thiết nghĩ rằng trong các ngôn ngữ khác nhau, từ sẽ khác
900 nhau. Do đó, tất sẽ không có khái niệm từ nói chung''\footnote{Nguyễn
901 Kim Thản, {\em Nghiên cứu ngữ pháp tiếng Việt}. NXB GD, 1997. Trang 28}.
902 Chính vì tính đa dạng và phức tạp của từ mà một số nhà ngôn ngữ học
903 chối bỏ khái niệm từ, hoặc né tránh định nghĩa từ một cách chính
904 thức. Nhà ngôn ngữ học Ferdinand de Saussure đã nhận xét: ``\ldots{}
905 Ngôn ngữ có tính chất kỳ lạ và đáng kinh ngạc là không có những thực
906 thể thoạt nhìn có thể thấy ngay được, thế nhưng người ta vẫn biết chắc
907 là nó tồn tại, và chính sự giao lưu giữa những thực thể đó đã làm
908 thành ngôn ngữ. Trong số những thực thể đó có cái mà ngôn ngữ học vẫn
909 gọi là từ.''. Theo ông thì ``\ldots{} Từ là một đơn vị luôn luôn ám ảnh
910 toàn bộ tư tưởng chúng ta như một cái gì đó trọng tâm trong toàn bộ cơ
911 cấu ngôn ngữ, mặc dù khái niệm này khó định nghĩa''.
914 \subsection{Định nghĩa từ}
916 Thời Hy Lạp cổ đại, trường phái ngôn ngữ Alexandri đã định nghĩa: ``\textit{Từ
917 là đơn vị nhỏ nhất trong chuỗi lời nói}''. Ngoài ra A. Meillet trong
918 \textit{Ngôn ngữ học lịch sử và ngôn ngữ học đại cương} đã định nghĩa: ``\textit{Từ
919 là kết quả của sự kết hợp một ý nghĩa nhất định với một tổ hợp các âm
920 tố nhất định, có thể có một công dụng ngữ pháp nhất định}''.
922 Theo E. Sapir thì ``\textit{Từ là một đoạn nhỏ nhất có ý nghĩa, hoàn toàn có
923 khả năng độc lập và bản thân có thể làm thành câu tối giản}''.
925 Theo L. Bloomfield thì từ là ``\textit{một hình thái tự do nhất}''.
927 Theo B. Golovin thì từ là ``\textit{đơn vị nhỏ nhất có ý nghĩa của ngôn ngữ,
928 được vận dụng độc lập, tái hiện tự do trong lời nói để xây dựng nên
929 câu}''.
931 Theo Solncev thì ``\textit{Từ là đơn vị ngôn ngữ có tính hai mặt: âm và
932 nghĩa. Từ có khả năng độc lập về cú pháp khi sử dụng trong lời}''.
934 Theo B. Trơ-nơ-ka thì ``\textit{Từ là đơn vị nhỏ nhất có ý nghĩa, được cấu tạo
935 bằng âm vị và có khả năng thay đổi vị trí và thay thế lẫn nhau trong
936 câu}''.
938 Theo Lục Chí Vỹ thì ``\textit{Từ là đơn vị nhỏ nhất có thể vận dụng tự do
939 trong câu}''.
940 Theo một số tác giả khác của Trung Quốc thì ``\textit{Từ là đơn vị từ vựng, là
941 đơn vị vật liệu kiến trúc của ngôn ngữ, và cũng là đơn vị nhỏ nhất có
942 khả năng vận dụng tư do trong lời nói}''.
944 Theo V. G. Admoni thì ``\textit{Từ là đơn vị ngữ pháp, do hình vị cấu tạo nên,
945 dùng để biểu thị đối tượng, quá trình, tính chất và những mối quan hệ
946 trong hiện thực, có tính đặc thù rõ rệt và có khả năng kiến lập nhiều
947 mối quan hệ đa dạng với nhau}''.
949 Theo R. A. Bunđagôp thì ``\textit{Từ là đơn vị nhỏ nhất và độc lập, có hình
950 thức vật chất (vỏ âm thanh và hình thức) và có nghĩa, có tính chất
951 biện chứng và lịch sử}''.
953 Đối với tiếng Việt, cũng có một số định nghĩa từ được đưa ra. Theo
954 M. B. Émeneau thì ``\textit{Từ bao giờ cũng tự do về mặt âm vị học, nghĩa là
955 có thể miêu tả bằng những danh từ của sự phân phối các âm vị và bằng
956 những thanh điệu}''\footnote{Nguyễn Thiện Giáp. {\em Từ và nhận diện từ
957 tiếng Việt}. NXB GD, Hà Nội 1996. Trang 17}. Émeneau đã dựa trên mặt
958 ngữ âm để định nghĩa từ, xem mỗi từ trước hết là những âm tiết. Với
959 quan niệm như vậy chủ yếu dựa vào tính hoàn chỉnh về mặt âm thanh và
960 trong thực tế thì người Việt luôn có khuynh hướng mong đợi mỗi tiếng
961 như vậy sẽ mang một nghĩa nào đó và coi đó như ``từ''.
963 Theo Trương Văn Trình và Nguyễn Hiến Lê thì ``\textit{Từ là âm có nghĩa, dùng
964 trong ngôn ngữ để diễn tả một ý đơn giản nhất, nghĩa là ý không thể
965 phân tích ra được}''. Định nghĩa này chủ yếu dựa vào tính nhất thể của
966 nghĩa, nghĩa là mỗi từ có một nghĩa tối giản nào đó, và nghĩa của từ
967 có tính võ đoán và tính thành ngữ.
969 Lê Văn Lý cho rằng từ tiếng Việt ``\textit{là một tín hiệu ngữ âm có thể cấu
970 tạo bằng một âm vị hay sự kết hợp với âm vị, mà sự phát âm chỉ tiến
971 hành trong một lần, hoặc là một âm tiết mà chữ viết biểu thị bằng một
972 đơn vị tách rời và có một ý nghĩa hiểu được}''\footnote{Nguyễn
973 Kim Thản, {\em Nghiên cứu ngữ pháp tiếng Việt}. NXB GD, 1997. Trang
974 30}. Định nghĩa này dựa vào cả ba mặt: ngữ âm, chữ viết và ý
975 nghĩa. Tuy nhiên định nghĩa này mâu thuẫn với định nghĩa từ ghép của
976 chính tác giả, vì tác giả định nghĩa từ ghép dựa trên chức năng ngữ
977 pháp và gồm nhiều âm tiết.
979 Theo Phan Khôi thì ``\textit{Từ là một lời để tỏ ra một khái niệm trong khi
980 nói}''. Theo Nguyễn Lân thì ``\textit{Từ là những tiếng có nghĩa, tức là mỗi khi
981 nghe thấy, trong óc chúng ta đều có một khái niệm}''. Nếu xem từ tương
982 đương với khái niệm thì những từ hình thái như à, ư, nhỉ, nhé~\ldots{}
983 hay những hư từ như cũng, với, bởi~\ldots{} sẽ mang khái niệm gì? Trên
984 thực tế, từ và khái niệm không tương ứng 1-1 với nhau. Có những khái
985 niệm có thể biểu thị bằng nhiều từ.
987 Theo Nguyễn Kim Thản thì ``\textit{Từ là đơn vị cơ bản của ngôn ngữ, có thể
988 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à
989 là một khối hoàn chỉnh về mặt ý nghĩa (từ vựng hay ngữ pháp) và cấu
990 tạo}''. Quan niệm của ông về ``đơn vị cơ bản'' là những đơn vị có số
991 lượng hữu hạn để thông báo, trao đổi tư tưởng cho nhau. Đơn vị này
992 phải có nghĩa, và khi sử dụng, người sử dụng phải có ý thức về
993 nó. Chính vì vậy mà đơn vị cơ bản này không thể là câu (vì số lượng
994 câu là vô hạn) và cũng không thể là âm tiết (vì nhiều âm tiết không có
995 nghĩa và khi sử dụng, người sử dụng không ý thức về nó). Vậy đơn vị cơ
996 bản là cái gì đó nhỏ hơn câu và lớn hơn âm tiết.
998 Theo Hồ Lê thì ``\textit{Từ là đơn vị ngữ ngôn có chức năng định danh phi liên
999 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
1000 tự do, có tính vững chắc về cấu tạo và tính nhất thể về ý
1001 nghĩa}''. Theo ông, từ khác với âm tiết chủ yếu về mặt ý nghĩa. Từ có
1002 ý nghĩa ngữ ngôn, còn âm tiết thì chỉ có ý nghĩa tiền ngữ ngôn. Từ
1003 khác từ tố ở khả năng kết hợp. Từ có khả năng kết hợp tự do trong lời
1004 nói, còn từ tố thì chỉ có khả năng kết hợp hạn chế. Từ khác với cụm từ
1005 tự do bởi tính vững chắc về cấu tạo, tính nhất thể về ý nghĩa và bởi
1006 chức năng định danh phi liên kết hiện thực. Từ khác cụm từ cố định
1007 (thành ngữ, ngạn ngữ) chủ yếu bởi chức năng định danh phi liên kết
1008 hiện thực của nó.
1010 Đái Xuân Ninh chủ trương không định nghĩa từ, vì ``từ trước đến nay,
1011 trong ngôn ngữ học đại cương cũng như trong tiếng nói cụ thể như tiếng
1012 Việt, chưa có một định nghĩa nào thỏa đáng cả''. Theo ông thì ``đứng
1013 về mặt chức năng và cấu trúc của ngôn ngữ, chỉ cần xác định đơn vị từ
1014 và mối quan hệ của nó với các đơn vị khác trong tiếng nói''. Ông cho
1015 rằng ta có thể nhận diện từ một cách khái quát như sau: ``\textit{Từ
1016 là đơn vị cơ bản của cấu trúc ngôn ngữ ở giữa hình vị và cụm từ. Nó
1017 được cấu tạo bằng một hay nhiều đơn vị ở hàng ngay sau nó tức là
1018 hình vị và lập thành một khối hoàn chỉnh}''.
1021 Nguyễn Tài Cẩn, tuy không định nghĩa trực tiếp từ tiếng Việt, nhưng
1022 ông đã chứng minh những tính chất đặc biệt của ``tiếng'', một đơn vị
1023 mà ông coi chính là hình vị và có tính năng rất gần với ``từ'', nó
1024 cũng chính là ``từ đơn'' và là thành tố trực tiếp để tạo nên ``từ
1025 ghép''. Theo ông, mọi đặc thù về từ pháp của tiếng Việt bắt nguồn từ
1026 tính đơn lập của tiếng Việt mà thể hiện rõ nét nhất là qua một đơn vị
1027 đặc biệt, đó chính là tiếng. Quan điểm này cũng được Cao Xuân Hạo đồng
1028 tình.
1030 Kế thừa quan điểm coi tiếng gần trùng với từ. Nguyễn Thiện Giáp đã
1031 phát triển tư tưởng này lên đến mực cực đoan là coi tiếng trong tiếng
1032 Việt chính là từ trong các ngôn ngữ Ấn-Âu. Theo ông ``\textit{Nếu quan
1033 niệm từ không chỉ là đơn vị ngôn ngữ học mà còn là đơn vị tâm
1034 lý-ngôn ngữ học, nếu chú ý đến tính nhiều mặt của từ và đặc điểm của
1035 từ trong từng ngôn ngữ, nếu nhận diện từ căn cứ vào những quan hệ
1036 đối lập trong nội bộ từng ngôn ngữ thì cái đơn vị gọi là ``tiếng''
1037 của Việt ngữ có đủ tư cách để được gọi là ``từ''}''. Như vậy Nguyễn
1038 Thiện Giáp đã không sử dụng đến khái niệm hình vị trong tiếng Việt
1039 (đơn vị dùng để cấu tạo từ trong các ngôn ngữ Ấn-Âu). Trong quan niệm
1040 về từ của ông, ông chủ yếu dựa trên các tiêu chí nhận diện thuộc về
1041 hình thức mà không nhấn mạnh tiêu chí về ngữ nghĩa và khả năng độc lập
1042 về ngữ pháp.
1044 \subsection{Đặc điểm của từ}
1046 Từ các định nghĩa trên, có thể rút ra các đặc điểm chính của từ nói
1047 chung như sau:
1048 \begin{itemize}
1049 \item Về hình thức, từ phải là một khối về cấu tạo (chính tả, ngữ
1050 âm~\ldots{}).
1051 \item Về nội dung, từ phải có ý nghĩa hoàn chỉnh.
1052 \item Về khả năng, từ có khả năng hoạt động tự do và độc lập về cú
1053 pháp.
1054 \end{itemize}
1056 Đối với từ tiếng Việt, ta có thể rút ra những đặc điểm của từ tiếng
1057 Việt so với các ngôn ngữ thuộc loại hình khác.
1058 Tiếng Việt là một ngôn ngữ đơn lập với các đặc điểm chính như sau:
1059 \begin{itemize}
1060 \item Trong hoạt động ngôn ngữ, từ không biến đổi hình thái. Ý nghĩa
1061 ngữ pháp nằm ở ngoài từ.
1062 \item Phương thức ngữ pháp chủ yếu là trật tự từ và từ hư.
1063 \item Tồn tại một đơn vị đặc biệt là hình tiết mà vỏ ngữ âm của nó
1064 trùng khít với âm tiết. Đơn vị đó còn được gọi là tiếng.
1065 \item Không có hiện tượng cấu tạo từ bằng cách ghép thêm phụ tố vào
1066 gốc từ.
1067 \end{itemize}
1069 %% Khái niệm ``đơn vị cơ bản'' trong ngôn ngữ phải giống như trong các
1070 %% ngành khác. Đó là những đơn vị mang đầy đủ các đòi hỏi về những tính
1071 %% chất phải có trong khái niệm ``cơ bản''. Chính vì vậy, trong ngôn ngữ
1072 %% học, khi nói đến ``đơn vị cơ bản'' thì số lượng đơn vị ấy phải không
1073 %% được quá nhiều mà của không được quá ít. Chiều dài của ``đơn vị cơ
1074 %% bản'' cũng không thể quá dài hoặc quá ngắn. Tuy nhiên đây chỉ là điều
1075 %% kiện ban đầu để xem xét đơn vị cơ bản. Đơn vị cơ bản cần phải thoả mãn
1076 %% nhiều điều kiện khác như kết cấu, nội dung~\ldots{}
1078 %% Xét về hình thức đơn vị ``tiếng'' trong tiếng Việt, ta thấy đơn vị này
1079 %% thoả mãn các điều kiện ban đầu của một đơn vị cơ bản về số lượng cũng
1080 %% như chiều dài. Số lượng tiếng thường dùng khoảng 8.200 tiếng, tối đa
1081 %% khoảng 40.000 tiếng. Chiều dài trung bình của một tiếng vào khoảng 4-5
1082 %% chữ cái, tối đa khoảng 7 chữ cái.
1084 \subsection{Các quan niệm về hình vị và từ trong tiếng Việt}
1086 Đối với từ trong tiếng Việt, đến nay có một số quan điểm như sau:
1087 \begin{itemize}
1088 \item Coi mọi tiếng đều là từ (Nguyễn Thiện Giáp). Điều này thuận tiện
1089 trong xử lý nhưng không đúng với tiêu chí ngôn ngữ học đại cương vì
1090 có nhiều tiếng không có nghĩa, như ``phê'' trong ``cà phê'', ``bù''
1091 trong ``bù nhìn''~\ldots{}
1092 \item Coi tiếng chưa hẳn là từ (đa số các nhà Việt ngữ học). Trong số
1093 này chia thành ba nhóm sau:
1094 \begin{itemize}
1095 \item Xem tiếng là hình vị. Quan niệm có thể chấp nhận được nếu coi
1096 hình vị là hình vị tiếng Việt (gồm tha hình vị và á hình vị)
1097 \item Xem tiếng lớn hơn hình vị (Trần Ngọc Thêm, Lưu Văn
1098 Lang~\ldots{}) cho là tiếng có những hình vị (khuôn vần).
1099 \item Xem tiếng nhỏ hơn hoặc bằng hình vị. Đa số các tiếng đều là
1100 hình vị, ngoại trừ ``hấu'' trong ``dưa hấu'', ``bù'' trong ``bù
1101 nhìn''~\ldots{} vì những tiếng này không có nghĩa. Quan điểm này được
1102 nhiều người chấp nhận.
1103 \end{itemize}
1104 \item Xem tiếng châu Âu (Anh, Pháp~\ldots{}) cái nào là từ thì trong
1105 tiếng Việt cái đó là từ. Quan điểm này chưa xét đến sự khác biệt về
1106 sự từ vựng hoá giữa hai ngôn ngữ do khác biệt về văn hoá.
1107 \end{itemize}
1109 Theo quan điểm ngôn ngữ học đại cương, từ được cấu tạo bởi các hình
1110 vị, và hình vị chính là các đơn vị có nghĩa nhỏ nhất. Vì vậy, từ trong
1111 tiếng Việt cũng phải được cấu tạo bởi các hình vị nêu trên, nhưng có
1112 điều khác là các hình vị thành phần ở đây không hoàn toàn giống khái
1113 niệm hình vị của ngôn ngữ học đại cương, mà là ``hình vị tiếng Việt''
1114 hay còn gọi là ``hình tiết'' (hình vị + âm tiết) hay ``tiếng'' (vì chỉ
1115 tiếng Việt mới có đơn vị tiếng đặc biệt như vậy).
1119 \section{Từ láy}
1121 Từ láy là từ mà các thành tố kết hợp với nhau chủ yếu là theo quan hệ
1122 ngữ âm. Số lượng từ láy trong tiếng Việt rất lớn, khoảng 4000 từ. Quan
1123 hệ ngữ âm trong từ láy thể hiện ở hai mặt:
1124 \begin{itemize}
1125 \item Tương ứng về yếu tố siêu đoạn tính (thanh điệu)
1126 \item Tương ứng về yếu tố âm đoạn tính (phụ âm đầu, vần và các yếu tố
1127 trong vần)
1128 \end{itemize}
1132 Các thành tố của từ láy thường phải có thanh thuộc cùng một âm vực:
1133 hoặc thuộc âm vực cao (ngang, hỏi, sắc), hoặc thuộc âm vực thấp
1134 (huyền, ngã, nặng)\footnote{Trong tiếng Việt hiện đại, thanh ngã thuộc
1135 âm vực cao, thanh hỏi thuộc âm vực thấp. Tuy nhiên về mặt lịch sử,
1136 thanh hỏi trước kia thuộc âm vực cao còn thanh ngã lại thuộc âm vực
1137 thấp (A.G. Haudricourt, 1954)}
1139 Các từ láy có nhiều kiểu, bao gồm láy toàn bộ và láy bộ phận (láy vần,
1140 láy phụ âm đầu). Luật hài thanh của mỗi kiểu láy có đặc điểm riêng:
1141 \begin{itemize}
1142 \item Trong các từ láy toàn bộ, âm tiết đầu thường là một trong các
1143 thanh bằng (1, 2) còn âm tiết thứ hai thường là một trong các thanh
1144 trắc (3, 4, 5, 6) cùng âm vực với nó.
1145 \item Trong các từ điệp vận, thường có xu hướng thống nhất các thanh
1146 điệu ở cả hai âm tiết. Theo thống kê của Nguyễn Thiện Giáp, có 81\%
1147 số từ láy vần có thanh điệu hai âm tiết giống nhau hoàn toàn. Trong
1148 một số trường hợp, sự kết hợp của thanh điệu trong từ láy không theo
1149 đúng luật hài thanh (như \textit{khe khẽ, se sẽ, xốp xộp~\ldots}) có
1150 thể giải thích bằng sự thay đổi lịch sử của thanh ngã từ âm vực thấp
1151 lên âm vực cao, kéo theo sự thay đổi của các thanh điệu khác kết hợp
1152 với nó, hoặc do quan hệ với cơ chế láy ba.
1153 \item Trong các từ láy phụ âm đầu, thanh điệu của hai âm tiết không
1154 bắt buộc phải giống nhau, chỉ cần hai thanh điệu ở hai âm tiết cùng
1155 âm vực là được.
1156 \end{itemize}
1158 Sự phân bố thanh điệu trong các từ láy tiếng Việt tuân theo luật
1159 phù-trầm. Luật hài hoà thanh điệu này bị chế định rõ rệt trong kiểu
1160 láy vần do mối quan hệ chặt chẽ giữa vần và thanh điệu.
1162 \section{Từ ghép}
1166 \section{Chính tả tiếng Việt}
1169 \subsection{Tổng quan về chữ viết tiếng Việt}
1172 % Nổ một tí về chữ quốc ngữ
1174 Chữ viết là một trong những phương tiện giao tiếp hiệu quả. Chữ viết
1175 cho phép vượt qua những giới hạn về không gian và thời gian của tiếng
1176 nói. Nhờ đặc điểm này, chữ viết được sử dụng rộng rãi trong nhiều lĩnh
1177 vực khác nhau của đời sống.
1179 Có nhiều hệ thống chữ viết khác nhau được sử dụng trên thế giới, nhưng
1180 nhìn chung có thể phân thành hai loại chữ viết sau:
1181 \begin{description}
1182 \item[Chữ viết ghi ý] Đây là loại chữ viết biểu hiện từ bằng một ký
1183 hiệu duy nhất, không liên quan gì đến những âm thanh cấu tạo nên
1184 từ. Ký hiệu này liên quan với cả từ và do đó cũng gián tiếp có quan
1185 hệ với ý niệm mà từ đó biểu hiện. Loại này bao gồm chữ Trung Quốc, chữ Ai
1186 Cập~\ldots{}
1188 Vì các ký hiệu chữ viết không phản ánh mặt âm thanh và hình thức ngữ
1189 pháp của từ mà phản ánh mặt ý nghĩa, nên trong tiếng Trung Quốc
1190 những từ đồng âm được biểu hiện bằng những chữ hoàn toàn khác nhau.
1192 \item[Chữ viết ghi âm] Đây là loại chữ viết nhằm tái hiện chuỗi âm
1193 thanh nối tiếp nhau trong từ. Các hệ thống chữ viết ngữ âm học có
1194 thể ghi âm tiết hay âm tố.
1195 \begin{description}
1196 \item[Chữ ghi âm tiết] Mỗi ký hiệu ghi một âm tiết. Dẫn chứng cho
1197 loại chữ viết này là hệ thống chữ Nhật Hiragana và Katakana.
1199 \item[Chữ ghi âm tố] Mỗi ký hiệu ghi một âm tố (hay âm vị). Ví dụ
1200 như chữ Anh, chữ Pháp, chữ Nga~\ldots{}
1202 \end{description}
1203 \end{description}
1205 Hệ thống chữ viết được sử dụng hiện nay của nước ta là chữ quốc
1206 ngữ. Nước ta trước đây vẫn dùng chữ Hán và chữ Nôm. Chữ quốc ngữ được
1207 hình thành từ thời Pháp đô hộ nước ta, được người Pháp sử dụng
1208 trong các văn tự chính thức và càng ngày càng được sử dụng rộng rãi.
1210 Chữ quốc ngữ ra đời cách nay khoảng ba thế kỷ. Đó là công trình của
1211 một nhóm các cố đạo người châu Âu cộng tác cùng một số người
1212 Việt. Người để lại nhiều tác phẩm có giá trị trong giai đoạn đầu của
1213 chữ quốc ngữ là Alexandre de Rhodes.
1215 % Đặc điểm chữ quốc ngữ
1217 Chữ quốc ngữ là một lối chữ ghi âm, dùng chữ cái Latin. Nó dùng những
1218 ký hiệu (tức là những con chữ, mượn từ chữ cái Latin, có thêm các dấu
1219 phụ) để ghi lại những âm vị, âm tố và các thanh điệu tiếng Việt. Chữ
1220 quốc ngữ về căn bản khác với chữ Hán và chữ Nôm. Chữ Hán là lối chữ
1221 ghi ý. Chữ Nôm của chúng ta ngày xưa về căn bản cũng là lối chữ ghi ý,
1222 tuy có nhiều thành phần ghi âm.
1224 So với chữ Nôm, chữ quốc ngữ có tiến bộ rất lớn vì nó là chữ ghi âm
1225 rất giản tiện, sử dụng vài chục ký hiệu giản tiện là có thể biểu diễn
1226 được hệ thống âm thanh tiếng Việt.
1228 So với các hệ thống chữ ghi âm khác như chữ Anh, chữ Pháp thì chữ quốc
1229 ngữ là một hệ thống ``chữ viết trẻ'', mới được dùng phổ biến hơn
1230 một thế kỷ nay, nên giữa chữ và âm tương đối có sự phù hợp.
1232 Nguyên tắc chính tả cơ bản của chữ quốc ngữ là nguyên tắc ngữ âm học,
1233 có nghĩa là ``phát âm thế nào thì viết thế ấy'', nên có sự tương ứng
1234 khá lớn giữa chữ viết và phát âm.
1239 \subsection{Chính tả tiếng Việt}
1242 Nói ngắn gọn, chính tả là toàn bộ những tiêu chuẩn và những qui luật
1243 thực hành chữ viết, bao gồm:
1244 \begin{enumerate}
1245 \item Những luật dùng các con chữ của bảng chữ cái để viết các từ.
1246 \item Luật viết các từ độc lập với những chữ cái khi viết chúng.
1248 Ví dụ: Cách dùng các dấu câu, cách viết hoa, tên người, tên đất~\ldots{}
1249 \end{enumerate}
1251 Chuẩn mực của cách viết thường tuân theo những nguyên tắc khác nhau.
1253 Đối với những luật chính tả liên quan đến việc sử dụng các con
1254 chữ của bảng chữ cái ghi âm, có thể kể đến các nguyên tắc cơ bản sau
1255 đây:
1257 \begin{description}
1258 \item[Nguyên tắc âm vị học] Mỗi âm vị được thể hiện bằng một
1259 chữ cái, không phụ thuộc vào vị trí của nó trong các từ và tổ hợp
1260 từ.
1261 \item[Nguyên tắc ngữ âm học] Chữ cái phản ánh phát âm của âm vị ở
1262 những vị trí hay bối cảnh khác nhau.
1263 \item[Nguyên tắc từ nguyên] Nguyên tắc viết theo lịch sử, truyền
1264 thống. Phản ánh trên chữ viết không phải là trạng thái hiện tại mà
1265 là trạng thái quá khứ của hệ thống âm thanh.
1266 \end{description}
1268 Trong bất kỳ một hệ thống chữ viết nào cũng có thể thấy sự kết hợp các
1269 nguyên tắc khác nhau. Nhưng mỗi hệ thống chữ viết có những nguyên tắc
1270 chủ yếu. Chữ quốc ngữ được xây dựng chủ yếu trên nguyên tắc âm vị học
1271 và ngữ âm học. Ngược lại, chữ Pháp và chữ Anh chủ yếu dùng nguyên tắc
1272 từ nguyên, viết theo truyền thống lịch sử.
1274 % Cấu trúc âm tiết:
1275 Âm tiết trong tiếng Việt có 5 thành phần, đó là thanh điệu, âm đầu, âm
1276 đệm, âm chính và âm cuối.
1278 Âm đầu các âm vị phụ âm đảm nhiệm. Các âm tiết mà có chữ trên chữ viết
1279 không ghi phụ âm đầu có thể có âm đầu là âm tắt thanh hầu \textipa{/P/}.
1281 Âm đệm do các âm vị bán nguyên âm \textipa{/-u-/} đảm nhiệm.
1283 Âm chính do các âm vị nguyêm âm đảm nhiệm như trong bảng~\ref{tab:nguyenam}.
1285 %\begin{savenotes}
1286 \begin{table}[htbp]
1287 \centering
1289 \begin{tabular}{cc|cc}
1290 Âm vị&Chữ cái&Âm vị&Chữ cái\\
1291 \textipa{/i/}&i,y&\textipa{/o/}&ô,ôô\\
1292 \textipa{/e/}&ê&\textipa{/O/}&o,oo\\
1293 \textipa{/E/}&e,a&\textipa{/\v{7}/}&â\\
1294 \textipa{/W/}&ư&\textipa{/\v{a}/}&a,ă\\
1295 \textipa{/7/}&ơ&\textipa{/ie/}&iê,ia,yê,y\\
1296 \textipa{/a/}&a&\textipa{/uo/}&uô,ua\\
1297 \textipa{/u/}&u&\textipa{/W7/}&ươ,ưa\\
1298 \end{tabular}
1300 \caption{Bảng nguyên âm}
1301 \label{tab:nguyenam}
1302 \end{table}
1303 %\end{savenotes}
1305 Âm cuối do các âm vị phụ âm bán nguyên âm đảm nhiệm như trong
1306 bảng~\ref{tab:amcuoi}.
1308 \begin{table}[htbp]
1309 \centering
1311 \begin{tabular}{cc|cc}
1312 \multicolumn{2}{c|}{Phụ âm cuối}&\multicolumn{2}{c}{Bán nguyên âm cuối}\\
1313 Âm vị&Chữ cái&Âm vị&Chữ cái\\
1314 \textipa{/-p/}&p&\textipa{/-u/}&u,o\\
1315 \textipa{/-t/}&t&\textipa{/-i/}&i,y\\
1316 \textipa{/-k/}&c,ch\\
1317 \textipa{/-m/}&m\\
1318 \textipa{/-n/}&n\\
1319 \textipa{/-N/}&ng,nh\\
1320 \end{tabular}
1322 \caption{Bảng phụ âm và bán nguyên âm cuối}
1323 \label{tab:amcuoi}
1324 \end{table}
1326 Trên chữ viết, các âm vị âm đầu được thể hiện như trong bảng~\ref{tab:phuamdau}
1328 %\begin{savenotes}
1329 \begin{table}[htbp]
1330 \centering
1331 \begin{minipage}[htbp]{0.6\textwidth}
1332 \def\thefootnote{\alph{mpfootnote}}
1333 \centering
1335 \begin{tabular}{cc|cc}
1336 Âm vị&Chữ cái&Âm vị&Chữ cái\\
1337 \textipa{/b/}&b&\textipa{/m/}&m\\
1338 \textipa{/f/}&ph&\textipa{/v/}&v\\
1339 \textipa{/t\super{h}/}&th&\textipa{/t/}&t\\
1340 \textipa{/d/}&đ&\textipa{/n/}&n\\
1341 \textipa{/s/}&x&\textipa{/z/}&d,gi\footnote{Dựa vào nguyên tắc từ nguyên để phân biệt}\\
1342 \textipa{/l/}&l&\textipa{/\:t/}&tr\\
1343 \textipa{/\:s/}&s&\textipa{/\:z/}&r\\
1344 \textipa{/c/}&ch&\textipa{/\textltailn/}&nh\\
1345 \textipa{/k/}&
1346 q\footnote{Dùng khi đứng trước bán nguyên âm \textipa{/-u-/}},
1347 k\footnote{Dùng khi đứng trước các nguyên âm \textipa{/i,e,E,ie/}},
1349 \textipa{/N/}&ngh\footnotemark, ng\\
1350 \textipa{/x/}&kh&\textipa{/G/}&gh\footnotemark, g\\
1351 \textipa{/h/}&h&\textipa{/P/}&khuyết\\
1352 \end{tabular}
1354 \caption{Bảng phụ âm đầu}
1355 \label{tab:phuamdau}
1357 \end{minipage}
1358 \end{table}
1359 %\end{savenotes}
1361 Một số âm như k và q, gh và g, ngh và ng là cùng âm vị. Tuy nhiên, do
1362 khi hình thành chữ quốc ngữ, ngữ âm tiếng Việt chưa được nghiên cứu
1363 đầy đủ, nên các giáo sĩ đã phải mượn nhiều con chữ ghép trong chữ Bồ
1364 Đào Nha, Hi Lạp, Pháp, Ý~\ldots{} dẫn đến sự không đồng nhất khi biểu
1365 diễn âm vị.
1367 Hệ thống âm chính tiếng Việt dựa trên cách phát âm Hà Nội bao gồm 9
1368 nguyên âm dài, 2 nguyên âm ngắn, 3 nguyên âm đôi. Tóm gọn các cách
1369 biểu diễn nguyên âm chính gồm: i, y, ê, e, a, ư, ơ, a, u, ô, o, â, ă,
1370 iê, ia, yê, y, uô, y, uô, ươ, ưa.
1372 Các phụ âm cuối được ghi bằng ``ch'' khi đứng sau các nguyên âm i, y,
1373 ê, e, a. Ví dụ: {\em minh, mênh, manh}. Trong các trường hợp khác lại
1374 được ghi bằng ``ng''. Ví dụ: {\em mang, vâng, hồng, xuống}.
1376 Các bán nguyên âm cuối /-u/ ghi bằng ``o'' khi đứng sau các nguyên âm đơn
1377 dài, ở bậc thanh lượng lớn như e, a. Các viết này biểu diễn sự biến
1378 dạng của các bán âm sau các mở rộng. Trong các trường hợp còn lại, bán
1379 nguyên âm này được ghi bằng ``u''.
1381 Các bán nguyên âm cuối /-i/ được ghi bằng ``y'' khi đứng sau các
1382 nguyên âm ngắn ă, a, â. Trong các trường hợp khác nó được ghi bằng
1383 ``i''.
1385 Tóm lại, các âm vị cuối được thể hiện bằng những chữ cái: p, t, c, ch,
1386 m, n, ng, nh, u, o, i, y.
1388 Tiếng Việt có sáu thanh điệu: sắc, huyền, ngã, hỏi, nặng và thanh không dấu.
1390 Về việc bỏ dấu, có ba nguyên tắc bỏ dấu sau:
1391 \begin{description}
1392 \item[Nguyên tắc bỏ dấu khoa học] Dấu thanh được đặt ở âm chính của
1393 vần, tức là đặt trên hoặc dưới nguyên âm có vai trò quyết định âm
1394 sắc chủ yếu của âm tiết.
1395 \item[Nguyên tắc thẩm mỹ] (nguyên tắc thứ yếu) Dấu thanh được đặt ở vị
1396 tri cân đối trong âm tiết. Nguyên tắc này trước đây hay dùng nhưng
1397 nay trong một số trường hợp nếu đặt dấu thanh sai sẽ làm cho phát âm
1398 không đúng và hiểu sai nghĩa từ.
1399 \item[Nguyên tắc thực dụng] Dấu thanh thường được đặt vào một con chữ
1400 nguyên âm chứ không đặt ở giữa hai con chữ, để tiện việc in ấn.
1401 \begin{itemize}
1402 \item Nếu âm chính là một nguyên âm đơn thì dấu thanh luôn luôn được
1403 ghi ở trên hoặc ở dưới âm chính.
1404 \item Nếu âm chính là một nguyên âm đôi thì tùy trường hợp có thể bỏ
1405 đấu thanh ở yếu tố thứ nhất hoặc yếu tố thứ hai của âm chính.
1406 \end{itemize}
1407 \end{description}
1409 XXX% \subsection{Những qui định về chính tả tiếng Việt}
1412 \subsection{Lỗi chính tả}
1414 % Lỗi chính tả là gì?
1416 Theo~\cite{LoiChinhTa} thì:
1417 \begin{verse}
1418 Chữ viết là hệ thống ký hiệu bằng đường nét đặt ra để ghi tiếng nói
1419 và có những qui tắc, qui định riêng. Muốn viết đúng chính tả tiếng
1420 Việt, ta phải tuân theo những qui định, qui tắc đã được xác lập.
1422 Chính tả là cách viết chữ được xem là chuẩn, tức là viết đúng âm
1423 đầu, đúng vần, đúng dấu (thanh), đúng quy định về viết hoa, viết
1424 tắt, viết thuật ngữ.
1425 \end{verse}
1427 Các lỗi chính tả thường rơi vào loại lỗi do phát âm sai dẫn đến viết
1428 sai (lỗi hỏi-ngã, lỗi sai âm đầu, sai âm chính, sai âm cuối). Ngoài ra
1429 còn các loại lỗi khác như viết hoa không đúng qui cách, viết tên
1430 riêng, thuật ngữ, tên tiếng nước ngoài không đúng qui cách.
1432 %% Tiếng Việt có sáu thanh điệu, nhưng hầu hết mọi người không phân biệt
1433 %% hai thanh hỏi và ngã. Loại lỗi này rất phổ biến, kể cả ở những người
1434 %% có trình độ văn hoá cao. Nguyên nhân là do các phương ngữ Trung và Nam
1435 %% Bộ không có thanh ngã. Ngoài ra số tiếng mang hai thanh này khá lớn
1436 %% (khoảng 1900 tiếng mang thanh hỏi và 900 tiếng mang thanh ngã)
1438 %% Về âm đầu, các âm sau thường bị lẫn lộn: C/K, G/Gh, Ng/Ngh,
1439 %% Ch/Tr, S/X, V/D/Gi/R, W/Hw/Ngw/Qu.
1441 %% Về âm chính thường lẫn lộn các âm sau: ai/ay/ây,
1442 %% ao/au/âu, ăm/âm, ăp/âp, iu/iêu/êu, im/iêm/em, ip/iêp/êp/ep,
1443 %% oi/ôi/ơi, om/ôm/ơm, op/ôp/ơp, ong/ông, oc/ôc, ui/uôi, um/uôm, up/(uôp),
1444 %% ưi/ươi, ưu/ươu, ưm/ươm, (ưp)/ươp.
1446 %% Về âm cuối thường lẫn lộn chữ ghi các âm cuối trong các vần sau:
1447 %% an/ang, at/ac, ăn/ăng, ăt/ăc, ân/âng, ât/âc, en/eng, et/ec, ên/ênh,
1448 %% êt/êch, in/inh, it/ich, iên/iêng, iêt/iêc, ơn/(ơng), ơt/(ơc),
1449 %% un/ung, ut/uc, uôn/uông, uôt/uôc, ưn/ưng, ưt/ưc, ươn/ương, ươt/ươc.
1451 %% Sai quy cách viết hoa do chưa thống nhất quy cách viết hoa (hoặc thống
1452 %% nhất quá trễ)
1455 %% XXX
1457 \chapter{Cơ sở tin học}
1458 \label{cha:math}
1459 \minitoc
1461 % typographic errors
1463 %% Lỗi gõ sai được xử lý bằng thuật toán soundex~\cite{soundex}. Ý tưởng
1464 %% của thuật toán này dựa trên các nghiên cứu về nguyên nhân gây ra
1465 %% lỗi. Theo~\cite{soundex}, có bốn nguyên nhân gây ra lỗi loại này:
1466 %% \begin{itemize}
1467 %% \item Chèn một ký tự đơn.
1468 %% \item Xoá một ký tự đơn.
1469 %% \item Thay một ký tự bằng một ký tự khác.
1470 %% \item Hoán đổi vị trí hay ký tự kề nhau.
1471 %% \end{itemize}
1472 %% Thuật toán này
1474 \section{Bắt lỗi chính tả}
1476 Trình bắt lỗi chính tả có thể được đánh giá theo nhiều cách khác
1477 nhau. Nhưng chủ yếu vẫn được phân loại từ quan điểm người dùng: khả
1478 năng phát hiện lỗi sai, và khả năng đề nghị những từ thay thế cho lỗi
1479 sai đó.
1481 \subsection{Phát hiện lỗi chính tả}
1483 Giải pháp đơn giản để phát hiện lỗi chính tả là dùng một cấu trúc dữ
1484 liệu để lưu tất cả các từ đã biết (được lưu trong từ điển). Nếu từ
1485 không có trong từ điển nghĩa là từ đó bị sai. Giải pháp này cần thêm
1486 một số heuristic để tránh không xem các con số, ngày tháng~\ldots{}
1487 lỗi sai.
1489 Đối với trình bắt lỗi chính tả truyền thống thì từ điển là một phần
1490 rất quan trọng. Từ điển có thể được lưu theo các dạng
1491 cấu trúc dữ liệu như bảng băm hoặc cấu trúc dữ liệu dạng cây có thể
1492 được sử dụng~\cite{McIlroy,Peterson}
1494 Với những lỗi sai dạng lỗi từ vựng, ta phải dùng một số phương pháp
1495 khác phức tạp hơn để phát hiện (chi tiết trong
1496 phần~\ref{sec:context-spelling}).
1498 \subsection{Các sai lầm của trình bắt lỗi chính tả}
1500 Khi bắt lỗi chính tả, trình bắt lỗi không tránh khỏi các sai lầm. Có
1501 thể phân ra làm hai loại sai lầm: sai lầm tích cực\footnote{false
1502 positive} và sai lầm tiêu cực\footnote{false negative}.
1504 Sai lầm tích cực xảy ra khi trình bắt lỗi báo lỗi ở những từ hoàn toàn
1505 không sai chính tả. Sai lầm tiêu cực xảy ra khi trình bắt lỗi bỏ qua
1506 những từ bị sai chính tả. Nói cách khác, trình bắt lỗi cho rằng những
1507 từ sai chính tả này không sai. Sai lầm tích cực có thể tránh được nhờ
1508 tăng kích thước từ điển. Tuy nhiên đây không phải là giải pháp hoàn
1509 hảo. Việc tăng kích thước từ điển sẽ tốn kém (về bộ nhớ, CPU, cũng như
1510 công sức bỏ ra để xây dựng từ điển). Hơn nữa, càng có nhiều
1511 từ thì việc đề nghị các từ thay thế càng trở nên kém hiệu quả do bị
1512 phân tán bởi những từ rất ít gặp, không thể tập trung vào những lỗi
1513 phổ biến.
1515 Sai lầm tiêu cực có thể xem là lỗi không phát hiện được. Phần nhiều
1516 những lỗi này thường đòi hỏi phải hiểu văn bản (ít nhất là một phần
1517 văn bản) để có thể phát hiện lỗi. Những dạng lỗi từ vựng, lỗi cú pháp
1518 thường rơi vào dạng này. Tuy nhiên vẫn có một số lỗi chính tả rơi vào
1519 loại này. Những loại lỗi này được phát hiện nhờ những chương trình bắt
1520 lỗi chính tả cảm ngữ cảnh (xem phần~\ref{sec:context-spelling}).
1522 %~\cite{Golding95,Golding96,Golding99}
1524 Trong hai loại sai lầm thì sai lầm tích cực thường gây khó chịu cho
1525 người sử dụng, dễ gây tâm lý không tin tưởng vào trình bắt lỗi chính
1526 tả. Ngược lại, sai lầm tiêu cực phản ánh tính hiệu quả của trình bắt
1527 lỗi chính tả. Sai lầm tiêu cực càng nhiều thì trình bắt lỗi càng kém
1528 hiệu quả.
1530 \subsection{Vấn đề chữ hoa, chữ thường}
1532 Vấn đề chữ hoa/chữ thường gây nhiều khó khăn cho trình bắt lỗi chính
1533 tả. Trong từ điển, hầu hết các từ là chữ thường. Tuy nhiên cũng có chữ
1534 hoa (tên riêng, từ viết tắt~\ldots{}). Các quy tắc chính tả về viết hoa
1535 cũng khá phức tạp. Ngoài ra, đôi khi các chữ được viết hoa hoàn toàn
1536 để nhấn mạnh, để làm tiêu đề~\ldots{}
1538 Thuật toán để xử lý trường hợp chữ hoa, chữ thường có thể được mô tả
1539 như sau:
1540 \begin{algo}[Xử lý chữ hoa, chữ thường]
1541 \begin{enumerate}
1542 \item Đặt $w_t$ là chữ viết thường của $w$.
1543 \item Đặt $c$ là kết quả tìm kiếm $w_t$.
1544 \item Nếu không tìm được $c$, từ bị sai chính tả.
1545 \item Nếu $c$ giống $w$, từ đúng.
1546 \item Đặt $c_c$ là chữ thường, viết hoa chữ cái đầu tiên của $w$. Nếu
1547 $c$ giống $c_c$, từ đúng.
1548 \item Đặt $c_u$ là chữ hoa của $w$. Nếu $c$ giống $c_u$, từ đúng.
1549 \item Ngược lại, từ $w$ sai.
1550 \end{enumerate}
1551 \end{algo}
1555 \section{Lập danh sách từ đề nghị}
1557 Sau khi phát hiện ra từ bị sai chính tả, ta cần đưa ra một số từ ``gần
1558 giống'' có khả năng thay thế từ bị sai chính tả. Trong trường hợp lý
1559 tưởng, ta nên đưa ra {\em duy nhất một từ}, đó chính là từ đúng
1560 chính tả, lẽ ra cần phải được dùng thay cho từ bị sai chính tả.
1562 Tuy nhiên, việc tìm ra từ đúng của từ bị sai chính tả là một công việc
1563 không dễ dàng, ngay cả với con người. Khi gặp một từ sai chính tả, ta
1564 thường phải suy nghĩ nhiều, chọn ra một số từ có khả năng thay thế,
1565 kiểm nghiệm xem từ nào là từ thích hợp nhất. Quá trình kiểm nghiệm xem
1566 từ nào là thích hợp thường đòi hỏi phải hiểu về nội dung của văn bản
1567 đang xem (đối với con người). Đối với máy tính, việc hiểu văn bản, đến
1568 nay vẫn là một vấn đề khó. Tuy nhiên, máy tính cũng có khả năng tìm ra
1569 kết quả đối với một số trường hợp lỗi thông dụng (chi tiết trong phần
1570 \ref{sec:context-spelling}). Việc tìm ra chỉ một kết quả duy nhất đưa
1571 đến một thuận lợi đáng kể. Bởi vì chỉ có một kết quả, không cần phải lựa
1572 chọn, nên ta có thể tạo ra chương trình bắt lỗi chính tả (và sửa lỗi
1573 chính tả) tự động. Việc tạo ra một chương trình bắt lỗi chính tả tự
1574 động hoàn toàn mở ra một khả năng to lớn khi áp dụng vào thực tế, giúp
1575 giảm đáng kể công sức của con người.
1577 Trong trường hợp không thể đưa ra duy nhất một đề nghị, ta có thể đưa
1578 ra một danh sách các từ ``có khả năng'' để người dùng chọn lựa. Yêu
1579 cầu đặt ra là từ đúng phải nằm trong danh sách từ lựa chọn. Và tốt hơn
1580 nữa là từ đúng nên được đặt trên cùng danh sách để gây sự chú ý của
1581 người dùng (chi tiết trong phần \ref{sec:sort-candidates}). Để đảm
1582 bảo từ đúng nằm trong danh sách, ta cần tìm hiểu nguyên nhân dẫn đến
1583 lỗi, sau đó cố gắng phục hồi lỗi để tạo lại những từ có khả năng. Do
1584 có nhiều nguyên nhân khác nhau dẫn đến lỗi chính tả, nên cũng có nhiều
1585 cách khác nhau để phát sinh danh sách từ đề nghị.
1588 \subsection{Lỗi phát âm sai}
1590 Đối với các ngôn ngữ như tiếng Việt --- vốn ``nói sao viết vậy'', giải
1591 pháp khá đơn giản. Ta có thể phân tích cấu trúc tiếng trong tiếng
1592 Việt, sau đó dựa vào các cách phát âm giống nhau để tạo ra danh sách
1593 các tiếng phát âm giống nhau.
1595 Đối với các ngôn ngữ như tiếng Anh --- cách viết không còn tương ứng
1596 với cách đọc nữa, thì giải pháp sẽ phức tạp hơn. Cơ bản là ta cần một
1597 cách nào đó để chuyển từ được viết thành một dạng phiên âm, sau đó áp
1598 dụng như bình thường. Một số heuristic được đưa ra để giải quyết vấn
1599 đề này. Thuật toán cơ bản là Soundex~\cite{knuth73}. Nhiều thuật toán
1600 khác được đưa ra để cải tiến Soundex như Double
1601 Metaphone\footnote{http://aspell.sourceforge.net/metaphone/},
1602 Phonetex~\cite{phonetex}. Soundex cũng được cải tiến để áp dụng cho
1603 các ngôn ngữ khác, như tiếng Thái~\cite{tsdx}. Nói chung, các kỹ thuật
1604 này biến đổi về cơ bản thay thế các ký tự trong từ bằng như ký tự khác
1605 chung hơn, với mục đích làm cho sau khi biến đổi, các từ có cách đọc
1606 giống nhau sẽ trở nên giống nhau. Ví dụ như trong Soundex:
1607 \begin{itemize}
1608 \item Các ký tự ``aeiouhwy'' được thay bằng ``0''.
1609 \item ``bpfv'' được thay bằng ``1''.
1610 \item ``cgjkqsxz'' được thay bằng ``2''.
1611 \item ``dt'' được thay bằng ``3''.
1612 \item ``l'' được thay bằng ``4''.
1613 \item ``mn'' được thay bằng ``5''.
1614 \item ``r'' được thay bằng ``6''.
1615 \end{itemize}
1616 Cách thay thế khác nhau tùy vào từng thuật giải. Ngoài ra, các
1617 thuật giải có thể giữ lại một số ký tự mà không thay thế.
1619 \subsection{Lỗi nhập sai}
1621 Lỗi nhập liệu xảy ra khi gõ không
1622 đúng phím cần gõ trên bàn phím. Damerau~\cite{Damerau} xác định bốn thao
1623 tác có thể gây ra lỗi như sau:
1624 \begin{itemize}
1625 \item Tráo đổi một cặp ký tự.
1626 \item Xóa một ký tự đã có.
1627 \item Chèn một ký tự lạ.
1628 \item Thay một ký tự bằng một ký tự khác.
1629 \end{itemize}
1631 Damerau cho rằng 80\% các lỗi là do thực hiện thao tác trên một lần
1632 (một trong bốn thao tác trên).
1634 Phân loại lỗi theo các thao tác trên dẫn đến một kỹ thuật sửa lỗi đơn
1635 giản được dùng bởi~\cite{Petersonb}. Nếu phát hiện một từ bị sai
1636 chính tả, ta lần lượt thực hiện lại những thao tác trên để phục hồi từ
1637 bị sai chính tả. Những từ được phát sinh, nếu có trong từ điển, sẽ
1638 được lưu vào danh sách những từ đề nghị. Kỹ thuật này thường được gọi
1639 là Đảo ngược lỗi\footnote{Error reversal}.
1641 \subsection{Các lỗi khác}
1643 Ngoài hai loại lỗi trên, còn có nhiều nguyên nhân khác dẫn đến lỗi
1644 chính tả. Một trong những nguyên nhân đó là lỗi dùng từ sai (do hiểu
1645 sai, hoặc không hiểu rõ cách dùng từ). Đây thực chất thuộc về lỗi từ
1646 vựng, nhưng đôi khi người dùng lại đòi hỏi trình bắt lỗi chính tả phải
1647 tìm ra những lỗi này.
1649 Ngoài lỗi dùng từ sai, còn có những lỗi phát sinh do máy móc. Hai công
1650 cụ liên quan đến xử lý văn bản và dễ gây ra lỗi chính tả là nhận dạng
1651 tiếng nói và nhận dạng chữ viết. Đối với nhận dạng tiếng nói, lỗi
1652 thường gặp giống với dạng lỗi phát âm sai. Tuy nhiên, đối với một số
1653 ngôn ngữ như tiếng Anh --- mỗi từ gồm nhiều âm tiết --- thì có thể gây
1654 ra lỗi tách từ sai. Đối với nhận dạng văn bản, lỗi chủ yếu do sự giống
1655 nhau giữa các chữ cái khi viết. Thông thường, bản thân các công cụ này
1656 cũng được cài đặt một trình bắt lỗi chính tả tự động (dạng đơn giản
1657 hoặc phức tạp) nhằm giảm thiểu các lỗi chính tả.
1659 \section{Sắp xếp danh sách từ đề nghị}
1660 \label{sec:sort-candidates}
1663 Việc chọn từ tốt nhất trong danh sách từ đề nghị là một công việc không dễ
1664 dàng. \cite{Agirre} mô tả cách lựa chọn trong trường hợp
1665 này, có thể chia làm các nhóm như sau:
1667 \begin{itemize}
1668 \item Sử dụng phân tích cú pháp để loại bỏ những từ sai từ loại, hoặc
1669 sai các đặc trưng hình thái (số đếm, chữ hoa/chữ thường~\ldots{})
1670 \item Khử nhập nhằng ngữ nghĩa để chọn từ phù hợp với ngữ cảnh nhất.
1671 \item Dùng thống kê để chọn từ thường xuất hiện nhất.
1672 \item Những từ có cách viết hoa/thường khác với từ bị sai sẽ bị loại
1673 (ví dụ, nếu từ viết sai là chữ thường thì các từ đề nghị viết hoa sẽ
1674 bị loại)
1675 \end{itemize}
1678 Một số kỹ thuật để sắp xếp danh sách từ được chọn sẽ được mô tả ngắn
1679 gọn bên dưới.
1680 %%% Giải thích cụ thể hơn.
1682 \subsection{Văn phạm ràng buộc}
1684 %-% Constraint Grammar a Language independent system for parsing
1685 %-% unrestricted text.
1687 Văn phạm ràng buộc\footnote{Constraint Grammar} (CG) được thiết kế
1688 độc lập ngôn ngữ và là một công cụ mạnh giúp khử nhập nhằng các văn
1689 bản không giới hạn~\cite{cg}.
1691 CG có thể được xem như một tập hợp các luật mẫu-hành
1692 động\footnote{pattern-action rule}, không quá một luật với mỗi tag có nhập
1693 nhằng. Mỗi luật xác định một hoặc nhiều mẫu (các ``ràng buộc'') xác
1694 định khi nào tag đó không hợp lệ. Nếu thỏa một mẫu trong số các mẫu
1695 của luật, tag đó sẽ bị xoá. Các mẫu ngữ cảnh có thể là mẫu cục bộ hoặc
1696 toàn cục, có thể tham khảo những phân tích nhập nhằng hoặc không nhập
1697 nhằng. Thuật toán sẽ được chạy vài lần để giảm nhập nhằng từ từ, nhờ đó
1698 giúp các ngữ cảnh giảm nhập nhằng, hoặc không còn nhập nhằng, tạo điều
1699 kiện khử nhập nhằng những từ khác.
1701 Mô tả cú pháp và hình thái được mã hoá bằng tag thay vì cấu trúc đóng
1702 mở ngoặc. Mô tả cú pháp rất nông. Mỗi từ được gắn với một tag chức
1703 năng cú pháp\footnote{syntactic function tag}, quy định mô tả phụ
1704 thuộc về mặc chức năng.
1706 Các ràng buộc giúp tránh các dự đoán có nhiều rủi ro chứ không chọn ra
1707 giải pháp đúng. Do đó CG chỉ giúp giảm số lượng các nhập nhằng. Văn
1708 phạm ràng buộc tiếng Anh (EngCG) đã giúp cải thiện đáng kể chất
1709 lượng bộ đánh nhãn từ loại tiếng Anh. Văn phạm ràng buộc giúp loại bỏ
1710 hầu hết các nhập nhằng có thể được.
1712 XXX % vd
1715 Việc áp dụng CG để khử nhập nhằng cho trình bắt lỗi chính tả là một
1716 công việc khó khăn vì hiện nay CG cho tiếng Việt vẫn chưa được xây
1717 dựng.
1719 \subsection{Mật độ quan niệm}
1720 %-% Word Sense disambiguation using conceptual density 96.
1723 Đây thực chất là áp dụng khử nhập nhằng ngữ nghĩa dùng
1724 WordNet và độ đo khoảng cách giữa các khái niệm trong WordNet. Cách
1725 này được áp dụng cho danh từ.
1727 WordNet là một mạng ngữ nghĩa về từ vựng tiếng Anh, bao gồm các mối
1728 liên hệ khác nhau giữa các từ tiếng Anh. WordNet định nghĩa các quan
1729 hệ khác nhau cho mỗi từ loại. Đối với danh từ thì hai loại quan hệ
1730 quan trọng nhất là hypernym và hyponym.
1732 A được xem là hyponym của B
1733 (và B là hypernym của A) nếu ta có thể nói ``A là một loại đặc biệt
1734 của B''. Ví dụ, cây là một loại thực vật. Vậy cây là hyponym của thực
1735 vật (và thực vật là hypernym của cây)
1737 WordNet được tổ chức theo đơn vị là các synset. Synset
1738 (Synonym set) là một nhóm các từ đồng nghĩa có thể dùng thay thế cho
1739 nhau. Mỗi từ có thể thuộc nhiều synset khác nhau. Trong trường hợp đó,
1740 các syset được gọi là sense của từ đó. Phần danh từ trong WordNet có
1741 thể xem như một đồ thị của các synset và các liên kết hypernym/hyponym
1742 giữa các synset đó.
1744 Độ đo khái niệm\footnote{conceptual distance} cung cấp một nền tảng để
1745 đo độ giống nhau về mặt nghĩa của các từ. Độ đo khái niệm được định
1746 nghĩa bởi \cite{Rada} là độ dài đường đi ngắn nhất liên kết các khái
1747 niệm trong mạng ngữ nghĩa phân cấp.
1749 Cho một khái niệm $c$ nằm trên đỉnh cây con và $nhyp$ là số hypernym
1750 mỗi nút. Mật độ quan niệm\footnote{conceptual density} (CD) để khử nhập nhằng cho $c$ khi cây con của
1751 nó chứa $m$ sense của từ đó như sau:
1753 $$CD(c,m)=\frac{\displaystyle\sum^{m-1}_{i=0}nhyp^{i^{0.20}}}{descendants_c}$$
1755 Trong công thức trên, tham số $0,20$ được dùng để làm trơn hệ số mũ
1756 $i$ khi $m$ chạy từ 1 đến số sense tổng cộng trong WordNet. Nhiều giá
1757 trị đã được thử cho tham số này và tham số gần $0,20$ là tốt nhất.
1760 Thuật toán khử nhập nhằng dựa trên CD như sau: Cho cửa sổ với kích
1761 thước nhất định, chương trình di chuyển cửa sổ mỗi
1762 danh từ một lần, từ đầu câu cho đến hết, khử nhập nhằng cho danh từ ở
1763 chính giữa cửa sổ, xem các danh từ còn lại trong cửa sổ là ngữ
1764 cảnh. Đặt cửa sổ các danh từ là $W$ và danh từ chính giữa cửa sổ là
1765 $w$, ta có:
1767 \begin{algo}[Khử nhập nhằng danh từ dùng CD]
1768 \begin{enumerate}
1769 \item tree := compute\_tree(words\_in\_window).
1771 Loop
1772 \item tree := compute\_conceptual\_distance(tree)
1773 \item concept := select\_concept\_width\_highest\_weight(tree)
1775 if concept = null then exitloop
1776 \item tree := mark\_disambiguated\_senses(tree,concept)
1778 endloop
1779 \item output\_disambiguation\_result(tree)
1780 \end{enumerate}
1781 \end{algo}
1783 Đầu tiên, thuật toán thể hiện một dàn các danh từ trong cửa sổ, các
1784 sense và hypernym của chúng (bước 1). Sau đó thuật toán tính
1785 CD cho mỗi khái niệm trong WordNet tương ứng với sense
1786 nó chứa trong cây con của nó (bước 2). Thuật toán chọn khái niệm $c$
1787 với CD cao nhất (bước 3) và chọn sense đúng bên dưới
1788 cho những từ tương ứng (bước 4).
1790 Thuật toán tiến hành tính CD cho những sense còn lại trong dàn, tiếp
1791 tục khử nhập nhằng những danh từ còn lại trong cửa sổ (quay lại bước
1792 2, 3, 4). Khi không thể khử nhập nhằng được nữa, những sense còn lại
1793 của $w$ được xử lý và xuất kết quả ra (bước 5).
1795 Giải pháp CD có hạn chế là chỉ áp dụng đối với danh từ. Những loại từ
1796 khác, do có các mối quan hệ phức tạp hơn nhiều so với quan hệ hypernym
1797 của danh từ nên rất khó áp dụng. CD đôi khi không thể khử nhập nhằng
1798 tuyệt đối (chỉ chừa lại một kết quả) mà nhiều khi vẫn còn lại vài nhập
1799 nhằng. Tuy nhiên việc giảm nhập nhằng bằng CD cũng giúp ít rất nhiều
1800 cho trình bắt lỗi chính tả.
1802 Hạn chế quan trọng của CD khi áp dụng cho
1803 tiếng Việt là thiếu WordNet dành cho tiếng Việt. Việc xây dựng một
1804 mạng ngữ nghĩa tiếng Việt có tầm vóc như WordNet sẽ tốn rất nhiều công
1805 sức, chưa kể các điểm khác biệt giữa tiếng Anh và tiếng Việt đòi hỏi
1806 các nhà ngôn ngữ học phải xem xét lại có thể áp dụng hoàn toàn các mối quan hệ
1807 đã được sử dụng trong WordNet hay không, hay cần phải loại bỏ và thêm
1808 vào một số quan hệ khác cho phù hợp với tiếng Việt. Nói tóm lại, đây
1809 là một giải pháp hay tuy nhiên không thể áp dụng trong điều kiện hiện
1810 tại. Gần đây có nhiều đề tài nghiên cứu xây dựng WordNet tiếng
1811 Việt. Hy vọng có thể áp dụng CD và các giải pháp dựa trên WordNet khác
1812 cho tiếng Việt trong tương lai không xa.
1815 \section{Tự động phát hiện và sửa lỗi chính tả}
1816 \label{sec:context-spelling}
1818 Tự động phát hiện và sửa lỗi chính tả được đặt ra để cải tiến các
1819 chương trình bắt lỗi chính tả. Các chương trình bắt lỗi chính tả
1820 truyền thống thường dựa trên từ điển, nên không thể bắt lỗi những từ
1821 sai, nhưng lại có trong từ điển. Ví dụ, ``give me a peace of cake''
1822 (lẽ ra phải là ``give me a piece of cake'') hoặc ``anh ấy là một người
1823 bàng quang'' (trong khi phải là ``anh ấy là một người bàng
1824 quan''). Hướng giải quyết là dựa vào tập nhầm lẫn để tìm ra những từ
1825 có khả năng viết sai (ví dụ, ``peace-piece'' và ``bàng quang-bàng
1826 quan'') sau đó dựa vào ngữ cảnh để xác định xem đang xét có phù hợp
1827 với ngữ cảnh hay không. Bởi vậy bài toán này còn được gọi là bắt lỗi
1828 chính tả cảm ngữ cảnh\footnote{context-sensitive spelling
1829 checking}.
1830 %% Đa số các thuật toán thường chuyển câu đang xét thành một
1831 %% tập các đặc trưng rồi dựa vào đó để xem xét, hoặc sử dụng các mô hình
1832 %% ngôn ngữ để đánh giá.
1834 \subsection{Mô hình TBL}
1835 \label{sec:tbl-spell}
1838 TBL\footnote{Transformation-based Learning} là mô hình học có giám sát,
1839 được Eric Brill đưa ra vào năm 1993. Đây là mô hình học luật dựa trên
1840 lỗi, tạo ra các luật mới để khắc phục các lỗi còn lại sau khi đã áp
1841 dụng các luật trước đó. TBL được áp dụng để tự động phát hiện và sửa
1842 lỗi chính tả. TBL chỉ nhắm vào một tập lỗi thông dụng cho trước, chủ
1843 yếu là loại lỗi dùng từ sai, loại lỗi rất khó bị phát hiện bởi các
1844 trình bắt lỗi chính tả thông thường. Những lỗi không phải từ (lỗi nhập
1845 liệu~\ldots{}) không được xử lý bởi TBL. Phương pháp này được áp dụng
1846 bởi Lidia Mangu và Eric Brill~\cite{tbl} cho kết quả rất cao
1847 (93,15\%).
1849 TBL hoạt động như một bộ luật sửa lỗi. Dữ liệu ban đầu cần được một
1850 chương trình khác (baseline) xử lý để phát hiện hiện và sửa lỗi chính tả. Mục
1851 tiêu của chương trình này phát hiện và sửa đúng lỗi chính tả càng
1852 nhiều càng tốt. Các lỗi gây ra bởi chương trình ban đầu này sẽ được
1853 sửa bởi TBL. Các luật học được từ quá trình huấn luyện TBL sẽ được áp
1854 dụng lần lượt theo thứ tự, sửa chữa các lỗi của do chương trình
1855 baseline gây ra cũng như các lỗi do chính việc áp dụng luật TBL gây
1856 ra. Kết quả là số lỗi sai chính tả sẽ giảm đáng kể.
1858 Các luật trong TBL là các luật dạng mẫu-hành
1859 động\footnote{pattern-action rule} sử dụng nhiều loại thông tin khác
1860 nhau để xác định ngữ cảnh. Hành động trong luật thường là thay thế
1861 từ đang xét bằng một từ khác. Các thông được sử dụng trong mẫu bao gồm
1862 vị trí tương đối của các từ so với từ đang xét, từ loại, từ~\ldots{} Ba
1863 loại mẫu được dùng trong~\cite{tbl} là:
1864 \begin{itemize}
1865 \item Từ $W$ xuất hiện trong phạm vi $\pm k$ từ chung quanh từ $w$
1866 đang xét.
1867 \item Một mẫu xác định gồm $l$ từ/từ loại liên tiếp nhau xuất hiện
1868 chung quanh $w$.
1869 \item Một mẫu xác định gồm các từ/từ loại không liên tiếp, xuất hiện
1870 quanh $w$.
1871 \end{itemize}
1873 Huấn luyện TBL giống như cách áp dụng luật TBL. Dữ liệu đầu vào là một
1874 ngữ liệu đã được đánh dấu (từ đúng/từ sai --- nếu từ sai thì đi kèm
1875 với từ đúng). Thực hiện các bước sau:
1876 \begin{enumerate}
1877 \item Gỡ bỏ các đánh dấu trong ngữ liệu, đưa trở về dạng ngữ liệu thô.
1878 \item Đánh baseline cho ngữ liệu thô.
1879 \item Dựa vào các mẫu luật, phát sinh các luật.
1880 \item Lần lượt áp dụng các luật lên ngữ liệu.
1881 \item Tính điểm cho ngữ liệu dựa trên ngữ liệu đã đánh dấu ban đầu,
1882 sau khi áp dụng từng luật lên ngữ liệu. Điểm tăng nghĩa là kết quả
1883 đúng nhiều hơn so với khi chưa áp dụng luật. Điểm âm nghĩa là kết
1884 quả sai nhiều hơn.
1885 \item Nếu điểm âm, bỏ qua luật này.
1886 \item Nếu điểm dương, đưa luật vào danh sách luật.
1887 \item Nếu điểm tăng ít hơn một giới hạn cho trước, dừng thuật toán.
1888 \item Quay lại bước 4.
1889 \end{enumerate}
1891 Sau khi chấm dứt thuật toán, ta chọn khoảng $n$ luật đầu tiên. Những
1892 luật còn lại bị loại bỏ. $n$ luật này chính là những luật kết quả của
1893 quá trình huấn luyện theo mô hình TBL.
1895 Việc áp dụng TBL đòi hỏi phải có ngữ liệu đã đánh dấu (ngữ liệu vàng),
1896 một hàm tính điểm (được dùng trong bước 5), trình đánh dấu baseline,
1897 và các mẫu luật. Ngoài ra còn có một số tham số (ngưỡng dừng thuật
1898 toán, các tham số $n$, $k$, $l$~\ldots{} đã nêu trên). Việc chọn mẫu
1899 luật và các tham số thích hợp ảnh hưởng nhiều đến hiệu quả của TBL.
1901 Ngữ liệu đánh dấu có thể được tạo ra từ tập nhầm
1902 lẫn\footnote{confusion set}. Tập nhầm lẫn xác định những từ thường bị
1903 nhầm lẫn (Ví dụ, ``their'' và ``there'' hay ``đã'' và ``đả''~\ldots{})
1904 Từ văn bản đúng chính tả, ta có thể áp dụng tập nhầm lẫn để tạo ra ngữ
1905 liệu sai chính tả. Để thực hiện đều này cần có tập nhầm lẫn.
1907 Nếu tập nhầm lẫn không chỉ bao gỗm các nhập nhằng về tiếng (hoặc từ
1908 đơn) mà cả nhập nhằng về từ (Ví dụ ``bàn quan'' và ``bàng quang'') thì
1909 cần phải có thêm một bộ tách từ.
1911 Hiệu quả của TBL phụ thuộc vào tập nhầm lẫn. Tập nhầm lẫn càng lớn
1912 thì khả năng sửa lỗi chính tả bằng TBL càng cao. Tuy nhiên, tập nhầm
1913 lẫn càng lớn thì khả năng sai sót cũng càng lớn, và chương trình không
1914 thể tập trung vào các lỗi thường gặp. Để TBL hiệu quả hơn, cần sử dụng
1915 thông tin từ loại (hoặc phân lớp từ). Tuy nhiên, một khi chưa sửa lỗi
1916 chính tả/tách từ xong thì việc tìm từ loại bằng các phương pháp thông
1917 dụng trở nên không an toàn.
1920 %\subsection{Mô hình n-gram}
1921 %%% Mays et al 91 -> trigram
1924 \subsection{Mô hình Winnow}
1926 Bài toán bắt lỗi chính tả được xem như là bài toán khử nhập nhằng
1927 từ. Các từ nhập nhằng được tập hợp thành tập nhầm lẫn. Tập nhầm lẫn $C
1928 = \{W_1,\ldots{},W_n\}$ nghĩa là mỗi từ $W_i$ trong tập $C$ có thể bị
1929 dùng lẫn lộn với các từ còn lại trong $C$.
1930 Bài toán bao gồm một câu, và một từ cần sửa chữa. Thuật toán thể hiện
1931 bài toán như là một danh sách các đặc trưng tích cực\footnote{active
1932 feature}. Mỗi đặc trưng tích cực thể hiện cho một ngữ cảnh cụ
1933 thể. Hai loại đặc trưng được dùng là từ ngữ cảnh\footnote{context
1934 word} và collocation. Từ ngữ cảnh là một tập các từ nằm xung quanh
1935 từ đang xét (giới hạn trong khoảng $\pm k$ từ tính từ từ đang
1936 xét). Collocation là một mẫu $l$ từ/từ loại liên tiếp nhau xung quanh
1937 từ đang xét.
1939 Một bộ rút trích đặc trưng\footnote{feature extractor} được sử dụng để
1940 chuyển văn bản gốc thành danh sách các đặc trưng tích cực. Bộ rút
1941 trích đặc trưng phải được huấn luyện trước, để chỉ lọc ra những đặc
1942 trưng nhất định (đặc trưng tích cực), thay vì tất cả các đặc trưng.
1944 Để huấn luyện bộ rút trích đặc trưng, ta cho chạy bộ rút trích đặc
1945 trưng trên ngữ liệu huấn luyện, rút trích tất cả các đặc trưng có thể
1946 có, đồng thời thống kê số lượng của mỗi đặc trưng. Sau khi chạy xong,
1947 danh sách đặc trưng này sẽ bị cắt bớt theo một tiêu chí cho trước, chỉ
1948 chừa lại những đặc trưng được xem là tích cực. Có thể thu gọn danh
1949 sách đặc trưng theo nhiều tiêu chí khác nhau. Tuy nhiên cách đơn giản
1950 nhất là dựa vào tần số xuất hiện của các đặc trưng. Nếu các đặc trưng
1951 xuất hiện ít hơn một ngưỡng nào đó thì đặc trưng đó bị loại bỏ.
1953 Công việc mỗi bộ phân lớp là xác định từ $W_i$ trong tập nhầm lẫn có thuộc
1954 về câu đang xét hay không. Mỗi bộ phân lớp chạy thuật toán Winnow. Bộ
1955 phân lớp nhận tập các đặc trưng tích cực (đại diện cho câu đang xét),
1956 trả về giá trị nhị phân cho biết từ $W_i$ có thuộc về câu đang xét hay
1957 không. Đặt $F$ là tập các đặc trưng tích cực. Với mỗi $f\in F$, đặt
1958 $w_f$ là trong số của cung nối $f$ với bộ phân lớp. Thuật toán Winnow
1959 trả về giá trị 1 khi và chỉ khi $$\sum_{f\in F}w_f > \theta$$ trong đó
1960 $\theta$ là tham số ngưỡng.
1962 Khởi đầu, bộ phân lớp không kết nối với bất kỳ đặc trưng nào trong
1963 mạng. Trong quá trình huấn luyện, các kết nối và trọng số của kết nối
1964 sẽ được thành lập. Một mẫu huấn luyện bao gồm một câu (tập đặc trưng
1965 tích cực) cùng với từ $W_c$ trong tập nhầm lẫn. $W_c$ là từ đúng cho
1966 câu trong mẫu huấn luyện đối với các mẫu khẳng định\footnote{positive
1967 example} và là từ sai trong các mẫu phủ định\footnote{negative
1968 example}.
1970 Quá trình huấn luyện được tiến hành theo như sau: lần lượt mỗi mẫu
1971 được đưa vào hệ thống, các bộ phân lớp được cập nhật, sau đó mẫu bị
1972 hủy.
1974 Bước đầu tiên huấn luyện bộ phân lớp là thiết lập các liên kết
1975 giữa bộ phân lớp và các đặc trưng tích cực $F$ trong mẫu. Nếu đặc
1976 trựng tích cực $f \in F$ chưa được kết nối vào bộ phân lớp, và cầu là
1977 mẫu khẳng định đối với bộ phân lớp, ta tạo một kết nối giữa đặc trưng
1978 đó và bộ phân lớp với giá trị trọng số khởi đầu là $0,1$. Chú ý rằng
1979 không có gì xảy ra với các mẫu phủ định.
1981 Bước kế tiếp là cập nhật trong số cho các liên kết. Bước này được thực
1982 hiện nhờ vào luật cập nhật Winnow, chỉ cập nhật trọng số khi xảy ra
1983 lỗi. Nếu bộ phân lớp dự đoán là 0 đối với một mẫu khẳng định (nghĩa là
1984 lẽ ra bộ phân lớp phải dự đoán là 1), trong số sẽ được tăng:
1985 $$\forall f \in F, w_f \leftarrow \alpha \cdot w_f$$
1986 trong đó $\alpha > 1$ là tham số cho trước. Nếu bộ phân lớp dự đoán 1
1987 với các mẫu phủ định (mà lẽ ra bộ phân lớp phải dự đoán là 0), trọng
1988 số sẽ được giảm:
1989 $$\forall f \in F, w_f \leftarrow \beta \cdot w_f$$
1990 với $0 < \beta < 1$ là tham số cho trước. \cite{Golding99} đề nghị
1991 $\alpha$ là $1,5$ và $\beta$ là $0,5$ đến $0,9$. Như vậy, trọng số của
1992 các đặc trưng không tích cực sẽ giữ nguyên, không thay đổi. Thời gian
1993 cập nhật của thuật toán phụ thuộc vào số đặc trưng tích cực trong mẫu.
1995 Thay vì xử lý từ $W_i$ dựa trên một bộ phân lớp, ta có thể áp dụng kết
1996 quả trả về của nhiều bộ phân lớp đồng thời. Mô hình Weighted Majority
1997 được dùng để kết hợp nhiều bộ phân lớp. Ta cho chạy nhiều bộ phân lớp
1998 đồng thời. Các bộ phân lớp trả về các giá trị khác nhau. Hiệu suất của
1999 mỗi bộ phân lớp được theo dõi. Trọng số được tính toán để phản ánh độ
2000 chính xác của bộ phân lớp. Giá trị sau cùng là tổng của các dự đoán
2001 của các bộ phân lớp được xét, kèm với trọng số của mỗi bộ phân lớp.
2003 Mô hình này được áp dụng trong~\cite{Golding99}.
2005 \subsection{Mô hình Danh sách quyết định}
2006 %%% Yarowsky 94 -> decision lists
2008 Mô hình Danh sách quyết định được Yarowsky đưa ra để giải quyết bài
2009 toán khử nhập nhằng ngữ nghĩa. Mô hình này dựa trên các đặc trưng quan
2010 trọng để nhận dạng. Ngoài ra kết xuất của mô hình rất đơn giản, dễ
2011 hiểu, tạo thuận lợi trong nghiên cứu, cải tiến mô hình. Phương pháp
2012 này được~\cite{vietdecisionlist} áp dụng để bắt lỗi chính tả tiếng
2013 Việt.
2015 Mô hình có thể sử dụng nhiều loại đặc trưng khác nhau. Hai đặc trưng
2016 thường được áp dụng là từ ngữ cảnh và collocation.
2018 Thuật toán của mô hình như sau:
2019 \begin{enumerate}
2020 \item Xét mỗi từ trong câu, có tập nhầm lẫn tương ứng là $S$.
2021 \item Với mỗi từ $w \in S$:
2022 \begin{enumerate}
2023 \item Xác định tập đặc trưng $C_w$ không chứa các đặc trưng xung đột
2024 với các đặc trưng đã được chấp nhận trước đó.
2025 \item Tím điểm của từ:$$Score(w)=\underset{f\in C_w}{max}P(w|f)$$
2026 và xác định $$f_w = \underset{f\in C_w}{argmax}P(w|f)$$
2027 \end{enumerate}
2028 \item Từ được chọn là $$a=\underset{w\in S}{argmax}Score(w)$$ Ghi nhớ
2029 thuộc tính $f_w$ để kiểm tra xung đột ở các vị trí khác.
2030 \end{enumerate}
2032 Quá trình huấn luyện mô hình như sau.
2033 \begin{itemize}
2034 \item Bộ rút trích đặc trưng (tương tự
2035 như trong mô hình Winnow) được sử dụng để rút ra các đặc trưng tích
2036 cực từ các câu trong ngữ liệu huấn luyện.
2037 \item Đếm tần số xuất hiện của mỗi
2038 đặc trưng.
2039 \item Loại bỏ các đặc trưng không đáng tin cậy (Ví dụ, tần số
2040 quá thấp).
2041 \item Sắp xếp các đặc trưng theo thứ tự giảm dần khả năng quyết định.
2042 \end{itemize}
2044 \subsection{Mô hình Trigram và Bayes}
2046 Mô hình sửa lỗi bằng Trigram rất đơn giản. Đối với mỗi câu, các từ
2047 trong tập nhầm lẫn được thay thế cho từ tương ứng trong câu, sau đó
2048 tính xác suất trigram của toàn bộ câu. Từ tương ứng với câu có xác
2049 suất lớn nhất sẽ là từ được chọn. Cho câu $W =
2050 w_1\ldots{} w_k\ldots{} w_n$, $w_k'$ là từ được dùng để thay thế cho
2051 $w_k$, tạo ra câu mới $W'$. Nếu $P(W') > P(W)$ thì $w_k'$ sẽ được
2052 chọn, với $P(W)$ và $P(W')$ lần lượt là xác suất trigram của câu $W$
2053 và $W'$.
2055 Một cải tiến của phương pháp này là
2056 áp dụng trigram dựa trên từ loại thay vì trigram từ. Từ câu $W$, ta
2057 tạo ra các chuỗi từ loại. Xác suất cuối cùng là:
2058 \begin{align}
2059 P(W) &=\sum_T P(W,T)\\
2060 P(W,T)&=P(W|T)P(T)\\
2061 &=\prod_i P(w_i|t_i)\prod_i P(t_i|t_{i-2}t_{i-1})
2062 \end{align}
2063 với $T$ là một chuỗi từ loại của $W$, $T=t_1\ldots{} t_n$ và
2064 $P(t_i|t_{i-2}t_{i-1})$ là xác suất trigram từ loại.
2066 Một mô hình khác để tìm và sửa lỗi chính tả là áp dụng bộ phân lớp
2067 Bayes. Có thể xem đây là bài toán phân lớp từ dựa vào một tập các đặc
2068 trưng. Từ cần xét là từ nằm trong tập nhầm lẫn, ta sẽ xét từ này và
2069 các từ khác trong tập nhầm lẫn trong cùng ngữ cảnh. Tập đặc trưng
2070 chính là ngữ cảnh của từ cần xét. Tập đặc trưng được rút trích từ câu
2071 đang xét. Các đặc trưng và cách rút trích đặc trưng tương tự như trong
2072 mô hình Winnow.
2074 Mô hình Trigram và Bayes, mỗi cái có điểm mạnh riêng. Mô hình trigram
2075 hoạt động tốt nếu những từ trong tập nhầm lẫn không cùng từ
2076 loại. Ngược lại, khi không thể phân biệt dựa trên từ loại, mô hình
2077 Bayes sẽ hoạt động tốt hơn do dựa vào các thông tin về cú pháp, ngữ
2078 cảnh xung quanh. Do đó, giải pháp tốt nhất là kết hợp hai mô hình này
2079 với nhau. Đầu tiên ta áp dụng mô hình Trigram. Trong quá trình xử lý,
2080 nếu thấy mọi từ trong tập nhầm lẫn đều cùng từ loại, ta áp dụng mô
2081 hình Bayes. Ngược lại, ta sẽ chấp nhận kết quả của mô hình
2082 Trigram. Giải pháp này được áp dụng trong~\cite{Golding96}, tạo ra mô
2083 hình Tribayes.
2086 \subsection{Mô hình Bayes và Danh sách quyết định}
2087 %%% Golding 95 -> hybrid method
2088 Mô hình Danh sách quyết định là một mô hình mạnh. Tuy nhiên, có một
2089 điểm cần lưu ý là mô hình này chỉ sử dụng {\em một} đặc trưng tốt nhất
2090 để phân loại. Có lẽ tốt hơn là nên sử dụng {\em tất cả} các đặc trưng
2091 để phân loại. Không có lý do gì để chỉ sử dụng một đặc trưng, trong
2092 khi ta vẫn có thể khai thác các đặc trưng khác. Đây là nơi có thể cải
2093 tiến bằng cách sử dụng bộ phân lớp Bayes.
2095 Bộ phân lớp Bayes cũng sử
2096 dụng một tập các đặc trưng, sắp theo thứ tự giảm dần hiệu quả. Bộ phân
2097 lớp Bayes phân loại từ đang xét bằng cách sử dụng các đặc trưng. Tuy
2098 nhiên, thay vì dừng lại sau khi áp dụng đặc trưng đầu tiên có thể sử
2099 dụng, Bayes duyệt qua tất cả các đặc trưng, kết hợp tất cả các đặc
2100 trưng, và giải quyết các xung đột giữa các đặc trưng nếu có, để đưa ra
2101 kết quả sau cùng. Ta giả sử chỉ sử dụng các đặc trưng loại từ ngữ cảnh
2102 và collocation. Nếu hai đặc trưng cần xét đều là từ ngữ cảnh,
2103 vậy sẽ không có xung đột. Nếu hai đặc trung đang xét đều
2104 là collocation và chồng lên nhau, nghĩa là có xung đột. Đặc trưng xung
2105 đột với đặc trưng đã xét trước đó sẽ bị bỏ qua, không được xem
2106 xét.
2108 Phương pháp này được đề nghị bởi~\cite{Golding95}.
2110 \section{Bắt lỗi chính tả các ngôn ngữ châu Á}
2113 Điểm đặc trưng dễ thấy giữa các ngôn ngữ châu Âu và các ngôn ngữ châu
2114 Á, như tiếng Trung Quốc, tiếng Nhật, tiếng Hàn Quốc~\ldots{}, là ranh
2115 giới từ. Đối với các thứ tiếng châu Âu, các cụm ký tự cách nhau bởi
2116 khoảng trắng cũng là từ, do đó việc tách từ rất dễ dàng (chỉ phải
2117 xử lý các trường hợp đặc biệt như dấu `-'~\ldots{}). Đối với các tiếng
2118 châu Á, đặc biệt là tiếng Việt, công việc phức tạp hơn nhiều. Bởi vì
2119 một ``từ'' như quan niệm châu Âu chỉ là một phần từ (một âm tiết trong
2120 tiếng Việt) trong các ngôn ngữ châu Á. Điều này đặt ra một vấn đề mà
2121 các chương trình bắt lỗi chính tả các thứ tiếng châu Âu chưa từng gặp
2122 phải: phân ranh giới từ.
2124 Do các phương pháp dựa trên tiếng Anh đều ngầm định có thể tìm được
2125 ranh giới từ ngay tức thì, nên khi áp dụng cho tiếng Trung Quốc,
2126 tiếng Việt~\ldots{}{} không dễ dàng. Điểm khó khăn ở đây là nếu ta thay
2127 một từ bằng một từ khác (trong tập nhầm lẫn) có độ dài không giống từ
2128 trước đó, thì toàn bộ ranh giới từ phía sau sẽ bị thay đổi. Nói cách
2129 khác, câu đã bị biến thành một câu khác (xét trên quan điểm câu là một
2130 chuỗi các từ) khi thay đổi một từ trong câu.
2132 Nếu không giải trực tiếp bài toán mà thực hiện tách từ trước, sau đó
2133 mới bắt lỗi chính tả, thì khó khăn lại đè nặng lên phần tách từ.
2134 Bài toán tìm ranh giới từ vốn đã phức tạp
2135 (trong một số trường hợp, nếu không dựa vào thông tin ngữ nghĩa thì
2136 không thể nào tách từ), lại càng phức tạp hơn khi áp dụng trong bài
2137 toán bắt lỗi chính tả, vì khi đó ta phải tìm ranh giới từ khi {\em các
2138 từ/tiếng đầu vào có thể không đúng}. Nói cách khác, ta phải thực hiện
2139 tách từ trong điều kiện dữ liệu đầu vào không hoàn toàn chính xác:
2140 tách từ mờ. Các kỹ thuật tách từ, nếu bỏ qua
2141 yếu tố này sẽ dễ dẫn đến sai lầm, vì mọi phương pháp tách từ đều ngầm
2142 định là dữ liệu đầu vào là chính xác. Sau khi tách từ xong, bài toán bắt
2143 lỗi chính tả trở nên đơn giản. Ta có thể áp dụng các kỹ thuật đã được
2144 áp dụng trên bắt lỗi chính tả các ngôn ngữ châu Âu dễ dàng.
2148 %%% Bắt lỗi chính tả không tách từ, có không?
2150 \section{Tách từ}
2152 %\note{Liệt kê các phương pháp tách từ}
2153 Bài toán tách từ cho ngôn ngữ đơn lập đã được đặt ra từ lâu, chủ yếu
2154 để giải quyết cho tiếng Trung Quốc, tiếng Nhật. Các thuật toán tách từ có thể
2155 được phân loại như sau:
2157 \begin{description}
2158 \item[Dựa theo luật] Bao gồm các cách sau:
2160 \begin{itemize}
2161 \item Longest Matching, Greedy Matching Models (Yuen Poowarawan, 1986;
2162 Sampan Rarurom, 1991)
2163 \item Mô hình khớp tối đa\footnote{Maximal Matching Model}. Mô hình
2164 này được chia thành ``khớp tối đa tiến''\footnote{forward maximum
2165 match} và ``khớp tối đa lùi''\footnote{backward maximum match}. Đối
2166 với phương pháp này thì một từ điển hoàn chỉnh là không thể
2167 thiếu. Một từ điển không hoàn chỉnh sẽ giảm hiệu suất của thuật
2168 toán. Tuy nhiên, dễ thấy là khó có thể có một từ điển hoàn chỉnh
2169 (đặc biệt khi các ngôn ngữ vẫn còn được tiếp tục phát triển hằng
2170 ngày trong thời đại ngày nay). Mô hình này tùy thuộc nhiều vào từ
2171 điển.
2172 %% \begin{itemize}
2173 %% \item Thai, Sornlertlamvanich (1993).
2174 %% \item Chinese, Chih-Hao Tsai (1996), MMSeg 2000.
2175 %% \end{itemize}
2176 \end{itemize}
2177 \item[Dùng thống kê]
2178 Giải pháp này dựa vào ngữ cảnh từ xung quanh để đưa ra quyết định
2179 thích hợp. Có hai vấn đề cần được giải quyết đối với giải pháp này:
2180 độ rộng ngữ cảnh, và cách áp dụng thống kê. Ngữ cảnh càng rộng thì
2181 thuật toán càng phức tạp.
2183 Cho dù độ rộng ngữ cảnh thế nào, luôn có thể áp dụng mô hình
2184 first-order HMM. Tuy nhiên giải pháp này phụ thuộc rất nhiều vào ngữ
2185 liệu huấn luyện. Kết quả huấn luyện trên ngữ liệu chính trị khó có
2186 thể áp dụng trên các tài liệu văn học và ngược lại. Thêm vào đó, có
2187 những từ có xác suất rất cao, nhưng chỉ có chứng năng về mặt ngữ
2188 pháp, làm giảm vai trò của xác suất.
2189 %% \begin{itemize}
2190 %% \item HMM dựa trên thuật toán Viterbi. (Asanee Kawtraku, 1995;
2191 %% Surapant,1995).
2192 %% \item EM. Xianping, 1996.
2193 %% \end{itemize}
2194 \item[Các cách khác]
2195 Hầu hết các giải pháp khác là sự lai tạo giữa các mô hình trên và
2196 các mô hình ngôn ngữ học như WFST, TBL. Thời gian xử lý
2197 các giải pháp loại này trở nên đáng kể, nhưng độ chính xác đạt được
2198 khá cao.
2200 Tri thức về ngôn ngữ, thường được áp dụng cho các mô hình dựa trên
2201 luật, hiếm khi được áp dụng cho những mô hình trên.
2202 \end{description}
2204 Một số phương pháp tách từ được mô tả ngắn gọn bên dưới.
2206 \subsection{Khớp tối đa}
2208 Thuật toán so khớp tối đa hoạt động như tên của chính nó. Thuật toán
2209 giải quyết bài toán tách từ bằng cách chọn cách tách từ nào có nhiều
2210 từ nhất (so khớp được nhiều nhất). Thuật toán được áp dụng để xây dựng
2211 chương trình tách từ tiếng Trung Quốc
2212 MMSEG\footnote{http://casper.beckman.uiuc.edu/~c-tsai4/chinese/wordseg/mmseg.zip}.
2213 Thuật toán này có nhiều biến thể khác nhau.
2216 \begin{itemize}
2217 \item Dạng đơn giản, được dùng để giải quyết nhập nhằng từ đơn. Giả sử
2218 có một chuỗi ký tự (tương đương với chuỗi tiếng trong tiếng Việt)
2219 $C_1, C_2, \ldots{} C_n$. Ta bắt đầu từ đầu chuỗi. Đầu tiên, kiểm
2220 tra xem $C_1$ có phải là từ hay không, sau đó kiểm tra xem $C_1C_2$
2221 có phải là từ hay không. Tiếp tục tìm cho đến khi tìm được từ dài
2222 nhất. Từ có vẻ hợp lý nhất sẽ là từ dài nhất. Chọn từ đó, sau đó tìm
2223 tiếp như trên trên những từ còn lại cho đến khi xác định được toàn
2224 bộ chuỗi từ.
2225 \item Dạng phức tạp. Quy tắc của dạng này là phân đoạn có vẻ hợp lý
2226 nhất là đoạn ba từ với chiều dài tối đa. Thuật toán bắt đầu như dạng
2227 đơn giản. Nếu phát hiện ra những cách tách từ gây nhập nhằng (ví dụ,
2228 $C_1$ là từ và $C_1C_2$ cũng là từ), ta xem các chữ kế tiếp để tìm
2229 tất cả các đoạn ba từ có thể có bắt đầu với $C_1$ hoặc $C_1C_2$. Ví
2230 dụ ta được những đoạn sau:
2231 \begin{itemize}
2232 \item $C_1\quad C_2\quad C_3C_4$
2233 \item $C_1C_2\quad C_3C_4\quad C_5$
2234 \item $C_1C_2\quad C_3C_4\quad C_5C_6$
2235 \end{itemize}
2236 Chuỗi dài nhất sẽ là chuỗi thứ ba. Vậy từ
2237 đầu tiên của chuỗi thứ ba ($C_1C_2$) sẽ được chọn. Thực hiện lại các
2238 bước cho đến khi được chuỗi từ hoàn chỉnh. Cách này đạt được độ
2239 chính xác 99.69\%~\cite{ChenLiu}.
2240 \end{itemize}
2244 \subsection{Mô hình HMM}
2246 Trong cách áp dụng này, các trạng thái ẩn là các lớp từ, giả định rằng
2247 mỗi từ có thể thuộc mọi lớp với một xác suất nhất định. Bài toán được
2248 xem như tìm kiếm chuỗi lớp từ $C=c_1,\ldots{},c_n$ từ một chuỗi từ
2249 $W=w_1,\ldots{},w_n$. Mục tiêu là tìm $W$ và $C$ từ câu $S$ cho trước,
2250 sao cho tối đại xác suất$$\underset{W,C}{argmax}P(W|C)P(C)$$
2251 Giả định rằng xác suất $P(W|C)$ chỉ phụ thuộc vào lớp từ của nó, và
2252 xác suất lớp $P(C)$ chỉ phụ thuộc vào lớp của từ đứng trước. Những xác
2253 suất này có thể được ước lượng bằng thuật toán Baum-Welch dùng ngữ
2254 liệu huấn luyện. Tiến trình học dựa trên thuật toán Baum-Welch và
2255 giống với bài toán đánh nhãn từ loại bằng HMM, trừ việc số trạng thái
2256 được xác định trước và xác suất khởi đầu được gán ngẫu nhiên.
2258 %% \subsection{Mô hình HHMM}
2260 %% Mô hình Markov ẩn phân cấp (HHMM)\footnote{Hierarchical Hidden Markov
2261 %% Model}~\cite{hhmm} được áp dụng trong~\cite{hhmm2} để giải quyết bài toán tách từ
2262 %% tiếng Trung Quốc.
2264 %% Mô hình HMM\footnote{Hidden Markov Model} (L. R. Rabiner, 1989) là một
2265 %% mô hình rất mạnh để xử lý
2266 %% ngôn ngữ tự nhiên. Tuy nhiên, HMM truyền thống khó áp dụng hiệu quả
2267 %% do một số hiện tượng phức tạp trong ngôn ngữ tự nhiên. Do vậy, Shai
2268 %% Fine et al (1998) đã đưa ra mô hình HHMM, một mô hình đệ quy, tổng
2269 %% quát hoá của HMM.
2271 %% HHMM bao gồm sáu thành phần ($S$, $O$, $\Pi$, $A$, $B$, $D$).
2272 %% \begin{itemize}
2273 %% \item $D$ là số mức sâu.
2274 %% \item $S$ là tập trạng thái hữu hạn.
2275 %% \item $O$ là bảng chữ cái kết quả hoặc kết xuất trung gian.
2276 %% \item $\Pi$ là xác suất trạng thái khởi đầu.
2277 %% \item $A$ là xác suất chuyển trạng thái.
2278 %% \item $B$ là xác suất phát sinh các ký hiệu hoặc kết xuất trung gian.
2279 %% \end{itemize}
2280 %% Sự khác nhau giữa HHMM và HMM là:
2281 %% \begin{itemize}
2282 %% \item Tập trạng thái $S$ có thể được tách làm nhiều tập con, tùy theo
2283 %% số mức của nó. Một trạng thái trong $S$ được đánh dấu bằng $q_i^d$
2284 %% với $(0<d\le D, 0<i\le|S^d|)$. Trong đó $d$ là chỉ số mức, $i$ là
2285 %% chỉ số trạng thái, $S^d$ là tập trạng thái mức $d$. Khi $d=D$,
2286 %% $q_i^d$ được gọi là trạng thái kết thúc vì its observation is
2287 %% symbols. Ngược lại, nó được gọi là trạng thái nội bộ vì observation
2288 %% của nó là từ HMM con của nó trong mức thứ $(d+1)$.
2289 %% \item Mỗi trạng thái nội bộ $q^d$ $(0<d<D)$ có những trạng thái con
2290 %% của nó, hình thành một HMM độc lập. Trong HMM con, xác suất chuyển
2291 %% trạng thái là:
2292 %% $$A(q^d) = (a_{ij}(q^d)) = (P(q_j^{d+1}|q_i^{d+1}))$$
2293 %% Véc tơ phân bố khởi đầu là:
2294 %% $$\Pi(q^d)=(\pi^d(q_i^{d+1}))=(P(q_i^{d+1}|q^d))$$
2295 %% Trong đó $P(q_i^{d+1}|q^d)$ được định nghĩa là xác suất của trạng
2296 %% thái $q^d$ kích hoạt trạng thái con $q_i^{d+1}$ lúc ban đầu.
2297 %% \item Chỉ có HMM dưới đáy có thể observe các ký hiệu. Xác suất phát
2298 %% ký hiệu tương ứng là:
2299 %% $$B(q^D)=(b_k(q^D))=(P(o_k|q^D))$$
2300 %% với $o_k$ nằm trong tập ký hiệu. Với mỗi HMM mức $d (d<D)$, chuỗi
2301 %% trạng thái trong các HMM con của nó có thể xem như là
2302 %% observation. Xác suất phát sinh có thể được ước lượng như trên.
2303 %% \end{itemize}
2305 %% HHMM bao gồm $D$ mức HMM mà mỗi mức này là một HMM độc lập. Hơn nữa,
2306 %% mỗi HMM chỉ liên kết với cha và con của nó. Toàn bộ tập tham số của
2307 %% HHMM được ký hiệu là:
2308 %% \begin{align}
2309 %% \lambda&=\{(\lambda(q^d))\}_{d\in\{1,\ldots{},D\}}\\
2310 %% &=\{\{A(q^d)\}_{d\in\{1,\ldots{},D-1\}},\{\Pi(q^d)\}_{d\in\{1,\ldots{},D-1\}},\{B(q^D)\}\}
2311 %% \end{align}
2313 %% HMM là dạng đặc biệt của HHMM, khi $D=1$.
2315 %% Khi áp dụng HHMM để tách từ. Các từ chính là tập ký hiệu, còn các
2316 %% tiếng chính là các trạng thái. Đến đây, ta quay về bài toán HMM truyền
2317 %% thống.
2319 \subsection{Mô hình WFST và mạng nơ-ron}
2321 WFST\footnote{Weighted Finite State Transducer} đã được~\cite{Sproat}
2322 áp dụng để tách từ tiếng Trung Quốc. Ý tưởng cơ bản là áp dụng WFST
2323 kết hợp với trọng số là xác suất xuất hiện của mỗi từ trong ngữ
2324 liệu. Dùng WFST để duyệt qua câu cần xét. Cách duyệt có trọng số lớn
2325 nhất sẽ là cách tách từ được chọn. Giải pháp này cũng đã được áp dụng
2326 trong Luận văn Tách từ tiếng Việt\footnote{Nguyễn Văn Toàn, Nguyễn Thi
2327 Minh Hằng -- Khoa Công nghệ thông tin, Khoá 97, Đại học Khoa học Tự
2328 nhiên} kèm với mạng nơ-ron để khử nhập nhằng.
2330 %% \subsection{Mô hình TBL}
2332 %% TBL là mô hình học có thầy được Eric Brill đưa ra vào năm 1990.
2334 %% Việc áp dụng TBL đòi hỏi phải có một ngữ liệu tách từ sẵn. Tuy lượng
2335 %% ngữ liệu không cần lớn như trong các cách áp dụng thống kê, nhưng vẫn
2336 %% là một lượng đáng kể. Việc tạo một ngữ liệu như thế sẽ tốn rất nhiều
2337 %% công sức. Đây là một điểm yếu (và cũng là điểm mạnh) của TBL.
2339 \subsection{Mô hình Source-Channel cải tiến}
2340 %-% cws-ACL03.pdf
2342 Mô hình này được đề nghị trong~\cite{sc}.
2344 Đặt $S$ là một câu tiếng Trung Quốc, hay là một chuỗi các ký tự (tương
2345 đương chuỗi tiếng trong tiếng Việt). Với mỗi cách tách từ $W$ có thể
2346 có, chọn cách tách từ tốt nhất $W^*$, tương ứng với xác suất điều kiện
2347 $P(W|S)$:
2348 $$W^*=\underset{w}{argmax}P(W|S)$$
2349 Theo công thức Bayes, bỏ mẫu số là hằng số, ta được:
2350 $$W^*=\underset{w}{argmax}P(W)P(S|W)$$
2351 Ta định nghĩa lớp từ $C$ như sau:
2352 \begin{itemize}
2353 \item Mỗi từ được định nghĩa như một lớp.
2354 \item Mỗi từ dẫn xuất hình thái được định nghĩa như một lớp.
2355 \item Mỗi loại ký hiệu khác nhau được định nghĩa như một lớp. Ví dụ, các biểu
2356 thức thời gian thuộc về lớp TIME.
2357 \item Mỗi loại tên riêng thuộc về một lớp. Ví dụ, tên người thuộc lớp PN.
2358 \end{itemize}
2360 Ta chuyển công thức trên qua các lớp từ:
2361 $$C^*=\underset{c}{argmax}P(C)P(S|C)$$
2362 Công thức trên là công thức cơ bản của mô hình source-channel cho tách
2363 từ tiếng Trung Quốc. Mô hình giả định câu S được phát sinh như sau:
2364 Đầu tiên, một người chọn một chuỗi khái niệm (ví dụ, lớp từ $C$) để
2365 xuất ra, theo xác suất $P(C)$. Sau đó người đó cố gắng thể hiện các
2366 khái niệm đó bằng chuỗi các ký tự, theo xác suất $P(S|C)$.
2368 Mô hình source-channel có thể được hiểu theo một cách khác: $P(C)$ là
2369 mô hình thống kê dự đoán xác suất của chuỗi lớp từ. Nó chỉ ra khả năng
2370 một lớp từ xuất hiện, dựa trên một ngữ cảnh cho trước. Vậy $P(C)$ còn
2371 được hiểu như {\em mô hình ngữ cảnh}. $P(S|C)$ là mô hình phát sinh,
2372 dự đoán khả năng một chuỗi ký tự được phát sinh dựa trên lớp từ cho
2373 trước. Vậy $P(S|C)$ còn được hiểu như {\em mô hình lớp}.
2375 Mặc dù mô hình ngữ cảnh và mô hình lớp có thể được kết hợp bằng một
2376 phép nhân đơn giản. Tuy nhiên nếu thêm trọng số thì kết quả tốt
2377 hơn. Lý do là có một số mô hình lớp dự đoán kết quả rất không chính
2378 xác. Hơn nữa, các mô hình lớp của các lớp từ khác nhau được xây dựng
2379 theo những cách khác nhau. Vì vậy xác suất mô hình lớp khác nhau nhiều
2380 giữa các mô hình lớp. Một cách để cân bằng những xác suất này là thêm
2381 vào một trọng số $CW$ cho mỗi mô hình lớp để điều chỉnh xác suất
2382 $P(S|C)$ thành $P(S|C)^{CW}$
2384 Với mô hình đã có, thao tác tách từ bao gồm hai bước:
2385 \begin{enumerate}
2386 \item Cho chuỗi S, phát sinh mọi cách tách từ có thể có. Mỗi cách tách
2387 từ được đánh nhãn lớp từ và xác suất lớp $P(S'|C)$ với $S'$ là bất
2388 kỳ chuỗi con nào của $S$.
2389 \item Thuật toán tìm kiếm Viterbi được áp dụng để chọn cách tách từ có
2390 khả năng nhất theo công thức nêu trên.
2391 \end{enumerate}
2393 \subsubsection{Huấn luyện}
2395 Nếu có một dữ liệu được tách từ sẵn, công việc trở nên rất dễ
2396 dàng. Tuy nhiên, việc xây dựng một ngữ liệu tách từ sẵn đủ lớn sẽ tốn
2397 rất nhiều công sức (đặc biệt là các mô hình thống kê thường đòi hỏi
2398 lượng ngữ liệu cực kỳ lớn, lớn hơn rất nhiều so với các mô hình dựa
2399 trên luật). Để đơn giản vấn đề, ngữ liệu này được xây dựng tự động như
2400 sau:
2401 \begin{enumerate}
2402 \item Khởi đầu, sử dụng một bộ tách từ sẵn có (có thể áp dụng các
2403 thuật giải đơn giản, không cần huấn luyện, như Longest matching,
2404 Maximum matching~\ldots{})
2405 \item Sử dụng mô hình đề nghị để tách từ ngữ liệu huấn luyện.
2406 \item Tái huấn luyện mô hình dựa trên kết quả tách từ có được ở bước
2407 2. Bước 2-3 có thể được lặp lại nhiều lần cho đến khi hiệu suất của
2408 mô hình ngừng tăng.
2409 \end{enumerate}
2411 %%% give some comments about source-channel models.
2413 %%% Giải thích rõ hơn về các mô hình
2415 \subsection{Mô hình TBL}
2417 Mô hình TBL (xem thêm phần~\ref{sec:tbl-spell}) cũng có thể được áp
2418 dụng để tách từ tiếng Trung Quốc~\cite{palmer}.
2420 Mô hình TBL có thể được áp dụng cho nhiều bài toán khác nhau. Tùy vào
2421 các hành động cụ thể của mẫu luật mà cách áp dụng sẽ khác nhau. Mẫu luật
2422 áp dụng cho TBL sử dụng các hành động sau:
2423 \begin{itemize}
2424 \item Nối hai ký tự (tiếng).
2425 \item Tách hai ký tự.
2426 \item Trượt ranh giới từ sang ký tự kế bên.
2427 \end{itemize}
2429 Trình tách từ baseline, có thể áp dụng cách khớp tối đa.
2432 %\subsection{Tách từ bằng bộ đánh nhãn}
2435 \section{Tách từ mờ}
2437 Như đã nói trên, bài toán tách từ không đơn thuần là tách từ đúng như
2438 nghĩa ban đầu, mà là tách từ trong điều kiện dữ liệu đầu vào có khả
2439 năng bị sai. Nói cách khác, đây là bài toán tách từ có khả năng chịu
2440 lỗi\footnote{error-tolerant word segmentation}. Các phương pháp tách
2441 từ được nêu, thông thường không thể áp dụng trực tiếp mà phải có một
2442 số cải tiến nhất định nếu có thể. Ngoài ra cũng có thể áp dụng một số
2443 giải pháp khác, tuy không trực tiếp áp dụng cho tách từ mờ, nhưng phần
2444 nào có thể gợi ý cho một giải thuật tách từ mờ hiệu quả.
2446 Kemal Oflazer~\cite{Oflazer} khi xử lý hình thái trong tiếng Thổ Nhĩ Kỳ gặp trường
2447 hợp khá giống với trường hợp này. Tác giả phải tách hình thái từ
2448 trong điều kiện từ đó bị sai chính tả. Do đặc tính
2449 ngôn ngữ chắp dính\footnote{agglunative language}, số tiếp vĩ ngữ
2450 nhiều, liên tiếp nhau, gây khó khăn cho việc nhận dạng tiếp vĩ ngữ,
2451 cũng như không thể phân biệt những tiếng nào hợp thành một từ trong
2452 một chuỗi tiếng trong tiếng Việt. Tác giả dùng một hàm độ đo, tạo ra
2453 các tiếp đầu ngữ có khả năng thay thế dựa trên độ đo này, sau đó sử
2454 dụng WFST để tìm chuỗi tiếp vĩ ngữ thích hợp nhất.
2456 Bài toán nhận dạng tiếng nói trong tiếng Anh cũng gặp trường hợp tương
2457 tự~\cite{Ravishankar}. Sau công đoạn xử lý âm thanh, ta nhận được
2458 một chuỗi các âm tiết. Ta phải chuyển nhóm âm tiết này thành
2459 chuỗi từ. Do âm thanh thường bị nhiễu, nên các âm tiết có thể
2460 không chính xác hoàn toàn. Ngoài ra, do đặc tính của tiếng Anh nên
2461 cùng một chuỗi âm tiết có thể suy ra nhiều chuỗi từ khác nhau. Tác giả
2462 sử dụng lưới từ để tạo ra các chuỗi từ có khả năng từ chuỗi âm tiết,
2463 sau đó n-gram trên từ để lượng giá các chuỗi từ.
2465 Một điểm đáng chú ý ở
2466 đây là sự tương đồng về một mặt nào đó giữa tiếng Anh và tiếng
2467 Việt. Với tiếng Anh, từ có thể tách dễ dàng, nhưng từ bao gồm nhiều âm
2468 tiết. Việc phân ranh giới âm tiết trong tiếng Anh là một điều khá khó
2469 khăn. Với tiếng Việt, các âm tiết được tách rất dễ dàng vì mỗi âm tiết
2470 là một ``tiếng'' tương đương với một ``từ'' trong câu --- cách nhau
2471 bởi khoảng trắng. Từ của tiếng Việt lại bao gồm nhiều tiếng, và việc
2472 tách từ lại gặp nhiều khó khăn. Với nhận xét này, có thể thấy các bài
2473 toán nhận dạng tiếng nói tiếng Anh gặp cùng vấn đề với bài toán bắt
2474 lỗi chính tả tiếng Việt!
2476 \cite{Chang} cũng dùng mô hình ngôn ngữ dạng n-gram để đánh giá các
2477 cách tách từ sau khi đã qua tiền xử lý nhập nhằng chính tả, tuy nhiên
2478 lại sử dùng nhiều mô hình ngôn ngữ khác nhau như
2479 character bigram, word bigram, inter-word character bigram (IWCB), POS
2480 bigram, word class bigram.
2482 Dựa trên những nghiên cứu này, có thể thấy giải pháp khả thi cho việc
2483 tách từ khi bị
2484 sai chính tả, là phát sinh một loạt các từ có khả năng thay thế, với
2485 giả định trong tập từ này sẽ có từ đúng chính tả, thay thế từ sai chính
2486 tả ban đầu. Sau đó sử dụng tách từ tìm một cách tách tốt nhất. Sau khi
2487 tìm được cách tách từ, ta có thể tra từ điển để tìm xem từ nào bị sai.
2489 \subsection{Huấn luyện}
2491 Nếu có dữ liệu đã được đánh dấu sẵn các ranh giới từ, công việc đơn
2492 giản chỉ là áp dụng các công thức thống kê để tính ra các giá trị cần
2493 thiết.
2495 Đối với việc huấn luyện các thuật toán tách từ truyền thống, ta có thể
2496 sử dụng bộ tách từ tiếng Việt sẵn có để tạo ngữ liệu. Chất lượng của
2497 bộ tách từ sẽ ảnh hưởng đến chất lượng của thuật toán.
2499 Với các thuật toán tách từ mờ, đôi khi không thể áp dụng bộ tách từ
2500 sẵn có. Với điều kiện hiện tại, khó có thể tìm được một khối lượng
2501 ngữ liệu lớn đã được tách từ sẵn, do đó cần phải tìm giải pháp tính
2502 được các tham số cần thiết từ ngữ liệu chưa được tách từ (ngữ liệu thô).
2504 Thuật toán EM\footnote{Estimation Maximization} thường được áp dụng để vượt
2505 qua khó khăn này~\cite{softcount,Sproat}. Trên lý thuyết, áp dụng
2506 thuật toán EM đảm bảo kết quả sẽ hội tụ, và kết quả ở mỗi vòng lặp sau
2507 sẽ tốt hơn hoặc bằng kết quả của vòng lặp trước.
2508 %Theo \cite{xxx}, ta chỉ cần lặp khoảng 5-7 vòng lặp là đủ.
2510 Do thuật toán EM cũng có nhiều hạn chế (đặc biệt là hạn chế tối ưu cục
2511 bộ), nhiều giải pháp đã được đưa ra để khắc phục các hạn chế
2512 này~\cite{text-tiling,self-supervised}.
2514 Một giải pháp khác là áp dụng HMM để tìm ra ranh giới từ, sau đó áp
2515 dụng các công thức thống kê thông thường. Giải pháp này gặp hạn chế
2516 bởi chính HMM, vì HMM là mô hình thống kê thuần tuý, không phát huy
2517 được một số đặc trưng của tách từ, cũng không sử dụng các tri thức về
2518 ngôn ngữ học, do đó phần nào hạn chế kết quả cuối cùng.
2522 \chapter{Mô hình}
2523 \label{cha:model}
2524 \minitoc
2526 % \note{Phân loại lỗi, nguyên nhân gây lỗi}
2528 %%% cut it out, move it to somewhere
2529 Ngoài ra, phải nói thêm là, do tiếng Việt là loại ngôn ngữ ``nói sao
2530 viết vậy'', lại có sự phân hoá trong hệ thống âm vị của các miền, nên
2531 khi viết thường rất dễ sai. Mức độ ``nhầm lẫn'' trong tiếng Việt cao
2532 hơn hiều so với các thứ tiếng khác (như tiếng Anh). Với tiếng Anh,
2533 thông thường mỗi tập nhầm lẫn chỉ gồm hai từ. Với tiếng Việt, đó có
2534 thể là năm từ, thậm chí mười từ. Sự gia tăng kích thước của tập nhầm
2535 lẫn làm hạn chế khả năng của các thuật toán bắt lỗi chính tả dựa trên
2536 tập nhầm lẫn.
2539 \section{Lỗi chính tả}
2542 \subsection{Phân loại lỗi}
2544 Theo~\cite{LoiChinhTa}, lỗi bao gồm các loại sau:
2545 \begin{itemize}
2546 \item Lỗi thanh điệu. Chủ yếu là lỗi nhầm lẫn hai thanh hỏi, ngã.
2547 \item Lỗi về âm đầu. Thường lẫn lộn các âm đầu sau: C/K, G/Gh, Ng/Ngh,
2548 Ch/Tr, S/X, V/D/Gi/R, W/Hw/Ngw/Qu.
2549 \item Lỗi về âm chính. Thường lẫn lộn các âm chính sau: ai/ay/ây,
2550 ao/au/âu, ăm/âm, ăp/âp, iu/iêu/êu, im/iêm/em, ip/iêp/êp/ep,
2551 oi/ôi/ơi, om/ôm/ơm, op/ôp/ơp, ong/ông, oc/ôc, ui/uôi, um/uôm, up/(uôp),
2552 ưi/ươi, ưu/ươu, ưm/ươm, (ưp)/ươp.
2553 \item Lỗi về âm cuối. Thường lẫn lộn chữ ghi các âm cuối trong các vần
2554 sau:
2555 an/ang, at/ac, ăn/ăng, ăt/ăc, ân/âng, ât/âc, en/eng, et/ec, ên/ênh,
2556 êt/êch, in/inh, it/ich, iên/iêng, iêt/iêc, ơn/(ơng), ơt/(ơc),
2557 un/ung, ut/uc, uôn/uông, uôt/uôc, ưn/ưng, ưt/ưc, ươn/ương, ươt/ươc.
2558 \item Sai quy cách viết hoa
2559 \end{itemize}
2561 \noindent Theo \cite{Tuoi}, lỗi được phân làm hai loại:
2562 \begin{itemize}
2563 \item Từ bị sai không nằm trong từ điển. (do sai dấu hỏi---ngã, bỏ dấu
2564 không đúng vị trí, gõ nhầm ký tự trên bàn phím, gõ thiếu ký tự, gõ
2565 dư ký tự, gõ sai do gõ theo cách phát âm từng vùng, gõ nhầm vị trí
2566 các ký tự trong từ~\ldots{})
2567 \item Từ bị sai nhưng vẫn có trong từ điển. (sai cách phát âm, nhầm ký
2568 tự, bỏ dấu sai, thiếu/thừa ký tự~\ldots{})
2569 \end{itemize}
2571 \noindent Theo \cite{Chang} thì lỗi bao gồm:
2572 \begin{itemize}
2573 \item Giống phiên âm
2574 \item Giống hình dạng chữ viết
2575 \item Giống nghĩa
2576 \item Giống cách gõ
2577 \end{itemize}
2579 \section{Xử lý lỗi chính tả}
2580 %%% Nêu tổng quan, nói cụ thể hơn ở phần sau ``previous work''
2582 Với \cite{Tuoi} thì việc xử lý lỗi bao gồm:
2583 \begin{itemize}
2584 \item Từ không có trong từ điển thì bắt lỗi ở cấp từ vựng.
2585 \item Từ có trong từ điển thị bắt lỗi ở cấp cú pháp.
2586 \end{itemize}
2588 %% Với \cite{Chang}, giải pháp gồm:
2589 %% \begin{itemize}
2590 %% \item Composite confusing character substitution
2591 %% \item Advanced word class bigram language. LM score is composed base
2592 %% language model score and substitution penalty score.
2593 %% \end{itemize}
2595 %% qua các bước:
2596 %% \begin{enumerate}
2597 %% \item Input and Clause Segmentation
2598 %% \item Composite Confusing Character Substitution
2599 %% \item Language Model Evaluation
2600 %% \item Comparision and Correction
2601 %% \item Output
2602 %% \end{enumerate}
2604 Việc tìm lỗi dựa chủ yếu trên từ điển. So sánh từng từ trong câu với từ điển, những từ
2605 không có trong từ điển là những từ có khả năng bị lỗi. Sau đó dựa trên
2606 một số thuật giải hoặc các độ đo để tìm ra từ gần đúng với từ đó, chọn làm
2607 từ đề nghị.
2609 Việc tự động sửa lỗi chủ yếu dựa trên một tập các từ hay bị lỗi (then-than,
2610 there-their~\ldots{}), sử dụng ngữ cảnh xung quanh để xác định từ đúng
2611 hay sai.
2613 Đối với ngôn ngữ đơn lập như tiếng Việt, vấn đề mới phát sinh là không
2614 thể xác định rõ ràng ranh giới từ. Với tiếng Anh và các ngôn ngữ biến
2615 cách khác, khoảng trắng thường được dùng để phân cách hai từ. Trong tiếng Việt,
2616 khoảng trắng được dùng để phân cách hai tiếng. Ngoài ra, việc định
2617 nghĩa từ trong tiếng Việt vẫn chưa thống nhất~\cite{worddef}. Luận văn
2618 này sử dụng ``từ'' như là ``từ từ điển''.
2620 Để bắt lỗi chính tả trong tiếng Việt, có thể dựa trên nhiều cách khác
2621 nhau. Cách đầu tiên đơn giản là tìm ranh giới từ cho tiếng Việt, sau
2622 đó chuyển về bài toán bắt lỗi chính tả của tiếng Anh, dựa trên từ
2623 điển. Cách khác là bắt lỗi mà không cần tách từ~\cite{Tuoi}
2624 Cách nữa dựa trên ý tưởng ``phân tích cú pháp câu, nếu ta không thể
2625 phân tích cú pháp của câu, nghĩa là câu đó sai chính tả''~\cite{iccc}.
2627 Luận văn này làm theo hướng tách từ, sau đó tìm lỗi chính tả dựa trên
2628 từ điển.
2632 \subsection{Tách từ}
2634 \cite{Sproat} sử dụng WFST để tách từ, huấn luyện bằng EM dựa trên
2635 cách tách từ đúng nhất.
2637 \cite{wordseg} sử dụng giải pháp tương tự như \cite{Sproat} nhưng cải
2638 tiến bằng cách cáp dụng Neural Networks để giải quyết nhập nhằng dựa
2639 vào POS. Nghiên cứu đề cập đến một số vấn đề tiền xử lý tiếng Việt như
2640 xác định tên riêng, từ láy, phân tích hình thái.
2642 \cite{Ravishankar} đề nghị tạo ra lưới từ\footnote{word lattice} sau
2643 đó sử dụng thuật toán tìm đường đi ngắn nhất để tìm cách tách từ tốt
2644 nhất dựa trên 2-gram hoặc 3-gram.
2646 \cite{LAH} sử dụng n-gram và quy hoạch động để tách từ,
2647 không dùng từ điển. Giải pháp này tương tự như \cite{softcount}, tuy
2648 nhiên chỉ tính xác suất cách tách từ tốt nhất thay vì tính tổng xác
2649 suất mọi cách tách từ như trong \cite{softcount}.
2651 \cite{Chunyu} kết hợp ngram, lập trình quy hoạch động để tách từ. Xài
2652 soft-count thay vì ``hard-count'' như \cite{Chang}. \cite{Chunyu} còn
2653 đề nghị dùng case-based learning.
2655 \subsection{Huấn luyện tách từ}
2657 \note{Tại sao không xài bộ tách từ đã có?} Hai vấn đề:
2658 \begin{itemize}
2659 \item Chất lượng của bộ tách từ hiện có. (2-gram tốt hơn unigram~\ldots{}...)
2660 \item Nếu thống kê trên mọi cách tách từ thì không thể dùng bộ tách từ
2661 hiện có vì chỉ tạo ra kết quả sau cùng.
2662 \end{itemize}
2665 Có thể huấn luyện dựa trên dữ liệu mẫu, hoặc dữ liệu thô. Do hầu hết
2666 các phương pháp tách từ đều dựa trên ngram ($n\ge 1$) nên rất cần có
2667 khối lượng dữ liệu huấn luyện lớn nhằm đạt tính bao quát. Dữ liệu
2668 mẫu, được tách từ sẵn, thường không đủ để huấn luyện. Giải pháp chủ
2669 yếu là huấn luyện dựa trên dữ liệu thô, chưa tách từ.
2671 Thuật toán thường dùng nhất để huấn luyện trên dữ liệu thô là thuật
2672 toán EM. Nhiều người đã cố gắng cải tiến EM theo nhiều cách khác nhau
2673 nhằm nâng cao chất lượng huấn luyện, đồng thời hạn chế những khuyết
2674 điểm của EM.
2676 \cite{self-supervised} đề nghị cách giải quyết hạn chế ``tối ưu cục
2677 bộ'' của EM, bằng cách phân phối lại từ vựng sau mỗi lần chạy và khởi
2678 động lại EM với điểm khởi đầu tốt hơn.
2680 \cite{text-tiling} sử dụng một lượng nhỏ ngữ liệu huấn luyện có chất
2681 lượng cao (\textit{seed set}) và một lượng lớn ngữ liệu có chất lượng
2682 không thật bảo đảm (\textit{training set}), xử lý qua 4 bước:
2683 \begin{enumerate}
2684 \item \textbf{Phân đoạn tập huấn luyện}
2685 \item \textbf{Phân hạng tập huấn luyện}
2686 \item \textbf{Tổ hợp tập huấn luyện}
2687 \item \textbf{Language model pruning}
2688 \end{enumerate}
2692 \section{Mô hình chung}
2694 Việc bắt lỗi chính tả của một văn bản được xử lý lần lượt qua những
2695 bước sau:
2696 \begin{enumerate}
2697 \item \textbf{Tiền xử lý} Tách văn bản thành những đoạn ngắn. Tách
2698 đoạn thành từng tiếng. Đánh dấu các ký hiệu, dấu ngắt dòng, các số,
2699 tên riêng~\ldots{}
2700 \item \textbf{Bắt lỗi tiếng} Kiểm tra các tiếng với các tiếng đã có
2701 trong từ điển. Báo lỗi những tiếng không có trong từ điển. Sau đó
2702 \textbf{Đưa ra giải pháp thay thế}.
2703 \item \textbf{Tạo lưới từ} Tìm ra mọi từ có thể có trong câu. Xem
2704 giải thích về lưới từ bên dưới. Lồng trong phần này là phần
2705 \textbf{Phát sinh từ thay thế}
2706 \item \textbf{Tách từ} Dựa vào lưới từ, đưa ra cách tách từ tốt nhất.
2707 \item \textbf{Bắt lỗi từ} Dựa vào từ điển và cách tách từ đã có,
2708 tìm những từ nào không có trong từ điển. Những từ này được xem là từ
2709 sai. Sau đó \textbf{Đưa ra giải pháp thay thế}
2710 \end{enumerate}
2712 \section{Tiền xử lý}
2713 \label{sub:preprocess}
2715 Dựa vào flex để tách thành các token. Mục đích là để tách các dấu câu
2716 ra khỏi tiếng. Ví dụ \fbox{"chào"} sẽ được tách thành 3 token
2717 \fbox{"} \fbox{chào} \fbox{"}. Quy tắc được dùng như sau:
2719 \begin{verbatim}
2721 SENTENCE_FINAL [.?!]
2722 HYPHEN [\-]
2723 OPEN_SINGLE_QUOTE [\`]
2724 CLOSE_SINGLE_QUOTE [\']
2725 RIGHT_PAREN [\"\)\]\}\>\']
2728 LETTERS_AND_NUMBERS [a-zA-Z0-9]
2729 LETTERS_NUMBER_AND_THEN_SOME [a-zA-Z0-9]
2730 APOSTROPHE \'
2732 SINGLE_CHARACTER [a-zA-Z0-9]
2734 WHITE_SPACE [ \t\n]
2735 NEWLINE [\n]
2736 INVISIBLE [^\040-\176]
2739 {SENTENCE_FINAL}+{RIGHT_PAREN}* |
2740 {HYPHEN}+ |
2741 {OPEN_SINGLE_QUOTE}+ |
2742 {CLOSE_SINGLE_QUOTE}+ |
2744 {LETTERS_NUMBER_AND_THEN_SOME}+{LETTERS_AND_NUMBERS} |
2745 {LETTERS_AND_NUMBERS}+{APOSTROPHE} |
2747 {SINGLE_CHARACTER} { xuất từ }
2749 ({WHITE_SPACE}|{INVISIBLE}|{NEWLINE})+ { bỏ qua }
2751 \end{verbatim}
2754 \subsection{Tách câu}
2756 Dựa vào các dấu câu để ngắt câu ra thành từng đoạn để xử lý. Mỗi
2757 đoạn sẽ được xử lý độc lập với nhau. Đoạn ở đây có thể là một câu,
2758 nhưng cũng có thể là một
2759 phần của câu. Luận văn này sẽ dùng từ ``câu'' để ám chỉ ``đoạn''. Nếu
2760 các thông tin ở mức cao hơn được sử dụng (như thông tin cú pháp, ngữ
2761 nghĩa~\ldots{}) thì phải thật sự xử lý trên câu chứ không phải trên
2762 đoạn. Các đoạn được phân cách bởi các dấu câu \fbox{.} \fbox{,}
2763 \fbox{;} \fbox{(} \fbox{)}~\ldots{}
2765 \subsection{Chuẩn hoá}
2767 Do trong tiếng Việt có nhiều từ có thể viết theo các
2768 cách khác nhau về vị trí dấu thanh điệu, ví dụ, ``hoà'' và
2769 ``hòa''. Bởi vậy cần phải chuẩn hoá sao cho chương trình xem ``hòa''
2770 và ``hoà'' là một. Giải pháp đưa ra là tách dấu thanh điệu ra khỏi
2771 từ, biểu diễn dấu thanh điệu bằng ký tự đầu tiên trong từ. Như vậy,
2772 ``hoà'' và ``hòa'' đều có cùng cách biểu diễn là ``2hoa'', trong khi
2773 đó ``hoa'' được biểu diễn là ``0hoa'', ``hồng'' được biểu diễn là
2774 ``2hông''.
2776 \subsection{Chữ viết hoa}
2778 Xử lý chữ viết hoa. Chữ viết hoa dùng để biểu diễn tên riêng, từ viết
2779 tắt hoặc dùng cho chữ đứng đầu câu. Do đó cần phân biệt chữ đầu câu có
2780 phải là chữ bắt đầu tên riêng hay không. Ngoài ra, cần xác định tên riêng khi
2781 tìm được chữ viết hoa bắt đầu tên riêng. Các văn bản tiếng Việt chưa
2782 hoàn toàn thống nhất về quy tắc viết hoa. Ví dụ, có tài liệu dùng
2783 ``Cộng hoà Xã hội Chủ nghĩa Việt Nam'', nhưng có tài liệu lại dùng
2784 ``Cộng Hoà Xã Hội Chủ Nghĩa Việt Nam''.
2786 Do văn bản đầu vào có khả năng bị sai chính tả nên không thể xác định
2787 ngay chính xác có phải là cụm từ viết hoa đúng hay không. Bước này cố
2788 gắng phát hiện ra những cụm từ viết hoa và thêm vào lưới từ. Do vậy,
2789 phần này được thực hiện bên trong phần \textbf{Phát sinh từ thay thế}.
2791 Có thể dùng thuật giải như sau: Nếu bắt đầu bằng chữ viết hoa, và chữ
2792 đầu được viết thường cùng những từ kế tiếp của nó là một từ trong từ
2793 điển, thì xem như đó là một từ. Nếu một chuỗi từ viết hoa liên tục
2794 (hai từ trở lên) thì xem như đó là một từ (một tên riêng), và được
2795 đánh dấu từ lạ $UNK$.
2797 Với tên riêng của người Việt. Một danh sách các tên tiếng Việt được
2798 thu thập nhằm rút ra những chữ thường dùng khi đặt tên. Những chuỗi
2799 các chữ hoa liên tiếp được hình thành từ những chữ trong danh sách này
2800 sẽ được xem như là tên riêng, đánh mã $PROP$.
2803 %% \begin{algo}[Xử lý chữ hoa]
2804 %% \label{algo:propername}
2805 %% \begin{enumerate}
2806 %% \item Lấy 1 chữ. Kiểm tra ký tự đầu tiên xem có phải ký tự hoa hay
2807 %% không.
2808 %% \item Nếu đây là chữ đầu câu, phát sinh bình thường dựa theo bản
2809 %% viết thường của chữ này. Ngoài ra tiếp tục thực hiện các bước
2810 %% dưới.
2811 %% \item Duyệt từ chữ đó trở đi, lấy chuỗi dài nhất có thể dựa trên
2812 %% $sid$. Phát sinh từ mới dựa trên từ lấy được. Đặt xác suất 0.80.
2813 %% \item Nếu không tìm được từ nào, duyệt lại như bước trên, dùng
2814 %% $scid$.
2815 %% \item Nếu chữ kế tiếp cũng là chữ hoa, duyệt từ đó trở đi để lấy
2816 %% chuỗi chữ hoa dài nhất ($scid$). Phát sinh từ mới
2817 %% mã $PROP$.
2818 %% \end{enumerate}
2819 %% \end{algo}
2821 \subsection{Từ láy UNIMPL}
2823 Phần này được thực hiện bên trong phần \textbf{Phát sinh từ thay thế}.
2825 \begin{itemize}
2826 \item Láy toàn bộ (Vd. ba ba, chuồn chuồn~\ldots{})
2827 \item Láy âm đầu (Vd. chặt chẽ, trong trẻo~\ldots{})
2828 \item Láy điệp vần (Vd. lông bông, lã chã~\ldots{})
2829 \item Láy điệp âm, láy vần (Vd. thủ thỉ, tủm tỉm~\ldots{})
2830 \item Hai thanh của tiếng thường ở cùng một hệ~\ldots{}
2831 \end{itemize}
2833 \note{Hổng thèm làm :-)} Vấn đề từ láy cũng tương tự như tên riêng. Giải
2834 pháp có thể áp dụng là dựa vào các quy tắc tạo từ láy để phát hiện
2835 những từ có khả năng là từ láy và thêm vào lưới từ.
2837 Đối với các từ láy trên 2 tiếng. Do số lượng các từ láy dạng này không
2838 nhiều nên có thể thêm các từ láy này vào từ điển.
2839 %% Nhưng những ``từ láy''
2840 %% ``nhưng những'' có thể giết chết module tách từ một cách êm dịu. Chắc
2841 %% nên áp dụng giải pháp ``80 từ láy, 20 từ thường''. Không biết được hay
2842 %% không, phiêu quá~\ldots{}
2844 \begin{algo}[Xử lý từ láy]
2845 \label{algo:poem}
2846 \begin{enumerate}
2847 \item Lấy 2 chữ liên tiếp.
2848 \item Kiểm tra quy tắt từ láy.
2849 \item Nếu đúng, phát sinh thêm từ láy mới, mã $POEM$.
2850 \end{enumerate}
2851 \end{algo}
2853 %% Có lẽ nên lọc ra danh sách từ láy bằng tay, đánh nhãn toàn bộ là
2854 %% $POEM$, hoặc dùng nhãn riêng. Heuristic này không đáng tin lắm.
2855 %% Cách hình thành từ láy của con người như thế nào ?? Từ láy thường gắn
2856 %% liền với hình tượng, cảm giác gì đó. Làm sao người ta có thể cảm nhận
2857 %% được một từ có phải là từ láy hay không??
2859 \subsection{Từ nước ngoài, từ viết tắt, các ký hiệu~\ldots{}}
2861 \note{Coi như từ sai chính tả}
2862 \note{không phân biệt từ nước ngoài và từ sai chính tả}
2863 Xử lý tiếng nước ngoài, các ký hiệu chuyên ngành, các từ viết tắt. Do
2864 trình bắt lỗi không có kiến thức về các lĩnh vực chuyên
2865 ngành, cũng như các thứ tiếng trên thế giới, nên việc áp dụng tri thức
2866 để phân loại là điều hết sức khó khăn. Giải pháp được dùng ở đây là
2867 coi tất cả những từ nước ngoài, từ viết tắt, ký hiệu~\ldots{} đều là sai
2868 chính tả, trừ khi được người dùng được vào danh sách từ nước ngoài, từ
2869 viết tắt. Các con số được đánh dấu riêng bằng mã $NUM$.
2870 ``Số'' ở đây được coi là bất cứ chữ nào bắt đầu bằng số. Ví dụ, ``0lit'',
2871 ``0.2'', ``0-4''~\ldots{}{} đều được coi là số.
2873 \section{Phát sinh từ thay thế}
2875 Phần này được sử dụng trong lúc tạo lưới từ và kiểm tra chính
2876 tả. Mục đích là, cho trước một từ, phát sinh những từ ``gần giống''
2877 với từ đó. Việc định nghĩa như thế nào là ``giống'' ở đây dựa theo các
2878 nguyên nhân gây ra lỗi chính tả:
2879 \begin{itemize}
2880 \item Lỗi phát âm. Ví dụ, ``vu'' và ``du''.
2881 \item Do lỗi bàn phím. Có thể do gõ nhầm những phím lân cận. Ví dụ: gõ
2882 ``tôi'' thành ``tôu''. Khắc phục lỗi này dựa vào bố trí phím trên
2883 bàn phím. Độ đo là khoảng cách từ phím tạo ra ký tự trong từ cho
2884 trước và những từ chung quanh. Thông thường lỗi này chỉ xảy ra một
2885 lần trong mỗi từ. Ngoài ra còn lỗi liên quan đến cách kiểu gõ tiếng
2886 Việt.
2887 \item Lỗi OCR\footnote{Optical Character Recognition}. Lỗi dạng này
2888 phụ thuộc nhiều vào phông chữ được dùng trên văn bản giấy. Tuy nhiên
2889 vẫn có một số lỗi chung như ``a'' và ``c'', ``d'' và ``cl''~\ldots{}
2890 \item Lỗi sai về mặt từ vựng, cú pháp. Lỗi này hiện thời không xử lý
2891 do cần nhiều tri thức về ngôn ngữ tiếng Việt.
2892 \item Lỗi không rõ nguyên nhân. Với dạng lỗi này, ta dùng hàm độ đo,
2893 tính số lần thêm/xóa/thay đổi/hoán vị mỗi ký tự giữa hai từ. Hàm độ đo
2894 được dùng được nêu trong \cite{Oflazer}, sẽ được trình bày lại bên
2895 dưới.
2896 \end{itemize}
2898 %% \note{Hmm..} có lẽ nên gắng thêm vào các từ phát sinh một ``hệ số chính
2899 %% xác''. Từ gốc là từ có hệ số chính xác cao hơn so với các từ được phát
2900 %% sinh. Good or bad? Hmmm... Làm sao để làm? Hmmm Hmmm
2902 \subsection{Lỗi phát âm}
2904 Lỗi phát âm phụ thuộc vào cách phát âm của từng
2905 vùng. \cite{LoiChinhTa} liệt kê các trường hợp lỗi thông dụng
2906 nhất. Những quy tắc này được áp dụng để, ví dụ, từ ``du'' ta tạo ra
2907 ``vu''.
2909 Để phát sinh từ dựa trên lỗi phát âm, cần phân tích cấu trúc của từng
2910 tiếng. Một tiếng bao gồm âm đầu, vần và thanh. Vần gồm âm đệm, âm
2911 chính và âm cuối. Trong các thành phần của tiếng, âm chính là bắt buộc
2912 phải có. Các thành phần còn lại có thể không có. Ta có thể biểu diễn
2913 cấu trúc âm tiếng theo sơ đồ trạng thái như hình~\ref{fig:syllable}.
2915 \begin{figure}[htbp]
2916 \centering
2917 \includegraphics[width=\textwidth]{syllable}
2918 \caption{Sơ đồ trạng thái phân tích cấu trúc tiếng}
2919 \label{fig:syllable}
2920 \end{figure}
2922 Khi phân tích tiếng, có thể có một số nhập nhằng giữa các thành phần
2923 của tiếng. Vd, ``lúa'' bao gồm âm chính ``ua'' hay âm đệm ``u'' và âm
2924 chính ``a''~\ldots{}
2926 Ta có thể phân tích tiếng dùng FST. Tuy nhiên, qua
2927 hình~\ref{fig:syllable}
2928 có thể thấy chỉ có tám cách để hình thành
2929 tiếng. Cài đặt theo tám cách này đơn giản và hiệu quả hơn dùng FST
2930 tổng quát. Việc sắp xếp thứ tự áp dụng từng cách và một số heuristic
2931 sẽ giúp loại bỏ nhập nhằng khi phân tích tiếng.
2933 \subsection{Lỗi bàn phím UNIMPL}
2935 Chương trình giả định sơ đồ bố trí của bàn phím EN-US được dùng. Do
2936 thông thường chỉ gặp một lỗi gõ nhầm với phím ngay bên cạnh này mỗi
2937 từ, nên chương trình chỉ lưu danh sách những phím lân cận với từng
2938 phím, dựa trên bàn phím EN-US. Ví dụ: $A \rightarrow (S,Q,W,X,Z)$.
2940 Với những phím có hai ký tự như phím `2' (2 và @) thì @ sẽ được thêm
2941 vào tập các phím lân cận với 2 và ngược lại.
2943 Do với mỗi phím có khoảng 8 phím lân cận. Một chữ dài trung bình 8
2944 tự sẽ phát sinh ra một tập $8^8$ các chuỗi có khả năng. Trong số này
2945 chỉ có một số rất ít là chữ thật sự, đúng quy tắc chính tả. Tuy nhiên
2946 việc xử lý một khối lượng lớn như vậy là không thể. Vì vậy chương
2947 trình giả định chỉ nhập gõ sai tối đa hai phím với mỗi chữ, nhằm giảm
2948 thiểu bùng nổ tổ hợp.
2950 Với các kiểu gõ như VNI, TELEX. Chương trình cố gắng ``phục hồi'' từ
2951 những chữ gõ sai nếu phát hiện được. Vd, ``nguyê4n'' sẽ tạo ra
2952 ``nguyễn''. Ta cài đặt bộ gõ VNI, TELEX, sau đó đưa chuỗi các ký tự
2953 của chữ đang xét qua bộ gõ phục hồi các dấu. Bước này được thực hiện
2954 sau bước trên, để nếu gõ nhầm phím dấu kế bên thì vẫn có thể phục hồi
2955 lại.
2957 % Hmm.. phần phục hồi ngược từ VNI, TELEX. Vd, englíh (english). Cái này
2958 % nhường cho English Speller. Hơi vướng với VIQR.
2960 \subsection{Lỗi không rõ nguyên nhân UNIMPL}
2962 \label{algo:ed}
2963 Lỗi này dựa vào {\em độ đo khoảng cách hiệu chỉnh} được đề cập
2964 trong \cite{Oflazer}. Các thao tác hiệu chỉnh được đo gồm {\em chèn,
2965 xóa, thay thế một ký tự} hoặc {\em hoán vị hai ký tự kề nhau}, để có
2966 thể chuyển đổi từ này thành từ kia. Đặt $X = x_1, x_2, \ldots{}, x_m$ và
2967 $Y = y_1,y_2,\ldots{},y_n$ là hai chuỗi có độ dài tương ứng là $m$ và
2968 $n$. $X[i]\quad(Y[j])$ biểu diễn chuỗi con ban đầu của X (Y) từ đầu từ
2969 đến ký tự thứ $j$. Cho $X$ và $Y$, độ đo $ed(X[m],Y[n])$ được tính như
2970 sau:
2971 \begin{equation}
2972 \begin{array}{rll}
2973 ed(X[i+1],Y[j+1]) &= ed(X[i],Y[j]) & \text{nếu $x_{i+1}=y_{j+1}$
2974 (ký tự cuối như nhau)}\\
2975 &= 1+min\{ed(X[i-1],Y[j-1]), & \text{nếu $x_i=y_{j+1}$}\\
2976 &\qquad\qquad ed(X[i+1],Y[j]), & \text{và $x_{i+1}=y_j$}\\
2977 &\qquad\qquad ed(X[i],Y[j+1])\}\\
2978 &= 1+min\{ed(X[i],Y[j]),&\text{trường hợp khác}\\
2979 &\qquad\qquad ed(X[i+1],Y[j]),\\
2980 &\qquad\qquad ed(X[i],Y[j+1])\}\\
2981 ed(X[0],Y[j]) &=j & 0 \le j \le n\\
2982 ed(X[i],Y[j]) &=i & 0 \le i \le n\\\\
2983 ed(X[-1],Y[j]) &=ed(X[i],Y[-1]) = max(m,n)&\text{Biên}
2984 \end{array}
2985 \end{equation}
2987 Thuật toán có thể được khử đệ quy khi cài đặt bằng quy hoạch
2988 động. Nhận thấy $ed(X[i+1],Y[i+1])$ cần dùng
2989 $ed(X[i],Y[i])$,$ed(X[i-1],Y[i-1])$,$ed(X[i],Y[i+1])$ hoặc
2990 $ed(X[i+1],Y[i])$, ta có thể tính từ lần lượt từ thấp đến cao theo
2991 đường zig-zag bắt đầu từ đỉnh (1,1), sau đó đến đường chéo phụ (1,2),
2992 (2,1), rồi đường chéo (1,3),(2,2),(3,1)~\ldots{}
2994 \begin{algo}[Tính hàm ed()]
2995 \begin{enumerate}
2996 \item Đặt (0,0) là 0 nếu x[0] = y[0] hoặc 1 nếu ngược lại.
2997 \item Đặt (0,j) là j
2998 \item Đặt (i,0) là i
2999 \item (i,j)=(i-1,j-1) nếu x[i]=y[j]
3000 \item (i,j)=1+min\{(i-2,j-2),(i,j-1),(i-1,j)\} nếu x[i] = y[j-1]
3001 hoặc x[i-1]=y[j]
3002 \item (i,j)=1+min\{(i-1,j-1),(i,j-1),(i-1,j)\} trong các trường hợp còn lại
3003 \end{enumerate}
3004 \end{algo}
3006 Ví dụ: tính độ sai khác giữa chữ ``thắng'' và ``tắgn''. Ta tính các
3007 giá trị như bảng~\ref{tab:ed-example}. Vậy có hai khác biệt giữa hai
3008 chữ. Khác biệt thứ nhất là xoá ký tự `h'. Khác biệt thứ hai là hoán vị
3009 hay ký tự `n' và `g'.
3011 \begin{table}[htbp]
3012 \centering
3013 \begin{tabular}{|c|c|c|c|c|c|c|}
3014 \hline
3015 X&-&-&t&ắ&g&n\\\hline
3016 -&0&0&0&0&0&0\\\hline
3017 -&0&0&1&2&3&4\\\hline
3018 t&0&1&\bf 0&\bf 1&\bf 2&\bf 3\\\hline
3019 h&0&2&\bf 1&\bf 1&\bf 2&\bf 3\\\hline
3020 ắ&0&3&\bf 2&\bf 1&\bf 1&\bf 2\\\hline
3021 n&0&4&\bf 3&\bf 2&\bf 2&\bf 1\\\hline
3022 g&0&5&\bf 4&\bf 3&\bf 2&\bf 2\\\hline
3023 \end{tabular}
3024 \caption{Bảng $ed$ của ``thắng'' và ``tắgn''}
3025 \label{tab:ed-example}
3026 \end{table}
3028 \section{Tạo lưới từ}
3029 \label{sub:lattice}
3030 Lưới từ\footnote{word lattice} là một đồ thị có hướng không chu trình,
3031 với các nút là các từ trong câu, cạnh là đường nối giữa hai từ kề
3032 nhau, hướng thể hiện hướng của câu (từ trái sang phải). Lưới từ
3033 chứa tất cả
3034 các từ có khả năng xuất hiện trong câu. Các từ được liên kết với nhau
3035 theo trật tự trong câu. Khi duyệt từ nút gốc đến nút đích, ta sẽ được
3036 một cách tách từ cho câu. Xem hình~\ref{fig:wordlattice}.
3038 \begin{figure}[htbp]
3039 \centering
3040 \includegraphics[width=\textwidth]{wordlattice}
3041 \caption{Lưới từ của câu ``Học sinh học sinh học''}
3042 \label{fig:wordlattice}
3043 \end{figure}
3045 Khi tạo lưới từ trong chương trình bắt lỗi chính tả, thuật toán không
3046 chỉ phát sinh những từ được tạo từ đoạn, mà còn những từ {\em có thể
3047 } được phát sinh từ đoạn. Xem hình~\ref{fig:wordlattice1}.
3049 \begin{figure}[htbp]
3050 \centering
3051 \includegraphics[width=\textwidth]{wordlattice1}
3052 \caption{Lưới từ mở rộng của câu ``Học sinh học sinh học''}
3053 \label{fig:wordlattice1}
3054 \end{figure}
3056 Lưới từ được tạo bằng thuật toán Viterbi. Mỗi tiếng trong câu được
3057 duyệt qua để tìm ra tất cả các từ có thể có trong đoạn. Sau đó tập hợp
3058 các từ này lại.
3060 \begin{algo}[Tạo lưới từ (cơ bản)]
3061 Cho câu S có n tiếng. State là đỉnh, còn ``nút i'' là cạnh. Ta duyệt
3062 lần lượt qua các cạnh để tìm ra các từ. Duyệt i từ 1 đến n:
3063 \begin{itemize}
3064 \item Tạo state gốc cho nút i.
3065 \item Xét các state, nếu tiến thêm được một bước thì lưu lại state mới (i+1).
3066 \item Nếu không tiến được thì xóa state.
3067 \item Nếu hoàn tất một từ thì lưu lại.
3068 \end{itemize}
3069 \end{algo}
3071 Sau khi hoàn tất, đánh dấu tất cả các chữ xuất hiện trong các từ tìm
3072 được. Do từ điển không hoàn chỉnh, và do các ký hiệu, từ viết
3073 tắt~\ldots{}{},
3074 sẽ có một số chữ không nằm trong bất kỳ từ nào tìm được. Do
3075 đó ta cần duyệt lại, và đánh dấu những chữ này là từ ``UNK''. Việc tạo
3076 thêm các từ $UNK$ sẽ đảm bảo tạo ra một đồ thị liên thông. Nếu đồ
3077 thị không liên thông, ta không thể áp dụng thuật toán tìm đường đi
3078 ngắn nhất.
3080 Ngoài lưới từ cơ bản, ta có thể tạo lưới 2-từ. Lưới 2-từ
3081 tương tự như lưới từ, tuy nhiên mỗi nút là một cặp 2 từ đi liền nhau
3082 trong câu. Thuật toán tạo lưới 2-từ được nêu trong \cite{Ravishankar},
3083 được tóm tắt lại như sau (xem hình~\ref{fig:wordlattice2}):
3085 \begin{figure}[htbp]
3086 \centering
3087 \includegraphics[width=\textwidth]{wordlattice2}
3088 \caption{Lưới 2-từ của câu ``Học sinh học sinh học''}
3089 \label{fig:wordlattice2}
3090 \end{figure}
3092 \begin{algo}[Tạo lưới n-từ từ lưới (n-1)-từ]
3093 \begin{enumerate}
3094 \item Nếu nút ($w$) có $n$ từ đứng liền trước nó ($w_i$),
3095 $i=1,2,\ldots{},n$ trong lưới từ gốc, nó sẽ được lặp lại $n$ lần trong
3096 lưới từ mới, tên là ($w_{i}w$), tương ứng với $i=1,2,\ldots{},n$.
3097 \item Nếu ($w_i$) nối với ($w_j$) trong lưới từ gốc, nối tất cả
3098 ($w_xw_i$) với ($w_iw_j$) $x$ bất kỳ.
3099 \item Giá trị của ($w_iw_j$) là giá trị của cạnh ($w_i$) ($w_j$) trong
3100 lưới từ cũ.
3101 \item Giá trị của cạnh ($w_iw_j$) ($w_jw_k$) là 3-gram của $w_i$, $w_j$
3102 và $w_k$.
3103 \end{enumerate}
3104 \end{algo}
3106 %% Các lưới n-từ có đặc điểm là tăng nhanh số nút và số cạnh, nhưng số
3107 %% tầng vẫn không đổi (Đồ thị càng ngày càng ``mập'', nhưng ``cao''
3108 %% không nổi ;-) )
3111 \subsection{Lưu lưới từ}
3113 Các nút trong lưới từ được lưu tập trung vào một mảng
3114 (WordEntries). Truy cập nút được thực hiện thông qua index của mảng
3115 này. Mỗi nút chứa các thông tin về từ của nút đó, bao gồm vị trí từ,
3116 số tiếng, index trong WordEntries~\ldots{}{}
3118 Words là một mảng tương ứng với vị trí từng tiếng trong câu. Vị trí
3119 của mỗi tiếng sẽ được liên kết với một danh sách các từ bắt đầu tại
3120 tiếng đó. Ta có thể coi danh sách này như danh sách các cạnh nối từ
3121 nút đang xét đến các nút kế tiếp.
3124 \section{Tách từ}
3125 \label{sub:wordseg}
3127 Dùng thuật toán tìm kiếm theo độ ưu tiên PFS\footnote{Priority-First
3128 Search---PFS} để tìm đường đi ngắn nhất trên đồ thị. Khoảng cách giữa hai
3129 điểm trong đồ thị là xác suất 2-gram của hai từ. Bài toán tìm đường
3130 đi ngắn nhất, có thể áp dụng PFS, Prime, Djisktra. PFS được chọn vì
3131 lưới từ, qua khảo sát, có thể được coi là một đồ thị thưa.
3133 Để áp dụng 3-gram thay vì 2-gram, ta sẽ sử dụng lưới 2-từ. Sau đó áp
3134 dụng thuật toán PFS cho đồ thị mới.
3136 Cách làm này không thể thực hiện với n-gram ($n > 3$) vì khi đó số
3137 nút/cạnh trong đồ thị sẽ tăng đáng kể. Ngoài ra, PFS cũng không áp
3138 dụng được trong trường hợp sử dụng những độ đo như đo số lỗi sai đã
3139 xảy ra~\ldots{} Trong trường hợp đó ta nên sử dụng thuật toán A*~\cite{Ravishankar}
3141 %% XXXX. Nếu WFST cộng viterbi, beam pruning \ldots{} thì sao nhỉ?
3144 \section{Tìm từ thay thế}
3146 Do tiếng Việt đọc sao ghi vậy,
3147 nên bước chuyển từ từ sang âm có thể bỏ qua. Bước còn lại là áp dụng
3148 thuật toán đo độ hiệu chỉnh giữa hai từ như đã nêu trong~\ref{algo:ed}
3149 Ta có thể so sánh từng ký tự, hoặc so sánh theo âm (ví dụ, ``th'' thay
3150 vì ``t'' và ``h'').
3152 Chương trình sẽ liệt kê XXXX (chọn theo tiêu chí nào?, 10 từ lớn nhất
3153 hay sao đây)
3155 XXXX. thuật toán tính ed.
3157 \section{Giao tiếp với người dùng}
3158 \label{sec:ui}
3160 Cố gắng khai thác tri thức của người sử dụng, nhằm bổ trợ cho trình
3161 bắt lỗi, giảm thiểu các sai sót do trình bắt lỗi gây ra.
3163 Hỏi người dùng càng nhiều càng tốt. Luôn luôn có một tùy chọn ``không
3164 biết'' cho người dùng.
3166 \begin{itemize}
3167 \item Phần bắt lỗi tiếng.
3168 \item Nhận dạng từ sai.
3169 \item Nhận dạng ký hiệu, tên riêng nước ngoài.
3170 \end{itemize}
3172 Sau mỗi lần sữa lỗi, cần chạy lại thuật toán để loại tác động của lỗi
3173 sai.
3175 Văn bản xử lý được phân thành nhiều tầng:
3176 \begin{enumerate}
3177 \item Văn bản thô toàn bộ. Chuỗi các ký tự.
3178 \item Văn bản thô (câu).
3179 \item Dạng token. Tách ra từng chuỗi con.
3180 \item Dạng sentence. Một số token sẽ được gán id. Một số khác bị bỏ
3181 qua.
3182 \item Dạng lattice. Đồ thị các id (có thể giống hoặc khác với id ở cấp
3183 sentence) và các liên kết.
3184 \item Dạng segmentation. chuỗi id nhất định.
3185 \end{enumerate}
3187 Hiện tại, việc thay đổi thông tin ở tầng trên sẽ hủy mọi thông tin ở
3188 tầng bên dưới.
3190 Lưu lại các thông tin của người dùng như thế nào? Các thông tin này là
3191 ``global'' hay ``local''?
3193 \section{Trình huấn luyện}
3194 \label{sec:training}
3196 \subsection{Tiền xử lý}
3197 Giống như phần~\ref{sub:preprocess}
3200 \subsection{Tạo Lưới từ}
3201 Giống như phần~\ref{sub:lattice}, nhưng chỉ xét những từ nào thực sự
3202 có trong câu, sử dụng lưới từ thay vì lưới từ mở rộng.
3205 \subsection{Thống kê n-gram}
3206 \label{sub:wordcount}
3208 Nếu dùng PFS để tách từ, ta chỉ có 1 cách tách từ tốt nhất. Việc đếm
3209 từ sẽ dựa trên cách tách từ này.
3211 Như đã nói, có thể dùng WFST hoặc dùng thuật toán trong
3212 \cite{softcount} (tạm gọi là thuật toán ``soft-count'') để tách
3213 từ. WFST phải dùng kèm với beam pruning để tránh bùng nổ số tổ hợp các
3214 cách tách từ. Sau khi dùng WFST, ta còn n cách tách từ, có thể đếm
3215 fractional count (được đề cập bên dưới) trên các cách tách từ này.
3217 Trường hợp nhiều cách tách từ, ta có thểm đếm từ trên tất cả các cách
3218 tách, thay vì chỉ đếm trên cách tách từ tốt nhất. Cách này phản ánh
3219 tầm ảnh hưởng của các từ tốt hơn. Ví dụ, ta có 3 cách tách từ với xác
3220 suất các cách tách từ tương ứng lần lượt là 0,5, 0,40,1. Cách chỉ
3221 dùng cách tách từ tốt nhất sẽ chỉ tính những từ trong cách tách từ
3222 đầu, với giá trị mỗi từ là 1,0. Cách tính này ``dồn phiếu'' của 2 cách
3223 sau cho cách đầu. Trường hợp sau, các từ trong cách 23 vẫn được
3224 tính. Số đếm của mỗi từ không còn là 1, mà là xác suất của cách tách
3225 từ chứa từ đó. Trở lại ví dụ, các từ trong cách một sẽ được cộng thêm
3226 0,5 thay vì 1. Ngoài ra các từ trong cách 23 lần lượt được cộng
3227 0,40,1. Dễ thấy, các từ trong cách tách từ thấp sẽ không tăng số
3228 đếm đáng kể, do đó không thể gây ảnh hưởng lớn đến quyết định tách từ.
3229 Cách cộng dồn số như vậy được gọi là ``fractional count'' (hay trong
3230 \cite{softcount} gọi là ``soft-count'').
3232 Luận văn này thuật toán soft-count để đếm mọi cách tách từ. Soft-count
3233 thực tế không kết xuất ra một cách tách từ cụ thể nào (và do vậy nên
3234 cũng không thể áp dụng để tìm cách tách từ tốt nhất được!). Thay vào
3235 đó, thuật toán đếm mọi từ thể có. Thuật toán được mô tả trong
3236 \cite{softcount} không dùng từ điển. Mọi chuỗi con trong câu đều được
3237 cho là từ. Điểm này, vừa là điểm mạnh vì không cần dùng từ
3238 điển, nhưng cũng là điểm yếu vì yếu tố này làm giảm độ chính xác một
3239 cách đáng kể (khoảng 20\%, như kết quả trong \cite{softcount}).
3241 Giả sử câu S có $n$ tiếng, $2^{n-1}$ cách tách từ khác nhau, xác suất
3242 mỗi cách tách từ là $p(1),p(2),\ldots{},p(n)$.
3243 Với mỗi từ trong một cách tách từ, ta cộng thêm một khoảng
3244 $\displaystyle\frac{p(i)}{\sum_{i=1}^n{p(i)}}$ cho từ đó. Soft-count dùng
3245 lập trình quy hoạch động để thực hiện quá trình này.
3247 Thuật toán được dùng ở đây là thuật toán soft-count, được hiệu chỉnh
3248 sử dụng từ điển và lưới từ để hạn chế những từ không phải là từ.
3250 Cho lưới từ của câu S. Gọi $L(W)$ là tập những từ nối đến nút
3251 $W$. Tương tự, $R(W)$ là tập những từ được nối đến từ nút $W$.
3252 Với mỗi nút $W$ trong S, tổng xác suất các cách tách từ có chứa nút
3253 $W$ là:
3254 $$P(W)=P^{left}(W)p(W)P^{right}(W)$$
3255 Trong đó:
3256 \begin{itemize}
3257 \item $P^{left}(W)$ là tổng xác suất các cách tách từ tính từ đầu câu
3258 đến $W$.
3259 \item $P^{right}(W)$ là tổng xác suất các cách tách từ tính từ $W$ đến
3260 hết câu.
3261 \end{itemize}
3264 P^{left}(W) = \left\{
3265 \begin{array}{ll}
3266 p(W)&\text{nếu W là nút head}\\
3267 \displaystyle\sum_{W' \in L(W)}p(W')P^{left}(W')&\text{ngược lại}\\
3268 \end{array}
3269 \right.
3272 Tương tự
3275 P^{right}(W) = \left\{
3276 \begin{array}{ll}
3277 p(W)&\text{nếu W là nút tail}\\
3278 \displaystyle\sum_{W' \in R(W)}p(W')P^{right}(W')&\text{ngược lại}\\
3279 \end{array}
3280 \right.
3283 \begin{algo}[Tính $P^{left}$]
3284 \begin{enumerate}
3285 \item Đặt $P^{left}(head) = p(head)$
3286 \item Đặt $P^{left}(W) = 0$ với mọi $W$ còn lại.
3287 \item Duyệt lần lượt các nút $W$ theo thứ tự từ trái sang phải, tính
3288 theo vị trí bắt đầu của $W$ trong câu. Với $W' \in R(W)$
3289 cộng thêm $p(W)P^{left}(W)$ vào $P^{left}(W')$
3290 \end{enumerate}
3291 \end{algo}
3293 Thuật toán tương tự được áp dụng để tính $P^{right}$.
3295 Sau khi tính được $P^{left}$ và $P^{right}$, ta có thể tính fractional
3296 count cho các từ trong câu bằng cách duyệt tất cả các nút trong lưới từ,
3297 cộng thêm vào $\displaystyle\frac{P(W)}{P^{left}(tail)}$ cho từ
3298 $C$. Thực tế, ta sẽ lồng bước này vào trong thuật toán tính
3299 $P^{right}$, vì thuật toán cũng phải duyệt qua tất cả các từ.
3301 \begin{algo}[Tính $P^{right}$]
3302 \begin{enumerate}
3303 \item Đặt $P^{right}(tail) = p(tail)$
3304 \item Đặt $P^{right}(W) = 0$ với mọi nút còn lại.
3305 \item Duyệt tất cả các nút $W$ từ phải sang trái, tính theo vị trí kết
3306 thúc của $W$ trong câu.
3307 \begin{enumerate}
3308 \item Với $W' \in L(W)$, cộng thêm $p(W)P^{right}(W)$ vào
3309 $P^{right}(W')$
3310 \item Tính fractional count cho $W$ theo công thức
3311 $\displaystyle\frac{P^{left}(W)p(W)P^{right}(W)}{P^{left}(tail)}$
3312 \end{enumerate}
3313 \end{enumerate}
3314 \end{algo}
3317 Tuy nhiên, thuật toán trên (cũng như thuật toán gốc) sử dụng
3318 uni-gram, trong khi trình bắt lỗi lại dùng 2-gram. Để cho phép thuật
3319 toán dùng 2-gram, ta có thể tạo một lưới 2-từ như cách của
3320 \cite{Ravishankar} khi muốn tách từ dựa trên 3-gram. Tuy nhiên, để áp
3321 dụng cách này với 3-gram đòi hỏi phải tạo lưới 3-từ! Số lượng nút
3322 trong lưới 3-từ nhiều hơn nhiều so với lưới từ gốc, làm giảm tính hiệu
3323 quả của thuật toán.
3325 Thay vì vậy, thuật toán được hiệu chỉnh để áp dụng 2-gram với lưới từ
3326 thông thường. Thay vì dùng giá trị nút để tính, ta dùng giá trị cạnh
3327 để tính. $p(W)$ sẽ được thay bằng $p(W/W')$.
3329 $$P(W)=P^{left}(W)P^{right}(W)$$
3332 P^{left}(W) = \left\{
3333 \begin{array}{ll}
3334 p(W)&\text{nếu W là nút head}\\
3335 \displaystyle\sum_{W' \in L(W)}p(W/W')P^{left}(W')&\text{ngược lại}\\
3336 \end{array}
3337 \right.
3340 Tương tự
3343 P^{right}(W) = \left\{
3344 \begin{array}{ll}
3345 p(W)&\text{nếu W là nút tail}\\
3346 \displaystyle\sum_{W' \in R(W)}p(W'/W)P^{right}(W')&\text{ngược lại}\\
3347 \end{array}
3348 \right.
3351 $P(W)$ đại diện cho xác suất tất cả các cách tách từ đi qua nút
3352 $W$. Do ta huấn luyện 2-gram, nên cần xác suất $P(W/W')$ chứ không cần
3353 $P(W)$. Nếu $W$ và $W_{+1}$ chỉ có một cạnh, $P(W)$ cũng chính là
3354 $P(W/W_{+1})$. Nếu có nhiều hơn một cạnh, ta cần dùng cách khác để
3355 tính $P(W/W')$. Với thuật toán tính $P^{right}$ hiện có, ta cộng dồn
3356 $p(W/W')P^{right}$ vào cho $P^{right}(W)$. Vậy trong quá trình cộng
3357 dồn ta có thể tính ngay $P(W/W')$ bằng cách nhân giá trị cộng dồn với
3358 $P^{left}(W)$. Thuật toán tính $P^{left}$ và $P^{right}$ sau cùng như
3359 sau:
3361 \begin{algo}[Tính $P^{left}$]
3362 \begin{enumerate}
3363 \item Đặt $P^{left}(head) = p(head)$
3364 \item Đặt $P^{left}(W) = 0$ với mọi $W$ còn lại.
3365 \item Duyệt lần lượt các nút $W$ theo thứ tự từ trái sang phải, tính
3366 theo vị trí bắt đầu của $W$ trong câu.
3367 Với mỗi $W$ tìm được, cộng thêm $p(W'/W)P^{left}(W)$ vào $P^{left}(W')\quad
3368 W' \in R(W)$
3369 \end{enumerate}
3370 \end{algo}
3372 \begin{algo}[Tính $P^{right}$]
3373 \begin{enumerate}
3374 \item Đặt $P^{right}(tail) = p(tail)$
3375 \item Đặt $P^{right}(W) = 0$ với mọi nút còn lại.
3376 \item Duyệt tất cả các nút $W$ từ phải sang trái, tính theo vị trí kết
3377 thúc của $W$ trong câu. Với $W' \in L(W)$:
3378 \begin{enumerate}
3379 \item Cộng thêm $p(W/W')P^{right}(W)$ vào $P^{right}(W')$
3380 \item Tính fractional count cho $W'$ theo công thức
3381 $\displaystyle\frac{P^{left}(W')p(W/W')P^{right}(W)}{P^{left}(tail)}$
3382 \end{enumerate}
3383 \end{enumerate}
3384 \end{algo}
3386 Với cách tính này, ta có thể dùng lưới từ cùng với 2-gram. Để tính
3387 3-gram, ta dùng lưới 2-từ.
3389 \subsection{Tính n-gram}
3391 N-gram được tính như thông thường. Sử dụng backoff chuẩn. Thư viện
3392 SRILM được dùng để tính n-gram.
3397 \chapter{Cài đặt}
3398 \label{cha:implementation}
3399 \minitoc
3401 Chương trình gồm hai phần: phần bắt lỗi chính tả và phần huấn luyện.
3403 \section{Trình bắt lỗi chính tả}
3407 \section{Cấu trúc dữ liệu}
3410 \subsection{Lưu chuỗi}
3412 Để giảm thiểu không gian bộ nhớ, chương trình không thao tác trực tiếp
3413 trên các chuỗi mà lưu tập trung các chuỗi lại, sau đó dùng mã id để
3414 đánh số từng chuỗi một. Các thao tác so sánh sẽ dựa trên id này. Khi
3415 cần thao tác trên chuỗi, ta sẽ thông qua id để lấy chuỗi gốc.
3417 Các chuỗi được lưu trong một associative array và một array. Một dùng
3418 để ánh xạ chuỗi sang id. Một để ánh xạ id sang chuỗi.
3420 Có thể dùng lexical tree để giảm thiểu không gian lưu chuỗi (UNIMPL)
3422 Mỗi chuỗi có thể có nhiều id: id gắn với chuỗi gốc ({\em id}), id gắn
3423 với chuỗi gốc đã chuẩn hoá ({\em sid}), id gắn với chuỗi viết thường
3424 ({\em cid}), id gắn với chuỗi viết thường đã chuẩn hoá ({\em
3425 scid}). Các id này giúp việc so sánh được dễ dàng hơn.
3427 Trong hầu hết quá trình hoạt động, {\em sid} sẽ được dùng. Tuy nhiên,
3428 cũng có khi sẽ dùng {\em scid}. Bởi vậy, mỗi chuỗi sẽ có một id khác
3429 {\em fid}, hoặc bằng {\em sid}, hoặc bằng {\em scid}~\ldots{}{} {\em
3430 fid} sẽ được dùng trong hầu hết các hoạt động, trừ phần tiền xử lý.
3432 Mỗi từ sẽ chỉ lưu id và fid.
3434 \subsection{Lưu từ điển}
3436 Từ điển được lưu thành một cấu trúc dạng cây. Hiện tại từ điển lưu các
3437 từ gốc đã chuẩn hoá, và các từ viết thường đã chuẩn hoá.
3439 Với bản huấn luyện, lưu thêm id gốc để có thể xuất ra y như cũ ??
3440 Không cần. Wordlist sẽ lưu theo dạng chuẩn hoá. Như vậy không cần lưu
3441 id gốc. Quá trình training cần có bước chuyển tiếp để đọc wordlist
3442 chưa chuẩn hoá, ghi ra wordlist chuẩn hoá.
3445 \section{Dữ liệu huấn luyện}
3446 \label{sec:data-preprocessing}
3448 Dữ liệu gốc bao gồm: danh sách từ và các văn bản tiếng Việt thu thập
3449 từ mạng VnExpress\footnote{http://www.vnexpress.net}.
3451 Nhiệm vụ:
3452 \begin{itemize}
3453 \item Tạo danh sách tiếng, chuẩn hoá danh sách tiếng.
3454 \item Tiền xử lý ngữ liệu.
3455 \item Huấn luyện n-gram, tạo ra dữ liệu n-gram.
3456 \end{itemize}
3459 \subsection{Dữ liệu nguồn}
3460 \label{sec:data-source}
3462 Dữ liệu nguồn bao gồm danh sách từ và ngữ liệu tiếng Việt. Dữ liệu
3463 được lưu dưới dạng mã VISCII.
3464 \subsubsection{Danh sách từ}
3466 Đây là một tập tin văn bản lưu tất cả các từ được dùng trong tiếng
3467 Việt, mỗi từ một dòng. Các chữ cách bởi một khoảng trắng.
3470 \subsubsection{Ngữ liệu huấn luyện}
3472 Bao gồm một loạt các tập tin văn bản tiếng Việt. Mỗi dòng là một đoạn
3473 văn bản.
3475 \subsection{Danh sách tiếng}
3476 \label{sub:syllable-list}
3478 Danh sách tiếng chứa mọi tiếng thông dụng nhất được sử dụng trong
3479 tiếng Việt. Danh sách này được rút trích từ danh sách từ, sau đó được
3480 lưu ở dạng chuẩn hoá.
3482 Danh sách tiếng được rút trích tự động khi chương trình nạp danh sách
3483 từ.
3485 %Chương trình syllable-extract được dùng để tạo danh sách này. Cách
3486 %dùng:
3487 %\begin{verbatim}
3488 %$syllable-extract < word-list > syllable-list
3489 %\end{verbatim}
3492 \subsection{Tiền xử lý ngữ liệu huấn luyện}
3493 \label{sec:training-data-preprocessing}
3495 Dữ liệu thu được từ VnExpress bao gồm một loạt các file html, chia
3496 thành nhiều thư mục.
3498 htmltidy được sử dụng để chuyển dữ liệu html về dạng xhtml. Các file
3499 html của VnExpress không hoàn toàn tuân theo chuẩn html, bao gồm hai
3500 trường hợp:
3502 \begin{itemize}
3503 \item Sử dụng tag <vne>
3504 \item Không đóng tag <frame>
3505 \end{itemize}
3507 Hai lỗi này được tự động phát hiện và sửa chữa trước khi chuyển dữ
3508 liệu cho htmltidy.
3510 Sau khi chạy htmltidy, ta được dữ liệu xhtml hợp khuôn dạng. Phân tích
3511 các tài liệu này cho thấy phần nội dung chính thường nằm trong tag
3512 <vne>, hoặc trong tag <table> với thuộc tính id là
3513 ``CContainer''. XSLT được sử dụng để lọc ra phần nội dung nằm giữa hai
3514 tag này (\verb#z.xslt#).
3516 Trình \verb#convert.sh# sẽ thực hiện bước htmltidy và xslt ở trên. Cách sử
3517 dụng:
3518 \begin{verbatim}
3519 $convert.sh < input > output
3520 \end{verbatim}
3522 Sau bước này, ta cần lọc bỏ các tag, loại bỏ các entity~\ldots{}{} để
3523 đưa dữ liệu về dạng văn bản thuần túy. Do số lượng tag được định nghĩa
3524 html rất nhiều nên chỉ xử lý những tag nào được sử dụng trong
3525 VnExpress (thông qua chương trình \verb#gettags.pl#). Các tag này được loại
3526 bỏ bằng \verb#html2text.pl#. Các mã utf-8 được sử dụng trong
3527 VnExpress (thông qua chương trình \verb#z.c#) được chuyển về mã VISCII
3528 qua \verb#z.cpp#. Các entity còn lại (lấy bằng \verb#list-entity.pl#)
3529 được xử lý trong \verb#html2text.pl#.
3531 \verb#html2text.pl# sử dụng các tag để tách dữ liệu thành các đoạn. Dữ
3532 liệu sau cùng là các tập tin văn bản, mỗi dòng là một đoạn.
3534 \subsection{Huấn luyện dữ liệu}
3535 \label{sub:training-data}
3537 Chương trình \verb#wfst-train# được dùng để huấn luyện dữ liệu. Thông
3538 tin nhập là danh sách từ, danh sách tiếng, n-gram (nếu có). Thông tin
3539 xuất là n-gram mới.
3541 Chương trình được lặp đi lặp lại nhiều lần.
3543 \chapter{Đánh giá và kết luận}
3544 \label{cha:conclusion}
3545 \minitoc
3547 \section{Hạn chế}
3548 \begin{itemize}
3549 \item Không sử dụng những thông tin cấp cao hơn.
3550 \item Có khả năng nó tự động sửa từ đúng thành từ sai, do từ sai
3551 ``hay'' được dùng trong câu đó hơn là từ đúng :-P
3552 \end{itemize}
3554 \section{Hướng phát triển}
3555 \label{sec:todo}
3557 Viết lại từ đầu :-D
3559 \begin{itemize}
3560 \item Các hướng cải tiến EM.
3561 \item Tư tưởng cơ bản hiện thời là phát sinh mọi trường hợp tương tự
3562 với trường hợp đang xét và hy vọng giải pháp đúng cũng nằm trong
3563 đó. Cách này có hai điểm cần bàn:
3564 \begin{itemize}
3565 \item Khi nào nên phát sinh, khi nào không? Nói cách khác, khi nào
3566 ta ``cảm thấy'' chỗ đó có thể bị sai? Statistics/Genetic approach?
3567 \item Khi phát sinh, nên đánh giá tầm quan trọng của các cách phát
3568 sinh cho hợp lý, không nên đánh đồng như hiện nay. How can i do
3569 that?
3570 \end{itemize}
3571 \item Ngoài cách đang làm, còn hướng nào khác không? Liệu speech
3572 recognition/OCR có ý kiến nào hay không? Cần tìm hiểu mọi thứ liên
3573 quan đến ``error tolerance''
3574 \item \verb#Syllable::to_str()# output sai từ ``của''.
3575 \item Từ điển bao gồm hai loại viết hoa ``Việt Nam'' và ``A di đà
3576 phật''. Nên phát sinh thêm loại ``A Di Đà Phật'' luôn. Làm sao chuẩn
3577 hoá cả hai càng tốt. Chỉ cần lưu ``a di đà phật'' là đủ.
3578 \item \verb#Syllable::parse()# sẽ gặp vấn đề với chữ hoa.
3579 \end{itemize}
3581 \appendix
3582 \chapter{Blah}
3584 \bibliographystyle{alpha}
3585 \bibliography{reference}
3587 %% \begin{thebibliography}{}
3588 %% \bibitem{Ravishankar}Mosur K. Ravishankar. 1996. {\em Efficient Algorithms for
3589 %% Speech Recognition.} PhD thesis. %CMU-CS-96-143.ps
3590 %% \bibitem{Oflazer}Kemal Oflazer. 1996. {\em Error-tolerant Finite State
3591 %% Recognition with Applications to Morphological Analysis and Spelling
3592 %% Correction.} %oflazer96errortolerant.ps.gz
3593 %% \bibitem{LAH}Le An Ha. {\em A method for word segmentation in
3594 %% Vietnamese.} %Ha-03.pdf
3595 %% \bibitem{Chang}Chao-Huang Chang. {\em A New Approach for
3596 %% Automatic Chinese Spelling Correction.} %a-new-approach-for.ps
3597 %% \bibitem{Sproat}Richard Sproat, William Gale, Chilin Shih, Nancy
3598 %% Chang. {\em A Stochastic Finite-State Word-Segmentation Algorithm for
3599 %% Chinese.} ACL Vol 22 N3.%J96-3004.pdf
3600 %% \bibitem{Chunyu}Chunyu Kit, Zhiming Xu, Jonathan
3601 %% J. Webster. {\em Integrating Ngram Model and Case-based Learning For
3602 %% Chinese Word Segmentation.}%tsdx.ps.gz
3603 %% \bibitem{softcount}Xianping Ge, Wanda Pratt,
3604 %% Padhraic Smyth. {\em Discovering Chinese Words from Unsegmented
3605 %% Text.}%mlwordsigir.ps
3606 %% \bibitem{text-tiling}Jianfeng Gao, Hai-Feng Wang, Mingjing Li, Kai-Fu
3607 %% Lee. {\em A Unified Approach to Statistical Language Modeling for
3608 %% Chinese.}%icassp00.pdf
3609 %% \bibitem{}Nianwen Xue.{\em Chinese Word Segmentation as Character
3610 %% Tagging.}%paper2.pdf
3611 %% \bibitem{self-supervised}Fuchun Peng and Dale Schuurmans. {\em Self-Supervised Chinese
3612 %% Word Segmentation.}%IDA01.pdf
3613 %% \bibitem{phonetex}Victoria J. Hodge, Jim Austin. {\em An Evaluation of
3614 %% Phonetic Spell Checkers}%an-evaluation-of-phonetic.ps.gz
3615 %% \bibitem{soundex}K. Kukich. 1992. {\em Techniques for Automatically Correcting
3616 %% Words in Text.}
3617 %% \bibitem{}Cláudio L. Lucchesi and Tomasz Kowaltowski. {\em Applications of
3618 %% Finite Automata Representing Large Vocabularies.}%lucchesi92applications.ps.gz
3619 %% \bibitem{}Bo-Hyun Yun, Min-Jeung Cho, Hae-Chang Rim. {\em Segmenting Korean
3620 %% Compound Nouns using Statistical Information and a Preference
3621 %% Rule. }%PACLING97.ps
3622 %% \bibitem{}Roger I. W. Spooner and Alistair D. N. Edwards. {\em User
3623 %% Modelling for Error Recovery: A Spelling Checker for Dyslexic
3624 %% Users}%spooner97user.ps.gz
3625 %% \bibitem{}Theppitak Karoonboonyanan, Virach Sornlertlamvanich,
3626 %% Surapant Meknavin. {\em A Thai Soundex System for Spelling Correction.}%tsdx.ps.gz
3627 %% \bibitem{}Justin Zobel and Philip Dart. {\em Finding Approximate Matches in
3628 %% Large Lexicons.}%zobel95finding.ps.gz
3629 %% \bibitem{}Sun Maosong, Shen Dayang, Huang Changning. {\em CSeg\&Tag1.0: A
3630 %% Practical Word Segmenter and POS Tagger for Chinese Texts.}%A97-1018.pdf
3631 %% \bibitem{wordseg}Đinh Điền, Hoàng Kiếm, Nguyễn Văn Toàn. {\em Vietnamese Word
3632 %% Segmentation.}%0047-02.pdf
3633 %% \bibitem{}Bidyut Baran Chaudhuri. {\em Reversed word dictionary and
3634 %% phonetically similar word grouping based spell-checker to Bangla
3635 %% text.}%bangla.pdf
3636 %% \bibitem{}Timothy Gambell, Charles D. Yang. {\em Scope and Limits of
3637 %% Statistical Learning in Word Segmentation.}%gambell_yang.pdf
3638 %% \bibitem{iccc}Andi Wu, George Heidorn, Zixin Jiang, Terence
3639 %% Peng. {\em Correction of Erroneous Characters in Chinese Sentence
3640 %% Analysis.}%ICCC-2001.pdf
3641 %% \bibitem{}Fuchun Peng, Xiangji Huang, Dale Schuurmans, Shaojun
3642 %% Wang. {\em Text Clasification in Asian Languages without Word
3643 %% Segmentation.}%IRAL2003.pdf
3644 %% \bibitem{}Yalin Wang, Ihsin T. Phillips, Robert
3645 %% Haralick. {\em Statistical-based Approach to Word Segmentation.}%wordicpr.pdf
3646 %% \bibitem{}{\em Combining Syntactical And Statistical Language Constraints
3647 %% in Context-dependent Language Models for Interactive Speech
3648 %% Applications.}%K026.pdf
3649 %% \bibitem{LoiChinhTa}TS. Lê Trung Hoa. 2002. {\em Lỗi chính tả và cách khắc phục. NXB Khoa
3650 %% học Xã hội.}
3651 %% \bibitem{LoiTuVung}PGS. Hồ Lê, TS. Trần Thị Ngọc Lang, Tô Đình Nghĩa. 2002. {\em Lỗi từ
3652 %% vựng và cách khắc phục.} NXB Khoa học Xã hội.
3653 %% \bibitem{Tuoi}PTS. Phan Thị Tươi, KS. Nguyễn Hứa Phùng, KS. Huỳnh Vụ
3654 %% Như Liên, KS. Phạm Quyết Thắng. 1998. {\em Bắt lỗi chinh tả tự động cho
3655 %% tiếng Việt bằng máy tính.}
3656 %% \bibitem{worddef}Đinh Điền. 2000. {\em Từ tiếng Việt.} VNU-HCMC.
3657 %% \bibitem{}Andrew R. Golding. 1995. {\em A Bayesian hybrid method for
3658 %% context-sensitive spelling correction}. Proceedings of the Third
3659 %% Workshop on Very Large Corpora, pages 39-53.
3660 %% \bibitem{}Andrew R. Golding and Dan Roth. 1999. {\em A Winnow-based
3661 %% approach to context-sensitive correction}. Machine Learning,
3662 %% Special issue on Machine Learning and Natural Language Processing,
3663 %% 34:107-130.
3664 %% \bibitem{}Andrew R. Golding and Yves Schabes. 1996. {\em Combining
3665 %% trigram-based and feature-based methods for context-sensitive
3666 %% spelling correction}. Proceedings of the 34th Annual Meeting of
3667 %% the Association for Computational Linguistics.
3668 %% \end{thebibliography}
3671 \end{document}
3674 Giả sử câu S có $n$ tiếng $c_1,c_2,\ldots{},c_n$, có $|S|$ cách tách từ
3675 $S_1,S_2,\ldots{},S_{|S|}$ và cách tách từ $S_i$ được
3676 tách thành $|S_i|$ từ $W_{i_1},W_{i_2},\ldots{},W_{i_{|S_i|}}$ với
3677 $W_i$ là một từ xác định bắt đầu ở tiếng thứ $i$ chứa $|W_i|$ tiếng, và
3678 $i_j$ là vị trí từ thứ $j$ trong cách tách câu $i$.
3680 Ta có:
3681 $$p(i)=\sum_{j=1}^{|S_i|}{p(W_{i_j})}$$
3683 Một câu sẽ được tách thành:
3684 $$P(W_i) = P_{i}^{left}p(W_{i})P_{i+|W_i|}^{right}$$
3686 $P_i^{left}$ là xác suất tất cả các tổ hợp từ có thể có từ
3687 tiếng thứ nhất đến tiếng thứ $i$.
3689 $P_{i}^{right}$ là xác suất tất cả các tổ hợp từ có thể có từ tiếng
3690 thứ $i$ đến hết câu.
3692 Dễ thấy, với mỗi từ $C$ trong câu $S$, fractional count W của từ sẽ là
3693 $\displaystyle\frac{P(W)}{\sum_i^{|S|}p(i)}$.
3695 $\displaystyle\sum_i^{|S|}p(i)$ cũng chính là $P_{n+1}^{left}$ theo
3696 định nghĩa $P_i^{left}$.
3698 Ta sẽ dùng quy hoạch động để tính $P_i^{left}$ và $P_i^{right}$
3701 P_i^{left} = \left\{
3702 \begin{array}{lr}
3703 1 & i=1\\
3704 p(W_i) & i=2\\
3705 \sum_{j=1}^{i-1}p(c_j\ldots{} c_{i-1})P_j^{left} & i>2
3706 \end{array}
3707 \right.
3711 p(c_i\ldots{} c_j) = \left\{
3712 \begin{array}{ll}
3713 p(W_i)&\text{nếu } c_i\ldots{} c_j \text{ tạo thành } W_i\\
3714 0&\text{ngược lại}
3715 \end{array}
3716 \right.
3719 Thuật toán tính $P^{left}$ như sau:
3720 \begin{enumerate}
3721 \item Đặt $P_1^{left} = 1$
3722 \item Đặt $P_i^{left} = 0\quad \forall i \in [2\ldots{} n+1]$
3723 \item Duyệt i từ 1 đến n, tìm tất cả các từ $W_i$ (do tại có thể có
3724 nhiều từ bắt đầu tại tiếng $i$).
3725 Với mỗi từ $W_i$ tìm được, cộng thêm $p(W_i)$ vào $P_{i+|W_i|}^{left}$
3726 \end{enumerate}
3728 Thuật toán tương tự được áp dụng để tính $P^{right}$.
3730 Sau khi tính được $P^{left}$ và $P^{right}$, ta có thể tính fractional
3731 count trong câu bằng cách duyệt tất cả các từ có thể có trong câu,
3732 cộng thêm vào $\displaystyle\frac{P(W)}{P_{n+1}^{left}}$ cho từ
3733 $C$. Thực tế, ta sẽ lồng bước này vào trong thuật toán tính
3734 $P^{right}$, vì thuật toán cũng phải duyệt qua tất cả các từ.
3736 Vậy thuật toán tính $P^{right}$ là:
3737 \begin{enumerate}
3738 \item Đặt $P_{n+1}^{right} = 1$
3739 \item Đặt $P_i^{right} = 0\quad \forall i \in [1\ldots{} n]$
3740 \item Duyệt i từ n+1 đến 1.
3741 \begin{enumerate}
3742 \item tìm tất cả các từ $W_j$ sao cho $j+|W_j|=i$.
3743 Với mỗi từ $W_j$ tìm được, cộng thêm $p(W_j)$ vào
3744 $P_j^{right}$
3745 \item Tính fractional count cho tất cả các từ $W_i$ ($i \le n$)
3746 \end{enumerate}
3747 \end{enumerate}
3750 Ví dụ: câu ``học sinh học sinh học'' có 8 cách tách từ
3751 \begin{verbatim}
3752 học-sinh học-sinh học
3753 học-sinh học sinh học
3754 học-sinh học sinh-học
3755 học sinh học sinh học
3756 học sinh học sinh-học
3757 học sinh học-sinh học
3758 học sinh-học sinh học
3759 học sinh-học sinh-học
3760 \end{verbatim}
3761 \def\Zhs{\text{học-sinh}}
3762 \def\Zsh{\text{sinh-học}}
3763 \def\Zh{\text{học}}
3764 \def\Zs{\text{sinh}}
3765 Ta có
3767 \begin{array}{rl}
3768 P_1^{left}(\Zhs) &= p(\Zhs_1/\phi)\\
3769 P_1^{left}(\Zh) &= p(\Zh_1/\phi)\\
3770 P_2^{left}(\Zs) &= p(\Zs_2/\Zh_1)P_1^{left}(\Zh)\\
3771 &=p(\Zs_2/\Zh_1)p(\Zh_1/\phi)\\
3772 P_2^{left}(\Zsh) &= p(\Zsh_2/\Zh_1)P_1^{left}(\Zh)\\
3773 &=p(\Zsh_2/\Zh_1)p(\Zh_1/\phi)\\
3774 P_3^{left}(\Zhs) &= p(\Zhs_3/\Zhs_1)P_1^{left}(\Zhs)+p(\Zhs_3/\Zs_2)P_2^{left}(\Zs)\\
3775 &=p(\Zhs_3/\Zhs_1)p(\Zhs_1/\phi)+p(\Zhs_3/\Zs_2)p(\Zs_2/\Zh_1)p(\Zh_1/\phi)\\
3776 &=p(\Zhs_1,\Zhs_3)+p(\Zh_1,\Zs_2,\Zhs_3)\\
3777 P_3^{left}(\Zh) &= p(\Zh_3/\Zs_2)P_2^{left}(\Zs)+p(\Zh_3/\Zhs_1)P_1^{left}(\Zhs)\\
3778 &=p(\Zh_3/\Zs_2)p(\Zs_2/\Zh_1)p(\Zh_1/\phi)+p(\Zh_3/\Zhs_1)p(\Zhs_1/\phi)\\
3779 &=p(\Zh_1,\Zs_2,\Zh_3)+p(\Zhs_1,\Zh_3)\\
3780 \end{array}
3784 \begin{array}{rl}
3785 P_5^{right}(\Zh) &= p(\Phi/\Zh_5)\\
3786 P_4^{right}(\Zsh) &= p(\Phi/\Zsh_4)\\
3787 P_4^{right}(\Zs) &= p(\Zh_5/\Zs_4)P_5^{right}(\Zh)\\
3788 &=p(\Zh_5/\Zs_4)p(\Phi/\Zh_5)\\
3789 P_3^{right}(\Zh) &= p(\Zsh_4/\Zh_3)P_4^{right}(\Zsh)+p(\Zs_4/\Zh_3)P_4^{right}(\Zs)\\
3790 &=p(\Zsh_4/\Zh_3)p(\Phi/\Zsh_4)+p(\Zs_4/\Zh_3)(\Zh_5/\Zs_4)p(\Phi/\Zh_5)\\
3791 &=p(\Zh_3,\Zsh_4)+p(\Zh_3,\Zs_4,\Zh_5)\\
3792 P_3^{right}(\Zhs) &= p(\Zh_5/\Zhs_3)P_5^{right}(\Zh)\\
3793 &=p(\Zh_5/\Zhs_3)p(\Phi/\Zh_5)\\
3794 &=p(\Zhs_3,\Zh_5)\\
3795 \end{array}
3799 \begin{array}{rl}
3800 P_3(\Zhs) &= P_3^{left}(\Zhs)P_3^{right}(\Zhs)\\
3801 &=[p(\Zhs_1,\Zhs_3)+p(\Zh_1,\Zs_2,\Zhs_3)]p(\Zhs_3,\Zh_5)\\
3802 &=p(\Zhs_1,\Zhs_3)p(\Zhs_3,\Zh_5)+p(\Zh_1,\Zs_2,\Zhs_3)p(\Zhs_3,\Zh_5)\\
3803 &=p(\Zhs_1,\Zhs_3,\Zh_5)+p(\Zh_1,\Zs_2,\Zhs_3,\Zh_5)
3804 \end{array}