Các khối xử lý và giao diện các lớp quan trọng

Một phần của tài liệu XỬ LÝ CÁC CÂU TRUY VẤN VÀ TÌM KIẾM TRÊN KHO TÀI LIỆU CÓ CHÚ THÍCH NGỮ NGHĨA BẰNG TIẾNG ANH (Trang 59)

5.1.1 Ứng dụng web phía Client

Ứng dụng web phía client được hiện thực dưới dạng JSP. Người dùng cung cấp đầu vào, gửi yêu cầu cho server và nhận trả lời từ server. Người dùng cĩ thể sử dụng 1 trong 3 dịch vụ:

− Câu truy vấn ngơn ngữ tự nhiên.

− Tìm kiếm mở rộng.

− Lựa chọn thực thể thỏa truy vấn để tìm tài liệu. Ứng dụng client sử dụng các dịch vụ chính sau:

Kiểu trả về

Tên dịch vụ Đặc tả

String parse(String query)

Web service operation

Trả về đồ thị ý niệm từ câu truy vấn tiếng Việt

String lucene(String query)

Web service operation

Trả về các thực thể thỏa truy vấn

String getDocuments(String query)

Web service operation

Trả về các tài liệu thỏa truy vấn dựa trên API query của Semantic Lucene

5.1.2 Hệ thống xử lý trên server

Khối nhận diện thực thể và từ quan hệ:

Lớp ENSearch

Kiểu trả về Tên phương thức Đặc tả

String GetAnnotation (String query, QueryBuffer output)

Kết nối vào KIM để nhận diện thực thể cĩ tên trong câu query, chèn vào bộ đệm output.

Dùng Gate để nhận diện thực thể khơng tên và từ quan hệ, tính từ, liện từ luận lý cĩ trong câu query, chèn vào bộ đệm output

String getNS (String classname)

Trả về namespace của lớp truyền vào dưới dạng chuỗi

String runSeRQL (String

query) Kết nối vào KB của KIM, thực thi câu lệnh SeRQL để tìm các thực thể thỏa mãn truy vấn

Khối phân tách câu truy vấn nguyên tử:

Lớp QuerytoCG

Kiểu trả về

Tên phương thức Đặc tả (adsbygoogle = window.adsbygoogle || []).push({});

void splitQueryToAtomicQuery(String fullQuery, List<ItemType> query, List<AtomicQuery> result, RelationType defaultRel)

Tách câu truy vấn cĩ AND, OR, NOT (đã được nhận diện thành phần) thành danh sách các câu truy vấn nguyên tử. Danh sách này là tham số “result”

Khối xác định quan hệ đỉnh:

Kiểu trả về Tên phương thức Đặc tả

TopRelationType identifyTopRel(QueryBuffer

buf) Nhận diện quan hê đỉnh là “COUNT”, “MAX”, “MIN”, “MOST”, hayt “AVERAGE”

Khối hiệu chỉnh tập thực thể và từ quan hệ:

Lớp ProcessingXML

Kiểu trả về Tên phương thức Đặc tả

void FindClassofAgent(QueryBuffer buffer) Xác định lớp của “What”

void CombineEntitys(QueryBuffer buffer) Gom các thực thể cùng ngữ nghĩa

void AddRealtion(QueryBuffer buffer) Thêm từ quan hệ giữa các thực thể

Khối xác định quan hệ ngữ nghĩa giữa thực thể và từ quan hệ:

Lớp ProcessingQuery

Kiểu trả về Tên phương thức Đặc tả

QueryTriple ProcessQuery2Triple(QueryBuf fer buffer)

Sử dụng các thực thể cĩ tên, khơng tên, từ quan hệ đã nhận biết được để sinh ra các bộ ba quan hệ. Giá trị trả về là các tập các bộ ba quan hệ.

TripleType CheckRE(ItemType subject, ItemType relation, ItemType object)

Tìm bộ 3 bằng cách kiểm tra tập luật

TripleType InterRE(ItemType subject, ItemType relation, ItemType object)

Tìm bộ 3 bằng phương pháp giao

Lớp ProcessingQuery

Kiểu trả về Tên phương thức Đặc tả

void processQuantitativeAdjective(Q ueryTriple tripleset,

QueryBuffer buffer)

