Khối nhận diện:
Lớp ENSearch
Bản tóm tắt các phương thức
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.
Bảng 5-2 Bản tóm tắt các phương thức lớp ENSearch
Khối phân tách câu truy vấn nguyên tử:
Lớp QuerytoCG
Bản tóm tắt các phương thức
void splitQueryToAtomicQuery (String fullQuery, List<ItemType> query, List<AtomicQuery> result, RelationType defaultRel);
Tách câu truy vấn có liên từ luận lý thành danh sách các câu truy vấn nguyên tử. Danh sách này trả về qua tham số “result”.
Khối xác định quan hệđỉnh:
Lớp QuerytoCG
Bản tóm tắt các phương thức
TopRelationType identifyTopRel (QueryBuffer buf);
Nhận diện quan hê đỉnh là COUNT, MAX, MIN, MOST, AVERAGE.
Bảng 5-4 Bản tóm tắt các phương thức lớp QuerytoCG (2)
Khối hiệu chỉnh tập thực thể và từ quan hệ:
Lớp ProcessingXML Bản tóm tắt các phương thức
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ể.
Bảng 5-5 Bản tóm tắt các phương thức lớp Processing XML
Khối xác định quan hệ ngữ nghĩa giữa thực thể và từ quan hệ:
Lớp ProcessingQuery Bản tóm tắt các phương thức
QueryTriple ProcessQuery2Triple (QueryBuffer 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);
TripleType InterRE (ItemType subject, ItemType relation, ItemType object);
Tìm bộ ba bằng phương pháp giao.
Bảng 5-6 Bản tóm tắt các phương thức lớp ProcessingQuery
Khối xác định quan hệ ngữ nghĩa giữa tính từ và thực thể:
Lớp ProcessingQuery Bản tóm tắt các phương thức
void processQuantitativeAdjective (QueryTriple tripleset, QueryBuffer buffer);
Sử dụng các tính từ định lượng đã 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 (QueryTriple tripleset, QueryBuffer buffer);
Sử dụng các tính từ định lượng đã 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.
Bảng 5-7 Bản tóm tắt các phương thức lớp ProcessingQuery (2)
Khối xây dựng đồ thị ý niệm:
Lớp QueryOutput Bản tóm tắt các phương thức
String generatelistJsCG (ListCG lsCG);
Tạo đồ thị cho toàn bộ câu truy vấn dưới dạng JavaScript.
String generateJsCG (QueryBuffer buffer, int left, int top, boolean isCoverByBox);
Tạo đồ thị con dưới dạng JavaScript.
Khối sinh câu truy vấn SeRQL
Lớp SeRQLMapping Bản tóm tắt các phương thức
String getSeRQLQuery (QueryBuffer buffer);
Sinh ra câu SeRQL cho câu truy vấn nguyên tử.
String appendWhereClauseForSQTA (String query, QueryBuffer buf, TopRelationType topRe);
Thêm các phần cần thiết vào câu SeRQL để 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 để 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 để 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.
Bảng 5-9 Bản tóm tắt các phương thức lớp SeRQLMapping 5.2 Hệ thống luật
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ể.
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ệ.
Xóa thực thể hoặc quan hệ khỏi buffer.
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
Tập luật được biểu diễn bằng XML. Một tập luật (TranformRules) bao gồm nhiều luật (rule). Mỗi luật lại bao gồm một phần tử điều kiện (premise) cùng với một hành động (consequent)
tương ứng. Ngoài ra, một luật còn có các thuộc tính tên luật (name) và độ ưu tiên của luật (priority).
<!ELEMENT TranformRules (rule)+ > <!ELEMENT rule(premise, consequent) > <!ATTLIST rule
name CDATA #REQUIRED priority CDATA #IMPLIED>
Hình 5-1 Cấu trúc tập phần tử TransformRules và rule
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ện và hà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, relation và object
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 primise(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> <!ATTLIST object
value CDATA #IMPLIED className CDATA #IMPLIED classType CDATA #IMPLIED>
Hình 5-2 Cấu trúc phần tửđiều kiện luật
Thuộc tính Đặc tả
var Dùng đểđặt tên biến, nhằm phân biệt các thành phần. value Liệt kê tập các giá trịban đầu, 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ể
classType Thuộc tính dùng để ràng buộc kiểu thực thểnhư UE, IE
Bảng 5-10 Các thuộc tính của phần tửđiều kiện
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. Ngoài ra, thành phần hành động còn có hai thuộc tính mới là quantifier và delete, 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> <!ATTLIST object
var CDATA #REQUIRED value CDATA #IMPLIED className CDATA #IMPLIED classType CDATA #IMPLIED quantifier CDATA #IMPLIED delete CDATA #IMPLIED>
Hình sau đây là ví dụ minh họa đặc tả một luật hoà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 5-4 Một luật hoàn chỉnh 5.2.4 Xây dựng một số luật đặc biệt
Ngoà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ừ who và president đề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 đó who và president đượ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ữ và hiển thị đồ thị
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 5-6 Dạng tổng quát của đồ thị ý niệm
“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,
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ư
sau:
Hình 5-7 Tên hình
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 [1], chỉ thêm vào những đoạn cần thiết để xử lý những câu truy vấn có tính từ.
Generalize the query CG
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
Append the constrained property statements 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
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
Append to ORDER BY clause the variable of the relation’s object, and the way it is ordered }
Giải thuật cho tính từ so sánh nhất:
//Function: append WHERE clause for superlative adjective to the input SeRQL 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
Append comparative operator to the WHERE clause //i.e. “>” or “<”
if its object is a named entity, append its object’s variable to the WHERE clause else if its object is a constant, append its object’s quantifier to the WHERE clause }
CHƯƠNG 6
THỬ NGHIỆM
6.1 Môi trường thử nghiệm
Tập câu truy vấn dùng đểđánh giá
Đề tài tiến hành thử nghiệm trên tập các câu truy vấn lấy từ Question Answering Track của tập dữ liệu mẫu TREC 2002. Tập mẫu này có 440 câu truy vấn, bao gồm:
Phân loại theo từ để hỏi: 201 câu hỏi What, 67 câu hỏi Who, 62 câu hỏi Where, 45 câu
hỏi When, 38 câu hỏi How, 3 câu hỏi Which và 24 câu không dùng từđể hỏi.
Phân loại theo dạng câu: 16 câu có từđể hỏi How many, 6 câu có tính từ, 35 câu có tính từ so sánh nhất, 1 câu có liên từ luận lý, 382 câu còn lại không thuộc các dạng trên. Ngoài ra, do một sốđề xuất mở rộng của đề tài không có trong tập mẫu TREC 2002. Cụ thể
là các câu truy vấn có chứa tính từso sánh hơn, các câu truy vấn kết hợp lượng từ, tính từ… Do vậy, đề tài còn sử dụng thêm 5 câu truy vấn được sưu tầm bằng tay để kiểm tra các trường hợp này.
Các phần mềm, công cụ sử dụng trong thử nghiệm này
KIM platform phiên bản 3.0, cùng với Ontology và cơ sở tri thức đi kèm (được cập nhật lần cuối vào ngày 8/7/2010): dùng để nhận diện thực thể có tên.
GATE phiên bản 5.1: dùng để nhận diện thực thể không tên và các thành phần khác.
Sesame phiên bản 2.3.1: dùng để chạy câu truy vấn SeRQL tìm thực thể thỏa mãn.