Các công nghệ và ngôn ngữ hỗ trợ

Một phần của tài liệu Nghiên cứu phát triển các kỹ thuật xây dựng và khai thác thông tin web có ngữ nghĩa (Trang 26 - 37)

Để xây dựng và phát triển một hệ thống chú thích ngữ nghĩa cho các thực thể có tên tiếng Việt, đề tài cần các công nghệ hỗ trợ việc xử lý ngôn ngữ tự nhiên và rút trích thông tin, quản trị và truy vấn cơ sở tri thức, và lưu trữ và lập chỉ mục cho các trang Web đã chú thích ngữ nghĩa. Các công nghệ mã nguồn mở liên quan hiện có là sự lựa chọn thích hợp, có thể được sử dụng và sửa đổi cho hệ thống cần xây dựng, tiết kiệm được thời gian và chi phí phát triển. Hệ thống VN-KIM dựa trên ba công nghệ chính là GATE với văn phạm JAPE, Sesame với ngôn ngữ truy vấn SeRQL, và Lucene. Ngoài ra, VN-KIM còn sử dụng đồ thị khái niệm như một ngôn ngữ truy vấn, dễ đọc hơn phát biểu SeRQL và linh hoạt hơn các mẫu truy vấn cố định.

GATE và JAPE

GATE (General Architecture for Text Engineering) được phát triển bởi Trường Đại học Sheffield, Anh, từ năm 1995 ([34]), là một cơ sở hạ tầng để xây dựng và phát triển các thành phần phần mềm xử lý ngôn ngữ tự nhiên, đặc biệt là trong lĩnh vực rút trích thông tin. 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 về rút trích thông tin cho các tiếng Anh, Hy Lạp, Tây Ban Nha, Thụy Điển, Đức, Ý, Pháp, ... GATE hỗ trợ việc phát triển phần mềm ở ba khía cạnh:

1. Kiến trúc phần mềm.

2. Nền kỹ thuật ngôn ngữ.

3. Môi trường phát triển.

Khái niệm kiến trúc phần mềm của GATE 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), gán việc hiện thực hệ thống cho 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 một số yêu cầu của hệ thống. Hệ thống được xét ở đây cụ thể là hệ thống kỹ thuật ngôn ngữ (Language Engineering). Mỗi thành phần về thực chất là một đơn vị mã, thực hiện một nhiệm vụ cụ thể nào đó và có thể sử dụng lại.

Mỗi thành phần trong kiến trúc phần mềm của GATE được phân vào một trong ba loại tài nguyên chính sau đây:

1. Tài nguyên ngôn ngữ (Language Resource).

2. Tài nguyên xử lý (Processing Resource).

3. Tài nguyên hiển thị (Visual Resource).

Tài nguyên ngôn ngữ bao gồm các dữ liệu về ngôn ngữ như từ vựng, văn bản, Ontology,

… Tài nguyên xử lý là những chương trình hay giải thuật dùng trong một quá trình xử lý như bộ phân đoạn từ hay gán nhãn từ loại. Tài nguyên hiển thị là những thành phần đồ họa do GATE hỗ trợ cho phát triển giao diện với người dùng.

Tập các tài nguyên này được gọi là CREOLE (Collection of REusable Objects for Languge Engineering), và được đóng gói thành các tập tin .jar của Java cùng với một số dữ liệu ở dạng XML. Với các tài nguyên có sẵn này, người lập trình chỉ cần tập trung vào việc xây dựng các thành phần chuyên biệt cho ứng dụng đang phát triển, mà không cần quan tâm quá nhiều đến thành phần phần mềm cơ bản. Người lập trình có thể tái sử dụng lại các thành phần đã có sẵn, thay vì phải tạo dựng từ đầu, nhờ vậy giảm được công sức và thời gian xây dựng. Ngoài ra, người lập trình còn có thể mở rộng chức năng cho ứng dụng một cách dễ dàng bằng cách tích hợp thêm các thành phần mới và tận dụng khả năng tương tác giữa thành phần.