Sử dụng các tính từ định lượng

(thường, so sánh nhất, so sánh hơn) đã nhận biết được để sinh ra các bộ ba quan hệ. Tập các bộ ba quan hệ kết quả là “tripleset” void processQuanlitativeAdjective(Q ueryTriple tripleset, QueryBuffer buffer) Sử dụng các tính từ định lượng (thường, so sánh nhất) đã nhận biết được để sinh ra các bộ ba quan hệ. Tập các bộ ba quan hệ kết quả là “tripleset

Khối xây dựng đồ thị ý niệm:

Lớp QueryOutput

Kiểu trả về Tên phương thức Đặc tả (adsbygoogle = window.adsbygoogle || []).push({});

String generatelistJsCG(ListCG lsCG) Tạo đồ thị cho tồn bộ câu truy vấn dưới dạng JavaScript

String generateJsCG(QueryBuffer buffer, int currentleft, int currentTop, boolean isCoverByBox)

Tạo đồ thị con dưới dạng JavaScript

Khối sinh câu truy vấn SeRQL

Lớp SeRQLMapping Kiểu trả về Tên phương thức Đặc tả String getSeRQLQuery(QueryBuffer buffer)

Sinh ra câu SeRQL cho từng câu truy vấn nguyên tử. Trả về dưới dạng String.

Lớp QuerytoCG

Kiểu trả về

Tên phương thức Đặc tả

String appendWhereClauseForSQTA(String query, QueryBuffer buf, TopRelationType topRe)

Thêm các phần cần thiết vào câu SeRQL truyền vào để xử lý trường hợp cĩ tính từ định lượng so sánh nhất. Trả về câu SeRQL đã được chỉnh sửa

String appendOrderByClause(String query, QueryBuffer buf) Thêm các phần cần thiết vào câu SeRQL truyền vào để xử lý trường hợp cĩ tính từ định lượng ở dạng nguyên mẫu. Trả về câu SeRQL đã được chỉnh sửa

String appendWhereClauseForCQTA(String query, QueryBuffer buf)

Thêm các phần cần thiết vào câu SeRQL truyền vào để xử lý trường hợp cĩ tính từ định lượng so sánh hơn. Trả về câu SeRQL đã được chỉnh sửa

5.2 Hệ thống luật [tham khảo CDT]

Ta sẽ xây dựng tập luật theo định dạng XML.

Dạng chung của mỗi luật trong hệ thống luật như sau:

“Nếu [điều kiện] thì [hành động]”

Trong đĩ, vế điều kiện cĩ những đặc điểm sau:

• Cĩ ràng buộc về tên lớp, giá trị chuỗi ban đầu và kiểu thực thể.

• Cĩ thể xét nhiều quan hệ đồng thời trong cùng một luật. Phần hành động cĩ những đặc tính sau:

• Cĩ thể thay đổi tên lớp, thay đổi định của danh thực thể và xác định loại quan hệ.

Các phần sau trình bày cấu trúc của tập luật dùng để ánh xạ bộ ba quan hệ thành quan hệ ngữ nghĩa.

5.2.1 Cấu trúc của hệ thống luật

Hệ thống luật được định nghĩa trong một tập tin XML, và mơ tả theo định dạng DTD (Document Type Definition) như sau:

Thành phần gốc (root element) của tập tin là TransformRules, mỗi TransformRules chứa nhiều thành phần (element) rule.

<!ELEMENT TransformRules (rule)+ >

<!ELEMENT rule (premiselist, consequentlist) > <!ATTLIST rule

name CDATA #REQUIRED priority CDATA #IMPLIED>

[hình tham khảo HA] (adsbygoogle = window.adsbygoogle || []).push({});

Trong ví dụ trên, từ khĩa ELEMENT được dùng để khai báo cấu trúc của một thành phần; từ khĩa ATTLIST được dùng để mơ tả các thuộc tính của một thành phần; CDATA mơ tả kiểu dữ liệu chuỗi cho thuộc tính; #REQUIRED dùng mơ tả tính chất bắt buộc của thuộc tính; #IMPLIED dùng mơ tả tính chất khơng bắt buộc của thuộc tính. DTD dùng các ký hiệu “*”, “+” và “?” dùng để chỉ số lượng của một thành phần con trong thành phần cha của nĩ. Ý nghĩa của mỗi ký hiệu như sau:

• Dấu “*”: xuất hiện từ 0 đến n

• Dấu “+”: xuất hiện từ 1 đến n

• Dấu “?”: xuất hiện 0 hoặc 1

Theo định nghĩa trên, TransformRules cĩ thể chứa nhiều thành phần rule, mỗi rule chứa hai thành phần là premiselistconsequentlist. Ngồi ra, thành phần rule cịn cĩ thuộc tính là namepriority, lần lượt để mơ tả tên luật và độ ưu tiên của luật. Cấu trúc các thành phần con trong thành phần rule sẽ được mơ tả rõ hơn theo sau đây.

5.2.2 Cấu trúc thành phần điều kiện của luật

Như đã được nhắc đến ở đầu chương này, mỗi luật bao gồm hai phần: điều kiệnhành động. Phần điều kiện của luật được mơ tả bằng thành phần premiselist, là con của thành phần rule. Mỗi

premiselist bao gồm một hay nhiều thành phần premise, hình dưới mơ tả cấu trúc của một thành phần

premise. Mỗi premise gồm cĩ 3 thành phần con là subject, relationobject tương ứng với một bộ ba mà ta đã thảo luận ở phần trên. Ý nghĩa của các thuộc tính trong các thành phần này được thể hiện trong hình dưới:

<!ELEMENT premise(subject, relation, object) > <!ELEMENT subject EMPTY>

<!ATTLIST subject

var CDATA #REQUIRED value CDATA #IMPLIED className CDATA #IMPLIED classType CDATA #IMPLIED> <!ELEMENT relation EMPTY>

<!ATTLIST relation

var CDATA #REQUIRED value CDATA #IMPLIED> <!ELEMENT object EMPTY>

<!ATTLIST object

var CDATA #REQUIRED value CDATA #IMPLIED className CDATA #IMPLIED classType CDATA #IMPLIED>

[hình tham khảo HA]

Tên thuộc tính Đặc tả

var Thuộc tính này dùng để đặt tên biến cho các thành phần, nhằm phân biệt các thành phần

value Giá trị chuỗi ban đầu của thực thể. Ta cĩ thể liệt kê tập các giá trị trong đĩ các thành phần cách nhau bằng dấu phẩy. className Thuộc tính ràng buộc tên lớp thực thể

5.2.3 Cấu trúc thành phần hành động của luật

Nếu một bộ ba nào đĩ thỏa mãn thành phần điều kiện, thì phần hành động consequent sẽ được áp dụng cho bộ ba đĩ. Cấu trúc của thành phần hành động được mơ tả như dưới.

Các thuộc tính của thành phần hành động cũng giống như phần tử điều kiện đã được mơ tả trong bảng ở phần 5.2.2. Ngồi ra, thành phần hành động cịn cĩ hai thuộc tính mới là quantifierdelete, thuộc tính quantifier dùng để gán giá trị định danh cho lớp, thuộc tính delete dùng để yêu cầu xĩa thành phần đĩ.

<!ELEMENT consequent(subject, relation, object) > <!ELEMENT subject EMPTY>

<!ATTLIST subject

var CDATA #REQUIRED value CDATA #IMPLIED className CDATA #IMPLIED classType CDATA #IMPLIED quantifier CDATA #IMPLIED delete CDATA #IMPLIED> <!ELEMENT relation EMPTY>

<!ATTLIST relation

var CDATA #REQUIRED value CDATA #IMPLIED delete CDATA #IMPLIED> <!ELEMENT object EMPTY>

<!ATTLIST object

var CDATA #REQUIRED value CDATA #IMPLIED className CDATA #IMPLIED classType CDATA #IMPLIED quantifier CDATA #IMPLIED delete CDATA #IMPLIED> (adsbygoogle = window.adsbygoogle || []).push({});

[hình tham khảo HA]

Hình sau đây là ví dụ minh họa đặc tả một luật hồn chỉnh:

<rule name="hasCurrency" priority="70"> <premiselist>

<premise>

<subject var="a" className="Currency"/> <relation var="b" value="of,used in" /> <object var="c" />

</premise> </premiselist> <consequentlist>

<consequent>

<subject var="c" />

<relation var="b" value="hasCurrency" /> <object var="a" />

