2.1 Giải pháp tách từ Tiếng Anh
Với các tài liệu tiếng Anh, từ của tiếng Anh được phân cách với nhau bằng dấu cách. Điều đó có nghĩa là chúng ta có thể tách từ tiếng Anh bằng dấu phân tách là dấu cách. Việc xử lý các stopword của tiếng anh thì chúng tôi cũng có một file gồm hơn 300 từ stopword của tiếng Anh để phục vụ cho việc loại bỏ
Page | 61 In Dictionar y? Còn 1 từ
stopword khỏi văn bản tách để tách ra những từ quan trọng, tránh những từ mang ý nghĩa chung, hay chỉ là cảm thán.
2.2 Giải pháp cho Tiếng Việt
2.1.1 Các giải pháp đã có
Hiện có rất nhiều chương trình hỗ trợ việc phân tích cú pháp, tách từ, gán nhãn từ tiếng Việt cùng với các giải thuật thuật toán khác nhau. Những đồ án được tham khảo là chương trình Code_correct (chính xác loại văn bản dựa vào tập huấn luyện), chương trình VNSegment của tác giả Phương Thái (chương trình khá hoàn chỉnh trong việc tách từ và phân loại từ tiếng Việt. Chỉ có điều viết trên nền Java và không được cung cấp sourcode và file thư viện), chương trình VNTokenizer (đề cập tới một số nghiên cứu hữu ích cho việc tác từ).
2.1.2 Giải pháp sử dụng và nhận xét
Giải pháp được sử dụng được mô tả bằng giải thuật phía dưới. Dựa trên một bộ từ điển tiếng Việt tương đối đầy đủ gồm hơn 99.000 từ và cụm từ.
Yes
No No
Yes Câu cần tách
Cắt tiếng bên trái Giữ các từ đã cắt
Câu được cắt
Page | 62
Hình 19: Giải thuật tách từ từ câu
Tài liệu được tách thành các câu chuẩn (hoàn chỉnh). Giải thuật tách các từ khóa từ các câu đó. Các từ trong câu sẽ được kiểm tra xem có tồn tại trong từ điển không bằng các so sánh nó với các từ trong từ điển. Nếu nó “giống” từ trong từ điển, thì tách từ đó và kiểm tra tiếp. Giải thuật trên giảm thiểu tối đa tình huống nhập nhằng. Tuy nhiên trong trường hợp câu này thì giải thuật tách sai: Học sinh
học sinh học Học|sinh học|sinh học. Nhưng như tình huống này (thuộc địa bàn) thì lại giải quyết tốt (thuộc|địa bàn).
Chi phí về thời gian cho giải thuật trên là rất lớn ở bước kiểm tra từ tách ra có trong từ điển hay không. Từ điển với hơn 99.000 từ được load vào bộ nhớ trong dưới với kiểu dữ liệu được tổ chức theo 2 kiểu như sau:
Một là mảng các string. Mỗi phần tử là từ hay cụm từ của từ điển. Mảng này được sắp xếp theo thứ tự tăng dần của mã ASCII (Trong C#, kiểu dữ liệu mảng nó.
Tổ chức thành một arraylist mà mỗi phần tử của nó là mảng các string. Mảng các string thuộc 1 phần tử nó giống nhau về âm tiết đầu tiên của từ. Ví dụ
ả ả đào ả đầu ả hoàn Nông nổi
ái Ái Ái ân Ái chà Ái quốc Ái nam
ái nữ
Ái thần Ái tình
an An cư lạc An An giấc