Nền của GATE cung cấp một mô hình thiết kế có thể tái sử dụng cho các hệ thống phần mềm về kỹ thuật ngôn ngữ và một thư viện các module phần mềm xây dựng sẵn có thể được sử dụng, mở rộng, và điều chỉnh theo các yêu cầu riêng của một ứng dụng cụ thể.

Các module phần mềm này chủ yếu dùng cho xử lý ngôn ngữ như module gán nhãn từ loại hay module gán nhãn ngữ nghĩa, … Bên cạnh đó, nền của GATE còn hiện thực việc tổ chức và quản lý các loại tài nguyên ngôn ngữ cơ bản như tài liệu và chú thích, cung cấp khả năng nhận dạng các tài nguyên, và hỗ trợ các hoạt động xuất nhập như giải mã dạng tập tin hay cơ sở dữ liệu. Cụ thể, về mặt lập trình, nền của GATE gồm hai tập tin là gate.jarguk.jar, được sử dụng đơn giản bằng cách tải chúng vào một thư mục và thiết lập biến đường dẫn tương ứng, sau đó gọi phương thức gate.Gate.init() trong chương trình.

Môi trường phát triển của GATE nhằm giúp người sử dụng giảm thiểu tối đa thời gian cần thiết để xây dựng một hệ thống kỹ thuật ngôn ngữ mới hay sửa đổi một hệ thống đã có sẵn, bằng cách cung cấp một giao diện xây dựng trực quan và một cơ chế tìm lỗi đầy

đủ. Các công cụ có sẵn trong môi trường phát triển giúp người sử dụng dễ dàng hiển thị dữ liệu tại mỗi bước trong suốt quá trình xử lý, để giải thích các kết quả và tìm lỗi của chương trình. Vì GATE là một mô hình dựa trên các thành phần, nó cho phép người sử dụng dễ dàng liên kết hay không liên kết các thành phần xử lý với nhau. Điều này tạo thuận lợi cho việc so sánh sự thay đổi của kết quả thu được khi thay đổi cấu hình của hệ thống để kiểm tra tính hiệu quả của nó, hay so sánh giữa các phiên bản hiện thực khác nhau của một module chức năng nào đó.

Riêng cho các tài nguyên xử lý, GATE cung cấp JAPE (Java Annotation Patterns Engine) để định nghĩa và thực thi các luật nhận diện thực thể có tên ([33]). Văn phạm JAPE là một văn phạm so trùng mẫu, theo đó mỗi luật JAPE gồm có vế trái và vế phải ngăn cách nhau bởi dấu mũi tên. Vế trái chứa mẫu chú thích và các toán tử của biểu thức chính quy, còn vế phải chứa các câu lệnh sẽ thao tác trên các chú thích so trùng với vế trái.

Ngoài ra mỗi luật còn có tên và độ ưu tiên do người lập trình qui định. Các luật JAPE có thể gom thành từng nhóm để được thực thi tuần tự theo từng pha cho đến khi hoàn tất chú thích cho một thực thể.

Ví dụ sau đây là một luật nhận diện tên một công ty, gồm một chuỗi các Token bắt đầu bằng các chữ hoa và kiểu trong danh sách có sẵn là công ty:

Rule: Company1 Priority: 25

(( {Token.orthography == upperInitial} )+

{Lookup.kind == companyDesignator}

):match -->

: match.NamedEntity = { kind=company, rule=“Company1” } .

Đối với các chú thích thường xuyên được so trùng và sử dụng để nhận dạng các chú thích khác, người lập trình có thể dùng các Macro trong văn phạm JAPE, tương tự như khái niệm Macro trong lập trình bằng hợp ngữ (Assembly). Thay vì đặc tả đầy đủ các mẫu cần nhận dạng trong vế trái của một luật JAPE, người lập trình đưa các thông tin này vào một Macro. Khi cần sử dụng, chỉ cần gọi các Macro tương ứng trong vế trái của luật. Ví dụ, Macro TITLE dưới đây giúp nhận dạng các ngữ liệu đi trước tên người trong tiếng Anh như “Mr”, “Mr.”, “Miss”, “Ms.”, “Doctor”, …:

Macro: TITLE ({Title}

({Token.string == "."})?

).

