3.3. Mô tả chi tiết hệ thống trích chọn
3.3.3. Mô hình hệ thống
Dựa vào những phân tích trên đây, luận văn đề xuất hệ thống tự động trích chọn như hình 8 dưới đây. Từng bước thực hiện trong mô hình này được mô tả chi tiết ở phần sau.
Hình 8. Mô hình hệ thống tự động trích chọn
Dưới đây là mô tả chi tiết từng bước thực hiện khi xây dựng hệ thống tự động trích chọn.
3.3.3.1. Loại bỏ các thẻ html
Trong một trang web, không chỉ chứa nội dung trang web, còn chứa các thông tin khác như dòng quảng cáo, các đường liên kết đến hình ảnh, đến các trang web khác… Tất cả các thông tin đó không phải đều có lợi cho hệ thống trích chọn. Các thông tin này thường được đánh dấu trong các thẻ html. Việc cần làm là loại bỏ các thẻ hmtl, chỉ giữa lại nội dung của các trang web.
Văn bản tiếng Việt Tách từ (Tiền xử lý) Đánh giá toàn cục Prefix.txt Pne.txt Văn bản đã tách từ Gán nhãn Văn bản được gán nhãn Kiểm tra prefix Văn bản tăng độ chính xác
File văn bản đầu ra
Thuật toán trích chọn
19
Tài liệu HTML Loại bỏ các thẻ html
Nội dung trong các trang web thường được đánh dấu trong cặp thẻ <p> và </p>. Tuy nhiên tiêu đề của các bài báo thường cũng ẩn chứa những thông tin có giá trị, cụ thể trong tiêu đề của các bài báo nói về người nào đó, do đó ngoài việc giữ lại nội dung của trang web, ta cần giữ lại cả tiêu đề của các trang web đó.
Đọc từng file có trong tập các trang web, với mỗi file, từng dòng được đọc, nếu dòng đó chứa thẻ bắt đầu bằng thẻ <p> và kết thúc là thẻ </p> hoặc nếu trong dòng văn bản đó chứa <hi> thì ghi lại nội dung chứa trong cặp thẻ đó vào file văn bản sau khi đã loại bỏ các dấu \t, chuyển các kí tự html về dạng chuẩn.
Giải thuật:
Input: tập các tài liệu HTML
Output: tập tài liệu ở dạng trơn (plain text) void StripHTML()
for each file_html in corpus_html for each line in file_html
if line Contain (<hi>) {
RemoveTag(line); Write(file_text, line);
}
if (line Contain (<p>)) or (line Contain (<P>))
{
RemoveTag(line); Write(file_text, line);
}
return file_text;
3.3.3.2. Tiền xử lý văn bản – tách từ
Dựa trên những nghiên cứu trong chương trước về bộ công cụ tách từ vnTokenizer, bước này sẽ sử dụng công cụ này để tách từ.
Đầu vào:
Tập văn bản Tiếng Việt
Đầu ra:
Tập văn bản đã tách từ. Trong đó các từ cách nhau bởi dấu “cách”, các tiếng hay âm tiết trong một từ cách nhau bởi dấu “_”.
3.3.3.3. Thuật toán tự động trích chọn
Thuật toán tự động trích chọn được đề xuất bao gồm 3 bước:
Như phần trên đã đề cập về một đặc điểm trình bày trong văn bản tiếng Việt. Thông thường tên người nếu có sẽ xuất hiện đầy đủ (bao gồm cả họ tên) trong phần đầu văn bản. Dựa vào thuộc tính này thuật toán sẽ duyệt toàn bộ tập văn bản, sử dụng từ điển tri thức và một số luật để thực hiện trích chọn những tên người đầy đủ xuất hiện trong văn bản.
Đầu vào
o Tập văn bản tiếng Việt đã tách từ (được thực hiện ở bước tiền xử lý) Đầu ra
o Danh sách tên người (tên đầy đủ) – pne.txt
o Danh sách các prefix – danh sách từ xuất hiện ngay trước tên người prefix.txt
Ở bước này chúng ta sẽ sử dụng từ điển họ lấy từ trang web Việt Nam gia phả: http://www.vietnamgiapha.com/view/?mnu=2 để tăng độ chính xác của tên người trích chọn. Dưới đây là trích dẫn một số họ trong từ điển họ: (xem đầy đủ trong phần phụ lục)
An Hoàng văn Nguyễn Dương Tô Đình
Anh Hoàng Văn Nguyễn Duy Tống
Ao Hoàng Xuân Nguyễn Gia Tống
Âu Hồ Cẩm Nguyễn Gia Tôn Long
Âu Dương Hồ Công Nguyễn Hà Tôn Thất
Bá Hồ Đắc Nguyễn Hách Tô Vũ
Bạch Hồ Đình Nguyễn Hành Trác
Bành Hồ Khắc Nguyễn Hoàng Trần
Bành Vĩnh Hồ Năng Nguyễn Hoàng Trần Bá
Bảo Pháp Hồng Nguyễn Hữu Trần Bích
Bì Hồ Phi Nguyễn Hữu Trần Cao
Biện Hồ Phú Nguyễn Huỳnh Trần Công
Bùi Hồ Thăng Nguyễn Huy Trần Đằng
Bùi Bá Hồ Thị Nguyễn Ích Trần Điền
Bùi Đắc Hồ Thơm Nguyễn Khắc Trần Đinh
Bùi Đình Hồ Trọng Nguyễn Khánh Trần Đình
Bùi Đình Hồ Văn Nguyễn Khánh Trần Đồng(ở Hà Tây)
Bùi Ðình Hồ Xuân Nguyễn Kim Trần Đức
Dựa vào đặc trưng cú pháp và ngữ nghĩa của tên người trong tiếng Việt đã nêu ở phần trên, chúng ta đưa vào hệ luật bao gồm:
Từ có từ 3 – 4 tiếng, chữ cái đầu của mỗi tiếng được viêt hoa
Họ hoặc Họ + tên đệm (tương đương âm tiết đầu hoặc 2 âm tiết đầu) có trong từ điền họ
Được lặp lại dưới dạng đầy đủ hoặc rút gọn ít nhất 1 lần trong toàn bộ văn bản chứa nó.
Thuật toán
B1. Duyệt từng văn bản trong tập các văn bản đầu vào
B2. Sử dụng template để lọc các từ thỏa mãn luật: từ có 3 – 4 âm tiết, chữ cái đầu mỗi âm tiết viết hoa.
B3. Từ thỏa mãn ở B2 được kiểm tra xem âm tiết đầu tiên hoặc 2 âm tiết đầu có trong từ điển họ không
B4. Từ thỏa mãn ở B3 được kiểm tra xem có lặp lại ở dạng rút gọn hoặc đầy đủ trong văn bản đang xét hay không. Nếu được lặp lại ít nhất 1 lần thì từ này được đưa vào danh sách tên người. Từ kề trước nó được đưa vào danh sách từ tố prefix.
Chú ý: File prefix.txt là file ghi lại các prefix xuất hiện trong văn bản. Kèm theo đó là số lần xuất hiện. Prefix xuất hiện càng nhiều lần thì khả năng từ sau nó là tên người càng cao.
Hình 10 là mô hình thực hiện bước đánh giá toàn cục theo như mô tả ở trên.
Hình 10. Mô hình thực hiện bước 1
Mô phỏng thuật toán
Procedure Step1GlobalScan
{
LoadSurname(FileSurnamePath); //Loading surname from file For each file in Directory
{ Từ điển họ Tập luật Cập nhật danh sách tên người Cập nhật danh sách prefix
Đánh giá toàn cục văn bản
Tập văn bản tiếng Việt Tách từ (Tiền xử lý) Duyệt từng văn bản Tập văn bản đã tách từ Lọc những từ có thể là tên người dựa trên tập luật
Đối chiếu với từ điển họ. Lấy ra tên người
For each line {
PNE_Predict := Match(Template); If Check_Surname(PNE_Predict) then {
Add PNE into PNE_List; };
};
For each PNE in PNE_List {
If PNE repeat in file Then Write PNE; write prefix; }; }; }; Bước 2. Gán nhãn văn bản
Bước này sẽ tiến hành gán nhãn cho văn bản. Yêu cầu của bài toán là trích chọn tên người. Vì vậy luận văn chỉ sử dụng 2 nhãn chính:
Nhãn P: Từ là thực thể tên người Nhãn O: Các trường hợp còn lại Đầu vào: - Tập văn bản tách từ Đầu ra: - Tập văn bản gán nhãn Văn bản gán nhãn gồm 2 cột: từ và nhãn tương ứng Thuật toán:
B1. Các từ trong văn bản được tách thành cột.
B2. Từ nào được đánh dấu là tên người (từ pha 1 – đánh giá toàn cục) thì được gán nhãn P, còn lại gán nhãn O
Các prefix đóng vai trò quan trọng trong việc xác định từ tìm được có là tên người hay không hay nói cách khác là làm tăng độ chính xác của kết quả trích chọn. Như phần trên luận văn có đề cập đến một số nhập nhằng tên người trong văn bản tiếng Việt thì bước này có nhiệm vụ giải quyết các nhập nhằng đó.
Các luật ở bước này
Với các Token có tag “P” thì cần:
- Có prefix thuộc danh mục prefix.txt (trong file này các prefix được đếm số lần xuất hiện, càng nhiều thì càng chính xác Chỉ lấy các prefix có số lần xuất hiện lớn hơn 1 số nào đó. Trong phần kiểm thử lấy là 2)
- Không có prefix là những từ chỉ nơi chốn, địa điểm như: phường, phố, đường, thành_phố, khu_phố …
Đầu vào:
- Tập văn bản Output của bước 2 - File prefix.txt
Đầu ra:
- Tập văn bản được gán nhãn sau khi đã loại bỏ các trường hợp sai
Thuật toán:
B1. Duyệt toàn bộ các file đã tạo ở bước 2 Load các prefix & thêm 1 số prefix phổ biến:
"Chị chị Ông ông bà Bà Cô cô dì Dì Chú chú Bác bác cậu Cậu thím Thím tên Tên thầy Thầy sư Sư em Em cháu Cháu bé Bé trò Trò “
B2. Kiểm tra lại những file có tag “P”, tương ứng là các token không chứa prefix và có dạng tên người (chữ cái đầu viết hoa)
B3. Kiểm tra để đảm bảoPrefix của các NE không phải là tên địa điểm, phường, xã
Loại các NE có prefix là: "phố đường địa_điểm phường chợ thị_trấn thị_xã trường thôn thành_phố khu_phố”
Mô phỏng thuật toán:
Procedure Step3AccuracyEvaluation {
Loadsurname;
LoadNEFiles; // From Step1
// Add more popular prefix: “"Chị chị Ông ông bà Bà Cô cô dì Dì Chú chú Bác bác cậu Cậu thím Thím tên Tên thầy Thầy sư Sư em Em cháu Cháu bé Bé trò Trò “
If Exists_NE_Infile then {
Check_IsProperName; Check_Correct_Prefix; // Rule exclude prefix
//Exclude prefix: phố đường địa_điểm phường chợ thị_trấn thị_xã trường thôn, thành_phố
Check_Exclude_Prefix; // Remove tag “P”
}; };
3.4. Mô tả chi tiết module đánh giá
Nhiệm vụ của module này là đánh giá độ chính xác của kết quả trích chọn sau khi thực hiện trích chọn bằng module tự động trích chọn.
- Sử dụng file output của chương trình tự động trích chọn trình bày trên đây làm tập training (Kiểm tra & sửa bằng tay các trường hợp sai)
- Sử dụng từ điển họ & file prefix để thêm 1 số feature trong CRF++ nhằm làm tăng độ chính xác:
Chữ cái đầu tiên phải viết hoa
Có Họ thuộc những họ trong danh sách tên (pne.txt) từ phần tự động trích chọn.
Có prefix nằm trong danh sách prefix (xuất hiện từ 2 lần trở lên)