Tải bản đầy đủ (.docx) (16 trang)

báo cáo sứ lý ngôn ngữ tự nhiên đề tàitích hợp bộ phân tích cấu trúc vào gate

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (528.56 KB, 16 trang )

ĐẠI HỌC BÁCH KHOA HÀ NỘI
Viện Công Nghệ Thông Tin và Truyền Thông
BÁO CÁO BÀI TẬP LỚN
XỬ LÝ NGÔN NGỮ TỰ NHIÊN
Đề tài:Tích hợp bộ phân tích cấu trúc vào GATE
Nhóm sinh viên thực hiện :
Trần Quốc Việt 20083160
Nguyễn Đức Thắng 20082468
Nguyễn Hoàng Huy 20081144
Nguyễn Văn Quang 20082073
Đậu Lê Trung 20082772
Giáo viên hướng dẫn :
TS. Lê Thanh Hương
Hà Nội, Tháng 5 năm 2012
1
Mục Lục
2
I. Tổng quan về phân tích cấu trúc
Việc nghiên cứu phân tích cấu trúc là một việc rất quan trọng, vì nó được ứng dụng trong rất
nhiều bài toán khác nhau trong xử lý ngôn ngữ tự nhiên như dịch máy, web ngữ nghĩa, thu thập,
phân tích thông tin,… Để tăng hiệu quả của các bài toán này, một việc không kể đến đó là bài
toán phân tích cấu trúc câu.
Từ một câu văn, qua bộ phân tích cú pháp ta sẽ được một cây cú pháp, sau khi tính điểm cho cây
cú pháp này để lựa chọn cấu trúc phù hợp ta sẽ tăng tính chính xác được cho bộ phân tích cú
pháp này. Hiện nay các bộ phân tích cú pháp đạt được kết quả rất cao như Eisner, Collins,
Chaniak,…
Ví dụ:
Từ một câu văn: “Bò vàng gặm cỏ”
Ta sẽ phân tích được cây cú pháp như sau:
1. Phân tích cú pháp theo kiểu từ trên xuống:
Khởi đầu với danh sách các ký hiệu cần triển khai (S, NP, VP)


Viết lại các tập đích trong tập đích bằng cách:
Tìm luật có vế trái trùng với luật cần triển khai.
Triển khai nó với vế phải luật, tìm cách khớp với câu đầu vào.
Nếu một đích có nhiều cách viết lại -> chọn một luật để áp dụng (Bài toán tìm kiếm)
3
Có thể sử dụng tìm kiếm rộng (Breath first search) hoặc tìm kiếm sâu (depth first search)
Khi phân tích có các khó khăn sau:
Các luật đệ quy trái
Phân tích cú pháp từ trên xuống rất bất lợi khi có nhiều luật ở cùng vế trái.
Nhiều thao tác thừa, triển khai tất cả các nút có thể phân tích từ trên xuống.
Phân tích cú pháp làm việc tốt khi có chiên lược điều khiển ngữ pháp phù hợp
PTCP trên xuống không thể triển khai các ký hiệu tiền kết thúc. Trên thực tế
người ta dùng phương pháp dưới lên để làm việc này.
Lặp lại công việc bất cứ chỗ nào có cấu trúc giống nhau.
2. Phân tích cú pháp theo kiểu từ dưới lên:
 Các bước:
o Hướng dữ liệu
o Khởi tạo với xâu cần phân tích.
o Nếu chuỗi trong tập đích phù hợp với vế phải của một luật -> thay nó bằng vế
trái của luật.
o Kết thúc tập đích = {S}
o Nếu vế phải của luật khớp với nhiều luật trong tập đích, cần lựa chọn luật để
áp dụng.
o Có thể sử dụng tìm kiếm rộng hoặc tìm kiếm sâu.
 Khó khăn với ptcp từ dưới lên:
o Không hiệu quả khi có nhiều nhập nhằng ở mức từ vựng
o Lặp lại công việc bất cứ khi nào có công việc có cấu trúc con chung.
o Cả PTCP TD và BU đều có độ phức tạp là hàm mũ của độ dài câu.
II. Tổng quan về phần mềm GATE
Giới thiệu phần mềm GATE:

Các ứng dụng liên quan đến phân tích nội dung tài liệu như : xác định ranh giới các đối tượng
trong tài liệu như : từ, ngữ, đoạn, câu đến việc gán nhãn ngữ pháp (từ gốc, từ loại) hay nhãn
ngữ nghĩa cho các đối tượng và rút trich thông tin từ nội dung tài liệu để phục vụ cho một lớp
các ứng dụng khác nhau như : lập chỉ mục, tìm kiếm, phân lớp Các ứng dụng này thao tác trên
một tài liệu hay một tập các tài liệu, được gọi là kho tài liệu (corpus) và có thể sử dụng một số tài
nguyên ngôn ngữ học như các các danh sách cho trước (Gazetteers), danh mục từ (lexicons), hay
các ontologies.
4
Nếu các ứng dụng này được phát triển một cách rời rạc, thao tác trên những kho tài liệu với định
dạng khác nhau thì sẽ dẫn đến một hệ quả là không thể tích hợp trao đổi kết quả với nhau, mà
đây là yêu cầu không thể thiếu được trong xử lý tài liệu : kết quả của một ứng dụng này có thể là
đầu vào cho một ứng dụng khác để hình thành một ứng dụng hoàn chỉnh. Ví dụ : chúng ta cần có
một ứng dụng rút trích các thực thể được định danh (bài toán NER : Named Entity Recognition),
chúng ta sẽ phải thực hiện việc : xác định ranh giới từ (Word Segmentation), gán nhãn từ loại
cho từ (POS Tagging), rút trích cụm từ (chunking).
Nếu các bài toán (con) này được cài đặt theo cách khác nhau, thao tác trên những định dạng tài
liệu khác nhau thì rất khó để có thể kết nối chúng lại với nhau. Chính vì lý do đó nếu chúng ta
nhìn bài toán xử lý tài liệu ở mức độ tổng quát hơn, xác định rõ các đối tượng dữ liệu cũng như
xử lý tham gia vào bài toán này từ đó đưa ra một khung phần mềm (Software
Framework/Software Architecture) thống nhất để tích hợp chúng lại với nhau trong một thể hoàn
chỉnh thì sẽ dễ dàng cho việc phát triển, tích hợp cũng như tiến hóa của cả hệ thống xử lý tài liệu.
GATE không phải là một phần mềm ứng dụng cụ thể, mà là một hệ thống các phương pháp và
công cụ phần mềm để xây dựng và phát triển các ứng dụng xử lý ngôn ngữ tự nhiên, đặc biệt là
để rút trích thông tin.
GATE là một kiến trúc phần mềm tổng quát cho công nghệ xử lý văn bản do nhóm của giáo sư
Cunninggham tại đại học Sheffield Anh quốc phát triển từ năm 1997. GATE dựa trên quan điểm
về các đối tượng liên quan đến xử lý tài liệu như đã nêu trong phần trên. GATE cung cấp một
khung cơ bản và đầy đủ các công cụ như : quản lý các đối tượng dữ liệu (trong GATE được gọi
5
là Language Resources), các đối tượng xử lý (trong GATE được gọi là các Process Resources) và

các đối tượng thể hiện (Visual Resources). GATE cho phép làm việc với các loại tài liệu khác
nhau như : text, pdf, xml …Các đối tượng xử lý được thiết kế dưới dạng các công cụ gắn vào
(plugin) cho phép dễ phát triển thêm và tích hợp vào các công cụ cho sẳn. GATE cũng cho phép
kết nối với các công cụ khác như : máy học (machine learning), truy tìm thông tin (information
retrieval)…GATE cũng cung cấp một giao diện đồ họa (GUI) cho phép người dung tương tác với
hệ thống. Các thư viện của GATE cung cấp một khả năng lập trình API khá linh hoạt cho việc
phát triển các tài nguyên xử lý cũng như các ứng dụng.
GATE được phát triển bắng ngôn ngữ lập trình Java.
GATE được phát triển bởi một nhóm nghiên cứu của Trường Đại học Sheffield, Anh Quốc từ
năm 1995. Từ đó đến nay, đã có nhiều phiên bản của GATE được giới thiệu. Phiên bản đầu tiên
GATE 1.0 được giới thiệu vào năm 1996. Phiên bản GATE 3.1 beta1 được giới thiệu vào tháng
12 năm 2005, GATE đã nhiều lần nâng cấp với các phiên bản Release 6.0-beta 1 tạo ngày
21/08/2010 và phiên bản mới nhất là Release 6.0 (08/10/2010). Hiện nay, GATE đang được sử
dụng rộng rãi trong các dự án nghiên cứu và phát triển trong lĩnh vực rút trích thông tin trên
nhiều ngôn ngữ như tiếng Anh, Hy Lạp, Tây Ban Nha, Thụy Điển, Đức, Ý, Pháp, nhưng GATE
chưa hỗ trợ cho tiếng Việt. GATE cũng hỗ trợ rất mạnh cho việc phát triển Web có ngữ nghĩa.
GATE được hiện thực bằng ngôn ngữ Java và là phần mềm mã nguồn mở theo bản quyền của
GNU. Hiện nay, phiên bản GATE 6.0 hỗ trợ bốn hệ điều hành khác nhau là Windows, Linux
(x86), Solaris/SPARC, và Mac OS X. Với Mac OS X, GATE hỗ trợ rất nhiều ngôn ngữ để người
sử dụng lựa chọn cho phù hợp với ngôn ngữ của hệ điều hành.
6
Giao diện chính của GATE
- Hiển thị cửa sổ chính của GATE
- Phía bên trái, nhánh cây bắt đầu từ ‘GATE’ và chứa các ứng dụng ‘Language Resouces’,
‘Processing Réources’, ‘Datastores’, …
- Góc dưới bên trái, hình chữ nhật quan sát chi tiết đối tượng.
- Phần trung tâm có chứa các tab với nội dung dữ liệu, hoặc tên của một đối tượng, đây cũng là
khung chính
- Dưới cùng là thanh trạng thái.
GATE hỗ trợ các nhà nghiên cứu và phát triển phần mềm theo ba khía cạnh:

- Kiến trúc phần mềm (Software Architecture)
- Khung làm việc (Framework) – Giúp xây dựng hoàn chỉnh các tài nguyên trong một ứng dụng
về xử lý ngôn ngữ tự nhiên
- Môi trường phát triển (Development Environment)
7
Ba hướng phát triển này trên tạo nên sức mạnh của GATE, trong đó kiến trúc phần mềm là
hướng hỗ trợ đáng chú ý nhất. Kiến trúc phần mềm liên quan đến cấu trúc tổ chức của một hệ
thống phần mềm. Nó định nghĩa hầu hết mọi thứ bằng một thuật ngữ là thành phần (Component),
phân chia hệ thống thành các thành phần tương ứng và đảm bảo rằng sự tương tác giữa các thành
phần này phải thoả mãn các yêu cầu của hệ thống. Mỗi thành phần là một module thực hiện một
nhiệm vụ cụ thể nào đó và có thể được tái sử dụng khi cần thiết.
Chúng ta có thể hiểu GATE framework như là một kết nối backplane vào trong đó người dùng có
thể kết nối các thành phần CREOLE. Người sử dụng cung cấp hệ thốngmột danh sách các URL
để tìm kiếm khi khởi động lên, và các thành phần ở nạp bởi hệ thống. Thực hiện kết nối
backplane với những tính năng sau:
- Quản lý và hiển thị cấu trúc dữ liệu cho các loại thông tin chung
- Tổng quát dữ liệu lưu trữ và quá trình thực hiện.
Một tập hợp các thành phần cộng với khung làm việc một bộ phận triển khai có thểđược gắn
trong ứng dụng khác. Hầu hết những thành phần cơ bản. những tài nguyên của GATE đều là Java
Beans, mô hình nền tảng Java của các thành phần. Beans khá đơn giản và các lớp Java tuân theo
một quy ước nhất định.
GATE sử dụng các quy ước JavaBeans xây dựng và cấu hình tài nguyên trong lúc thực thi.
GATE còn cung cấp văn phạm JAPE (Java Annotation Patterns Engine) là một ngôn ngữ tổng
quát dùng đặc tả các mẫu nhận dạng để rút trích thông tin, qua đó người dung có thể sử dụng
JAPE để lập trình cho vấn đề nghiên cứu của mình.
Ngoài ra hệ thống con ANNIE (A Nearly – New IE) của GATE gồm các công cụ xử lý chuyên
sâu về xử lý ngôn ngữ tự nhiên như Unicode Tokeniser , FS Gazetteer Loopup, Sentence Tagger,
Name Matcher …
8
III. Sử dụng plugin của GATE để phân tích cú pháp:

1. MiniPar Parser:
Đây là một bộ phân tích cú pháp đơn giản. Về cơ bản bộ phân tích cú pháp này sẽ tách
một đoạn văn thành các câu đơn và xử lý đối với câu đơn này. Đầu vào của hàm xử lý
trong mini parser là 1 câu văn, nó sẽ xác định sự phụ thuộc của các từ trong 1 câu văn, nó
sẽ phân tích 1 câu và đưa ra các thông tin sau:
9
• Chức năng của từ này.
• Giải thích của từ này.
• Từ gốc khi chưa có biến đổi của từ này.
• Tên mối quan hệ của từ này với từ gốc.
• Chức năng của từ gốc.
Chính vì vấn đề này nên việc phân tích cấu trúc của bộ phân tích này còn quá đơn giản.
MiniParser là một bộ phân tích cú pháp riêng, nó hỗ trợ thư viện cho người lập trình để
có thể phân tích cú pháp câu. Tuy nhiên, GATE có một plugin hỗ trợ cho việc này. Để
giúp cho việc phân tích cú pháp đơn giản hơn.
Trong plugin MiniParser của gate này nó hỗ trợ chú thích cho các từ trong văn bản theo
loại “DepTreeNode” và chú thích mối quan hệ của từ gốc với từ này, và từ trước nó với
từ này.
Tuy nhiên, đầu vào cho bộ phân tích này phải có một bộ phân tích câu trước đó. Để đưa
vào cho bộ phân tích này chỉ là từng câu một. Nó sẽ phân tích câu này thành các thẻ một,
với mỗi thẻ là các từ và các chú thích cho từ đã phân tích được này.
Chú thích của từ bao gồm:
• child_word: đây là từ cần chú thích.
• child_id: ID của từ cần chú thích, nó bao gồm cả quan hệ với từ gốc.
• head_word: đây là từ gốc của từ được phân tich.
• head_id: ID của từ gốc được thay thế bởi từ phân tích.
10
Đây là kết quả của việc phân tích một bài chú thích của chương trình GATE.
Plugin này hỗ trợ cho cả người dùng sử dụng linux và windows.
Plugin này gồm có các file đi kèm cần thiết:

• MiniparWrapper.jar: Đây là plugin thực sự của GATE, file này có chức năng là giao tiếp
giữa phần mềm MiniPar parser và GATE để giúp việc lấy annotation ở trong GATE đưa
ra cho bộ phân tích, đồng thời đưa kết quả phân tích cấu trúc ra để đưa vào GATE tạo
thành annotation mới.
• creole.XML: Đây là file định nghĩa các thông số mà MiniparWrapper.jar cần thiết để yêu
cầu người dùng nhập vào khi mở bộ phân tích này.
• minipar.linux: Phần mềm phân tích cấu trúc của MiniPar, phần mềm này có thể chạy độc
lập và phân tích, plugin có yêu cầu phải phân tích và đưa vào chương trình GATE.
• minipar-windows.exe : giống như minipar.linux, nhưng đây là phiên bản để chạy trên
windows.
11
Các thông số cân thiết để đưa vào bộ phân tích này:
• annotationTypeName: tên annotations mới cho GATE để có thể đưa vào bộ phân tích
khác, mặc định là "DepTreeNode";
• annotationInputSetName: Tên của annotations đưa vào từ bộ phân tích câu khác.
• annotationOutputSetName: Toàn bộ kết quả phân tích từ MiniPar sẽ được đưa ra với tên
này.
• document: Văn bản mà MiniPar sẽ phân tích.
• miniparBinary: đường dẫn của file thực thi MiniPar (Ví dụ như: minipar.linux hoặc
minipar-windows.exe. Mặc định được cài trong GATE là gate/plugins/minipar/
directory);
• miniparDataDir: địa chỉ của thư mục data mà MiniPar cần, trong này sẽ yêu cầu các dữ
liệu về câu văn và các từ đã được đánh dấu sẵn. Mặc định là "%MINIPAR_HOME
%/data".
Thử nghiêm độc lập phần mềm MiniPar mà không thông qua plugin của gate:
Do chỉ cần độc lập, nên ta chỉ cần file minipar-windows.exe và thư mục data của nó.
Ta gõ lệnh:
>minipar-windows.exe -p data -file myparser.txt
Trong đó data là thư mục data, và file cần phân tích là myparser.txt
Ở đây kết quả đầu ra được cách nhau bởi ký tự tab.

12
Từ đó có thể lấy kết quả đầu ra và phân tích riêng được. Qua việc phân tích plugin của GATE
chúng em cũng thấy rằng chương trình này cũng làm như thế. Chúng em cũng đã code thử một
chương trình để đọc kết quả đầu ra, đưa thành một vetor các từ phân tích được, việc này hỗ trợ
cho việc phát triển sau này.
Việc sử dụng plugin này ta làm các bước sau:
1) Load tài liệu vào:
Tạo 2 processing tài liệu: gồm có Regex sentence spliter và minipar
13
Trong application ta tạo một pipeline để ứng dụng xử lý các annotation này.
Sau đó đối với pipeline này ta ứng dụng cả 2 processing resource này, trong đó document tài liệu
là tài liệu ta vừa set:
14
Cấu hình sau cho outputASName của bộ tách câu trùng với bộ input annotation của minipar
Và cho thực hiện.
15
Sau khi chạy, ta mở tài liệu ra và chuyển sang xem annotation sẽ được kết quả phân tích
16

×