Như đã phân tích trong chương 2, trong tiếng Việt tồn tại hai cách viết y và i
cho cùng một âm vị /i/. Việc cho phép viết một từ ở cả hai cách sẽ giảm hiệu suất của chương trình. Thống nhất viết nguyên âm chính /i/ bằng chữ cái "i". Khi y đứng kết thúc một chữ thì đều chuyển thành i , ví dụ như quý -> quí,lý ->lí,.... Tuy nhiên khi cần phân biệt thuý với thúi thì vẫn viết như cũ. Khi i hoặc y đứng một mình hoặc đứng đầu âm tiết thì vẫn viết theo thói quen cũ như trong ầm ĩ , yêu ...
3.4.2 Chuẩn hoá đấu thanh
thốngnhất qui tắc đặt dấu chung. Do tiếng Việt có nhiều hơn một qui định về qui tắc bỏ dấu cho nên gây khó khăn cho các thao tác xử lí về sau. Bởi vì cùng một chữ nhưng dung hai qui tắc bỏ dấu khác nhau sẽ cho hai chuỗi kí tự hoàn toàn khác nhau ví dụ như hoà và hòa. Sự khác nhau này dẫn đến tình trạng đối sánh nhận dạng từ trong từ điển có thể không chính xác.
Để tránh tình trạng này, dấu thanh sẽ được chuẩn hoá theo qui tắc được đánh vào âm vị chính của vần. Tức là được đặt được trên nguyên âm có vai trò quyết định âm sắc chủ yếu của âm tiết. Theo nguyên tắc này các bỏ dấu thanh hoà, quả, của là đúng còn hòa, qủa, cuả là sai.
3.4.3 Chữ viết tắt và các kí hiệu khác
Dấu hiệu để nhận ra chữ viết tắt trong tiếng Việt là cụm chữ cái được viết hoa hoàn toàn ví dụ như : UBND, NSƯT,.... Dấu chấm cũng là một dấu hiệu để nhận ra chữ viết tắt nhưng không phải hoàn toàn là đầu mối tin cậy để bộc lộ một chữ viết tắt. Việc xử lí các từ viết tắt được so khớp với một từ điển đã cho. Một số từ viết tắt có thể phát âm được theo các âm vị của chúng như FAO /phao/, CAM /cam/,... đa số thường được đánh vần theo từng âm vị của chúng như UBND /u bê en đê/. Các từ viết tắt thuần Việt trong từ điển được tra ngược thành các từ tương ứng với từ được viết tắt.. Ví dụ như UBND - uỷ ban nhân dân; TP-thành phố... Các kí hiệu khác như đơn vị đo lường, kí hiệu tiền tệ cũng được đưa vào trong từ điển viết tắt này như mm – mi li mét; kg – ki lô gam...
3.4.4 Các con số
Các con số xuất hiện trong trong nhiều ngữ cảnh khác nhau và có nhiều cách đọc khác nhau, ví dụ 875 sẽ được đọc là tám trăm bảy mươi lăm hoặc là tám bảy năm phụ thuộc vào vị trí nó xuất hiện trong văn bản: có thể là một con số đếm hoặc là số điện thoại.
Một hệ thống phân tích văn bản có thể kết hợp chặt chẽ các quy tắc, có thể phán đoán cho nhiều trường hợp xảy ra. Nhưng có thể chẳng bao giờ đạt được hoàn toàn trong tất cả các trường hợp.
Con số số học thông thường được trả về khi nó được viết đầy đủ với các dấu phân cách như 8.753.123 tám triệu bảy trăm năm mươi ba nghìn một trăm hai mươi
ba.
Các trường hợp còn lại nên được đánh vần từng chữ số: con số trong một qui cách sản phẩm hay là con số điện thoại, ví dụ như: NOKIA 6230 - sáu hai ba không; VIOS 3.1 – ba chấm một; 8677861 – tám sáu bảy bảy tám sáu một ...
3.4.5 Ngày tháng
Ngày tháng trong các văn bản thuần Việt có một vài khuôn dạng sau: 03/04/2005 hoặc 03-04-2005
3/4/2005 hoặc 3-4-2005 3/4/05 hoặc 3-4-05 3/4 hoặc 3-4
4/2005 hoặc 4-2005
Thấy rằng do không có sự thống nhất về mặt chính tả, cho nên có dạng thức ngày tháng được dùng cả dấu "/" và "-" để phân tách trong biểu thức ngày tháng. Điều này có thể gây ra sự nhập nhằng là 3-4 có thể được hiểu là "Mùng ba tháng tư" hoặc là "từ ba đến bốn" thậm chí là tỉ số của một cuộc thi đấu thể thao "ba - bốn".
Một sự nhập nhằng khác là biểu diễn 3/4 có thể được hiểu là "Mùng ba tháng tư" hoặc "ba phần tư". Chú ý rằng ngày tháng có thể bị nhập nhằng do sự thay đổi thế kỉ (Y2K) như 5/7/37 có thể hiểu là 1937 hay 2037. An toàn nhất để nói là "
mùng năm tháng bẩy năm ba bẩy” hơn là liều lĩnh nói “mùng năm tháng bẩy năm một nghìn chín trăm ba bẩy”.
Một sự nhập nhằng khác nữa trong thói quen viết của người Việt là khi viết ngày tháng xuất hiện cả hai dấu phân tách ngày tháng "/" và "-", ví dụ 6-8/4 được hiểu là từ ngày mùng 6 đến ngày mùng 8 tháng 4.
Những nhập nhằng kể trên được xử lí thông qua một vài luật heuristic. Xử lí nhập nhằng giữa ngày tháng và phân số:
3.4.6 Thời gian
Trong các văn bản tiếng Việt sự thể hiện con số thời gian có một số cách như sau:
19g20 Mười chín giờ hai mươi
5:15:20 Năm giờ mười lăm phút hai mươi giây
5:15 Năm giờ mười lăm phút
Nhìn chung việc phân biệt cũng dựa trên một số luật heuristic
3.5 Phân tích ngôn ngữ
Như chúng ta đã đề cập, ngữ pháp và ngữ nghĩa là các vấn đề được quan tâm nhất và có ứng dụng nhiều nhất trong các bài toán điển hình của lĩnh vực Xử lí ngôn ngữ tự nhiên như Tóm tắt, Dịch máy, Trả lời tự động… Sau đây là các bài toán cơ bản thuộc về ngữ pháp và ngữ nghĩa mà các nhà Xử lí ngôn ngữ tự nhiên thường phải giải quyết.
3.5.1 Tách từ
Tách từ (Word Segmentation) là công việc tách một chuỗi văn bản ra thành các term (tạm dịch : thuật ngữ) xem các term nào có trong từ điển, term nào không có trong từ điển (các tên riêng, ký hiệu, chữ viết tắt…). Công việc này làm tiền đề cho việc mô hình hóa văn bản. Chúng ta phải thực hiện việc này trước thì mới có thể vector hóa một văn bản, đối sánh hay xác định độ liên quan…
Đối với các ngôn ngữ Latin giống như tiếng Anh và tiếng Pháp thì vấn đề này không phức tạp bằng các ngôn ngữ khác như tiếng Việt, tiếng Trung Quốc hay tiếng Nhật… do các từ của tiếng Anh hay tiếng Pháp được tách nhau bởi một hay nhiều dấu cách còn trong tiếng Việt, Trung Quốc, Nhật… thì giữa các dấu cách không phải là từ mà là tiếng (chữ) - một đơn vị nhỏ hơn từ.
Bài toán tách từ là một nhiệm vụ không tầm thường trong việc xử lí các ngôn ngữ châu Á như tiếng Thái, Nhật, Trung Quốc. Với tiếng Việt cũng vậy, tách từ sẽ được thảo luận trong một chương riêng biệt sẽ nói sau.
3.5.2 Gán nhãn từ loại
Gán nhãn từ loại là công việc gán cho mỗi từ trong câu, hay đoạn thông tin về từ loại (Part of speech) của chúng.
Học sinh học sinh học
Câu này nếu gán nhãn từ loại đúng sẽ là :
[Học sinh]N[học]V [sinh học]N
Tuy nhiên làm sao để máy có thể hiểu và gán đúng nhãn từ loại là một vấn đề. Sự nhập nhằng trong ngôn ngữ cản trở việc máy đoán nhận đúng. Ngoài ra việc phân tách thuật ngữ cũng ảnh hưởng tới việc gán nhãn vì các danh sách thuật ngữ của một câu là đầu vào cho một bộ gán nhãn từ loại. Với ví dụ trên có khá nhiều bộ gán nhãn từ loại gán sai dẫn tới kết luận sai về cú pháp.
Các phương pháp thường dùng để cài đặt bộ gán nhãn từ loại bao gồm : Mô hình Markov ẩn - Giải thuật Viterbi, Dựa luật cú pháp (Rule-based), Dựa bộ nhớ (Memory-based), Độ hỗn loạn lớn nhất (Maximum Entropy)… Trong đó các phương pháp áp dụng mô hình Markov ẩn (Hidden Markov Model - HMM) được sử dụng nhiều nhất. Các phương pháp như Bigram, Trigram hay CFG (Context Free Grammar) đều thuộc loại này. Hiện nay một bộ gán nhãn từ loại (POS Tagger) chính xác nhất đạt được 98% từ gán nhãn đúng [5].
3.5.3. Phân tích cú pháp
Phân tích cú pháp là bài toán tổng quát của gán nhãn từ loại. Ngoài việc gán từ loại cho từng từ, bộ phân tích cú pháp (Syntax Analyzer hay Parser) phải nhận biết được các ngữ và gán kiểu cho các ngữ làm sao để có được một câu hoàn chỉnh về mặt ngữ pháp. Nếu không câu đó là câu không hoàn chỉnh. Xét về ngôn ngữ học, đó sẽ không phải là câu. Kết quả việc gán từ, ngữ này thường được biểu diễn thành cây, gọi là cây cú pháp (Syntax Tree).
Với ví dụ trên ta có : S NP VP Nc Vt Nc Học sinh học sinh học Hình 3.6: Phân tích cú pháp
Các bộ phân tích cú pháp thường được cài đặt bởi các thuật toán dựa trên luật hay ngữ liệu (Corpus-based). Việc kiểm tra xem một câu có phải là câu hoàn chỉnh hay không thường dựa vào việc duyệt cây và cấu trúc chính của một ngôn ngữ. Ở tiếng Anh, cấu trúc chính tạo nên câu hoàn chỉnh về mặt ngữ pháp là cấu trúc S + V + (O) : Chủ ngữ + Động từ + (Tân ngữ). Tuy nhiên trong tiếng Việt cấu trúc “nòng cốt” tạo bởi quan hệ “đề - thuyết” (hay quan hệ “chủ - vị”)là cấu trúc của một câu hoàn chỉnh về mặt ngữ pháp [3].
Việc phân tích cú pháp là một công việc cơ bản của các bài toán Xử lí ngôn ngữ tự nhiên, tuy vậy do tính chất phức tạp của ngôn ngữ và các đặc thù riêng của quá trình máy học, các bộ phân tích cú pháp chưa đạt được độ chính xác cao như mong đợi.
3.5.4 Phân tích ngữ nghĩa
Như chúng ta đã đề cập ở trên, phân tích ngữ nghĩa tức là giúp cho máy có thể “hiểu” được một từ, một câu, một đoạn... hàm chứa ý nghĩa gì hay mối quan hệ về nghĩa giữa chúng... Các phương pháp dùng để phân tích ngữ nghĩa hay được dùng đó là các phương pháp dựa trên tri thức hay dựa trên ngữ liệu. Dựa trên tri thức (Knowledge-based) là phương pháp dựa trên các kho tri thức ngữ nghĩa có sẵn (như
WordNet) để phân tích ngữ nghĩa. Dựa trên ngữ liệu (Corpus-based) là phương pháp dựa trên những thống kê các kho ngữ liệu để đưa ra được ngữ nghĩa của đối tượng đang xét. Các phương pháp này nói chung đòi hỏi phải có kho tri thức hoặc kho ngữ liệu lớn, càng lớn càng chính xác nhưng đối với tiếng Việt thì đây là hạn chế lớn do chúng ta không có được các nguồn tài nguyên này. Một cách khắc phục là xây dựng các kho ngữ liệu song ngữ (Parallel Corpora) và từ các nghiên cứu tương ứng của một ngôn ngữ mà dẫn ra một số kết quả thích hợp cho ngôn ngữ còn lại.
Phạm vi của modul phân tích ngữ nghĩa là rất lớn. Trong giới hạn của luận văn tôi chỉ đề cập tới phần đầu tiên và khá quan trọng đó là tách từ trong tiếng Việt và được thảo luận trong chương sau.
Chƣơng 4
BÀI TOÁN TÁCH TỪ TIẾNG VIỆT
Việc tách từ là vấn đề sống còn trong xử lí ngôn ngữ tự nhiên cho các ngôn ngữ châu Á như Trung Quốc, Nhật, và Việt Nam. Tách từ là nhiệm vụ đầu tiên và bắt buộc cho mỗi NLP. Khi chưa biết ranh giới của các từ trong một câu, chúng ta cũng không thể tiến thêm bước nào nữa trong xử lí ngôn ngữ tự nhiên. Trong các ngôn ngữ đã nêu trên, mỗi đơn vị âm, khi viết, được tách ra bởi các khoảng trống, và không có gì được sử dụng để nhận ra ranh giới các từ.
Việc tách từ đúng sẽ làm gia tăng chất lượng cho một hệ TTS. Khi từ được tách không đúng có thể làm sai nghĩa của một câu nói.
4.1 Các khó khăn trong việc nhận dạng từ tiếng Việt
Vấn đề định nghĩa về từ cũng còn nhiều tranh cãi. Câu hỏi “ Thế nào là một từ? ” tự nó cũng là một vấn đề. Câu hỏi này không thể được trả lời theo cách làm hài lòng tất cả mọi người, người ta vẫn tiếp tục có những những định nghĩa nữa của mình. Do vậy vấn đề về ranh giới từ tiếp tục tồn tại.
Tiếng Việt trước hết là một ngôn ngữ nói. Trong một ngôn ngữ nói, đơn vị là quan trọng nhất đó là âm tiết chữ không phải từ. Ranh giới từ có thể biến đổi từ người này sang người khác, và vẫn không ảnh hưởng cho quá trình truyền thông. Một lý do khác là sự tổ hợp của các đơn vị âm tiết khác nhau là cách duy nhất để xây dựng lên các đơn vị từ vựng cho việc mô tả các khái niệm mới trong tiếng Việt [13] .
Có một lớp từ đặc biệt trong tiếng Việt, đó là từ láy. Thông thường từ láy có 2 âm tiết, trong đó cho có 1 hoặc thậm chí không có âm tiết nào có nghĩa, âm tiết còn lại chỉ là một biến đổi âm của âm tiết kia. Kiểu từ này là rất thông dụng đặc biệt là tính từ, trong thực tế phần lớn các tính từ đều có các dạng láy.
Từ các đặc điểm trên, ta nhận ra một số khó khăn cho quá trình tách từ sau: - Phần lớn các tiếng có thể là một từ đơn, Hơn nữa chúng có thể liên kết với
các tiếng khác thành các từ ghép. Điều này dẫn đến một số lượng lớn các nhập nhằng về từ.
- Các từ có thể là tên riêng.Việc nhận dạng tên riêng cũng là một vấn đề. - Một số cấu trúc hình thái riêng biệt như từ láy cũng cần được xử lí cẩn thận
4.2 Một số phƣơng pháp tách từ
Bài toán tách từ cho ngôn ngữ đơn lập đã được đặt ra từ lâu, chủ yếu để 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ể được phân loại như sau:
4.2.1 Dựa theo luật
Bao gồm các cách sau:
Longest Math, Greedy Matching Models (Yuen Poowarawan, 1986; Sampan Raruom, 1991)
Mô hình khớp tối đa (Maximal Matching Model -MMM). Mô hình này được chia thành " khớp tối đa tiến" (Forward Maximal Matching) và "khớp tối đa lùi" (Backward Maximal Matching).
Đối với phương pháp này thì một từ điển hoàn chỉnh là không thể thiếu. Tuy nhiên, dễ thấy rằng khó có thể có một từ điển hoàn chỉnh (đặc biệt là các ngôn ngữ vẫn còn tiếp tục phát triển hàng ngày trong thời đại ngày nay). Mô hình này phụ thuộc nhiều vào từ điển, một từ điển không hoàn chỉnh sẽ làm giảm hiệu suất của thuật toán.
Thuật toán so khớp tối đa MMM
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 giải quyết bài toán tách từ bằng cách chọn các tách từ nào có nhiều từ nhất (so khớp được nhiều nhất). Thuật toán được áp dụng để xây dựng chương trình tách từ tiếng Trung Quốc MMSEG [8][11]. Thuật toán này có nhiều biến thể khác nhau
Dạng đơn giản, được dùng để giải quyết nhập nhằng từ đơn. Giả sử có một chuỗi kí tự (tương đương với chuỗi tiếng trong tiếng Việt) C1, C2,...,Cn. Ta bắt đầu từ chuỗi đầu tiên xem C1C2 có phải là từ hay không (so khớp với từ điển). Tiếp tục tìm cho đến khi tìm được từ dài nhất. Từ có vẻ hợp lí sẽ là từ dài nhất. Chọn từ đó, sau đó tìm kiếm như trên những từ còn lại cho đến khi xác định được toàn bộ chuỗi từ.
là đoạn 3 từ với chiều dài tối đa. Thuật toán bắt đầu như dạng đơn giản. Nếu phát hiện ra những các tách từ gây nhập nhằng (ví dụ, C1 là từ và C1C2 cùng là từ), ta xem các chữ kế tiếp để tìm tất cả các đoạn 3 từ có thể có bắt đầu với C1 hoặc C1C2. Ví dụ ta được những đoạn
- C1 C2 C3C4
- C1C2 C3C4 C5 - C1C2 C3C4 C5C6
Chuỗi dài nhất sẽ là chuỗi thứ ba. Vậy từ đầu tiên của chuỗi thứ ba sẽ được (C1C2) chọn. Thực hiện lại các bước cho đến khi được chuỗi từ hoàn chỉnh.
4.2.2 Dùng thống kê
Giải pháp này dựa theo ngữ cảnh của các từ xung quanh để đưa ra quyết định