LỜI NÓI ĐẦU 3
Chương I. TỔNG QUAN VỀ NGÔN NGỮ TIẾNG VIỆT VÀ CHÍNH TẢ 5
1.1 Ngôn ngữ tiếng Việt 5
1.2. Các đặc trưng ngôn ngữ của tiếng Việt 6
1.3. Đặc điểm của từ tiếng Việt 6
1.3.1.Định nghĩa từ 6
2.3.2.Phương thức cấu tạo từ 6
1.4. Chính tả tiếng Việt 7
1.4.1. Tổng quan về chữ viết tiếng Việt 7
1.4.3. Lỗi chính tả 8
1.4.4. Phân loại lỗi chính tả tiếng Việt 8
Chương II. BÀI TOÁN KIỂM TRA LỖI CHÍNH TẢ TIẾNG VIỆT TRONG MICROSOFT WORD VÀ KỸ THUẬT XÂY DỰNG PLUGIN 10
2.1. Mô tả bài toán 10
2.2. Đặc điểm 11
2.3. Hướng giải quyết 11
2.4. Một số phương pháp Wordmatching 12
2.5. Kỹ thuật xây dựng Plug-in 12
2.5.1. Viết plug-in bằng .Net 13
Chương III. CÀI ĐẶT CHƯƠNG TRÌNH KIỂM LỖI CHÍNH TẢ TIẾNG VIỆT VÀ KẾT QUẢ THỰC NGHIỆM 14
3.1. Mô hình kiểm lỗi chính tả tiếng Việt 14
3.2. Tách đoạn – Tách câu 15
3.3. Xử lý tên riêng 15
3.4. Thuật toán tách từ 17
3.4.1. Thuật toán đối sánh từ trái qua (Left MM) 17
3.5. Kết quả thực nghiệm 21
KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 27
TÀI LIỆU THAM KHẢO 29
29 trang |
Chia sẻ: lynhelie | Lượt xem: 3943 | Lượt tải: 1
Bạn đang xem trước 20 trang tài liệu Đồ án Xây dựng plug-In kiểm tra lỗi chính tả tiếng Việt trong mirosoft word, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
ặc trưng ngôn ngữ của tiếng Việt
Đặc điểm của từ tiếng Việt
Tổng quan về chữ viết tiếng Việt, chính tả tiếng Việt
Lỗi chính tả, phân loại lỗi chính tả tiếng Việt
1.1 Ngôn ngữ tiếng Việt
Tiếng Việt là ngôn ngữ đơn âm và thuộc về đại gia đình ngôn ngữ của vùng Đông Nam Á. Nó có những đặc điểm ngữ âm, ngữ pháp, ngữ nghĩa khác với ngôn ngữ Ấn-Âu, với những đặc điểm này làm cho tiếng Việt trở thành một ngôn ngữ khó.
Dạng viết của ngôn ngữ Việt Nam được phát triển dựa vào các ký tự Hán hoặc các ký tự Latinh, các dạng viết này chỉ là mở rộng của dạng nói, mỗi âm thanh được thể hiện bằng một chuỗi các ký tự, và được cách nhau bởi một khoảng trắng. Điều này không là nguyên nhân gây khó khăn cho những người giao tiếp bằng ngôn ngữ nói và vấn đề ranh giới của từ cũng chưa xuất hiện.
Nhưng với sự phát triển của máy tính và ngôn ngữ học, không cho phép những người nghiên cứu bỏ qua vấn đề ranh giới của từ. Không giống với con người, máy vi tính không thể dễ dàng nhận ra ranh giới của từ trong văn bản điện tử. Và nó tạo nên sự thắt nút trong việc Xử lý ngôn ngữ tự nhiên của tiếng Việt, bởi vì không biết ranh giới của các từ thì máy tính không thể làm được bất kỳ việc gì hơn.
1.2. Các đặc trưng ngôn ngữ của tiếng Việt
Đặc trưng về ngữ âm và âm vị
Đặc trưng về từ pháp và hình thái
Đặc trưng về ngữ pháp
1.3. Đặc điểm của từ tiếng Việt
1.3.1.Định nghĩa từ
Cho đến nay, trong ngôn ngữ học, các định nghĩa về từ đã được đưa ra không ít. Các định nghĩa ấy về mặt này hay mặt kia đều đúng, nhưng đều không đủ và không bao gồm được hết tất cả các sự kiện được coi là từ trong các ngôn ngữ và ngay trong cả trong một ngôn ngữ cũng vậy. Nếu không đòi hỏi thật nghiêm ngặt và chấp nhận một cách nhìn để làm việc thì quan niệm về từ có thể được phát biểu như sau:
“Từ là đơn vị nhỏ nhất có nghĩa, có kết cấu vỏ ngữ âm bền vững, hoàn chỉnh, có chức năng gọi tên, được vân dụng độc lập, tái hiện tự do trong lời nói để tạo câu”. [5]
Đối với các từ trong tiếng Việt, ta có thể rút ra những đặc điểm của từ tiếng Việt so với các ngôn ngữ thuộc loại hình khác. Tiếng Việt là một ngôn ngữ đơn lập với các đặc điểm chính sau:
Trong hoạt động ngôn ngữ, từ không biến đổi hình thái, ý nghĩa ngữ pháp nằm ở ngoài từ.
Phương pháp ngữ pháp chủ yếu là trật tự từ và từ hư.
Tồn tại một đơn vị đặc biệt là hình tiết mà vỏ ngữ âm của nó trùng khít với âm tiết. Đơn vị đó còn gọi là “tiếng”.
Không có hiện tượng cấu tạo từ bằng cách ghép thêm phụ tố vào gốc từ.
2.3.2.Phương thức cấu tạo từ
Đơn vị cơ sở của cấu tạo từ Việt là tiếng. Tiếng có thể có nghĩa đủ rõ, tiếng có thể mang nghĩa phai mờ và tiếng có thể tự mình không có nghĩa. Từ tiếng Việt được cấu tạo bằng cách dùng một tiếng, hoặc là tổ hợp các tiếng lại theo một cách nào đó.
Từ đơn: Phương thức dùng một tiếng làm một từ cho ta từ đơn.
Ví dụ: cây, nhà, đi, chạy,
Từ ghép: Phưong thức tổ hợp (ghép) các tiếng lại cho ta từ ghép. Dựa vào tính chất của mối quan hệ về ngữ nghĩa các thành tố cấu tạo, có thể phân loại từ ghép tiếng Việt như sau:
Từ ghép đẳng lập: là những từ ghép mà thành tố cấu tạo có quan hệ bình đẳng với nhau về nghĩa. Ví dụ: ăn ở, cá mú, xe cộ,
Từ ghép chính phụ: là những từ ghép có thành tố cấu tạo này phụ thuộc vào thành tố cấu tạo kia. Ví dụ: tầu hỏa, lão hóa, đỏ rực,
Từ láy: Phương thức tổ hợp các tiếng trên cơ sơ hòa phối ngữ âm cho ta từ láy. Mỗi từ láy gồm hai phần:
Phần gốc: làm cở sở cho sự láy.
Phần láy: là phần lặp lại của phần gốc.
Ví dụ: đo đỏ, khe khẽ, xào xạc
Số lượng từ láy trong tiếng Việt rất lớn, khoảng 4.000 từ.
1.4. Chính tả tiếng Việt
1.4.1. Tổng quan về chữ viết tiếng Việt
Chữ viết là một trong những phương tiện giao tiếp hiệu quả. Nhờ đặc điểm này, chữ viết được sử dụng rộng rãi trong nhiều lĩnh vực khác nhau của cuộc sống.
Có nhiều hệ thống chữ viết khác nhau được sử dụng trên thế giới, nhưng nhìn chung có thể phân thành hai loại chữ viết sau:
Chữ viết ghi ý: Đây là loại chữ viết biểu hiện từ bằng một ký hiệu duy nhất, không liên quan gì đến những âm thanh cấu tạo nên từ. Ký hiệu này liên quan với cả từ và do đó cũng gián tiếp có quan hệ với ý niệm mà từ đó biểu hiện. Loại này bao gồm chữ Trung Quốc, chữ Ai Cập
Chữ viết ghi âm: Đây là loại chữ viết nhằm tái hiện chuỗi âm thanh nối tiếp nhau trong từ.
Hệ thống chữ viết được sử dụng hiện nay của nước ta là chữ quốc ngữ.
1.4.2. Chính tả tiếng Việt
Chính tả là sự chuẩn hóa hình thức chữ viết của ngôn ngữ. Đó là một hệ thống các quy tắc về cách viết các âm vị, âm tiết, từ, cách dùng các dấu câu, lối viết hoa,
Chuẩn chính tả có những đặc điểm chính sau [5]:
Tính chất bắt buộc. Chữ viết có thể chưa hợp lý nhưng khi đã được thừa nhận là chuẩn chính tả thì người viết không được tự ý viết khác đi. Đối với chính tả, tiêu chuẩn cao nhất là cách viết thống nhất, thống nhất trong mọi văn bản, mọi người và mọi địa phương.
Tính chất ổn định. Do có tính chất bắt buộc nên chuẩn chính tả ít bị thay đổi như các chuẩn mực khác của ngôn ngữ. Sự tồn tại hàng trăm năm của chuẩn chính tả gây nên một cách viết bảo thủ lạc hậu với sự phát triển của ngữ âm. Đây là nguyên nhân chính làm cho chính tả trở lên rắc rối.
Ngữ âm phát triển, chính tả không thể giữ mãi tính chất cố hữu của mình mà cũng dần có một sự biến động nhất định. Do đó bên cạnh các chuẩn mực chính tả hiện có, xuất hiện một cách viết mới tồn tại song song với nó. Ví dụ: cách viết fẩm zá, fi fàm bên cạch phẩm giá, phi phàm .
Những cách viết không thống nhất trên làm cho công việc Xử lý ngôn ngữ tiếng Việt gặp rất nhiều khó khăn. Vì vậy đòi hỏi cách viết chính tả phải được chuẩn hóa càng nhanh càng tốt.
1.4.3. Lỗi chính tả
Theo [1] thì:
Chữ viết là hệ thống ký hiệu bằng đường nét đặt ra để ghi lại tiếng nói và có những quy tắc, quy định riêng. Muốn viết đúng chính tả tiếng Việt, ta phải tuân theo những quy định, quy tắc đã được xác lập.
Chính tả là cách viết chữ được xem là chuẩn, tức là viết đúng âm đầu, đúng vần, đúng dấu (thanh), đúng quy định về viết hoa, viết tắt, viết thuật ngữ.
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 sai (lỗi hỏi-ngã, lỗi sai âm đầu, sai âm chính, sai âm cuối). Ngoài ra còn các loại lỗi khác như viết hoa không đúng quy cách, viết tên riêng, thuật ngữ, tên tiếng nước ngoài không đúng quy cách.
1.4.4. Phân loại lỗi chính tả tiếng Việt
Có nhiều cách phân loại khác nhau. Tuy nhiên, xét theo quan điểm của chương trình kiểm tra lỗi chính tả thì lỗi chính tả có thể phân làm hai loại lỗi:
Lỗi tạo từ sai, hoàn toàn không có trong từ điển. Đây là loại lỗi dễ phát hiện. (Ví dụ, “hong3”, “nhưh”...)
Lỗi chính tả mà từ / tiếng đó có trong từ điển. Nếu không dựa vào ngữ cảnh chung quanh thì không thể xác định đó có phải là lỗi chính tả hay không. (Ví dụ, “anh ta là một người bàng quang” – từ “bàng quang” không đúng, nhưng vẫn có trong từ điển). Đây là loại lỗi rất khó nhận ra và xử lý.
Ngoài ra còn có thể phân loại lỗi theo nguồn gốc phát sinh lỗi. Theo cách phân loại này, có hai loại lỗi đó là lỗi phát âm sai và lỗi nhập sai.
Lỗi phát âm sai: Lỗi này do sự nhầm lẫn giữa cách đọc và cách viết giữa những từ đồng âm hoặc gần với nhau
Lỗi nhập sai: Lỗi gây ra do gõ sai phím, gõ sót phím hoặc dư phím
Chương II
BÀI TOÁN KIỂM TRA LỖI CHÍNH TẢ TIẾNG VIỆT TRONG MICROSOFT WORD VÀ KỸ THUẬT XÂY DỰNG PLUGIN
Trong chương này bài toán kiểm tra lỗi chính tả tiếng Việt sẽ được trình bày cụ thể :
Mô tả bài toán
Một số phương pháp Word Matching
Kỹ thuật xây dựng Plug-in
2.1. Mô tả bài toán
Bài toán có thể được phát biểu như sau:
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 và đề nghị cách giải quyết nếu có.
Trong quá trình soạn thảo văn bản tiếng Việt nếu người dùng gõ sai chính tả thì đề nghị cách giải quyết nếu có
Do ngôn ngữ là một lĩnh vực khá rộng. Nên việc kiểm tra lỗi chính tả tiếng Việt tổng quát là cực kỳ khó khăn. Do vậy đề tài này chỉ giới hạn kiểm tra lỗi chính tả ở trong các văn bản hành chính, và ở mức từ vựng.
Chỉ sử dụng từ điển từ, từ điển tiếng và ngữ liệu thô làm đầu vào.
Khái niệm thô ở đây là “từ từ điển“- tức từ đơn, từ ghép, cụm từ được lưu trong từ điển.
Lỗi chính tả ở đây chủ yếu hai loại lỗi sau:
Lỗi nhập dữ liệu sai: Lỗi gõ thiếu chữ, gõ dư chữ, gõ nhầm vị trí hai chữ liên tiếp nhau, gõ nhầm một chữ bằng một chữ khác, sai sót bộ gõ tiếng Việt.
Lỗi phát âm sai: chủ yếu là do đặc điểm phát âm của từng vùng, dẫn đến sai chính tả khi viết.
Giải định rằng, nếu từ bị sai chính tả, thì chỉ bị một trong những lý do nêu trên một lần (một từ chỉ sai một lỗi chính tả, lỗi đó thuộc một trong các loại lỗi đã nêu). Nghĩa là không xét những trường hợp sai chính tả, vừa gõ nhầm chữ này bằng chữ khác, vừa gõ dư chữ.Giả định người dùng chỉ sử dụng một cách gõ tiếng Việt là TELEX.
2.2. Đặc điểm
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ó bởi vì ngôn ngữ là một phần rất quan trọng của đời sống xã hội. Ngôn ngữ dùng để diễn đạt suy nghĩ, truyền tải thông tin, nên nó chứa đựng một khối lượng tri thức đồ sộ. Để xử lý ngôn ngữ tự nhiên một cách đúng đắn đòi hỏi một 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ả bằng máy tính là hết sức khó khăn.
Bắt lỗi chính tả đôi khi được mở rộng để phát hiện những lỗi khác trong văn bản như lỗi cú pháp, lỗi từ vựngThông thường những lỗi từ vựng thường bị nhầm lẫn với lỗi 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ừ vựng. Đây là một vấn đề khó vì để bắt lỗi từ vựng, đôi khi cần phải hiểu nội dung của cả văn bản.
Đối với tiếng Việt, cũng như một số ngôn ngữ châu Á khác, một từ chính tả có thể không tương ứng với một “từ” trên văn bản. Đối với các thứ tiếng châu Âu, ta có thể dễ dàng nhận ra một từ, do các từ được phân cách nhau bởi khoảng trắng. Điều đó không đúng với tiếng Việt. Trong tiếng Việt, các tiếng được phân cách nhau bởi khoảng trắng, không phải các từ. Đề tài này chỉ sử dụng các cách hình thành lỗi chính tả, từ điển từ tiếng Việt và ngữ liệu vă bản dạng thô.
2.3. Hướng giải quyết
Bài toán kiểm tra lỗi chính tả đã được tìm hiểu từ lâu. Tuy nhiên đa số đều tập trung vào các ngôn ngữ phổ dụng ở châu Âu. Trong khi đó các ngôn ngữ châu Á, đặc biệt là tiếng Việt , có những đặc trưng riêng, đặt ra nhiều thách thức mới. Bài toán kiểm tra lỗi chính tả trên các ngôn ngữ châu Á như tiếng Trung Quốc, tiếng Hàn Quốc, tiếng Nhật và tiếng Việt chỉ bắt đầu được nghiên cứu gần đây.
Đố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ừ điển. Nếu một từ trên văn bản không có trong từ điển nghĩa là từ đó sai chính tả.
Đối với các ngôn ngữ như tiếng Trung Quốc, tiếng Nhật, nhiều giải pháp được đề ra để giải quyết bài toán. Tuy nhiên hầu hết các 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 từ gần đúng, sau đó sử dụng mô hình ngôn ngữ để định lượng, xác định xem từ nào là đúng nhất.
Đề tài này em áp dụng cách giải quyết truyền thống, so sánh dựa trên từ điển. Nếy từ không có trong từ điển nghĩa là sai chính tả, từ đó đưa ra những gợi ý thích hợp.
2.4. Một số phương pháp Wordmatching
- Mô hình TBL
- Mô hình danh sách quyết định
- Mô hình Trigram và Bayes
- Mô hình Bayes và Danh sách quyết định
- Mô hình N-Gram
- Giải thuật phân tích cú pháp CYK
- Thuật toán so khớp tối đa (Maximum Matching)
2.5. Kỹ thuật xây dựng Plug-in
Plug-ins được hiểu chính xác là một phần mềm do hãng thứ 3 tạo ra (theo tiêu chuẩn công nghệ thông tin, thứ tự được xếp như sau: Hãng thứ nhất là nơi viết ra phần mềm, thứ hai là người dùng, và thứ ba là các hãng viết ra các phần hỗ trợ, tích hợp câu lệnh dùng cho phần mềm của hãng thứ nhất).
Plug-ins được tạo ra nhằm giúp cho người sử dụng có thể tạo được một số hiệu ứng, một số tinh chỉnh đặc biệt (cho ảnh, đối với PTS), mà bản thân phần mềm thứ nhất không làm được, hoặc làm được thì rất mất thời gian. Mỗi hãng lại cho ra đời một loại plug-ins chuyên của hãng đó, ví dụ: photofx thì thường chuyên về các đường biên, hiệu ứng các đường viền của ảnh..., Photo Extension lại chuyên về hiệu ứng nổi, Andromedia lại chuyên về hiệu ứng ánh sáng, KPT tham vọng hơn lại chen chân cả sang lĩnh vực ảnh động. Đa số các plug-ins bây giờ đều cho phép các bạn chỉnh với hiệu quả thời gian thực.
2.5.1. Viết plug-in bằng .Net
Khởi động MS Visual Studio 2k5 lên,chọn project theo mẫu Shared AddIn như sau:
+ Nhấn 0k.
+ Nhấn next. Chúng ta sẽ qua 5 bước sau:
- Bước 1: Chọn ngôn ngữ lập trình.
- Bước 2: Chọn ứng dụng mà chúng ta muốn gắn add in vào.
- Bước 3: Điền tên và mô tả cho ứng dụng.
- Bước 4: Hiệu chỉnh các tùy chọn.
- Bước 5: Tổng kết, Finish để tạo project.
Chọn project theo mẫu Shared AddIn
Project sẽ tự tạo ra cho chúng ta 1 lớp Connect, trong lớp Connect này, có 4 phương thức là : OnConnection,OnDisconnection,OnStartupComplete,
OnBeginShutdown
- OnStartupComplete: hàm này chủ yếu để tạo các toolbar, button, menu, khi ta bắt đầu khởi động ứng dụng.
- OnBeginShutdown: hàm này được gọi khi ứng dụng bị tắt đi.
- Hàm xử lý sự kiện khi button được nhấn
private void MyButton_Click(CommandBarButton cmdBarbutton, ref bool cancel)
{
MOW.Range cont = applicationObject.Selection.Range;
string Thom;
Thom = cont.Paragraphs.Last.Range.Text;
CheckSpelling Cspl = new CheckSpelling();
Cspl.St1 = Thom;
Cspl.Show();
}
Chương III
CÀI ĐẶT CHƯƠNG TRÌNH KIỂM LỖI CHÍNH TẢ TIẾNG VIỆT VÀ KẾT QUẢ THỰC NGHIỆM
Chương này sẽ trình bày: Mô hình kiểm lỗi chính tả tiếng Việt
Vấn đề tách đoạn, tách câu
Vấn đề xử lý tên riêng
Thuật toán kiểm lỗi chính tả Maximum Matching
Giao diện chính và giao diện của phần kiểm tra lỗi chính tả
3.1. Mô hình kiểm lỗi chính tả tiếng Việt
Văn bản
thô
Người dùng
Từ điển
từ định danh
Từ điển
thuật ngữ
Phát sinh gợi ý
Tách đoạn và câu
Xử lý tên riêng
Tách từ
Kiểm lỗi từ
Kết xuất
F
T
3.2. Tách đoạn – Tách câu
Tách đoạn- câu là công việc phân tách một văn bản thành những đoạn và câu. Bài toán này không phân biệt ngôn ngữ vì hầu hết các ngôn ngữ thường phân tách câu dựa trên các dấu hiệu là các dấu ngắt câu như dấu chấm, chấm hỏi, chấm than Tuy vậy, nếu văn bản đưa vào không chuẩn thì kết quả cũng không thể đạt 100%. Ví dụ: lỗi sau các dấu chấm câu không viết hoa sẽ dẫn đến việc hiểu nhầm thành dấu ba chấm. Ngoài ra, một số phần trăm sai sót khác còn do hiện tượng những dấu chấm câu được dùng như là ký hiệu thực hiện chức năng khác gây ra.
Ví dụ : dấu chấm được dùng để phân tách phần nguyên và phần thập phân của một con số hoặc trong địa chỉ email, website
Như là : thompt@gmail.com...
Mục đích của tách câu là tách thành từng đơn vị “câu” để thuận tiện cho việc xử lý tách từ. Việc xác định đơn vị câu rất quan trọng trong các ứng dụng xử lý ngôn ngữ tự nhiên. Tuy nhiên ở đây chỉ cần xác định câu cho tách từ, do vậy “câu” được hiểu là những chuỗi từ nằm giữa các token tách câu.
Các token tách câu bao gồm:
Các dấu kết thúc câu: . ? !
Các dấu mở ngoặc, đóng ngoặc: {} [] () ‘’
Các dấu phân tách câu khác: ; : ,
3.3. Xử lý tên riêng
Xử lý tên riêng cũng là một vấn đề khó khăn trong việc tách từ. Vấn đề chữ hoa/chữ thường gây nhiều khó khăn cho việc tách từ. Các quy tắc về chữ hoa cũng khá phức tạp. Đôi khi các chữ được viết hoa hoàn toàn để nhấn mạnh, để làm tiêu đề. Điểm khá thuận lợi so với một số ngôn ngữ châu Á khác là các danh từ riêng trong tiếng Việt thường được viết hoa đầu từ. Tuy nhiên cần phải xử lý một số nhập nhằng trong việc phân biệt danh từ riêng với danh từ chung như sau:
Các văn phạm tiếng Việt chưa hoàn toàn thống nhất về quy tắc viết hoa. Thậm chí là viết hoa tùy tiện.
Các từ đầu câu cũng được viết hoa
1.Tên người, tên địa lý
Đặc điểm lớp từ này là tất cả các tiếng trong từ đều được viết hoa. Mọi tiếng phát âm trong tiếng Việt đều có thể dùng để đặt tên riêng, do đó tập các tên như vậy có thể rất lớn và có những tên không mang nghĩa theo từ từ điển, ví dụ:
Tên riêng: Khúc Thừa Dụ, Đội Cấn, Lạc Long Quân
Tên địa lý: Hòn Ráy, Côn Đảo, Vũng Tàu,.
Tên năm âm lịch: Kỷ Mão , Mậu Dần,
Lớp từ này khi ở trong câu thì nhận ra không khó, chỉ đơn giản là chuỗi các âm tiết có viết hoa đứng liền nhau. Điểm quan trọng là phải xử lý nhập nhằng khi nó xuất hiện ở đầu câu. Ví dụ:
Ông Trương Tam đứng ra biện hộ cho công ty Công lý.
Vịnh Hạ Long là một thắng cảnh đẹp.
Rõ ràng Trương Tam và Hạ Long là tách từ đúng, còn Ông Trương Tam và Vịnh Hạ Long là có sự nhập nhằng với chữ viết hoa đầu câu. Vấn đề này có thể được giải quyết bằng cách xây dựng một tập các từ (có một âm tiết) làm ngữ định danh với các danh từ riêng, bao gồm:
Danh từ chung chỉ người: ông, bà, bố, mẹ, anh, chị,
Danh từ chung chỉ địa điểm: đảo, vùng, miền, tỉnh, huyện,
Các từ chỉ quan hệ không gian: ở, tại, từ, hiện,về,
Riêng với tên địa lý có một số âm tiết khi kết hợp danh từ chung chỉ địa điểm thường được viết hoa từ đầu cho cả hai âm tiết: Vũng Tàu, Cửa Lò, Sông Cấm,
2. Tên tổ chức
Các tiếng trong tên chỉ được viết hoa tiếng đầu từ, những tiếng mang tính chất khu biệt tên tổ chức và tên riêng nếu có.
Cấu trúc của lớp này bao gồm:
: bắt buộc phải có, ví dụ: Bộ, Vụ, Trường, Công ty, Nhà máy,
Thành tố này có thể được nhận ra bằng cách xây dựng một tập các danh từ chung chỉ tên tổ chức. Quy tắc nhận dạng như sau:
Tiếng có viết hoa chữ đầu? Đúng
Có một từ trong từ điển bát đầu là chữ đó ? Đúng
Là từ chỉ tên tổ chức
:bắt buộc phải có, ví dụ: (Bộ) Chính trị, (Bộ) Giáo dục và đào tạo, (Trường) Đại học Công nghệ,
Thành tố này được nhận ra sau từ chỉ tên tổ chức và bát đầu với chữ viết hoa và là một từ có nghĩ tìm được.
[Danh từ chỉ tên riêng]: có thể khuyết, không bắt buộc phải có,
Ví dụ : (Trường Đại học Dân lập) Hải Phòng, (Đại học) Phương Đông, (Quỹ Nhi đồng) Liên Hiệp Quốc,
Quy tắc nhận ra thành tố này như trong xử lý tên riêng chỉ người và địa lý.
3. Các tên riêng khác
Tên gọi trong huân chương, huy chương, danh hiệu vinh dự,.. viết như sau: huân chương Độc Lập, Sao vàng, Hồ Chí Minh; huân chương Chiến công, Chiến sĩ vẻ vang, giải thưởng Nhà nước, Anh hùng lao động,
Những tên này thường là các danh từ chung và được nhận dạng ra trong quá trình tách từ.
3.4. Thuật toán tách từ
Như em đã trình bày trong phần Bài toán kiểm lỗi chính tả tiếng Việt, có nhiều phương pháp tách thuật ngữ đã được nghiên cứu và sử dụng. Trong đồ án này em lựa chọn phương pháp so khớp tối đa (Maximum Matching) để tiến hành cài đặt. Đây là một phương pháp dễ cài đặt, tốc độ phân tách nhanh và độ chính xác có thể chấp nhận được.
Phương pháp khớp tối đa (Maximum Matching) còn được gọi là Left Right Maximum Matching (LRMM). Phương pháp này dựa trên một từ điển tiếng Việt, nói chính xác hơn là một danh sách các từ, cụm từ (term) tiếng Việt. 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ách tách từ nào có nhiều từ nhất.
.
3.4.1. Thuật toán đối sánh từ trái qua (Left MM)
Tư tưởng:
Để kiểm lỗi chính tả tiếng Việt. Trước hết ta cần thực hiện tách từ cho một câu tiếng Việt, giả xử câu s.
Ta xét xem câu đó có trong từ điển không ?
Nếu có: ta thu được kết quả s là một từ.
Ngược lại, ta loại bỏ âm tiết cuối của câu s và lại xét xem từ đó có trong từ điển không ?
Sau khi tách được một từ, ta tiếp tục tiến hành so sách và tách các từ còn lại trong câu.
Ví dụ: xét câu sau
Hom6 nay trời đẹp.
Đầu tiên ta kiểm tra xem trong từ điển có hom6 nay trời đẹp không? Kết quả là không có. Ta tách bớt âm tiết cuối ra, và kiểm tra hom6 nay trời có trong từ điển không? Kết quả cũng không có. Ta lại bỏ bớt một tiếng nữa ra, kiểm tra từ điển có term hom6 nay không? Kết quả là không có.Ta lại bỏ bớt một tiếng nữa ra, kiểm tra từ điển có term hom6 không. Kết quả là không tìm thấy
Ta kiểm tra tiếp phần còn lại của câu, còn lại trời đẹp, kiểm tra xem có từ này không. Kết quả là không có, ta lại bỏ tiếng đẹp đi và xét xem có từ trời không? Kết quả là có, và ta thu được từ tiếp theo là: trời
Xét đẹp xem có hay không? Kết quả là có, và ta thu được từ đẹp.
Kết quả tách từ và kiểm tra lỗi chính tả là : HOM6 nay trời đẹp.
Với phương pháp tách này, khi ta tiến hành tách các câu tương đối dài thì sẽ nảy sinh ra một vấn đề, đó là ta phải so khớp với từ điển rất nhiều lần để có thể tìm ra được một từ.
Cụ thể xét câu sau:
Người đứng đầu Hội đồng An ninh Nga Igor Ivanov hôm qua cảnh báo rằng bất kỳ hành động quân sự nào nhằm vào Iran cũng có thể khiến tình hình tại nước này và trong khu vực "nổ tung”.
Giả xử trong từ điển của chúng ta từ dài nhất có 6 âm tiết.
Tiến hành tách:
So sánh: Người đứng đầu Hội đồng An ninh Nga Igor Ivanov hôm qua cảnh báo rằng bất kỳ hành động quân sự nào nhằm vào Iran cũng có thể khiến tình hình tại nước này và trong khu vực "nổ tung"
Rồi lại so sánh Người đứng đầu Hội đồng An ninh Nga Igor Ivanov hôm qua cảnh báo rằng bất kỳ hành động quân sự nào nhằm vào Iran cũng có thể khiến tình hình tại nước này và trong khu vực "nổ tung”
Như vậy, sẽ mất rất nhiều thời gian, bởi vì từ dài nhất cũng chỉ 6 tiếng thôi thì chắc chắn các bước so trước khi so đến cái này Người đứng đầu Hội đồng An là thừa
Ta sẽ cải tiến thuật toán:
Ta chia câu cần tách thành các đoạn, mỗi đoạn có số âm tiết bằng số âm tiết của từ có nhiều âm tiết nhất trong từ điển (trong trường hợp này là 6 âm tiết ). Ví dụ: Người đứng đầu Hội đồng An | ninh Nga Igor Ivanov hôm |qua cảnh báo rằng bất kỳ ....
Áp dụng thuật toán tách từ để tách từ cho từng nhóm.
Sau mỗi lần tách được 1 từ ta phải phân nhóm lại. Vì nếu không sẽ xảy ra trường hợp từ: an ninh bị chia cắt thành 2 từ riêng biệt an và ninh -> tách từ sẽ bị sai.
Bây giờ ta sẽ tách từ cho câu trên
Đầu tiên lấy 6 từ đầu: Người đứng đầu Hội đồng An, so sánh xem có trùng với từ nào trong từ điển không? không. So tiếp: Người đứng đầu Hội đồng có không? cũng không trùng. Lại so: Người đứng đầu Hội ... Ta có được người là một từ.
Nối từ tiếp theo vào sao cho đủ 6 tiếng và tiếp tục tách từ cho đoạn: đứng đầu Hội đồng An ninh
Như vậy để tìm được một từ ta chỉ cần tiến hành so khớp với từ điển tối đa 5 lần.
output = output +
word.ToUpper() + “ ”
startIndex ++
startIndex= startIndex +
numWordInStr(word)
output =output + word + “ ”
Begin
output.Lengh <
input.Length
input , dic
output = ””
listWord = input.Split (‘ ’)
numWord = dic.maxLength
startIndex = 0
word= subString ( listWord,
startIndex, numWord )
numWordInSt(word )
=1&&(dic.FindWord
(word)==false)
Dic.findWod
( word )==true
word= cutLast(word)
Return(output)
end
T
F
F
T
T
F
numWordInSt(word )
=1&&(dic.FindWord
(word)==true)
output = output +
word + " "
startIndex ++
F
T
Sơ đồ
3.5. Kết quả thực nghiệm
Qua nghiên cứu cơ sở lý thuyết ở các chương trước. Trong phần thực nghiệm này em đã cài đặt Plug in vào chương trình MicroSoft Word 2003 để kiểm tra lỗi chính tả tiếng Việt dựa vào một số thuật toán phân tích từ và đặc biệt cài đặt thuật toán LMM kết hợp với bộ từ điển tiếng Việt trên 70 ngàn từ. Với nền tảng .NET, các ngôn ngữ lập trình C#, VB, là công cụ đáp ứng được yêu cầu của bài toán.
Chương trình được em xây dựng bằng ngôn ngữ C#. Đây là ngôn ngữ hỗ trợ rất tốt unicode, điều này rất cần thiết cho các bài toán trên ngôn ngữ tiếng Việt, cụ thể là bài toán kiểm lỗi chính tả tiếng Việt.
Trong đồ án này, do hạn chế về thời gian chương trình chỉ mới thực hiện được các công việc chính là tách đoạn-câu và kiểm lỗi chính tả tiếng Việt ở mức từ vựng, còn việc tiền xử lý và nhận dạng danh từ riêng thì có thể được bổ sung vào giai đoạn sau.
Chương trình gồm 4 module chính:
- Tạo Plug-in gắn vào MicroSoft Word
Phân tách đoạn-câu
Tách từ:
Kiểm lỗi chính tả tiếng Việt
Cài đặt từ điển
Cài đặt thuật toán tách từ LMM
Sơ đồ quá trình tách từ cho một văn bản tiếng Việt:
Begin
i < para.Length()
Input: strIn, dic
strOut = ””
para[] = SegPara(input)
i, k = 0
String sen[] = SegSentence (para[i])
Char sep[] =GetSeparateChar(para[i])
k=0
k < sen.Length()
strOut = combinePara(para)
sen[k]= SegWordSen(sen[k])
k++
para[i]=CombineSen(sen,sep)
i ++
T
F
F
T
Output: strOut
End
Mô tả:
strIn : văn bản đầu vào (String).
strOut : văn bản đầu ra (String).
para : mảng chứa các đoạn văn bản (String[]).
sen : mảng chứa các câu trong một đoạn văn bản (String[]).
Văn bản đưa vào (strIn) được tách thành từng đoạn văn bản (SegPara()), các đoạn văn bản lần luợt được tách thành các câu (Sentense()). Từng câu được tiến hành tách từ (theo 2 phương pháp LMM).
Sau khi các câu sau khi được đã được tách từ được ghép thành từng đoạn (combineSen()). Các đoạn ghép thành một văn bản (combinePara()). Kết quả thu được một văn bản đã được tách từ (strOut).
Cài đặt từ điển :
Từ điển bao gồm 70275 từ tiếng Việt được lưu trong file dic.txt.
Trong chương trình từ điển được xây dựng trên cở sở một lớp có tên Dictionary có các thuộc tính sau:
Class Dictionary
{
private int numWord; // tổng số từ trong từ điển
private string[] listWords ; // danh sách các từ có trong từ điển
public int maxLength; // độ dài của từ có nhiều âm tiết nhất
public Dictionary(); // khởi tạo-load giá trị cho từ điển
public bool FindWord(String word); // xét word co trong từ điể
Các file đính kèm theo tài liệu này:
- Báo cáo tóm tắt.doc
- baocaothom.ppt