Cơ sở thực tiễn và khoa học của đề tài
Bài toán tách từ tiếng Việt là một vấn đề quan trọng trong xử lý ngôn ngữ tự nhiên, thu hút sự quan tâm của nhiều nhà nghiên cứu trên toàn thế giới Ứng dụng của tách từ trong lĩnh vực này bao gồm kiểm tra và sửa lỗi văn bản, góp phần nâng cao chất lượng xử lý ngôn ngữ.
Bài toán tách từ trong tiếng Việt là một thách thức quan trọng trong xử lý ngôn ngữ tự nhiên, do từ tiếng Việt được cấu tạo từ một hoặc nhiều âm tiết Ranh giới và nghĩa của từ phụ thuộc vào ngữ cảnh và các từ xung quanh, khiến việc xác định ranh giới từ trở nên phức tạp.
Lịch sử nghiên cứu đề tài
Bài toán tách từ trong các ngôn ngữ như tiếng Anh, tiếng Nhật và tiếng Hoa đã được nhiều nhà nghiên cứu quốc tế khai thác sâu sắc trong những năm qua Tuy nhiên, nghiên cứu về tách từ trong tiếng Việt vẫn còn hạn chế và chưa được chú trọng nhiều.
Ngôn ngữ tiếng Việt có đặc thù phức tạp và đa dạng, dẫn đến việc nhiều nghiên cứu chưa được áp dụng thực tiễn hiệu quả và độ chính xác vẫn còn hạn chế.
Trong bài viết này, tôi sẽ kế thừa các thành tựu nghiên cứu trước đó để phát triển một chương trình ứng dụng cho bài toán tách từ, sử dụng phương pháp so khớp cực đại.
Mục tiêu và đóng góp đề tài
Khi thực hiện đề tài này em đã đề ra một số mục tiêu nhƣ sau
- Tìm hiểu tổng quan về bài toán tách từ tiếng Việt
- Tìm hiểu các phương pháp tách từ tiếng Việt hiện nay
- Xây dựng chương trình ứng dụng bài toán tách từ bằng phương pháp so khớp cực đại.
Cấu trúc đề tài
Đề tài bao gồm các nội dung sau:
TỔNG QUAN VỀ BÀI TOÁN TÁCH TỪ TIẾNG VIỆT
Bài toán tách từ tiếng Việt
1.1.1 Khái quát về tiếng Việt
Tiếng Việt là một ngôn ngữ đơn lập, trong đó mỗi âm tiết được phát âm tách biệt và tương ứng với một chữ viết Đặc điểm này rõ ràng thể hiện ở các khía cạnh ngữ âm, từ vựng và ngữ pháp.
Âm tiết là đơn vị phát âm tự nhiên nhỏ nhất trong ngôn ngữ, đặc biệt trong tiếng Việt Mỗi âm tiết luôn được phát ra với một thanh điệu và khi viết, chúng được tách biệt bởi khoảng cách Trên chữ viết, mỗi âm tiết được ghi thành một “chữ” và đọc thành một “tiếng”.
Có nhiều cách mô tả cấu trúc âm tiết tiếng Việt khác nhau: 3 thành phần, 4 hay
Bảng 1.1 Cấu trúc 3 thành phần
Bảng 1.2 Cấu trúc 4 thành phần
[ Âm Đệm ] [ Âm Chính ] [ Âm Cuối ]
- Các thành phần trong dấu “” là bắt buộc
- Các thành phần trong dấu “[]” là không bắt buộc
- Thanh ngang không đƣợc viết cũng đƣợc tính là một dấu thanh
Bảng 1.3 Các thành phần của âm tiết
Phụ âm đầu b c d đ g h k l m n q r s t v x ch gh gi kh ng nh ph qu th tr ngh
Nguyên âm trong tiếng Việt bao gồm các âm như a, ă, â, e, ê, i, o, ô, ơ, u, ƣ, y, iê, ƣơ, oe, ai, au, ua, ƣa, ƣu, âu, uâ, ia, ui, ƣi, iu, êu, oi, ôi, ơi, ay, ây, uy, uô, uâ, oa, oă, ao, eo, uêu, ya, ƣơi, uyê, iêu, oai, oay, uây, uôi, và ƣơu.
Phụ âm cuối c p t m n ch ng nh
Thanh điệu Ngang, huyền, hỏi, sắc, nặng, ngã
1.1.1.2.2 Đặc điểm từ a Định nghĩa
Từ là đơn vị cơ bản của ngôn ngữ, có khả năng hoạt động độc lập và mang ý nghĩa hoàn chỉnh về cả nội dung lẫn cấu trúc.
Từ là một ngôn ngữ có nghĩa hoàn chỉnh.Từ tiếng Việt bao gồm một hay nhiều âm tiết sắp xếp theo một thứ tự nhất định
Từ trong tiếng Việt có khả năng hoạt động độc lập và tự do về mặt cú pháp, khác với nhiều ngôn ngữ khác không có sự biến đổi như số nhiều, ngôi thứ hay bị động Các loại từ trong tiếng Việt thể hiện sự đa dạng và phong phú trong cấu trúc ngôn ngữ.
Từ đơn là loại từ do một tiếng có nghĩa tạo thành
Ví dụ: Ngày, tháng, năm, ăn, mặc, đẹp, xấu,
Từ ghép là loại từ gồm hai, ba hoặc bốn tiếng ghép lại tạo thành một ý nghĩa chung
Ví dụ: Nhà cửa, học sinh, vi sinh vật, học sinh giỏi,…
+ Từ ghép có nghĩa phân loại:
Là từ ghép mà quan hệ giữa các từ đơn tạo thành có quan hệ chính phụ(phụ nghĩa)nghĩa cụ thể hơn
Ví dụ: Xe máy, bút chì, trắng ngà,…
+ Từ ghép có nghĩa tổng hợp:
Là từ ghép mà quan hệ giữa các từ đơn tạo thành có quan hệ song song (hợp nghĩa) nghĩa khái quát hơn nghĩa từng tiếng
Ví dụ: Ăn uống, quần áo, nhà cửa,…
Từ láy là từ gồm hai hay nhiều tiếng trong đó có một bộ phận của tiếng hoặc toàn bộ tiếng đƣợc lặp lại
Ví dụ: Long lanh, xinh xinh, lung linh, lanh lảnh,…
Tiếng Việt có 4 kiểu từ láy:
Bộ phận âm đầu của tiếng trước được láy lại (lặp lại) ở bộ phận âm đầu của tiếng sau
Ví dụ: Đậm đà, long lanh, vội vàng
Bộ phận vần của tiếng trước được láy lại (lặp lại) ở bộ phận vần của tiếng sau
Ví dụ: Bát ngát, loáng thoáng,…
+ Láy cả âm cả vần:
Bộ phận âm đầu và vần của tiếng trước được láy lại (lặp lại) ở bộ phận âm đầu và vần của tiếng sau
Ví dụ: Chầm chậm, trăng trắng, đo đỏ, lành lạnh,…
Tiếng trước được láy lại (lặp lại) ở tiếng sau
Ví dụ: Xinh xinh, hây hây, lánh lánh, ào ào,…
Câu do các từ hợp thành theo một quy tắc nhất định.Trong tiếng Việt các quy tắc này rất đa dạng
1.1.2 Khái quát về bài toán tách từ tiếng Việt
Tách từ là quá trình xác định ranh giới của các từ trong câu, giúp nhận diện các từ đơn và từ ghép Trong xử lý ngôn ngữ, việc xác định cấu trúc ngữ pháp và từ loại yêu cầu phải nhận diện chính xác các từ trong câu Mặc dù điều này có vẻ đơn giản với con người, nhưng lại là một thách thức lớn đối với máy tính.
1.1.2.1 Ứng dụng bài toán tách từ trong xử lý ngôn ngữ tự nhiên Đối với xử lý ngôn ngữ tự nhiên, để có thể xác định cấu trúc ngữ pháp của câu, xác định từ loại của một từ trong câu, yêu cầu nhất thiết đặt ra là phải xác định đƣợc đâu là từ trong câu
Tách từ là một bước xử lý quan trọng trong các hệ thống Xử Lý Ngôn Ngữ Tự Nhiên, đặc biệt đối với các ngôn ngữ Đông Á thuộc loại hình đơn lập Trong các ngôn ngữ này, ranh giới từ không chỉ đơn giản là khoảng trắng như trong tiếng Anh, mà còn có sự liên kết chặt chẽ giữa các tiếng Một từ có thể được cấu tạo từ một hoặc nhiều tiếng, do đó, việc giải quyết vấn đề tách từ ở các ngôn ngữ Đông Á là cần thiết để loại bỏ sự nhập nhằng trong ranh giới từ.
Bài toán tách từ là một trong những vấn đề cơ bản trong xử lý ngôn ngữ tự nhiên, đóng vai trò quan trọng trong nhiều ứng dụng của lĩnh vực này Tách từ không chỉ giúp cải thiện chất lượng phân tích ngữ nghĩa mà còn hỗ trợ trong các nhiệm vụ như dịch máy, tìm kiếm thông tin và phân loại văn bản.
- Nhận diện ranh giới ngữ
- Gán nhãn ranh giới ngữ
- Gán nhãn quan hệ cú pháp
Các hướng tiếp cận bài toán
1.2.1 Phương pháp tiếp cận dựa trên từ
Phương pháp này được chia làm 3 nhóm chính:
- Kết hợp 2 phương pháp trên để tận dụng ưu điểm của từng phương pháp
1.2.1.1 Phương pháp dựa vào từ điển Định nghĩa: Từ điển tiếng Việt là tập hợp lớn các từ ngữ và ý nghĩa của chúng Đƣợc sắp xếp theo một thứ tự nhất định Ý tưởng của phương pháp: Là dựa vào 1 từ điển từ có sẵn rồi dùng các biện pháp so khớp để tách ra các từ, cụm từ trong văn bản mà có trong từ điển
Hai phương pháp tiêu biểu của hướng tiếp cận dựa vào từ điển là:
+ So khớp từ dài nhất < Longest Matching >
+ So khớp từ ngắn nhất < Maximal Matching >
Hiện nay thì phương pháp so khớp dài nhất được xem là phương pháp hiệu quả nhất trong hướng tiếp cận này
Hướng tiếp cận dựa vào từ điển tuy đơn giản và dễ hiểu, nhưng hiệu quả không cao do không xử lý được nhiều trường hợp nhập nhằng và không phát hiện được từ mới Vì vậy, các hệ thống tách từ chất lượng cao hiện nay thường áp dụng phương pháp thống kê.
1.2.1.2 Tiếp cận dựa vào thống kê Định nghĩa: Thống kê là một hệ thống các phương pháp bao gồm thu thập, tổng hợp, trình bày số liệu, tính toán các đặc trƣng của đối tƣợng nghiên cứu nhằm phục vụ cho quá trình phân tích, dự đoán và đề ra các quyết định Ở đây chúng ta sử dụng phương pháp thống kê để nhận dạng từ mới và tách từ Ý tưởng của phương pháp: Là dựa vào các thông tin như tần số xuất hiện trong tập dữ liệu huấn luyện ban đầu, dựa vào các giải thuật học máy sẽ đƣa ra một tập các từ đƣợc gán trọng số Dựa trên các trọng số này, khi phân tách câu sẽ quyết định một cụm các tiếng có phải là một từ hay không
Phương pháp này tỏ ra linh hoạt hơn và có độ chính xác cao hơn so với phương pháp dựa trên từ điển
1.2.1.3 Tiếp cận dựa trên cả hai phương pháp trên
Mục tiêu của việc kết hợp các phương pháp khác nhau là để tận dụng ưu điểm của nhiều kỹ thuật Phương pháp này thường kết hợp giữa các cách tiếp cận dựa trên thống kê và từ điển, nhằm đạt được lợi thế tổng quát cũng như khai thác các điểm mạnh riêng biệt của từng phương pháp.
Mặc dù có độ chính xác cao, nhưng công nghệ này gặp phải nhiều vấn đề phức tạp, cần nhiều thời gian và bộ nhớ hơn để xử lý.
1.2.2 Phương pháp tiếp cận dựa trên ký tự (tiếng)
Phương pháp này sử dụng mô hình N-gram để phân tích câu, chia câu thành các từ ngăn cách bởi dấu cách và dấu câu Sau đó, nó áp dụng các thuật toán như quy hoạch động, thuật toán di truyền và thống kê để tìm ra cách phân chia tối ưu với tổng xác suất cao nhất cho các đoạn.
Phương pháp này đơn giản và linh hoạt hơn vì không phụ thuộc vào một bộ từ điển cố định Cách tiếp cận này mang tính khả quan và hứa hẹn nhiều triển vọng hơn so với phương pháp dựa vào từ điển.
TÌM HIỂU MỘT SỐ PHƯƠNG PHÁP TÁCH TỪ TIẾNG VIỆT
Tìm hiểu một số nhập nhằng khi tách từ
Tiếng Việt là “ngôn ngữ đơn lập” nên từ vựng chủ yếu là các từ ghép
Khoảng trắng không phải là ranh giới chính xác, dẫn đến khó khăn trong việc xác định các từ ghép Vấn đề tách từ chính là trọng tâm cần giải quyết trong các nghiên cứu liên quan.
2.1.2 Một số loại nhập nhằng
2.1.2.1 Nhập nhằng ranh giới từ
Tiếng Việt có sự khác biệt so với tiếng Anh ở chỗ việc xác định ranh giới từ rất đơn giản, vì mỗi từ đều mang nghĩa riêng và được phân cách bởi khoảng trắng.
Bảng 2.1 Ví dụ nhập nhằng giới từ trong tiếng Anh và tiếng Việt
He is a teacher Sau khi tách các từ:
Anh ấy là giáo viên Sau khi tách các từ:
->Anh / ấy / là / giáo / viên
2.1.2.2 Nhập nhằng từ đa nghĩa
Mọi ngôn ngữ, bao gồm cả tiếng Việt, đều chứa đựng các từ "đa nghĩa" Nguyên nhân là do nhiều khái niệm có những sắc thái ý nghĩa khác nhau, mặc dù không hoàn toàn trùng khớp, nhưng vẫn có nhiều điểm tương đồng.
- Ví dụ: Từ “ăn” trong “ăn uống” và “ăn cướp” vừa có những nét nghĩa giống và khác nhau
2.1.2.2 Nhập nhằng từ đồng âm
Hai từ đồng âm là những từ có cách phát âm giống nhau nhưng lại mang nghĩa khác nhau Trong khi đó, đồng tự là những từ có hình thức viết giống nhau nhưng ý nghĩa lại khác biệt.
Ví dụ: Từ “kiếm” trong hai câu sau đây là hai từ đồng tự:
Anh ta sử dụng kiếm rất điêu luyện
Kiếm ăn bây giờ khó lắm
Từ loại đóng vai trò quan trọng trong việc xác định nghĩa chính xác của từ và sắp xếp chúng thành câu hoàn chỉnh trong dịch tự động Nó giúp giảm thiểu sự nhập nhằng, nhưng cũng có thể gây ra sự nhập nhằng trong một số trường hợp nhất định.
CHƯƠNG TRÌNH ỨNG DỤNG BÀI TOÁN TÁCH TỪ BẰNG PHƯƠNG PHÁP SO KHỚP CỰC ĐẠI
Phương pháp làm bài
- Xác định input, output của bài toán
- Các yêu cầu của bài toán
3.1.2 Xây dựng thuật toán, viết chương trình
3.1.3 Một số ví dụ minh họa
Cách làm bài toán trên
+ Input:- Bộ từ điển bao gồm các từ thường dùng và có ý nghĩa
Hình 3.1 Từ điển tiếng Việt
+ Output: Là một câu tiếng Việt được tách thành các từ có nghĩa theo phương pháp so khớp cực đại
3.2.2 Ý tưởng của phương pháp Ý tưởng:
+ Duyệt câu từ trái qua phải
+ Lần lƣợt duyệt chuỗi các tiếng kiểm tra xem nó có phải là từ hay không + So khớp với từ điển tìm ra từ có độ dài lớn nhất
+ Tiếp tục làm nhƣ thế với chuỗi còn lại của câu cho đến khi hết câu
*Cài đặt thuật toán nhƣ sau: protected int demsotu()
{ int n = 0; string s = txtNhap.Text.Trim(); for (int i = 0; i < s.Length - 1; i++) if ((s.Substring(i, 1) == " ") && (s.Substring(i + 1, 1) != " ")) n++; if (s.Length > 0) n++; return n;
Bước 2: Đếm số lần xuất hiện
*Cài đặt thuật toán nhƣ sau: protected float demsolanxh(string ss)
StreamReader x3 = new StreamReader("Tudientiengviet.txt"); string line3 = x3.ReadLine(); while (line3 != null)
{ if (ss.Equals(line3.ToLower()))
Bước 3: Tách từ đơn private void button2_Click(object sender, EventArgs e)
{ listBox1.Items.Clear(); string CauCanTach = txtNhap.Text.ToLower(); string[] tudon = CauCanTach.Split(' '); for (int i = 0; i < tudon.Length; i++)
{ if (tudon[i] != "")//xu ly tu rong
{ listBox1.Items.Add(tudon[i].Trim());
Hình 3.2 Tách thành từ đơn
Bước 4: Tách từ đâu tiên
*Cài đặt thuật toán nhƣ sau: private void tachtudau()
{ txttachtu.Items.Clear(); string s = txtNhap.Text.ToLower(); string[] words = s.Split(' '); string SS = "";
SS = words[0]; txttachtu.Items.Add(SS);
Bước 5: Tách từ ghép có độ dài 2 âm tiết private void button1_Click(object sender, EventArgs e)
{ tachtudau(); string s = txtNhap.Text.ToLower(); string[] words = s.Split(' '); string SS = ""; for (int i = 0; i < demsotu()-1; i++)
SS = SS + " " + words[i + 1]; txttachtu.Items.Add(SS);
Bước 6: private bool ChuaTu(string s) private bool ChuaTu(string s)
{ bool kt = false; for (int i = 0; i < txttachtu.Items.Count; i++)
Bước 7: Tạo button để tách từ private void button3_Click(object sender, EventArgs e)
StreamReader x3 = new StreamReader("Tudientiengviet.txt"); while (listBox1.Items.Count > 0)
{s4 = listBox1.Items[0].ToString() + " " + listBox1.Items[1].ToString() + " " + listBox1.Items[2].ToString() + " " + listBox1.Items[3].ToString(); if (ChuaTu(s4))
} if (ChuaTu(s3)) continue; if (listBox1.Items.Count >= 2)
{ s2 = listBox1.Items[0].ToString() + " " + listBox1.Items[1].ToString(); if (ChuaTu(s2))
} if (ChuaTu(s2)) continue; if (listBox1.Items.Count >= 1)
{ s1 = listBox1.Items[0].ToString(); s5 = s5 + s1 + " | "; for (int i = 0; i < 1; i++)
} s5 = s5.Trim(); s5 = s5.Replace("| |", "|"); string[] tach1; tach1 = s5.Split('|'); if (s5[0] != '|')
Hình 3.4 Ví dụ tách từ
Bước 8: Tạo button để nhập lại dữ liệu(private void button5_Click(object sender, EventArgs e)
* Giải thuật nhƣ sau: private void button5_Click(object sender, EventArgs e)
KQ.Items.Clear(); txttachtu.Items.Clear();
Hình 3.5 Tạo button nhập lại
Bước 9: Tạo button để thoát chương trình (private void button6_Click(object sender, EventArgs e)
*Giải thuật nhƣ sau: private void button6_Click(object sender, EventArgs e)
{ if (MessageBox.Show("Bạn có chắc chắn muốn thoát không?", "Thông báo ", MessageBoxButtons.OKCancel, MessageBoxIcon.Question) =System.Windows.Forms.DialogResult.OK)
Hình 3.6 Tạo button thoát khỏi chương trình
• Trong đề tài này em chọn ngôn ngữ C# để minh hoạ chương trình thử nghiệm tách từ tiếng Việt bằng phương pháp so khớp cực đại
• Từ điển tiếng Việt: Là bộ từ điển xây dựng khoảng 100.000 từ
Hình 3.7 Kết quả tách từ