4.1.1. Cài đặt
- Chƣơng trình đƣợc cài đặt trên mội trƣờng Windows sử dụng ngôn ngữ lập trình, bộ công cụ lập trình và các thƣ viện sau:
o Ngôn ngữ lập trình Java
o Bộ công cụ lập trình Netbeans IDE
o Thƣ viện VietTalk: Sản phẩm TTS của Viện Công nghệ thông tin o Thƣ viện Jsoup: lấy nội dung text từ trang web bất kì.
Chƣơng trình sử dụng hệ thống TTS iSOLAR hoặc thƣ viện VietTalk để đọc nội dung của các trang báo điện tử.
- Sau đây là hình ảnh minh họa tất cả các package có trong chương trình:
Mô đun chƣơng trình
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn
Mô đun tokenization
Các pakage chính bao gồm classifier, detector, disambiguator, expander, spliter
đƣợc cài đặt và đóng gói riêng biệt và độc lập với nhau. Việc này tạo thuận lợi cho công tác cải tiến thuật toán, bảo trì code, khả năng mở rộng ứng dụng trong tƣơng lai.
mô đun classification, detector, spliter, disambiguation và expansion
Sau đây là hình ảnh giao diện ứng dụng khi hoạt động. Bên trái là 1 text area cho phép ta nhập văn bản đầu vào. Còn bên phải là kết quả thƣ đƣợc sau khi tiền xử lí. Hệ thống xử dụng thêm 2 màu xanh và đỏ để tô đậm kết quả:
o Màu đỏ: hệ thống không tự xử lí đƣợc
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn
Ứng dụng cho phép ngƣời dùng trực tiếp chỉnh sửa cách đọc của từng từ.
Hình 4-1 Giao diện hệ thống
Các phƣơng thức chính
public String match (String input, int type) Phƣơng thức này kiểm tra xem chuỗi đầu vào input có thuộc kiểu type không. Nếu thuộc kiểu type sẽ trả về kiểu của chuỗi đầu vào
public List expand (List tokens, String text, String type) Phƣơng thức này khai triển đầu vào text thành dạng đọc đƣợc theo kiểu type đã biết. Hàm này trả về các phần tử Element sẽ thay thế vào vị trí các thành phần Element trong danh sách tokens
public void replaceTokens (Element old, Element new) Hàm thao tác với đối tƣợng Document. Hàm này thay thế 1 thành phần Element cũ old bằng một thành phần Element mới new
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn
Phƣơng thức Đầu vào Đầu ra Ý nghĩa
public void match (Element sayas, String type) Là NSWs và kiểu mà NSWs có thể nhận Nếu NSWs thuộc kiểu type thì trả về dạng đầy đủ. Nếu type không phải kiểu phù hợp thì trả về thông báo không tìm thấy kiểu tƣơng ứng
Lần lƣợt thử NSWs với các kiểu mà nó có thể nhận
public String match (String input, int type)
Khai triển chuỗi đầu vào input theo kiểu type cho trƣớc
Trả về dạng đọc đƣợc của chuỗi input
Khai triển NSWs theo kiểu đã biết public List expand
(List tokens, String text, String type)
Việc khai triển thực sự sẽ diễn ra ở hàm này Trả về danh sách bao gồm dạng đọc đƣợc của NSW Khai triển NSWs public List makeNewTokens (Document doc, String newText, Boolean createMtu, String origText,) Tạo ra một Tokens mới, Token mới này chính là dạng khai triển của NSWs. Trong đó origText là dạng ban đầu của NSWs và newText là dạng sau khi khai triển
Trả về danh sách tokens mới
Tạo ra 1 token mới
public void replaceTokens (Element old, Element new) Thay thể thành phần old bằng thành phần new Thay thể tokens cũ bằng tokens mới trong cấu trúc xml
Bảng 4-1 Các phƣơng thức chính trong chƣơng trình
* Các biểu thức chính quy
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn
Các mô đun biểu thức chính quy
DateEP
Chứa biểu thức chính quy đại diện cho tập hợp các chuỗi mô tả ngày tháng năm Biểu thức chính quy đƣợc sử dụng:
- Biểu thức biểu ngày: day = “(0)?[1-9]|[12][0-9]|3[01]”
- Biểu diễn tháng: month = “0?[1-9]|1[0-2]”
- Biểu diễn năm:
year = “[0-9][0-9] [0-9][0-9]”
- Biểu diễn giá trị phân giữa ngày với tháng, giữa tháng và năm: operator = “/|\\.”
- Biểu diễn tập các cấu trúc ngày-tháng-năm:
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn
- Biểu diễn tập các cấu trúc ngày-tháng: DayMonth = day + operator + month
- Biểu diễn tập các cấu trúc tháng-năm: MonthYear = month + year
DurationEP
Các biêu thức chính quy đƣợc sử dụng: - Biểu diễn giờ:
hour = “0?[0-9]|1[0-9]|2[0-4]” - Biểu diễn phút và giây: minute = “[0-5][0-9]”
second = minute
- Biểu diễn toán tử xuất hiện trong cấu trúc giờ - phút –giây: operator = “\\:|\\.”
- Biểu diễn cấu trúc thời gian giờ phút giây:
HourMinuteSecond = hour + operator +minute + operator + second - Biểu diễn cấu trúc giờ phút
HourMinuter = hour + operator +minute
TelephoneEP
Biểu thức chính quy biểu diễn tập hợp các số điện thoại telephone = “[0+][0-9/\\-\\.]+”
NetEP
text = “[A-Za-z0-9\\!\\#\\$\\%\\&\\*\\+\\-\\/\\=\\?\\_\\{\\|\\}]” Biểu diễn tập các địa chỉ mail:
email = text + \\. + text + “\\@” +text+ \\. + text Biểu diễn tập các địa chỉ web:
uri = http|fpt:// + text + \\. +text + “com|edu|net|info|de|org” + “/” +text
AbbrevEP
Để nhận biết các từ thuộc nhóm từ viết tắt ta có thể dựa vào từ điển hoặc một số đặc điểm đơn giản ví dụ: Các chữ cái của từ đều đƣợc viết hoa, Từ có chữ cái viết hoa và chữ đó không phải là chữ cái đứng đầu,…
Vấn đề cần xử lí ở đây là đối với các chữ số La Mã sẽ thƣờng xuyên có sự nhầm lẫn chúng là các từ viết tắt, do bản chất các chữ số này là các chữ cái viết hoa (I, II, V, X,…). Các trƣờng hợp nhƣ vậy cần đƣợc phân loại lại trƣớc khi khai triển dựa vào tiền tố của chúng.
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn
Hình 4-2: Từ điển viết tắt
Composite EP
Biểu thức chính quy đƣợc sử dụng ở đây là:
LettersDigitsAndHyphen = "([^-]*[A-Za-z0-9][^-]*)(-[^-]*[A-Za-z0-9][^-]*)+" Biểu thức trên đại diện cho nhóm các cấu trúc có chứa dấu “-”
Biểu thức sau đại diện cho cấu trúc gồm chữ và số trộn lẫn: "(?:(?:[A-Za-z]+[0-9]+)|(?:[0-9]+[A-Za-z]+))[A-Za-z0-9]*" Với cấu trúc trên từ và số đƣợc tách riêng ra.
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn
4. 1.2.Thử nghiệm chƣơng trình