MỞ ĐẦU
LỜI CẢM ƠN.
Đầu tiên, tôi xin gửi lời cảm ơn chân thành đến thầy ThS Huỳnh Ngọc Tín đã
giúp đỡ và giới thiệu tôi thực tập tại Công ty Outsourceit Vietnam. Không những thế,
trong quá trình thực tập thầy đã chỉ bảo và hướng dẫn tận tình cho tôi những kiến thức
lý thuyết, cũng như các kỹ năng trong lập trình, cách giải quyết vấn đề, đặt câu hỏi …
Thầy luôn là người truyền động lực trong tôi, giúp tôi hoàn thành tốt giai đoạn thực tập
tốt nghiệp.
Cho phép tôi gửi lời cảm ơn sâu sắc đến Công ty Outsourceit Vietnam đã tạo
mọi điều kiện thuận lợi giúp tôi cũng như các sinh viên khác hoàn thành giai đoạn thực
tập tốt nghiệp.
Chân thành cảm ơn đến các bạn trong nhóm thực tập đã hỗ trợ để tôi có thể
hoàn thành tốt công việc được giao.
Tôi xin chân thành biết ơn sự tận tình dạy dỗ của tất cả các quý thầy cô Khoa
Công nghệ phần mềm – Trường Đại học Công Nghệ Thông Tin – Đại học Quốc gia
TPHCM.
Lời cảm ơn chân thành và sâu sắc, tôi xin gửi đến gia đình, đã luôn sát cánh và
động viên tôi trong những giai đoạn khó khăn nhất.
TP Hồ Chí Minh, ngày tháng năm
Sinh viên
Võ Đinh Duy
Huỳnh Minh Đức
GVHD: ThS. Huỳnh Ngọc Tín
SVTH: Võ Đinh Duy & Huỳnh Minh Đức
NHẬN XÉT
(Của cơ quan thực tập)
…………………………………………………………………………………
…………………………………………………………………………………
…………………………………………………………………………………
…………………………………………………………………………………
…………………………………………………………………………………
…………………………………………………………………………………
…………………………………………………………………………………
…………………………………………………………………………………
…………………………………………………………………………………
…………………………………………………………………………………
…………………………………………………………………………………
…………………………………………………………………………………
…………………………………………………………………………………
…………………………………………………………………………………
…………………………………………………………………………………
…………………………………………………………………………………
…………………………………………………………………………………
…………………………………………………………………………………
…………………………………………………………………………………
…………………………………………………………………………………
…………………………………………………………………………………
…………………………………………………………………………………
…………………………………………………………………………………
…………………………………………………………………………………
…………………………………………………………………………………
…………………………………………………………………………………
…………………………………………………………………………………
…………………………………………………………………………………
…………………………………………………………………………………
…………………………………………………………………………………
…………………………………………………………………………………
…………………………………………………………………………………
GVHD: ThS. Huỳnh Ngọc Tín
SVTH: Võ Đinh Duy & Huỳnh Minh Đức
NHẬN XÉT
(Của giảng viên hướng dẫn)
…………………………………………………………………………………
…………………………………………………………………………………
…………………………………………………………………………………
…………………………………………………………………………………
…………………………………………………………………………………
…………………………………………………………………………………
…………………………………………………………………………………
…………………………………………………………………………………
…………………………………………………………………………………
…………………………………………………………………………………
…………………………………………………………………………………
…………………………………………………………………………………
…………………………………………………………………………………
…………………………………………………………………………………
…………………………………………………………………………………
…………………………………………………………………………………
…………………………………………………………………………………
…………………………………………………………………………………
…………………………………………………………………………………
…………………………………………………………………………………
…………………………………………………………………………………
…………………………………………………………………………………
…………………………………………………………………………………
…………………………………………………………………………………
…………………………………………………………………………………
…………………………………………………………………………………
…………………………………………………………………………………
…………………………………………………………………………………
…………………………………………………………………………………
…………………………………………………………………………………
…………………………………………………………………………………
…………………………………………………………………………………
GVHD: ThS. Huỳnh Ngọc Tín
SVTH: Võ Đinh Duy & Huỳnh Minh Đức
NHẬN XÉT
(Của giảng viên phản biện)
…………………………………………………………………………………
…………………………………………………………………………………
…………………………………………………………………………………
…………………………………………………………………………………
…………………………………………………………………………………
…………………………………………………………………………………
…………………………………………………………………………………
…………………………………………………………………………………
…………………………………………………………………………………
…………………………………………………………………………………
…………………………………………………………………………………
…………………………………………………………………………………
…………………………………………………………………………………
…………………………………………………………………………………
…………………………………………………………………………………
…………………………………………………………………………………
…………………………………………………………………………………
…………………………………………………………………………………
…………………………………………………………………………………
…………………………………………………………………………………
…………………………………………………………………………………
…………………………………………………………………………………
…………………………………………………………………………………
…………………………………………………………………………………
…………………………………………………………………………………
…………………………………………………………………………………
…………………………………………………………………………………
…………………………………………………………………………………
…………………………………………………………………………………
…………………………………………………………………………………
…………………………………………………………………………………
…………………………………………………………………………………
GVHD: ThS. Huỳnh Ngọc Tín
SVTH: Võ Đinh Duy & Huỳnh Minh Đức
MỤC LỤC.
GVHD: ThS. Huỳnh Ngọc Tín
SVTH: Võ Đinh Duy & Huỳnh Minh Đức
DANH MỤC CÁC BẢNG, SƠ ĐỒ, HÌNH
BẢNG 1.1
SƠ ĐỒ 1.1
HÌNH 1.1
GVHD: ThS. Huỳnh Ngọc Tín
SVTH: Võ Đinh Duy & Huỳnh Minh Đức
-1-
CHƯƠNG 1: TỔNG QUAN VỀ ĐỀ TÀI KHÓA LUẬN.
1.1 ĐẶT VẤN ĐỀ.
Bài báo khoa học (paper) là kết quả công bố của cả một quá trình nghiên cứu miệt
mài của các nhà khoa học. Nội dung các bài báo đề cập đến vấn đề mà nhà khoa học
tham gia nghiên cứu, cách tiếp cận và giải quyết vấn đề đó. Nó được công bố ở các tạp
chí hay các hội nghị khoa học. Các bài báo ấy sẽ làm tài liệu nghiên cứu và đánh giá
cho các nghiên cứu tiếp tục sau này.
Cùng với sự phát triển của khoa học kỹ thuật, số lượng các công trình nghiên cứu
khoa học ngày càng nhiều, thông qua đó số lượng các bài báo cũng tăng lên nhanh
chóng. Điều đó gây khó khăn cho các nhà nghiên cứu trong việc tìm kiếm các bài báo
liên quan đến vấn đề mình cần. Nhưng với sự trợ giúp của những công cụ tìm kiếm
trực tuyến như Google, Yahoo!, Bing … nhà nghiên cứu có thể tìm kiếm được khá đầy
đủ và nhanh chóng những tài liệu mà họ cần. Tuy nhiên, số lượng kết quả trả về của
những công cụ này thường khá lớn, độ chính xác phụ thuộc nhiều vào mức độ cụ thể
của từ khóa tìm kiếm; điều đó đã phần nào gây khó khăn trong việc tìm kiếm chính xác
những tài liệu cần đến.
Do đó, đã nảy sinh ra một vấn đề nghiên cứu mới cần giải quyết là tổ chức lại các
tài liệu khoa học thành một hệ thống nhằm hỗ trợ cho việc tìm kiếm nhanh những tài
liệu liên quan. Để có thể sắp xếp và tổ chức tốt thông tin dữ liệu, chúng ta cần phải rút
trích những thông tin cần thiết từ những tài liệu đó. Quá trình rút trích nhằm lấy ra
những tri thức, những thông tin metadata của tài liệu. Từ đó, các tài liệu có thể được
tìm kiếm dễ dàng nhanh chóng, có định hướng rõ ràng cho quá trình tìm kiếm.
1.2 KHẢO SÁT CÁC NGHIÊN CỨU LIÊN QUAN.
(nhận xét về các pp nc: dữ liệu, phương pháp, độ chính xác, đã giải quyết cái gì ,
cái gì chưa giải quyết dc)
Theo [1], hiện nay chúng ta có hai cách tiếp cận chính trong vấn đề rút trích thông
tin đó là: phương pháp máy học và những phương pháp khác dựa trên luật kết hợp với
các tập từ điển và ontology.
GVHD: ThS. Huỳnh Ngọc Tín
SVTH: Võ Đinh Duy & Huỳnh Minh Đức
-2-
Trong bái báo [Automatic Document Metadata], các tác giả đã đề xuất phương pháp
dùng thuật toán phân lớp SVM (Support Vector Machine) để rút trích thông tin
metadata trong phần đầu (header) của bài báo khoa học. Những thông tin metadata bao
gồm: tên bài báo, tên tác giả, nơi công tác, địa chỉ, chú thích, thư điện tử, ngày xuất
bản, phần tóm tắt, giới thiệu, số điện thoại, khóa chính, địa chỉ web, số trang, số xuất
bản. Đầu tiên, tác giả thực hiện việc phân lớp các dòng vào một hoặc nhiều trong số 15
lớp thông tin metadata. Để làm được điều đó, họ tiến hành rút 23 đặc trưng từ và 15
đặc trưng dòng với sự trợ giúp của các bộ từ điển (như họ và tên người, tên các thành
phố, tiểu bang của Mỹ và Canada, tên các quốc gia, tên tháng và chữ viết tắt của nó),
danh sách các từ (word list) được thống kê trong tập huấn luyện. Trong bước này, việc
phân lớp dòng được thực hiện theo nguyên tắc: một dòng được gán nhãn là lớp C (một
trong 15 lớp metadata) khi trong dòng có chứa các từ thuộc lớp C. Vì thế trong giai
đoạn này, một dòng có thể được gán cho nhiều lớp. Sau khi đã phân lớp dòng, họ sử
dụng kết quả của bước trên để tiến hành phân lớp theo ngữ cảnh. Thông tin ngữ cảnh
được sử dụng là tên nhãn của 5 dòng trước và sau dòng hiện tại. Những thông tin ấy sẽ
được dùng trong một quy trình lặp, liên tục gán nhãn các dòng cho đến khi phần trăm
các dòng được gán nhãn lại so với tổng các dòng trong quá trình phân lớp là 0.7%.
Tiếp đó, họ thực hiện việc rút các thông tin metadata trong các dòng được gán nhiều
nhãn, cũng như rút tên các tác giả nằm tại nhiều dòng khác nhau. Họ sử dụng cùng một
tập huấn luyện và kiểm thử với các phương pháp khác, nhằm so sánh tốt hơn về độ
chính xác trong cách tiếp cận của họ. Tập dữ liệu chứa 935 header của các bài báo
nghiên cứu về khoa học máy tính, trong đó 500 header thuộc tập huấn luyện, còn lại
435 header thuộc tập kiểm thử. Các header này là các đoạn văn bản được chuyển đổi từ
tập tin pdf và ps. Độ chính xác của phương pháp này đạt 92.9%, tốt hơn phương pháp
HMM (Hidden Markov Model). Bài báo đã thực hiện được việc rút thông tin metadata
trong header của các bài báo khoa học với độ chính xác khá cao, là một tài liệu tham
khảo quan trọng cho các nghiên cứu sau này. Nhưng bài báo này chưa đề cập đến vấn
đề rút trích thông tin tham khảo (reference) trong các bài báo. Các thông tin tham khảo
cũng đóng vài trò quan trọng cho việc chỉ mục, kết nối các bài báo khoa học với nhau.
GVHD: ThS. Huỳnh Ngọc Tín
SVTH: Võ Đinh Duy & Huỳnh Minh Đức
-3-
Hình 1: Tổng quan về mô đun huấn luyện về phân lớp dòng.
Ngoài phương pháp SVM, phương pháp máy học sử dụng CRF (Conditional
Random Fields) cũng cho kết quả thực nghiệm khá tốt. CRF là mô hình chuỗi các xác
suất có điều kiện, được huấn luyện để tối đa hóa xác suất điều kiện. Nó là một khung
(framework) cho phép xây dựng những mô hình xác suất để phân đoạn và gán nhãn
chuỗi dữ liệu [John Lafferty, Andrew McCallum, Fernando Pereira. Conditional
Random Fields: Probabilistic Models for Segmenting and Labeling Sequence Data.
2001.]. Trong bài báo [Accurate Information Extraction], các tác giả đã sử dụng CRF
để rút trích thông tin metadata trong 2 tập dữ liệu: một tập chứa header và một tập chứa
phần tham khảo (reference) của các bài báo khoa học. Họ đã tiến hành thử nghiệm trên
các thông số, cũng như các đặc trưng (từ, layout trình bày, từ vựng) khác nhau để có
thể nâng cao độ chính xác của thuật toán CRF. Qua thực nghiệm trên tập chứa header,
CRF có kết quả chính xác là 98.3%, cao hơn cả SVM (92.9%) và HMM (93.1%). Điều
GVHD: ThS. Huỳnh Ngọc Tín
SVTH: Võ Đinh Duy & Huỳnh Minh Đức
-4-
này cũng tương tự đối với tập chứa nội dung tham khảo, CRF có độ chính xác 95.7%,
HMM là 85.1%.
Ngoài ra tác giả Jie Zou cùng các đồng sự [locating] đã đề ra phương pháp rút
trích các thông tin trong phần tham khảo (reference) của các bài báo y khoa dưới định
dạng HTML như tên tác giả, tên bài báo, tên tập chí, ngày xuất bản và những thành
phần khác. Họ dùng thuật toán máy học thống kê để xác định các vùng reference trong
bái báo y khoa dưới định dạng HTML, sau đó sẽ phân tích để xác định các thành phần
trong reference. Chi tiết hai bước xử lý trong phương pháp của họ như sau:
Reference locating: giai đoạn này sẽ xác định vùng tham khảo trong bài báo và
sau đó phân nó thành từng dòng tham khảo độc lập. Các bước thực hiện:
o Biểu diễn bài báo dưới dạng mã HTML, sau đó tạo cây HTML DOM
(Document Object Model) dựa trên những tag HTML đó.
o Tác giả phân các tag HTML thành 2 loại: Line-break tags (những tag
đánh dấu việc phân đoạn như <P>, <TABLE>, <DIV>, <H1>, <BR>) và
Inline tags (những tag không là Line-break tags). Tác giả gom nhóm
những nút DOM là inline liên tiếp nhau để tạo thành zone tree. Mỗi zone
tree chứa các nút DOM inline liên tiếp nhau và một nút line-break. Sau
khi đã xác định các zone tree, tác giả tiến hành loại bỏ các tag HTML, để
có thể tiến hành các bước sau.
o Tiến hành rút trích các đặc trưng, bao gồm 59 đặc trưng về hình học
(geometric) và văn bản (text). 9 đặc trưng đầu được tác giả xác định rõ
(như: số lượng từ trong vùng đó, số lượng từ chỉ có 1 chữ cái và được
viết hoa, số lượng từ chỉ có 2 chữ cái và được viết hoa…). 50 đặc trưng
còn lại là các giá trị nhị phân, chỉ ra một từ nào đó có xuất hiện trong
zone tree không. Để xác định 50 từ này, tác giả dùng công thức độ đo
GSS (?) để tính giá trị các từ, từ đó sắp xếp theo chiều từ cao đến thấp và
lấy 50 từ có giá trị cao nhất.
o Sau đó sử dụng thư viện LibSVM để phân thành 2 lớp: Reference zone
và Non-reference zone. Bộ phân lớp SVM sẽ gán cho mỗi zone tree một
giá trị xác suất.
o Thực hiện vòng lặp heuristic thông qua 3 bước để gán nhãn vùng
reference:
Tìm kiếm một parent zone node, giống với các reference con nhất
(xác suất của vùng reference phải lớn hơn 0.5)
GVHD: ThS. Huỳnh Ngọc Tín
SVTH: Võ Đinh Duy & Huỳnh Minh Đức
-5-
Tìm vị trí của vùng reference đầu tiên và cuối cùng phù hợp nhất.
Gán nhãn tất cả vùng reference liên tục nằm giữa vùng reference
đầu tiên và cuối cùng.
Reference parsing: tác giả sử dụng cả hai phương pháp máy học là CRF và
SVM để tiến hành phân tích reference. Sau đó so sánh hai phương pháp.
o Dùng CRF:
Xây dựng tập từ điển: tên tác giả, tên bài báo, tên tập chí từ dữ
liệu 10 năm của MEDLINE. Bao gồm: 236748 tên tác giả, 108484
tiêu đề bài báo, 6909 tiêu đề tập chí.
Tiến hành rút trích đặc trưng, bao gồm 14 đặc trưng đã được quy
định sẳn. Tất cả các đặc trưng đều là giá trị nhị phân. 3 đặc trưng
đầu là đặc trưng về tên tác giả, tiêu để bài báo, tiêu đề tập chí
được xác định thông qua từ điển đã được biên soạn ở trên.
Dùng MALLET - thư viện máy học JAVA được phát triển bởi
McCallum và các đồng nghiệp, để hiện thực thuật toán phân tích
reference thông qua CRF.
o Dùng SVM: SVM sẽ thực hiện việc phân loại từng từ vào 8 lớp đã được
quy định sẳn (Citation Number, Author Names, Article Title, Journal
Title, Volume, Pagination, Publication Year, Other). SVM sử dụng 15 đặc
trưng để thực hiện việc phân lớp. 14 đặc trưng đầu giống với CRF, đặc
trưng thứ 15 là chuẩn hóa vị trí (normalized position) được tính bằng tỷ
số giữa vị trí từ đó với tổng số từ trong reference đó. Sau khi thực hiện
bước này, tác giả sẽ kiểm tra tính đúng đắn của việc gán nhãn cho từ
thông qua một tập các luật heuristic. Nếu việc gán nhãn ấy không phù
hợp với bất cứ luật nào, thì thuật toán tìm kiếm sẽ được sử dụng để tìm ra
một nhãn thích hợp nhất với xác suất cao nhất.
Tập dữ liệu họ sử dụng là các bài báo được lấy từ thư viện MEDLINE (của U.S
National Library of Medicine). Họ sử dụng hai tập dữ liệu khác nhau cho hai bước xử
lý trong phương pháp của họ. 1000 bài báo từ 100 tập chí (500 bài báo được dùng cho
huấn luyện, 500 bài báo được dùng để kiểm thử) cho bước xử lý Reference Locating.
2400 reference từ 1000 bài báo (600 reference từ 500 bài báo được dủng cho huấn
luyện, 1800 reference từ 500 bài báo được dùng cho kiểm thử). Độ chính xác tổng quát
GVHD: ThS. Huỳnh Ngọc Tín
SVTH: Võ Đinh Duy & Huỳnh Minh Đức
-6-
trong hai thuật toán xử lý reference là trên 99% đối với mức từ, trên 97% đối với mức
nhóm từ (chunk).
Đối với phương pháp sử dụng luật kết hợp với từ điển và ontology thì có nhiều
cách tiếp cận khác nhau. Như trong tài liệu [9], tác giả đã đưa ra gợi ý về phương pháp
rút trích thông tin luận lý (như tiêu đề, tác giả, các định nghĩa, bổ đề …) từ các bài báo
toán học, từ đó xây dựng một trình duyệt tri thức giúp người dùng dễ dàng đọc tài liệu
toán học. Những thông tin metadata được rút ra thông qua thuật toán rút trích luận lý,
bao gồm hai giai đoạn. Đầu tiên, từ một tài liệu toán học ban đầu (chưa được số hóa),
thông qua hệ thống OCR (Optical Character Recognition) nó sẽ được chuyển thành các
hình ảnh bitmap. Kết hợp với hệ thống INFTY, các ảnh này sẽ được chuyển sang các
định dạng khác nhau như: XML (được gọi là KML), HTML, LATEX, Mathematica. Tác
giả tiến hành phân đoạn văn bản (dựa trên các dấu hiệu như: khoảng trắng, kiểu chữ, từ
khóa) để xác định các heading, footnote, số trang, running header. Sau đó tiến hành gán
các nhãn metadata phù hợp cho từng đoạn văn bản dựa trên cách trình bày layout, vị trí
và thông tin kiểu chữ. Việc nhận dạng những thành phần trên chủ yếu dựa vào kinh
nghiệm quan sát cấu trúc trình bày các bài báo toán học. Họ đánh giá trên tập dữ liệu
gồm 29 bài báo toán học bằng tiếng Anh (422 trang, 706297 ký tự), được xuất bản
trong khoảng những năm 1970 – 2000. Kết quả kiểm chứng của phương pháp này đạt
tỷ lệ chính xác khá cao là 93,1%. Hay trong tài liệu [5], tác giả đề ra phương pháp làm
giàu ontology Artist bằng cách rút trích những thông tin liên quan đến các nghệ sĩ như:
ngày sinh, nơi sinh, nơi làm việc, ngày lập gia đình, tiểu sử; từ những kết quả tìm kiếm
trên internet. Để làm được điều này họ đã sử dụng kết hợp GATE (để nhận biết các địa
điểm, tên người, ngày tháng) với ontology Artequakt nhằm để xác định mối quan hệ
giữa các thực thể mà GATE đã xác định được.
Ngoài ra còn có những công cụ đã được nghiên cứu và xây dựng để hỗ trợ việc rút
trích tự động không những là thông tin metadata mà còn những thông tin tri thức khác.
Công cụ Biblio [8] giúp phân tích những bài báo nghiên cứu ở định dạng điện tử nhằm
rút trích tự động những thông tin hỗ trợ cho các tác giả tìm kiếm những thông tin liên
quan đến kết quả bài báo mình cần công bố. Công cụ này còn giúp cho người dùng tập
trung vào những thông tin tri thức quan trọng trong bài báo như vấn đề trình bày của
bài báo là gì, đóng góp chính của bài báo, công việc sắp tới, mục tiêu. Các tác giả sử
dụng tập dữ liệu đánh giá gồm 60 bài báo khoa học máy tính được xuất bản ở những
năm, các sự kiện khác nhau, có các khuôn mẫu trình bày khác nhau. Mức độ chính xác
của các thông tin được rút ra bằng Biblio khá cao từ 91% -> 100% tùy theo từng loại
thông tin.
GVHD: ThS. Huỳnh Ngọc Tín
SVTH: Võ Đinh Duy & Huỳnh Minh Đức
-7-
Hình 2: Giao diện của công cụ Biblio.
Min-Yuh Day cùng các đồng sự [A knowledge-based] đã sử dụng công cụ
INFOMAP, công cụ biểu diễn tri thức dựa trên ontology, để thực hiện rút trích các
thông tin như: tên tác giả, tiêu đề, tạp chí, chương, năm xuất bản, số trang từ các kiểu
định dạng tham khảo (reference) khác nhau (BIOI, ACM, IEEE, APA, JCB, MISQ). Họ
đã thu thập 907 bản ghi (record) thông tin tham khảo từ thư viện số PubMed. Các
thông tin tham khảo thuộc một trong 6 kiểu định dạng tham khảo bên trên. Sau đó, họ
lựa chọn ngẫu nhiên 500 bản ghi để thực hiện kiểm thử. Kết quả chính xác của cách
tiếp cận này là 97.87%. Trong tương lai, họ dự định sẽ tích hợp cả hai phương pháp:
ontology và máy học với nhau để nâng cao độ chính xác của việc rút thông tin tham
khảo, cũng như xây dựng các khuôn mẫu (prototype) tốt hơn để xử lý các kiểu định
dạng tham khảo tự do, không theo bất kỳ định dạng nào.
1.3 MỤC TIÊU ĐỀ TÀI.
Rút trích những thông tin metadata của các tài liệu khoa học, bao gồm: tiêu đề,
tác giả, nơi công tác, email, tóm tắt, các tài liệu tham khảo, chủ đề.
GVHD: ThS. Huỳnh Ngọc Tín
SVTH: Võ Đinh Duy & Huỳnh Minh Đức
-8-
Nghiên cứu sẽ tập trung vào các phương pháp để thực hiện việc rút trích các bài
báo khoa học (paper) dưới định dạng là tập tin PDF, được tải về từ trang
CiteSeerX ().
Đánh giá so sánh kết quả trên cùng một tập dữ liệu, phân tích ưu thế và nhược
điểm của từng phương pháp.
1.4 PHẠM VI ĐỀ TÀI.
Đối tượng dữ liệu của đề tài là các bài báo khoa học và có các định dạng phổ
biến như pdf, doc.
Tập trung vào những phương pháp rút trích metadata hiện nay:
o Luật: Dựa trên GATE Framework.
o Máy học: tập trung vào phương pháp SVM.
1.5 PHƯƠNG PHÁP VÀ NỘI DUNG THỰC HIỆN.
Đặc tả hệ thống:
o Hệ thống được xây dựng nhằm thực hiện việc rút trích thông tin metadata
dựa trên hai phương pháp là máy học (SVM và CRF) và tập luật (dựa
trên GATE Framework).
o Dữ liệu đầu vào của hệ thống là các bài báo khoa học dưới định dạng là
các file pdf, doc
o Đầu ra là những thông tin metadata, có thể được lưu trữ dưới dạng file
xml, hoặc lưu trữ thông cơ sở dữ liệu database.
o Chương trình còn cho phép người dùng chỉnh sửa thông tin rút trích
trước khi xuất ra.
Cách tiếp cận: sử dụng cả hai phương pháp: máy học và tập luật.
GVHD: ThS. Huỳnh Ngọc Tín
SVTH: Võ Đinh Duy & Huỳnh Minh Đức
-9-
1.6 KẾT QUẢ DỰ KIẾN.
Xây dựng thành công công cụ rút trích thông tin metadata từ các bài báo khoa
học.
Kết quả của việc rút trích phải đạt độ chính xác từ 90% trở lên.
Hoàn thành báo cáo khóa luận tốt nghiệp với nội dung đầy đủ và chính xác.
1.7 BỐ CỤC BÁO CÁO.
CHƯƠNG 2: CƠ SỞ LÝ THUYẾT.
2.1. PHƯƠNG PHÁP LUẬT.
2.1.1. LUẬT NGỮ PHÁP JAPE.
2.1.1.1. GIỚI THIỆU VỀ JAPE.
JAPE (Java Annotation Patterns Engine) là một thành phần của GATE, dùng để
nhận biết các thực thể được định nghĩa trước thông qua các luật, là ngôn ngữ dùng để
viết biểu thức đặc tả (RE – Regular expression) thông qua chú thích [4].
2.1.1.2. LUẬT JAPE.
Ngữ pháp JAPE bao gồm một tập các phase, mỗi phase có thể chứa nhiều luật
tương đương với định dạng các pattern khác nhau. Luật JAPE luôn luôn bao gồm 2 vế:
trái (Left) và phải (Right). Vế trái của luật chứa những mô tả về pattern. Chúng có thể
chứa các toán tử regular expression (như: *, ?, +). Vế phải bao gồm các chú thích do ta
tự định nghĩa, chúng chứa thông tin về tên nhãn. Ngoài ra vế phải có thể chứa mã code
Java để tạo hoặc chỉnh sửa các chú thích.
Sau đây là một ví dụ đơn giản:
1. Phase: Jobtitle
2.
Input: Lookup
3.
Options: control = brill
4.
GVHD: ThS. Huỳnh Ngọc Tín
SVTH: Võ Đinh Duy & Huỳnh Minh Đức
- 10 -
5.
Rule: Jobtitle1
6.
(
7.
{Lookup.majorType == jobtitle}
8.
)
9.
:jobtitle
10.
-->
11.
:jobtitle.JobTitle = {rule = "Jobtitle"}
Vế trái được cách biệt với vế phải thông quan dấu “-->”. Trong ví dụ trên, chúng
ta khai báo một luật tên là “Jobtitle”. Mục đích là để gán nhãn những từ mà trước đó đã
được gán nhãn là “Lookup” (nhãn “Lookup” được gán thông qua quá trình xử lý
Gazetteer), với đặc tính “majorType” là “jobtitle” thành một nhãn mới tên là “JobTitle”
Dòng 1 “Phase: Jobtitle”: như đã nói trên ngữ pháp JAPE bao gồm một tập các
phase, trong từng phase có thể chứa nhiều luật khác nhau, tương ứng với nhiều
pattern khác nhau. Tên của từng phase là duy nhất, không được lặp lại. Ở đây ta
đặt tên cho phase này là “Jobtitle”. Tên của phase không cần phải nhất thiết
giống tên của file chứa phase. Ví dụ phase “Jobtitle” có thể được đặt trong file
idrs_jobTitle.jape
Dòng 2 “Input: Lookup”: đối số đầu vào của phase là “Lookup”. Các đối số này
phải được khai báo ở đầu mỗi phase. Nếu nó không được khai báo thì đối số
mặc định sẽ là “Token”, “SpaceToken”, “Lookup”. Chúng ta chỉ nên khai báo
những đối số đầu vào nào cần thiết dùng tới, khi khai báo nhiều sẽ làm chậm đi
tốc độ xử lý của luật.
Dòng 3 “Options: control = brill”: tùy chọn option có thể là
o Control: khai báo cách thức so khớp luật. Có 5 tùy chọn {brill, all, first,
once, appelt}.
GVHD: ThS. Huỳnh Ngọc Tín
SVTH: Võ Đinh Duy & Huỳnh Minh Đức
- 11 -
o Debug: khi được xét là true, nếu luật đang xét ở chế độ appelt, thì những
xung đột trong quá trình gán nhãn sẽ được trình bày qua cửa sổ message
Dòng 5 “Rule: Jobtitle1 ”: tên của luật là “Jobtitle1”
Dòng 6, 7, 8, 9: là một pattern, nó định nghĩa là một từ hay một ngữ nào đó
được gán nhãn là “Lookup” có giá trị đặc tính “majorType” là “jobtitle” thì sẽ
được gán nhãn phụ là “jobtitle”. Nhãn phụ này sau đó sẽ được sử dụng bên vế
phải. Các nhãn phụ không được trùng nhau trong cùng một rule.
Dòng 10 ”-->”: là dấu hiệu ngăn cách giữa vế trái và vế phải.
Dòng 11 “:jobtitle.JobTitle = {rule = "JobTitle1"}”: dòng này ta sẽ gán nhãn
chính thức cho một từ hay một ngữ mà có nhãn phụ là “jobtitle” và có luật là
“JobTitle1”.
2.1.1.3. ĐỘ ƯU TIÊN TRONG JAPE.
Như đã nói trên, JAPE cung cấp 5 tùy chọn option đó là: brill, all, first, once,
appelt. Các tùy chọn này được khai báo ở đầu mỗi phase.
2.1.1.3.1.
BRILL.
Khi có nhiều hơn một luật trong cùng một vùng của tài liệu, thì tất cả các luật
này sẽ được chọn. Vì thế một vùng của tài liệu có thể được gán nhãn bằng nhiều tên
khác nhau, nên đối số “Priority” lúc này là không cần thiết.
Brill sẽ thực thi tất cả các luật phù hợp. Các luật này sẽ gán nhãn cho một vùng
tài liệu phù hợp với luật mà có độ lớn dài nhất.
2.1.1.3.2.
ALL.
Chế độ All cũng tương tự giống với Brill, nó cũng sẽ thực thi tất cả các luật nào
phù hợp, nhưng chế độ so khớp vẫn tiếp tục thực thi từ một vùng tài liệu đã được gán
nhãn, thông qua luật này, trước đó.
Ví dụ: aaabbb
GVHD: ThS. Huỳnh Ngọc Tín
SVTH: Võ Đinh Duy & Huỳnh Minh Đức
- 12 -
Khi áp dụng chế độ All thì ví dụ trên sẽ được gán nhãn như sau: [aaa[bbb]]. Vì
aaabbb và bbb cùng so khớp phù hợp với luật. Nếu chúng ta áp dụng luật Brill vào ví
dụ này thì nó sẽ được gán nhãn như sau [aaabbb].
2.1.1.3.3.
FIRST.
Chế độ này sẽ lựa chọn luật phù hợp đầu tiên để gán nhãn. Khi một luật đã được
chọn, thì chế độ này sẽ không cố gắng so khớp để có thể tìm ra vùng tài liệu phù hợp
dài hơn.
2.1.1.3.4.
ONCE.
Chế độ này sẽ lựa chọn luật phù hợp thứ hai sau luật phù hợp thứ nhất.
2.1.1.3.5.
APPELT.
Với chế độ này thì chỉ có một luật được chọn cho một vùng của tài liệu, tùy theo
độ ưu tiên của tập luật. Độ ưu tiên sẽ được chọn theo các tiêu chí sau:
1. Tất cả các luật phù hợp với một vùng của văn bản ngay tại điểm bắt đầu, thì luật
tương ứng với vùng dài nhất sẽ được chọn.
2. Nếu có nhiều luật cùng phù hợp cho một vùng tài liệu, thì luật có độ ưu tiên cao
nhất sẽ được chọn.
3. Nếu có nhiều luật cùng có độ ưu tiên, thì luật nào được định nghĩa trước nhất sẽ
được chọn.
4. Nếu tất cả những độ ưu tiên trên đều bằng nhau thì JAPE sẽ chọn luật một cách
ngẫu nhiên.
Đối số độ ưu tiên “Priority” được khai báo kèm theo mỗi luật. Nó là một con số
nguyên dương; giá trị của đối số càng lớn thì có độ ưu tiên càng cao. Khi một luật
không được khai báo đối số này, thì sẽ có giá trị mặc định là -1 (giá trị thấp nhất).
2.1.1.4. VẾ TRÁI (LEFT-HAND SIDE).
Vế trái của ngữ pháp JAPE cho phép ta xây dựng các pattern để so khớp, tìm ra
những vùng phù hợp trong tài liệu. Một pattern có thể được định nghĩa để so khớp với
một chuỗi cụ thể nào đó trong tài liệu, hay có thể so khớp với những vùng tài liệu đã
GVHD: ThS. Huỳnh Ngọc Tín
SVTH: Võ Đinh Duy & Huỳnh Minh Đức
- 13 -
được gán nhãn trước đó. Ngoài ra JAPE còn cung cấp những toán tử nhằm cho phép
định nghĩa các pattern một cách uyển chuyển; cho phép khai báo các MACRO để sử
dụng lại các pattern đã được định nghĩa trước đó.
2.1.1.4.1.
SO KHỚP VỚI CHUỖI KÝ TỰ.
Phase: UrlPre
Input: Token SpaceToken
Options: control = appelt
Rule: Urlpre
(
(({Token.string == "http"} |
{Token.string == "ftp"})
{Token.string == ":"}
{Token.string == "/"}
{Token.string == "/"}
)
|
( {Token.string == "www"}
{Token.string == "."}
)
): urlpre
-->
:urlpre.UrlPre = {rule = "UrlPre"}
Luật trên định nghĩa một pattern cho phép nhận dạng tiền tố Url như http://,
ftp:// hay www. Quan sát ví dụ ta thấy loại chú thích (Annotation) Token và đặc tính
string của nó đã được sử dụng đến. Đặc tính string cho phép lấy ra chuỗi ký tự của
Token. Dùng toán tử “= =”để so sánh chuỗi ký tự trong Token với một chuỗi ký tự cụ
thể nào đó. Ví dụ trên cho ta thấy một pattern có thể được định nghĩa để so khớp với
những chuỗi ký tự cụ thể nào đó. Nếu chuỗi ký tự ấy xuật hiện trong tài liệu, thì nó sẽ
được gán một nhãn thích hợp.
GVHD: ThS. Huỳnh Ngọc Tín
SVTH: Võ Đinh Duy & Huỳnh Minh Đức
- 14 -
2.1.1.4.2.
SO KHỚP VỚI NHỮNG LOẠI CHÚ THÍCH KHÁC
(ANNOTATION TYPES).
Ngoài khả năng so khớp với những chuỗi ký tự cụ thể, luật ngữ pháp JAPE còn
cho phép so khớp với những loại chú thích khác, đã được xử lý gán nhãn, trong các
module trước đó như: gazetteer, tokeniser, hoặc các module khác.
Rule: Known
Priority: 100
(
{Location}|
{Person}|
{Date}|
{Organization}|
{Address}|
{Money} |
{Percent}|
{Token.string == "Dear"}|
{JobTitle}|
{Lookup}
):known
-->
{}
Ví dụ trên cho thấy ta có thể sử dụng kết hợp các loại so khớp cùng với nhau.
Mỗi loại chú thích (Annotation Type) có những đặc tính khác nhau, vì thế chúng ta có
thể tận dụng những đặc tính này để định nghĩa các pattern một các linh hoạt hơn.
Tên loại chú Đặc tính
Giải thích
Các giá trị
Tên từ loại của Token
NN (Danh từ)
thích
(Annotation
Type)
Token
category
GVHD: ThS. Huỳnh Ngọc Tín
SVTH: Võ Đinh Duy & Huỳnh Minh Đức
- 15 -
NNP (Ngữ danh từ)
JJ (Tính từ)
DT (mạo từ)
….
kind
Loại của Token
word (từ)
number (số)
punctuation (dấu câu)
symbol (ký tự)
length
Số lượng ký tự có trong Là một số nguyên dương
Token
orth
(>=1).
Cho biết trạng thái các ký upperInitial (chữ cái đầu
tự trong Token là viết hoa viết hoa, các chữ còn lại
hay viết thường.
thì không).
allCaps (tất cả các ký tự
đều viết hoa).
lowercase (tất cả các ký
tự đều viết thường).
mixedCaps (có cả ký tự
viết hoa và viết thường
trong chuỗi Token)
string
Chuỗi ký tự của Token
Chuỗi ký tự String
position
Đặc tính này chỉ xuất hiện startpunct
khi Token là dấu câu
GVHD: ThS. Huỳnh Ngọc Tín
SVTH: Võ Đinh Duy & Huỳnh Minh Đức
- 16 -
Lookup
majorType
“(”,“)”,“[”,“]”,
endpunnct
Loại nhãn chính
person_first
org_base
org_key
…
minorType
Loại nhãn phụ
Một Lookup có đặc tính
majorType
là
person_first,
thì
minorType của nó có thể
là female hoặc male.
SpaceToken
kind
Loại của SpaceToken
Space
(khoảng
trắng
trong một dòng)
Control (khoảng trắng
xuống dòng)
length
Chiều dài SpaceToken
Là một số nguyên dương
(>=1).
Split
kind
Loại của Split
internal (dấu chấm hết
câu)
external
(dấu
xuống
dòng)
Bảng 3: Các đặc tính của một vài loại chú thích.
2.1.1.4.3.
MACRO.
Macro cho phép chúng ta tạo ra những pattern mà có thể sử dụng lại nhiều lần
trong luật JAPE.
GVHD: ThS. Huỳnh Ngọc Tín
SVTH: Võ Đinh Duy & Huỳnh Minh Đức
- 17 -
Phase: Number
Input: Token Lookup
Options: control = appelt
Macro: MILLION_BILLION
({Token.string == "m"}|
{Token.string == "million"}|
{Token.string == "b"}|
{Token.string == "billion"}|
{Token.string == "bn"}|
{Token.string == "k"}|
{Token.string == "K"}
)
Macro: NUMBER_WORDS
(
(({Lookup.majorType == number}
({Token.string == "-"})?
)*
{Lookup.majorType == number}
{Token.string == "and"}
)*
({Lookup.majorType == number}
({Token.string == "-"})?
)*
{Lookup.majorType == number}
)
Macro: AMOUNT_NUMBER
(({Token.kind == number}
(({Token.string == ","}|
{Token.string == "."}
)
GVHD: ThS. Huỳnh Ngọc Tín
SVTH: Võ Đinh Duy & Huỳnh Minh Đức
- 18 -
{Token.kind == number}
)*
|
(NUMBER_WORDS)
)
(MILLION_BILLION)?
)
Rule: MoneyCurrencyUnit
(
(AMOUNT_NUMBER)
({Lookup.majorType == currency_unit})
)
:number -->
:number.Money = {kind = "number", rule = "MoneyCurrencyUnit"}
Trong ví dụ trên, chúng ta thấy các Macro được sử dụng lồng vào nhau, macro
này gọi macro kia. Điều này làm cho cấu trúc JAPE được rõ ràng, lành mạch, giúp
cho chúng ta dễ dàng quan sát và sửa chữa khi gặp lỗi. Ví dụ đưa ra một pattern để
nhận diện một con số là một khoản tiền.
2.1.1.4.4.
TOÁN TỬ TẠI VẾ TRÁI.
Nhóm toán tử Ký hiệu
Giải thích
Ví dụ
Union
({Lookup.majorType == lo
và |
Hoặc
cation} |
Kleene
{Lookup.majorType == c
ountry_adj})
*
?
Xuất hiện 0 hoặc nhiều ({Lookup.majorType == lo
lần
cation})*
Xuất hiện 0 hoặc 1 lần
({Lookup.majorType == or
ganization})?
GVHD: ThS. Huỳnh Ngọc Tín
SVTH: Võ Đinh Duy & Huỳnh Minh Đức
- 19 -
+
Xuất hiện 1 hoặc nhiều ({Lookup.majorType == co
untry_adj})+
lần
Range
[number1,
So khớp số lượng chú ({Token})[1,3] : so khớp
number2]
thích từ number1 đến
number2
[number]
từ 1 đến 3 Token trong
một dòng
So khớp chính xác chú ({Token.kind==number})
thích theo số number
[3] : so khớp chính xác
3
Token
loại
number
trong một dòng.
Equality
==
{Lookup.majorType ==
So sánh bằng
"person"}
!=
{Lookup.majorType !=
So sánh không bằng
"person"}
Comparison
Regular
<
So sánh bé hơn
{Token.length < 3}
<=
So sánh bé hơn bằng
{Token.length <= 3}
>=
So sánh lớn hơn bằng
{Token.length >= 3}
>
So sánh lớn hơn
{Token.length > 3}
=~
So
sánh
gần
So
khớp
với
Expression
bằng. {Token.string =~
regular
“[Dd]ogs”}
expression
==~
So
So
sánh
khớp
với
bằng. {Token.string ==~
regular
“[Dd]ogs”}
expression.
!~
So sánh không gần bằng. {Token.string !~
So
khớp
với
regular
“[Dd]ogs”}
expression
GVHD: ThS. Huỳnh Ngọc Tín
SVTH: Võ Đinh Duy & Huỳnh Minh Đức