Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 16 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
16
Dung lượng
719,23 KB
Nội dung
ĐẠ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 [...]... 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... 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ư... 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... đó 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... 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à... 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ừ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 . 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. 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ữ. 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ẻ