Bên trong một Macro ta có thể gọi một Macro khác đã được định nghĩa trước đó.

Trong ví dụ dưới đây, Macro INITIALS là một Macro có sẵn của JAPE, và Macro FIRSTNAME gọi Macro INITIALS, qui định chú thích ở vế trái của một luật hoặc phải có kiểu là female hoặc phải tương ứng với định nghĩa của Macro INITIALS:

Macro: INITIALS

(({Token.orth == upperInitial, Token.length=="1"}

({Token.string == "."})?

)+

)

Macro: FIRSTNAME

(({FirstPerson.gender == female}) | (INITIALS) ).

Sesame và SeRQL

Sesame ([67]) thuộc dự án European IST On-To-Knowledge, bắt đầu từ tháng 2 năm 2000, của công ty Aduna (Administrator Nederland). Đây là một hệ thống mở để quản trị và khai thác hiệu quả tri thức và thông tin biểu diễn bằng RDF và RDFS (RDF Schema) ([12], [75]). Hiện tại, Sesame vẫn đang được phát triển và đổi mới để ngày một hoàn thiện hơn, và ngày càng có nhiều ứng dụng trong lĩnh vực Web có ngữ nghĩa sử dụng Sesame cho máy chủ lưu trữ và truy hồi dữ liệu RDF/RDFS, với phiên bản mới nhất là Sesame 1.2.4. Trong tương lai, Sesame có thể sẽ hỗ trợ thêm một số chuẩn dữ liệu dựa trên RDF khác như OWL, DAML+OIL, …

Nguyên lý thiết kế quan trọng nhất của Sesame là sao cho nó có thể mở rộng và điều chỉnh được cho các môi trường điều hành khác nhau. Ý tưởng này đã được hiện thực trong một kiến trúc module tổng quát, cho phép Sesame có thể được cài đặt trên các hệ

quản trị cơ sở dữ liệu và truy cập được qua các giao thức truyền thông khác nhau, như mô tả ở Hình 2.2.1.

Hình 2.2.1 Kiến trúc của Sesame

Để đạt được điều này, những người phát triển Sesame đã đưa ra các tầng lưu trữ và suy diễn (SAIL) nằm giữa các module phía trên và các kho chứa dữ liệu phía dưới. Các tầng này cung cấp một tập hợp các phương thức cơ bản để lưu trữ, truy vấn, và thao tác dữ liệu RDF, còn việc hiện thực tối ưu các phương thức đó thì do một hệ quản trị cơ sở dữ liệu cụ thể được sử dụng đảm nhận. Bên cạnh các cơ chế lưu trữ trên tập tin và bộ nhớ, Sesame hiện đang hỗ trợ ba hệ quản trị cơ sở dữ liệu là PostgreSQL, MySQL và Oracle 9i.

Hơn nữa, các tầng lưu trữ và suy diễn còn có thể đặt chồng lên nhau, nên những người phát triển có thể thêm vào các tầng mới để hỗ trợ thêm các tác vụ như ghi nhớ lại, xử lý đồng thời hay suy diễn.

Vì khách hàng có thể đang sử dụng các môi trường điều hành khác nhau như một máy chủ Web hoặc một ứng dụng đơn lẻ, Sesame cung cấp một cơ chế truyền thông linh hoạt. Bằng cách đặt tất cả các phương thức truyền thông chung ở module Request Router, và các phương thức cho từng giao thức cụ thể ở các bộ xử lý giao thức, Sesame có thể hỗ trợ các giao thức truyền thông khác nhau như HTTP, RMI và SOAP.

Repository

Storage And Inference Layers (SAILs)

Admin Query Export

Request Router

HTTP Protocol Handler RMI Protocol Handler client 1

HTTP RMI

client 2

Protocol Handlers

Modules

SAILs