</consequent> </consequentlist> </rule>

[hình tham khảo HA]

5.2.4 Xây dựng một số luật đặc biệt

Ngồi ra, ta sẽ cần một số luật đặc biệt, các luật này được dùng cho bước gom các thực thể cĩ cùng ngữ nghĩa trong câu truy vấn. Ví dụ câu truy vấn “Who was the president of Vichy France?”, các từ whopresident đều biểu diễn cho thực thể khơng tên thuộc lớp PERSON, và chúng cách nhau bởi từ quan hệ was. Do đĩ whopresident được gom lại thành một thực thể duy nhất. Luật đặc biệt cũng cĩ cấu trúc như luật thường nhưng nĩ cĩ độ ưu tiên là -1.

5.3 Lưu trữ đồ thị và hiển thị đồ thị [tham khảo HA]

Trước khi hiển thị kết quả ra màn hình, chương trình dùng cấu trúc dữ liệu như sau để lưu trữ đồ thị ý niệm trong bộ nhớ:

Cấu trúc dữ liệu trên sẽ gồm một mảng các phần tử. Mỗi phần tử cĩ vùng lưu trữ Sub-CG chứa đựng thơng tin để xây dựng đồ thị ý niệm nguyên tử (atomic conceptual graph),là đồ thị ý niệm mà khơng chứa liên từ luận lý trong câu truy vấn. “Các thơng tin để xây dựng đồ thị ý niệm nguyên tử bao gồm thơng tin về thực thể, kiểu quan hệ giữa các thực thể và chiều của quan hệ. Dữ liệu được lưu trong vùng lưu trữ Sub-CG sau đĩ sẽ được dùng để biểu diễn thành một đỉnh truy vấn con.”

Mỗi phần tử cĩ thuộc tính Next relation lưu trữ kiểu quan hệ giữa hai đỉnh truy vấn con liền nhau. Các giá trị cĩ thể cĩ của Next relation chính là kiểu quan hệ cĩ thể cĩ giữa hai đỉnh truy vấn con trong câu truy vấn cĩ liên từ luận lý, cụ thể là UNION, INTERSECT, MINUS.

“Thêm vào đĩ, cấu trúc dữ liệu cĩ một thuộc tính Top relation để lưu trữ quan hệ gộp của câu truy vấn. Đĩ cĩ thể là quan hệ COUNT đối với câu truy vấn cĩ từ để hỏi là “How many”, hoặc quan hệ MIN, MAX đối với các truy vấn cĩ tính từ so sánh nhất.”

Từ cấu trúc dữ liệu nêu trên. Đồ thị ý niệm được hiển thị ra màn hình cĩ dạng tổng quát như hình sau:

[hình tham khảo HA]

“Trong đĩ, mỗi đỉnh truy vấn con được xây dựng từ vùng lưu trữ Sub-CG của mỗi thành phần trong cấu trúc lưu trữ. Quan hệ giữa các đỉnh truy vấn con (UNION, INTERSECT, MINUS) được xây

dựng từ thuộc tính Next relation. Quan hệ gộp (COUNT, MAX, MIN) được xây dựng từ thuộc tính

Top relation của cấu trúc lưu trữ. Đường liên kết nét đơi sẽ được nối từ quan hệ gộp vừa tạo tới thực thể câu truy vấn về số lượng trong trường hợp truy vấn “How many” hoặc nối tới biểu diễn tính từ nằm trong đỉnh truy vấn con tương ứng trong trường hợp câu truy vấn cĩ chứa tính từ so sánh nhất.”

Lấy một ví dụ cho phương pháp lưu trữ và hiển thị như phân tích nêu trên: câu truy vấn “Who was biographer and Samuel Johnsons's friend?”, hệ thống sẽ kết xuất ra đồ thị ý niệm như ví dụ sau:

[hình tham khảo HA]

5.4 Xây dựng câu truy vấn SeRQL

