ĐẠI HỌC QUỐC GIA HÀ NỘI
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ
ĐÀO MINH QUYÊN
TỰ ĐỘNG TRÍCH CHỌN THỰC THỂ TÊN NGƯỜI
TRONG VĂN BẢN TIẾNG VIỆT
LUẬN VĂN THẠC SĨ
Hà Nội - 2011
ĐẠI HỌC QUỐC GIA HÀ NỘI
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ
ĐÀO MINH QUYÊN
TỰ ĐỘNG TRÍCH CHỌN THỰC THỂ TÊN NGƯỜI
TRONG VĂN BẢN TIẾNG VIỆT
Ngành: Công nghệ thông tin
Chuyên ngành: Hệ thống thông tin
Mã số: 60.48.05
LUẬN VĂN THẠC SĨ
Cán bộ hướng dẫn khoa học: TS. Nguyễn Trí Thành
Hà Nội - 2011
Mục lục
Mục lục 2
Danh mục các ký hiệu, chữ viết tắt 4
Danh mục các hình vẽ, đồ thị 5
Danh mục các bảng biểu 6
Mở đầu 1
CHƯƠNG 1 - GIỚI THIỆU 2
1.1 Trích chọn thông tin là gì? 2
1.2 Bài toán trích chọn thực thể tên người trong Tiếng Việt 3
CHƯƠNG 2 - HỆ THỐNG TRÍCH CHỌN THÔNG TIN 5
MỘT SỐ NGHIÊN CỨU LIÊN QUAN TRONG TIẾNG VIỆT 5
2.1 Các cách tiếp cận trích chọn thông tin 5
2.1.1 Hướng tiếp cận thủ công 5
2.1.2 Hướng tiếp cận xây dựng các mô hình học máy 6
2.2. Một số nghiên cứu liên quan 7
2.2.1. Bài toán tách từ trong tiếng Việt và công cụ vnTokenizer 7
2.2.2. Mô hình học máy CRF và bộ công cụ cài đặt CRF++ toolkit 9
2.3. Tổng kết chương 14
CHƯƠNG 3 – GIẢI QUYẾT BÀI TOÁN 15
3.1. Mô tả bải toán 15
3.2. Mô hình giải quyết bài toán 15
3.3. Mô tả chi tiết hệ thống trích chọn 17
3.3.1 Một số đặc điểm về cú pháp và ngữ cảnh của tên người trong văn bản Tiếng
Việt 17
3.3.3. Mô hình hệ thống 18
3.5. Kết luận chương 26
CHƯƠNG 4. THỰC NGHIỆM VÀ ĐÁNH GIÁ 27
4.1. Môi trường thực nghiệm 27
4.2. Dữ liệu thực nghiệm 28
4.3. Module tự động trích chọn 28
4.3.1 Tiền xử lý dữ liệu – Tách từ 28
4.3.2. Tự động trích chọn 29
4.3.3. Đánh giá kết quả của hệ thống trích chọn tự động 31
4.4. Huấn luyện CRF 32
4.4.1. Giai đoạn huấn luyện 33
4.4.2. Giai đoạn kiểm thử 33
4.4.3. Thực nghiệm 33
4.5. Đánh giá kết quả 36
KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN TƯƠNG LAI 38
Tài liệu tham khảo 39
Phụ lục: Từ điển họ trong tiếng Việt [8] 40
Danh mục các ký hiệu, chữ viết tắt
IE
Information Extraction
CRFs
Condition Random Field
HMM
Hidden Markov Models
MEMM
Maximum Markov Models
PNE
Person Named Entity
Danh mục các hình vẽ, đồ thị
Hình 1. Ví dụ về một hệ thống trích chọn thông tin [4] 3
Hình 2. Mô hình xây dựng hệ luật cho các hệ thống IE theo hướng tiếp cận thủ công 5
Hình 3. Mô hình xây dựng IE theo mô hình học máy 6
Hình 4. Quy trình tách từ 8
Hình 5. Mô hình hoạt động của CRF++ 10
Hình 6. Mô hình hóa bài toán 15
Hình 7. Mô hình giải quyết bài toán 16
Hình 8. Mô hình hệ thống tự động trích chọn 19
Hình 9. Format file prefix.txt 22
Hình 10. Mô hình thực hiện bước 1 23
Hình 11. Sử dụng vnTokenizer 4.1.1 để tách từ văn bản tiếng Việt 28
Hình 12. Văn bản trước khi tách từ 28
Hình 13. Văn bản sau khi tách từ 29
Hình 14. Văn bản đầu vào 30
Hình 15. Văn bản đầu ra đã gán nhãn 31
Hình 16. File danh sách tên người 31
Hình 17. Danh sách các prefix 31
Hình 18. Mô hình thực nghiệm với CRF 33
Hình 19. Huấn luyện CRF - Tạo file model 34
Hình 20. Format của file testing đưa vào CRF++ toolkit 35
Hình 21. Thực hiện trích chọn với file test bằng CRF++ toolkit 35
Hình 22. Kết quả thử nghiệm với số lượng file training khác nhau 37
Danh mục các bảng biểu
Bảng 1. Sự khác biệt đặc điểm từ giữa tiếng Việt và Tiếng Anh 7
Bảng 2. Bảng các tham số huấn luyện 14
Bảng 3. Bảng các tham số của lệnh crf_test 14
Bảng 4. Cấu hình của máy PC dùng trong thực nghiệm 27
Bảng 5. Các công cụ sử dụng trong thực nghiệm 27
Bảng 6. Các thư viện sử dụng trong thực nghiệm 27
Bảng 7. Kết quả kiểm thử của hệ thống tự động trích chọn 32
Bảng 8. Kết quả test với số lượng file training khác nhau 36
1
Mở đầu
Xử lý ngôn ngữ tự nhiên từ lâu đã trở thành một bài toán quan trọng trong các
ứng dụng công nghệ thông tin đặc biệt là tìm kiếm, dịch tự động, các hệ thống
Semantic Web, và ứng dụng xử lý ngôn ngữ tự nhiên cho Tiếng Việt cũng không
phải là ngoại lệ.
Chẳng hạn như đối với bài toán tìm kiếm thông tin. Các Web Retrieval luôn phải thực
hiện dựa trên sự giới hạn của thông tin vào và ra trong quá trình tìm kiếm. Khi tìm
kiếm người dùng thường đưa vào một số lượng nhỏ từ khóa cần tìm và kết quả tìm
kiếm cũng cần kiểm tra và đưa ra một số lượng nhất định các từ phù hợp nhất. Để giải
quyết vấn đề này, việc tìm kiếm dựa trên các từ khóa là chưa đủ. Thực tế cho thấy các
thực thể ẩn chứa trong đó cũng làm nổi bật các thông tin tìm kiếm. Do đó, trích chọn
thực thể đã trở thành bài toán cơ bản nhất trong các bài toán trích chọn thông tin
nhưng lại đóng vai trò quan trọng trong việc quyết định hiệu quả tìm kiếm. Một điều
dễ thấy nữa là hiện nay, thống kê tìm kiếm cho thấy tìm kiếm theo tên người chiếm
một tỷ lệ đáng kể. Theo đó, các hệ thống trích chọn tên người là bài toán cơ bản và có
ý nghĩa trong việc xây dựng các hệ thống xử lý ngôn ngữ tự nhiên như xây dựng các
ontology làm tiền đề cho các Semantic web, ứng dụng trong hệ thống dịch tự động hay
tóm tắt văn bản,
Do vậy việc xây dựng các giải thuật trích chọn các thực thể tên người từ web là
bài toán có ý nghĩa quan trọng. Luận văn tập trung vào tìm hiểu việc xây dựng một mô
hình trích chọn thực thể tên người áp dụng cho Tiếng Việt.
Cấu trúc luận văn gồm 4 chương:
Chương 1: Giới thiệu một cách khái quát nhất bài toán trích chọn thực thể tên
người trong Tiếng Việt. Ý nghĩa của bài toán
Chương 2: Hướng tiếp cận trong trích chọn thông tin. Một số nghiên cứu liên
quan trong xử lý văn bản Tiếng Việt. Đây sẽ là tiền đề cho việc nghiên cứu để xây
dựng mô hình giải quyết bài toán
Chương 3: Đề xuất mô hình giải quyết bài toán
Chương 4: Kết quả thực nghiệm của luận văn, đánh giá phương pháp và kết quả
đạt được.
Phần kết luận: Tóm lược những nội dung chính đạt được của luận văn đồng thời
cũng chỉ ra những điểm cần khắc phục và đưa ra những định hướng nghiên cứu trong
tương lai.
2
CHƯƠNG 1 - GIỚI THIỆU
1.1 Trích chọn thông tin là gì?
Ngày nay, cùng với sự ứng dụng rộng rãi của công nghệ thông tin là lượng thông
tin khổng lồ mang tính chất toàn cầu. Lượng thông tin này ngày càng lớn mạnh không
ngừng và song song với nó là một thách thức được đặt ra đó là: làm thế nào để sử dụng
thông tin đó một cách hiệu quả nhất? Và như vậy, trong kho dữ liệu khổng lồ đó, việc
tìm ra thông tin cần thiết một cách nhanh chóng, chính xác là cực kỳ quan trọng.
Mặc dù chất lượng của các máy tìm kiếm đã được cải thiện nhưng kết quả trả về
chỉ là những tài liệu có liên quan, chúng không dễ dàng gì rút ra được các mối quan hệ
tiềm ẩn và tạo được các câu trả lời cho các truy vấn phức tạp, chẳng hạn như “danh
sách các công ty liên doanh” hoặc “danh sách các nhà lãnh đạo quốc tế trên toàn thế
giới”. Người ta phân loại câu trả lời các truy vấn ở dạng: có phân tích các tài liệu liên
quan để tập hợp những thông tin cần thiết. Nếu nhiều mối quan hệ như “Công ty A
liên doanh với công ty B” được lưu trong các tài liệu thì nó tự động tổng hợp và cấu
trúc hóa, điều này rất tốt không chỉ cho các hệ thống truy vấn thông tin mà còn cho các
hệ thống hỏi đáp tự động và tóm tắt văn bản. Do đó khai thác được những tri thức đó
sẽ mang lại nhiều thông tin bổ ích. Đó là lĩnh vực mà “trích chọn thông tin” nghiên
cứu.
Trích chọn thông tin (Information Extraction - IE) là công việc trích ra các thông
tin có cấu trúc từ các văn bản không có cấu trúc [4]. Nói cách khác, một hệ thống trích
chọn thông tin rút ra những thông tin đã được định nghĩa trước về các thực thể và mối
quan hệ giữa các thực thể từ một văn bản dưới dạng ngôn ngữ tự nhiên và điền những
thông tin này vào một văn bản ghi dữ liệu có cấu trúc hoặc một dạng mẫu được định
nghĩa trước đó. Không giống như hiểu toàn bộ văn bản, các hệ thống trích chọn thông
tin chỉ cố gắng nhận biết một số thông tin đáng quan tâm ở một lĩnh vực nào đó.
3
Ví dụ về hệ thống trích chọn thông tin
Hình 1. Ví dụ về một hệ thống trích chọn thông tin [4]
1.2 Bài toán trích chọn thực thể tên người trong Tiếng Việt
Trích chọn thực thể tên người là bước tiền xử lý trong rất nhiều hệ thống xử lý
ngôn ngữ tự nhiên. Cụ thể như:
- Tóm tắt văn bản: Từ một văn bản dài, máy tính tóm tắt thành văn bản ngắn hơn
với những nội dung cơ bản nhất.
- Dịch tự động: Là việc dịch tự động từ tiếng này sang tiếng khác, chẳng hạn dịch
câu “Nguyễn Tấn Dũng là Thủ tướng nước Cộng hòa xã hội chủ nghĩa Việt Nam”
sang tiếng Anh. Việc dịch này đòi hỏi máy không những phải hiểu đúng nghĩa câu
tiếng Việt mà còn phải nhận biết được đâu là tên người để giữ nguyên
- Tìm kiếm thông tin trên mạng: Đây là lĩnh vực có sự chia sẻ nhiều nhất giữa trí
tuệ nhân tạo và Internet, và ngày càng trở nên hết sức quan trọng. Sẽ sớm đến một
ngày, mọi tri thức của con người được số hóa và để lên mạng hay các thư viện số
cực lớn. Thống kê cho thấy, các từ khóa là tên người được đưa vào tìm kiếm chiếm
tỷ lệ khá lớn.
- Hệ thống hỏi đáp: Giúp trả lời các câu hỏi liên quan đến thực thể tên người như:
Ai là Chủ tịch tập đoàn Microsoft?
4
Ai đã phát minh ra PC đầu tiên trên thế giới?
Ai là cha đẻ của lý thuyết về tổ hợp?
- Web ngữ nghĩa: Trích chọn tên người là bước tiền xử lý cho hệ thống xây dựng
các ontology - bước xây dựng dữ liệu cho các ứng dụng web ngữ nghĩa.
Luận văn sẽ tập trung vào việc xây dựng hệ thống tự động trích chọn tên người
trong văn bản tiếng Việt. Kết quả của hệ thống sẽ rất có ích trong tiền xử lý dữ liệu của
các ứng dụng xử lý ngôn ngữ tự nhiên nói trên.
5
CHƯƠNG 2 - HỆ THỐNG TRÍCH CHỌN THÔNG TIN
MỘT SỐ NGHIÊN CỨU LIÊN QUAN TRONG TIẾNG VIỆT
2.1 Các cách tiếp cận trích chọn thông tin
2.1.1 Hướng tiếp cận thủ công
Đặc điểm của việc xây dựng hệ thống trích chọn thông tin theo hướng này là hệ
thống luật được xây dựng bằng tay hoàn toàn phụ thuộc vào kinh nghiệm riêng của
từng người trong từng lĩnh vực của IE, các mẫu hay các luật được tạo ra và được kiểm
duyệt một cách kỹ lưỡng có quy mô bởi các “tri thức chuyên gia” [3]. Những quy tắc
luôn được kiểm định nhiều lần. Có thể mô hình hóa việc xây dựng này theo hình 2 như
sau:
Hình 2. Mô hình xây dựng hệ luật cho các hệ thống IE theo hướng tiếp cận thủ
công
Hình trên mô tả việc xây dựng hệ luật theo hướng tiếp cận thủ công. Bắt đầu từ
tập luật cơ bản ban đầu, sử dụng kho tài liệu kiểm duyệt hay sửa chữa cần thiết dựa
trên tri thức chuyên giá (theo kinh nghiệm riêng của người xây dựng). Các luật mới
được sinh ra sau quá trình kiểm duyệt đó để bổ sung cho tập luật cũ. Những quy tắc
được kiểm định nhiều lần nhằm đánh giá độ chính xác và tìm ra những luật mới để bổ
sung.
Với cách tiếp cận này thì hệ thống hoạt động theo một chu trình. Để xây dựng
một hệ thống hoạt động tốt phải luôn luôn có sự tương tác giữa người viết luật và hệ
thống cùng với kho ngữ liệu huấn luyện (hình 2) và tập luật luôn luôn được cập nhật
để cho hệ thống có thể hoạt động tốt nhất.
Kho tài
liệu
Luật cũ
Kiểm duyệt
Sửa chữa
Luật mới
Cập nhật
Tri thức
chuyên gia
6
2.1.2 Hướng tiếp cận xây dựng các mô hình học máy
Với hệ thống IE được xây dựng theo hướng tiếp cận dựa trên tri thức thì chu
trình kiểm tra và sửa lỗi gặp rất nhiều khó khăn và phụ thuộc vào nhiều yếu tố như:
Loại ngôn ngữ, thời gian và khả năng viết luật. Chỉ một vài thay đổi trong đặc tả cũng
gây khó khăn trong sự điều chỉnh.
Câu trả lời cho các giới hạn này là phải xây dựng một mô hình bằng cách nào đó
có thể “tự học”. Điều này sẽ giúp làm giảm bớt sự tham gia của các chuyên gia ngôn
ngữ và làm tăng tính linh hoạt cho hệ thống. Có rất nhiều phương pháp học máy như
mô hình markov ẩn (Hidden Markov Models-HMM), các mô hình Markov cực đại hóa
Entropy (Maximum Markov Models – MEMM) và mô hình các trường ngẫu nhiên có
điều kiện ( Conditional Random Fields – CRF)
Các đặc điểm phải kể đến của việc xây dựng hệ thống IE theo hướng hệ thống có
thể tự đào tạo (automatic training approach) là không cần một người nào đó hiểu biết
về cách hoạt động của hệ thống IE và viết luật cho nó như thế nào. Điều cần thiết ở
đây là một người nào đó biết được miền ứng dụng của nó và hiểu được những thông
tin cần rút trích. Một khi dữ liệu huấn luyện được chú thích, thuật toán huấn luyện
chạy và sinh ra những thông tin học được hay còn gọi là model để phục vụ cho quá
trình trích chọn tự động sau này. Mô hình với hướng tiếp cận này được mô tả qua hình
3 như sau: Các thuật học sẽ dựa trên dữ liệu để tự học và thu được một model, dựa trên
model này nó sẽ trích chọn các thông tin trên dữ liệu mới.
Hình 3. Mô hình xây dựng IE theo mô hình học máy
Khi xây dựng hệ thống IE theo hướng này phải tập trung vào việc tạo ra dữ liệu
huấn luyện. Hệ thống có thể tự học mà không cần sự can thiệp của bất kỳ các chuyên
viên nào. Tuy vậy việc xây dựng và lưu trữ tập dữ liệu huấn luyện rất khó và đắt vì để
hệ thống có thể thực hiện tốt thì yêu cầu dữ liệu phải nhiều đó cũng là hệ quả dẫn đến
việc khó sửa đổi. Vì chỉ cần thêm hoặc xóa các thuộc tính thì cần phải thay đổi trên
toàn tập huấn luyện của nó.
Dữ liệu
Huấn
luyện
Thuật toán học
Model
7
Tùy vào công việc và những điều kiện đã có mà ta có thể xây dựng hệ thống IE
theo hướng các mô hình học máy hoặc theo hướng tiếp cận dựa tri thức. Ví dụ như khi
nguồn văn bản và người viết luật đáp ứng được yêu cầu thì nên xây dựng hệ thống IE
theo hướng tiếp cận dựa tri thức, hoặc khi các mô tả về thông tin trích chọn luôn có sự
thay đổi thì cũng lên làm theo hướng thứ nhất. Còn với dữ liệu lớn thì nên xây dựng hệ
thống IE theo mô hình học máy.
2.2. Một số nghiên cứu liên quan
2.2.1. Bài toán tách từ trong tiếng Việt và công cụ vnTokenizer
Bài toán
Cho một câu tiếng Việt bất kỳ, hãy tách câu đó thành những đơn vị từ vựng (từ),
hoặc chỉ ra những âm tiết nào không có trong từ điển (phát hiện đơn vị từ vựng mới).
Một số đặc điểm về cú pháp cấu tạo từ trong tiếng Việt
Tách từ là một khó khăn chính trong việc phân loại văn bản đối với các ngôn ngữ
châu Á như tiếng Hoa, tiếng Nhât, tiếng Hàn và cả tiếng Việt. Mặc dù được viết bằng
các ký tự La tinh mở rộng, tiếng Việt cũng có những đặc tính chung với các ngôn ngữ
phonographic Đông Nam Á khác như khó xác định danh giới giữ các từ và có các
điểm khác biệt về phonetic, văn phạm và ngữ nghĩa so với các ngôn ngữ Ấn, Âu.
Có một số đặc tính chính của từ trong tiếng Việt như sau [1]:
- Từ ở dạng nguyên thể, hình thức và ý nghĩa của từ độc lập với cú pháp
- Từ được cấu trúc từ “tiếng” hay còn gọi là âm tiết
- Từ bao gồm từ đơn (từ một tiếng) và từ phức (n - tiếng với n < 5), bao gồm từ
láy và từ ghép.
Trong khi đó, định nghĩa về từ trong tiếng Anh như sau: “Từ là một nhóm ký tự
có nghĩa, được phân cách bởi ký tự khoảng trắng trong câu” (Từ điển Webster).
Dưới đây là một số điểm khác biệt chính giữa tiếng Việt và tiếng Anh.
Đặc điểm
Tiếng Việt
Tiếng Anh
Đơn vị cơ bản
Tiếng
Từ
Tiền tố / Hậu tố
Không có
Có
Từ loại
Không rõ ràng
Được định nghĩa rõ
Danh giới từ
Tổ hợp có nghĩa dựa vào
ngữ cảnh của các tiếng
Khoảng trắng hoặc dấu câu
Bảng 1. Sự khác biệt đặc điểm từ giữa tiếng Việt và Tiếng Anh
8
Cho đến nay đã có khá nhiều nghiên cứu ứng dụng nhằm thực hiện việc tách từ
trong tiếng Việt. Luận văn không đi sâu vào việc xây dựng module tách từ mà sẽ sử
dụng chương trình tách từ tự động Vntokenizer để tách từ cho văn bản.
Công cụ tách từ vnTokenizer
VnTokenizer là công cụ tách từ tiếng Việt được nhóm tác giả Nguyễn Thị Minh
Huyền, Vũ Xuân Lương và Lê Hồng Phương phát triển dựa trên phương pháp so khớp
tối đa (Maximum Matching) với tập dữ liệu sử dụng là bảng âm tiết tiếng Việt và từ
điển từ vựng tiếng Việt. [7]
Công cụ được xây dựng bằng ngôn ngữ Java, mã nguồn mở. Có thể đễ dàng sửa đổi
nâng cấp và tích hợp vào các hệ thống phân tích văn bản tiếng Việt khác.
Quy trình thực hiện tách từ theo phương pháp khớp tối đa được mô tả bởi hình 4.
Trong quy trình này, tác giả sử dụng từ điển từ vựng tiếng Việt và được bổ sung qua
quá trình phân tách nhằm tăng độ chính xác:
Hình 4. Quy trình tách từ
- Đầu vào của công cụ tách từ vnTokenizer là một câu hoặc một văn bản được
lưu dưới dạng tệp.
- Đầu ra là một chuỗi các đơn vị từ được tách.
- Các đơn vị từ bao gồm các từ trong từ điển cũng như các chuỗi số, chuỗi kí từ
nước ngoài, các hình vị ràng buộc (gồm các phụ tố), các dấu câu và các chuỗi kí
tự hỗn tạp khác trong văn bản (ISO, 2008). Các đơn vị từ không chỉ bao gồm
các từ có trong từ điển, mà cả các từ mới hoặc các từ được sinh tự do theo một
quy tắc nào đó (như phương thức thêm phụ tố hay phương thức láy) hoặc các
chuỗi kí hiệu không được liệt kê trong từ điển.
Công cụ sử dụng tập dữ liệu đi kèm là tập từ điển từ vựng tiếng Việt, danh sách
các đơn vị từ mới bổ sung, được biểu diễn bằng ôtômat tối tiểu hữu hạn trạng thái, tệp
9
chứa các biểu thức chính quy cho phép lọc các đơn vị từ đặc biệt (xâu dạng số, ngày
tháng,…), và các tệp chứa các thống kê unigram và bigram trên kho văn bản tách từ
mẫu.
Với các đơn vị từ đã có trong từ điển, khi thực hiện tách từ cũng được xử lý
hiện tượng nhập nhằng bằng cách kết hợp với các thống kê unigram và bigram. Chẳng
hạn trong tiếng Việt thường gặp các trường hợp nhập nhằng như:
- Xâu AB vừa có thể hiểu là 1 đơn vị từ, vừa có thể là chuỗi 2 đơn vị từ A-B.
- Xâu ABC có thể tách thành 2 đơn vị AB-C hoặc A-BC.
Đánh giá kết quả
Kết quả đánh giá của công cụ được cho là ổn định đối với nhiều loại văn bản/
văn phong khác nhau. Độ chính xác trung bình đạt được là khoảng 94%. [2]
2.2.2. Mô hình học máy CRF và bộ công cụ cài đặt CRF++ toolkit
2.2.2.1. Mô hình CRF
CRFs được giới thiệu lần đầu vào năm 2001 bởi Lafferty và các đồng nghiệp.
Giống như MEMMs, CRFs là các mô hình dựa trên xác suất điều kiện, chúng có thể
tích hợp được các thuộc tính đa dạng của chuỗi dữ liệu quan sát nhằm hỗ trợ cho quá
trình phân lớp [5]. Tuy vậy, khác với MEMMs, CRFs là mô hình đồ thị vô hướng.
Điều này cho phép CRFs có thể định nghĩa phân phối xác suất của toàn bộ chuỗi trạng
thái với điều kiện biết trạng thái trước đó và quan sát hiện tại như trong mô hình
MEMMs. Chính vì cách mô hình hóa như vậy, CRFs có thể giải quyết được hạn chế
của mô hình MEMMs như vấn đề về “label bias”.
2.2.2.2. Công cụ CRF++ Toolkit
2.2.2.2.1. Giới thiệu
CRF ++ là một công cụ cài đặt mô hình CRF và được phân phối dưới dạng mã
nguồn mở có thể dùng để phân đoạn và gán nhãn dữ liệu tuần tự.
CRF++ được thiết kế cho cùng một mục đích phổ dụng có thể ứng dụng trong
những bài toán xử lý ngôn ngữ tự nhiên như nhận dạng thực thể tên, trích chọn thông
tin và đóng khung văn bản.
Hệ thống được hoạt động theo phương pháp học nửa giám sát [6] được thực hiện
gồm các bước sau (được mô hình hóa bằng hình 5):
Bước 1: Tạo bộ dữ liệu huấn luyện bé. Bước này được thực hiện bằng tay
Bước 2: Sử dụng mô hình CRFs để huấn luyện trên tập dữ liệu này.
Bước 3: Tạo tập test và sử dụng CRFs để gán nhãn
10
Bước 4: Bộ dữ liệu mới được sinh ra bằng cách bổ sung các nhãn cho tập dữ liệu
test
CRF++ được chia làm 2 thành phần chính có thể mô tả như hình 5 như sau:
Hình 5. Mô hình hoạt động của CRF++
2.2.2.2.2. Tính năng
- Có thể định nghĩa lại các tính năng đã có, ta có thể tùy biến để thêm các đặc
trưng mới phù hợp với bài toán cụ thể.
- Viết bằng C++, là phần mềm mã nguồn mở
- Bộ nhớ nhỏ sử dụng trong cả kiểm tra và phân tích
- Có thể đưa ra xác suất lề cho tất cả những đầu vào.
2.2.2.2.3. Cài đặt và cách sử dụng
Cài đặt
Chuyển vào thư mục chứa công cụ CRF++
Dùng lênh chmod 777 ./configure
make clean && make
File định dạng huấn luyện và test
Để sử dụng được CRF++ ta cần phải có 2 file dữ liệu, 1 file dùng cho quá trình
huấn luyện, file còn lại dùng cho quá trình kiểm tra. Cả file huấn luyện và kiểm tra cần
Dữ liệu
huấn
luyện
CRFs
Model
Trích chọn
thông tin
Dữ liệu
Test
Dữ liệu
đầu ra
Giai đoạn
huấn luyện
Giai đoạn
thực hiện
11
có 1 định dạng riêng của CRF++ để nó có thể làm việc được. Thông thường file huấn
luyện và file kiểm tra chứa đựng rất nhiều từ tố. Mỗi từ tố phải viết trên một dòng,
Ngoài từ tố ra còn có các cột chứa các thông tin khác dùng để mô tả từ tố chẳng hạn
như là từ loại của từ tố và cột cuối cùng chứa nhãn của từ tố. Để định nghĩa từ tố phụ
thuộc vào từng công việc, trong hầu hết các trường hợp điển hình thì chúng là các từ.
Mỗi một từ tố ở một dòng, các cột được phân chia bởi các khoảng trắng. Trình tự các
từ tố tạo thành một câu. Một dòng trắng để phân biệt giữa các câu.
Dưới đây là một ví dụ về file huấn luyện. Với cột thứ nhất là bản thân từ đó, cột
thứ hai là từ loại và cột cuối cùng là nhãn cần gán.
Input: Data
He PRP B-NP
reckons VBZ B-VP
the DT B-NP
current JJ I-NP
account NN I-NP
deficit NN I-NP
will MD B-VP
narrow VB I-VP
to TO B-PP
only RB B-NP
# # I-NP
1.8 CD I-NP
billion CD I-NP
in IN B-PP
September NNP B-NP
. . O
He PRP B-NP
reckons VBZ B-VP
Template type
File này mô tả những đặc trưng sẽ sử dụng khi huấn luyện và kiểm tra. Mỗi một
dòng trong trong file template chỉ ra một template, mỗi một template có dạng như sau
%x[row,col] dùng để định nghĩa một từ trong dữ liệu đầu vào.
12
File template được xây dựng tùy vào từng bài toán cụ thể và tùy vào file huấn
luyện và file kiểm tra. Ví dụ với dữ liệu đầu vào như sau thì file template sẽ được xây
dựng như sau:
Dữ liệu đầu vào
He PRP B-NP
reckons VBZ B-VP
the DT B-NP << CURRENT TOKEN
current JJ I-NP
account NN I-NP
Template
Từ tố tương ứng
%x[0,0]
The
%x[0,1]
DT
%x[-1,0]
Reckons
%x[-2,1]
PRP
%x[0,0]%x[0,1]
The/DT
Có hai loại template là Unigram template và Bigramtemplate
Unigram template
Với loại này khi đưa 1 template CRF ++ sẽ tự động tạo ra các hàm đặc trưng
func1 = if (output = B-DT and feature="U01:DT") return 1 else return 0
func2 = if (output = I-DT and feature="U01:DT") return 1 else return 0
func3 = if (output = O and feature="U01:DT") return 1 else return 0
Số lượng hàm tạo ra bởi một template là ( L * N)
L : số lượng output
N: số lượng chuỗi duy nhất được mở rộng từ template dược chỉ ra.
Bigram template
Với template này ,sự liên kết giữa từ tố hiện tại (current token) và từ tố trước đó
(previous output token) được tự động tạo ra
13
Với loại này tạo ra (L *L *N) (N là số lượng các đặc trưng riêng biệt được tạo ra)
đặc trưng khác nhau do vậy có thể không hiệu quả trong huấn luyện và kiểm tra.
2.2.2.2.4. Huấn luyện và kiểm tra
Sau khi chuẩn bị toàn bộ các file train, file test, file template ta tiến hành huấn
luyện và test như sau
Huấn luyện (training)
Để huấn luyện các file ta sử dụng lệnh crf_learn với cú pháp sau:
% crf_learn template_file train_file model_file
Ở đó :
Lệnh crf_learn tạo ra mô hình huấn luyện trong file model_file
Kết quả của lệnh crf_learn:
iter: Số lượng lặp được xử lý
terr: Tỷ lệ lỗi đối với các thẻ ( được tính bằng số lượng thẻ lỗi/ tổng số thẻ )
serr: Tỷ lệ lỗi đối với câu ( được tính bằng số câu lỗi /tổng số câu )
obj: Giá trị của đối tượng hiện tại. Khi giá trị này hội tụ tại một điểm cố định.
CRF ++ dừng lặp
Tham số
Giá trị mặc định
Ý nghĩa
-a CRF-L2
hoặc CRF-L1
CRF-L2
Tham số này dùng để thay đổi thuật toán mặc
định của CRF ++ . Thông thường thì L2 thực
hiện tốt hơn không đáng kể so với L1, trong
khi số lường các đặc tính L1 là nhỏ hơn một
cách đáng kể so với L2
-c float:
Cùng với tùy chọn này, có thể thay đổi nhiều
tham số cho CRFs
-f NUM
1
Chỉ có các thuộc tính có tần suất xuất hiện lớn
hơn giá trị này thì mới được tích hợp vào mô
hình CRF .
14
-p NUM
Nếu máy tính của bạn có nhiều CPU, giúp cho
việc huấn luyện nhanh hơn bằng cách sử dụng
đa luồng. NUM là số lượng các luồng
Bảng 2. Bảng các tham số huấn luyện
Kiểm tra (testing)
Để kiểm tra dữ liệu sau khi huấn luyện sử dụng lệnh crf_test với cú pháp như
sau:
% crf_test -m model_file test_files
Model_file là file do crf_learn tao ra. Trong khi test không cần tạo ra
template_file bởi vì model file có thông tin giống như file template .
Test_file là kiểm tra dữ liệu bạn muốn gán thẻ theo trình tự. File này có định
dạng giống như file traning được xây dựng ở trên.
Tham số
Giá trị mặc định
Ý nghĩa
-v level
0
Tùy chọn này đưa ra một số thông tin chi tiết
từ CRF++bằng cách tăng cấp độ của level
N best
ouput
Đưa ra N kết quả được sắp xếp theo xắc suất
điều kiện của CRF++
Bảng 3. Bảng các tham số của lệnh crf_test
2.3. Tổng kết chương
Trong chương này, luận văn đã đưa ra khái niệm tổng quan nhất về trích chọn
thông tin, hướng tiếp cận để giải quyết các bài toán trích chọn thông tin trên thế giới.
Ngoài ra, để phục vụ cho bài toán trích chọn thực thể tên người cho tiếng Việt chương
này cũng trình bày những tìm hiểu về một số mô hình cũng như công cụ để hỗ trợ cho
quá trình trích chọn.
15
CHƯƠNG 3 – GIẢI QUYẾT BÀI TOÁN
Trên cơ sở tìm hiểu những hướng tiếp cận trên đây luận văn đã lựa chọn phương
pháp học giám sát nhẹ để giải quyết bài toán. Trong chương này luận văn trình bày
phương pháp trích chọn thực thể tên người áp dụng cho Tiếng Việt với những nghiên
cứu để thực hiện theo những đặc trưng ngôn ngữ.
3.1. Mô tả bải toán
Cho một tập văn bản Tiếng Việt, bài toán đặt ra là cần trích chọn trong tập văn
bản đó danh sách tên người.
Đầu vào
Tập văn bản Tiếng Việt
Đầu ra
Danh sách tên người
Hình 6 mô hình hóa bài toán. Đầu vào là văn bản tiếng Việt. Hệ thống có nhiệm vụ
trích chọn thực thể tên người từ văn bản tiếng Việt đó. Đầu ra của hệ thống là danh
sách tên người trích chọn được và văn bản gán nhãn.
Tiếp theo đó là ví dụ với 1 câu văn bản tiếng Việt. Hệ thống cần cho ra kết quả là
câu văn bản đã được tách từng từ và đánh dấu từ nào là tên người.
Hình 6. Mô hình hóa bài toán
3.2. Mô hình giải quyết bài toán
Dựa vào đặc điểm về chữ viết, văn phong của các thực thể tên người trong Tiếng
Việt, luận văn đề xuất phương pháp trích chọn bao gồm các bước cơ bản sau:
16
Bước 1. Tiền xử lý đối với các văn bản đầu vào
Bước này bao gồm các thao tác làm sạch & tách câu, tách từ trong văn bản
Bước 2. Tự động trích chọn
Sử dụng thuật toán trích chọn bán giám sát để thực hiện trích chọn. Sau bước này, hệ
thống sẽ cho ra kết quả bao gồm:
- Danh sách tên người tìm thấy
- Danh sách prefix (từ đứng trước tên người ví dụ Ông, bà, đồng chí, ). Danh
sách prefix rất quan trọng trong việc làm tăng độ chính xác của thuật toán trích
chọn
- Tập văn bản gán nhãn tương ứng với tập văn bản vào. Tuy nhiên các văn bản
gán nhãn được thể hiện gồm 2 cột:
o Cột 1: Chứa từ
o Cột 2: Nhãn từ tương ứng
Trong luận văn này, thuật toán trích chọn được tiến hành với 2 nhãn từ là:
Nhãn P: Từ là thực thể tên người
Nhãn O: Từ không phải là thực thể tên người (các trường hợp còn
lại)
Bước 3. Đánh giá
Sử dụng mô hình CRF & chương trình cài đặt CRF toolkit ++ để thực hiện đánh giá
kết quả trích chọn từ bước trên
Chi tiết của từng bước thực hiện sẽ được mô tả chi tiết trong những phần sau.
Hình 7 là mô hình giải quyết bài toán theo những bước mô tả ở trên
Hình 7. Mô hình giải quyết bài toán
n
Ting Vit
n
Hun luyn
CRF
Kim th
i
T đng
trích chn
Đánh giá
17
3.3. Mô tả chi tiết hệ thống trích chọn
3.3.1 Một số đặc điểm về cú pháp và ngữ cảnh của tên người trong văn bản
Tiếng Việt
Những đặc điểm về cú pháp và ngữ cảnh thể hiện của tên người trong Tiếng Việt
là những yếu tố quan trọng để xây dựng thuật toán trích chọn. Dựa vào những đặc
điểm này chúng ta sẽ xây dựng lên các luật để trích chọn cũng như làm tăng độ chính
xác của kết quả đạt được.
3.3.1.1. Một số đặc điểm chính về cú pháp của tên người trong văn bản Tiếng Việt.
- Tên người trong Tiếng Việt thông thường là từ gồm 3 đến 4 âm tiết (cá biệt có
4 hoặc 5 âm tiết). Ký tự đầu tiên của mỗi âm tiết được viết hoa.
- Có 3 thành phần chính được viết theo thứ tự:
o Họ (Nguyễn, Trần, Phạm, )
o Tên đệm: có thể nhiều hơn 1 âm tiết (Thị, Văn, )
o Tên chính (Mai, Hương, )
Ví dụ:
Nguyễn Thị Thanh Hoa
Trong đó:
Họ: Nguyễn
Tên đệm: Thị Thanh
Tên chính: Hoa
3.3.1.1. Một số đặc điểm về ngữ cảnh của tên người trong văn bản Tiếng Việt
- Trước tên người thông thường là từ làm tiền tố mô tả chức danh như: Giám đốc,
công nhân, kỹ sư, tổng thống hoặc các đại từ như ông, bà, anh, chị,
Ví dụ:
Kỹ sư Nguyễn Văn Đại đã tốt nghiệp Đại học năm 2010.
- Trong văn bản, thông thường tên người sẽ xuất hiện đầy đủ ở phần đầu văn bản
(mang tính giới thiệu). Sau đó sẽ xuất hiện tiếp ở các phần sau trong văn bản
nhưng thường là ở dạng rút gọn (dạng chỉ có tên chính hoặc tên đệm + tên
chính)
Ví dụ đoạn văn bản sau:
Giáo sư Nguyễn Lân Dũng sinh ra trong gia đình thật đặc biệt. Nhà ông có
đến 8 người đều là giáo sư, phó giáo sư tiến sĩ, là con của cố giáo sư, nhà giáo
18
nhân dân Nguyễn Lân. Người đi trước dìu dắt người đi sau, họ đã xây đắp nên
hình mẫu của gia đình hiếu học, tài hoa, chuẩn mực.
Giáo sư Lân Dũng kể ông rất vui vì được dân yêu. Có lần ông đi nói chuyện
với sinh viên, các bạn trẻ nhất định đòi chụp ảnh riêng với ông chứ không chụp
chung cả đoàn. Đứng "làm mẫu" mãi vẫn chưa hết số người muốn chụp ảnh
cùng.
Ở đoạn văn bản sau, tác giả sử dụng “Giáo sư Lân Dũng” thay cho “Giáo sư Nguyễn
Lân Dũng”.
3.3.2. Một số trường hợp nhập nhằng
Một số trường hợp nhập nhằng xảy ra làm giảm độ chính xác của kết quả thu
được. Những trường hợp nhập nhằng thông thường là:
- Nhầm với tên chỉ địa điểm như:
Đường Nguyễn Khánh Toàn, Thành Phố Hồ Chí Minh
Như vậy khi trích chọn cần phân biệt được khi nào thì Nguyễn Khánh Toàn, Hồ
Chính Minh là tên người khi nào là tên đường, tên thành phố.
- Nhầm với tên tổ chức, công ty,
Ví dụ:
Tập đoàn Hoàng Anh Gia Lai, văn phòng luật sư Hoàng Minh,
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.