Ngoài các tính năng đặc biệt nói trên cho việc lưu trữ và truyền thông, Sesame còn cung cấp các module cho việc truy vấn, quản trị, bảo mật và theo dõi phiên bản. Ngôn ngữ truy vấn của Sesame là SeRQL (Sesame RDF Query Language), một ngôn ngữ truy vấn RDF/RDFS mới thừa kế các tính năng tốt nhất của các ngôn ngữ trước đây như RQL và RDQL, và có thêm các tính năng mới giúp đơn giản hoá câu truy vấn. SeRQL cũng hỗ trợ sự bao phủ (Subsumption), cho phép một kiểu khái niệm hoặc quan hệ so trùng với các kiểu con của nó trong một cơ sở tri thức.

Các thành phần cơ bản để xây dựng câu truy vấn của SeRQL là danh hiệu tài nguyên phổ dụng, giá trị nguyên tử (Literal), và biến. Một danh hiệu trong Sesame có thể được viết dưới dạng đầy đủ như <http://www.dit.hcmut.edu.vn/vnkim/vnkimkb.rdf#

Quốc_gia_1>, hoặc dạng rút gọn như <vnkimkb_rdf: Quốc_gia_1>. Trong trường hợp sau, tiền tố vnkimkb_rdf sẽ được ánh xạ vào chuỗi đầy đủ <http://www.dit.hcmut.edu.vn/vnkim/

vnkimkb.rdf> bởi động cơ truy vấn của Sesame. Các giá trị nguyên tử RDF biểu diễn các tính chất của các đối tượng và có thể được tuỳ ý gắn với các thẻ kiểu dữ liệu và ngôn ngữ.

Các biến là các danh hiệu tài nguyên phổ dụng cần được truy vấn và được định danh trong câu truy vấn bằng tên.

Tất cả các phát biểu RDF trong một kho dữ liệu có thể xem như một đồ thị, và việc tìm kiếm có thể được thực hiện bằng cách so trùng một đồ thị truy vấn, bao gồm các biểu thức đường dẫn, với đồ thị RDF đó. Một đặc tính nổi trội của SeRQL so với các ngôn ngữ truy vấn RDF/RDFS khác là nó cho phép các biểu thức đường dẫn có chiều dài tuỳ ý. Ví dụ, các biểu thức đường dẫn có chiều dài bằng 1 trong SeRQL cho truy vấn “Tìm tất cả các thành phố ở Việt Nam” có thể là:

{Thành_phố} rdf:type {<vnkimo_rdfs:Thành_phố>}, {Thành_phố} vnkimo_rdfs:được_định_vị_ở {Quốc_gia}, {Quốc_gia} rdf:type {<vnkimo_rdfs:Quốc_gia>},

{Quốc_gia} rdfs:label {“Vietnam”}

Các biểu thức đường dẫn thứ hai và thứ tư, chẳng hạn, có thể kết hợp và viết lại thành biểu thức đường dẫn có chiều dài bằng 2 như sau:

{Thành_phố} vnkimo_rdfs:được_định_vị_ở {Quốc_gia} rdfs:label {“Vietnam”}

Trong SeRQL, các nút và cạnh trong các biểu thức đường dẫn có thể là các biến hoặc danh hiệu tài nguyên phổ dụng, và riêng các nút cũng có thể là các giá trị nguyên tử.

Trong ví dụ trên, Thành_phố và Quốc_gia là các biến, “Vietnam” là một giá trị nguyên tử, và <vnkimo_rdfs:Thành_phố> và <vnkimo_rdfs:Quốc_gia> là các danh hiệu tài nguyên phổ dụng. Truy vấn SeRQL này có thể được minh họa bằng một đồ thị như ở Hình 2.2.2.

Hình 2.2.2 Biểu diễn đồ thị của một truy vấn SeRQL

Một truy vấn chọn của SeRQL được xây dựng từ bốn mệnh đề chính là SELECT, FROM, WHERE, và USING NAMESPACE. Mệnh đề SELECT được dùng để xác định các biến nào có giá trị phải trả về và theo thứ tự nào. Mệnh đề FROM chứa các biểu thức đường dẫn. Mệnh đề WHERE diễn tả các ràng buộc trên giá trị của các biến. Cuối cùng, mệnh đề USING NAMESPACES khai báo các không gian tên dùng để ánh xạ các danh hiệu tài nguyên phổ dụng viết tắt. Ví dụ, câu truy vấn SeRQL đầy đủ cho “Tìm tất cả các thành phố ở Việt Nam có dân số trên một triệu” là:

SELECT Thành_phố FROM

{Thành_phố} rdf:type {<vnkimo_rdfs:Thành_phố>}, {Thành_phố} vnkimo_rdfs:được_định_vị_ở {Quốc_gia}, {Thành_phố} vnkimo_rdfs:dân_số {Dân_số},

{Quốc_gia} rdf:type {<vnkimo_rdfs:Quốc_gia>}, {Quốc_gia} rdfs:label {“Vietnam”}

WHERE

Dân_số > "1000000"^^ <xsd:positiveInteger>

USING NAMSPACE

rdf = <http://www.w3.org/1999/02/22-rdf-syntax-ns#>

rdfs = <http://www.w3.org/2000/01/rdf-schema#>

vnkimo_rdfs = <http://www.vn-kim.hcmut.edu.vn/vnkimo-rdf-schema#>.

SeRQL cũng cho các cách viết ngắn để đơn giản hoá các truy vấn. Một trong các cách viết ngắn đó là ký hiệu cho các nhánh trong biểu thức đường dẫn. Cách này hữu ích trong trường hợp một chủ thể có nhiều quan hệ với các đối tượng khác nhau. Thay vì phải

< vnkimo_rdfs:được_định_vị_ở > <rdfs:label>

<rdf:type>

<rdf:type>

Thành_phố

<vnkimo_rdfs:Thành_phố>

Quốc_gia “Vietnam”

<vnkimo_rdfs:Quốc_gia>

viết lập lại chủ thể cho mỗi biểu thức đường dẫn, chúng có thể chia sẻ một chủ thể chung bằng cách dùng dấu chấm phẩy. Ví dụ, biểu thức đường dẫn ở trên có thể được rút gọn như sau:

{Thành_phố} rdf:type {<vnkimo_rdfs:Thành_phố>};

vnkimo_rdfs:được_định_vị_ở {Quốc_gia}, {Quốc_gia} rdf:type {<vnkimo_rdfs:Quốc_gia>};

rdfs:label {“Vietnam”}.

Một cách viết ngắn hữu ích khác là các phát biểu trừu tượng hoá, trong đó một nút chính nó là một phát biểu. Ví dụ, người ta có thể có một phát biểu dưới dạng sau:

{ {reifiedSubj} reifiedPred {reifiedObj} } pred {obj}.

Phát biểu này tương đương với một tập các biểu thức đường dẫn sau đây:

{reifiedStatement} rdf:type {rdf:Statement}, {reifiedStatement} rdf:subject {reifiedSubj}, {reifiedStatement} rdf:predicate {reifiedPredicate}, {reifiedStatement} rdf:object {reifiedObj},

{reifiedStatement} pred {obj}.

Cuối cùng, đáng kể ra là các ràng buộc tính chất có thể được kết hợp lại bằng các toán tử luận lý not, and, or trong mệnh đề WHERE. Điều này làm cho SeRQL trở thành một ngôn ngữ truy vấn mạnh cho các cơ sở tri thức RDF, như là SQL cho các cơ sở dữ liệu quan hệ.

Lucene

Với sự ra đời và phát triển không ngừng của Web, lượng tài liệu mà con người cần tổ chức, quản lý và khai thác gia tăng theo từng ngày. Để tìm kiếm những thông tin cần thiết trong kho các văn bản và trang Web này, các hệ thống tìm kiếm đã lần lượt được phát triển và thành công nhất là các hệ thống truy vấn theo từ khóa. Tuy nhiên, phần lớn các công cụ tìm kiếm mạnh mẽ nhất hiện nay như Yahoo, Google, và MSN, … là những sản phẩm thương mại và mã nguồn được giữ bí mật. Điều này dẫn tới kết quả là nhiều người phát

Một phần của tài liệu Nghiên cứu phát triển các kỹ thuật xây dựng và khai thác thông tin web có ngữ nghĩa (Trang 26 - 37)

Tải bản đầy đủ (PDF)

(208 trang)