Dù đồ thị ý niệm là một ngơn ngữ vừa dễ hiểu với con người, vừa khả xử lý với máy tính, nhưng đồ thị ý niệm mới chỉ mang tính chất tham khảo, để kiểm tra sự chính xác của quá trình xử lý câu truy vấn. Bởi vì, đồ thị ý niệm chưa được sử dụng làm ngơn ngữ truy vấn trên bất cứ cơ sở dữ liệu ngữ nghĩa nào, nên máy tính khơng thể trực tiếp dùng đồ thị để tìm thực thể hay tài liệu. Vì vậy, trong chương này sẽ trình bày phương pháp dịch đồ thị sang ngơn ngữ SeRQL, là ngơn ngữ truy vấn sử dụng bởi cơ sở tri thức ngữ nghĩa.

Một phần trong quá trình sinh câu SeRQL của hệ thống sẽ sử dụng lại giải thuật trước đây của VN-KIM Search [tham khảo Dũng], chỉ thêm vào những đoạn cần thiết để những câu truy vấn cĩ tính từ.

Giải thuật đã cĩ của VN-KIM Search như sau:

Generalize the query CG (adsbygoogle = window.adsbygoogle || []).push({});

For each relation in the generalized query CG do {

Get all neighbour concepts of the current relation //process each concept sequentially

For each concept do {

if the concept is new //i.e. not processed before {

if the concept referent is “?” or “*” {

if the concept referent is “?” {

Assign to it a variable starting with “x” //e.g x1, x2, x3,... Assign to it a label variable starting with “z” //e.g z1, z2, z3,... Append these variables to the SELECT clause

Append the “rdfs:label” statement for this concept to the FROM clause }

if the concept referent is “*” {

Assign to it a variable starting with “y” //e.g y1, y2, y3,... }

Append the “rdf:type” statement for this concept to the FROM clause

Assign to the constrained properties variables starting with “p” //e.g p1, p2, p3,... Append the property constraints to the WHERE clause

} //end of “?” or “*”

if the concept referent is specific, assign to it its identifier as a dummy variable Remember this concept having been processed

}

}//end of if new

Assign to the current relation its URI

Append the statement for the current relation with its neighbour concepts to the FROM clause }

//process the disconnected concept nodes

For each concepts that has not been visited yet, process it as above

[hình tham khảo Dũng]

Giải thuật đề tài này thêm vào để xử lý tính từ sẽ nhận kết quả của giải thuật trên làm đầu vào, rồi thêm những bộ phận cần thiết:

Giải thuật cho tính từ bình thường (dạng nguyên mẫu): Truy vấn tất cả thực thể phù hợp và trả về theo một trật tự

//Function: append ORDER BY clause for normal adjective to the input SeRQL

Initialize new ORDER BY clause

For each semantic relation generated from normal adjective {

Append the its object’ variable to SELECT clause

Identify the way of ordering //i.e DESC or ASC. Use a dictionary (XML file)

Append to ORDER BY clause the variable of the relation’s object, and the way it is ordered }

//Function: append WHERE clause for superlative adjective to the input SeRQL (adsbygoogle = window.adsbygoogle || []).push({});

Initialize the WHERE, nested SELECT and nested FROM clause

//select the value of all other entities which are also qualified, then use “>= ALL” or “<= ALL” to //find the entity that has the maximum and minimum value

Identify whether “>= ALL” or “<=ALL” from the Top relation. Call this OP. Find the relation that is generated from superlative adjective

{

With its subject, create a new variable representing all others qualified entities. Call this the temporary subject. Then use the temporary subject to append all constraints on the subject to the nested FROM clause

With its object, create a new variable representing all others qualified entities’ values. Call this the temporary object. Append the temporary object to the nested SELECT clause.

Append the statement of this relation to the nested FROM clause. But use the temporary subject and temporary object as the 2 variables.

Append to WHERE clause the object’s variable and the OP identified before. }

Giải thuật cho tính từ so sánh hơn:

//Function: append WHERE clause for comparative adjective to the input SeRQL Initialize the WHERE clause

For every relation generated from comparative adjective {

Append its subject’s variable to the WHERE clause

Identify the comparative operator //i.e. “>” or “<”. Use a dictionary (XML file) Append comparative operator to the WHERE clause

else if its object is a constant, append its object’s quantifier to the WHERE clause

Một phần của tài liệu XỬ LÝ CÁC CÂU TRUY VẤN VÀ TÌM KIẾM TRÊN KHO TÀI LIỆU CÓ CHÚ THÍCH NGỮ NGHĨA BẰNG TIẾNG ANH (Trang 59)