Chúng tôi đề ra một cách tiếp cận mới cho công cụ tìm kiếm có ngữ nghĩa trong đó khai thác các đặc điểm ontology của thực thể có tên trong tìm kiếm theo khoảng cách và sau đó phát triển
Tổng quan
Phát biểu vấn đề
Trong truy hồi thông tin, khi tìm kiếm tài liệu, người dùng mong đợi công cụ tìm kiếm trả về những tài liệu liên quan nằm ở đầu của danh sách kết quả ([24]) Thêm vào đó, công trình nghiên cứu về sự tương tác lẫn nhau (interaction) của những term trong câu truy vấn ([21]) đã cho thấy những cặp có tính tương quan cao là những term cấu thành những cụm từ (phrase) Điều này chỉ ra rằng khi tìm kiếm người dùng có khuynh hướng sử dụng những term mà chúng thường xuất hiện thành cụm từ hay thường xuất hiện gần nhau trong tài liệu Vì vậy, khoảng cách giữa các term, hay còn gọi là term proximity, đã được sử dụng ngầm bên dưới khi người dùng tìm kiếm tài liệu Dựa trên sự quan sát này, đã có nhiều công trình nghiên cứu tập trung vào khoảng cách giữa các term nhằm cải thiện độ chính xác ở những tài liệu ở đầu danh sách được trả về ([2][3][19][23][25]) Mặc dù các công trình nghiên cứu này có hướng tiếp cận khác nhau nhưng tất cả đều có thể chứng tỏ rằng hiệu quả truy hồi tài liệu có thể được cải thiện khi tích hợp các độ đo về khoảng cách vào trong các mô hình truy hồi hiện có
Tìm kiếm theo khoảng cách là cách tìm kiếm tài liệu có chứa hai hay nhiều term xuất hiện trong một khoảng cách được cho trước trong đó khoảng cách được định nghĩa là số lượng từ (word) hay kí tự nằm giữa các term và trong một vài trường hợp có thể yêu cầu thêm thứ tự của các term được thỏa mãn (Wikipedia 1 ) Ví dụ, trailer NEAR3 boys có nghĩa là người dùng yêu cầu không có hơn ba từ nằm giữa trailer và boys và chúng có thể có bất kỳ thứ tự nào Để làm tăng độ hiệu quả truy hồi tài liệu, ngoài những nghiên cứu tập trung vào độ đo khoảng cách giữa các term còn có những nghiên cứu khác trong lĩnh vực tìm kiếm ngữ nghĩa cụ thể là các nghiên cứu xem xét khai thác các đặc tính ontology của các thực thể có tên ([4][5][6]) Thực thể có tên (Named Entity – NE) là những thực thể được đề cập đến bằng tên ví dụ như con người, tổ chức, nơi chốn và có thể được mô tả trong
1 http://en.wikipedia.org/wiki/Proximity_search_(text) ontology ([20]) Ontology định nghĩa các lớp thực thể, cây phân cấp của các lớp thực thể, các thuộc tính của các lớp thực thể, và các quan hệ giữa các lớp thực thể Ngoài Ontology, việc xử lý các thực thể có tên này còn cần thêm các tri thức cụ thể về thế giới đang xét Các tri thức này được chứa trong cơ sở tri thức Cơ sở tri thức sẽ chứa đựng thông tin về các thực thể có tên cụ thể thuộc về các lớp thực thể đã được định nghĩa trong Ontology Tuy nhiên, theo hiểu biết của chúng tôi, chưa có một công trình nào ở tìm kiếm theo ngữ nghĩa xem xét tới các câu truy vấn khoảng cách có chứa thực thể có tên và từ khóa
Thực tế khoảng cách giữa thực thể có tên và từ khóa đã được xem xét tới trong ([18]) Nó được thực hiện trong lĩnh vực tìm kiếm chuyên gia (expert search), tức là việc tìm kiếm những người có kĩ năng và kinh nghiệm trong một chủ đề cho trước Tuy nhiên, nó không phải dành cho truy hồi văn bản
Các mô hình tính độ đo khoảng cách được đề cập ở trên tính khoảng cách giữa các term dựa trên token Khi được đánh chỉ mục, một tài liệu được phân tích thành các token (hay còn gọi là term) Mỗi token sẽ được gán cho một ví trí và khoảng cách giữa chúng sẽ được tính dựa trên vị trí này Xét tài liệu sau:
D: “Cultural exhibitions on Ho Chi Minh City development and integration opened in Lam Son park”
Khi đánh chỉ mục, tài liệu D được phân tích thành 15 token “cultural”,
“exhibitions”, “on”, “ho”, “chi”, “minh”, “city”, “development”, “and”, “integration”,
“opened”, “in”, “lam”, “son”, “park” có vị trí lần lượt từ 0 đến 14 Khoảng cách giữa các token có thể được tính dễ dàng dựa trên các vị trí này Ví dụ, khoảng cách giữa “on” và
“development” là 4 vì có 4 token “ho”, “chi”, “minh”, “city” nằm giữa chúng
Tuy nhiên, khi tính đến NE, khoảng cách term được tính dựa trên token không còn áp dụng được nữa Mỗi NE xuất hiện trong tài liệu thường bao phủ nhiều hơn một token Ví dụ, trong tài liệu D ở trên, có một NE gọi là “Ho Chi Minh City” và nó bao phủ
4 token Chúng tôi gọi số token bao phủ bởi một NE là chiều dài của NE đó Một NE có thể có nhiều tên khác (alias) với nhiều chiều dài khác nhau, vì vậy nó có thể có nhiều chiều dài khác nhau trong tài liệu Ngoài ra, những NE thuộc về cùng một lớp thực thể cũng có chiều dài khác nhau trong tài liệu Hãy xem xét các câu truy vấn cụm từ sau để có thể thấy chiều dài khác nhau của NE làm cho khoảng cách term dựa trên token không còn áp dụng được:
Q 1: “Cultural exhibitions on Saigon City development”
Q 2: “Cultural exhibitions on city development” Ở truy vấn Q 1 , các tài liệu trả về phải chứa các term “Cultural”, “exhibitions”,
“on”, “Saigon”, “City”, “development” đứng ngay sát cạnh nhau Ở Q 1 , “Saigon City” là một NE có ID là city_123 và nó bao phủ 2 token Ở đây câu truy vấn yêu cầu phải có term “on” xuất hiện ngay phía trước và term “development” xuất hiện ngay phía sau thực thể city_123 trong tài liệu Ở tài liệu D, có một cụm từ “Cultural exhibitions on Ho Chi Minh City development” Bởi vì “Ho Chi Minh City” là một tên khác của “Saigon City”, cho nên một cách trực quan thì tài liệu D có thể so trùng được với Q 1 Tuy nhiên, theo khoảng cách term dựa trên token ở trên, tài liệu D không được trả về vì nó không thỏa điều kiện về khoảng cách Một cách cụ thể, thực thể city_123 có chiều dài là 2 trong truy vấn Q 1 vì vậy khoảng cách giữa term “development” và “on” được yêu cầu là 2 Nhưng trong tài liệu D, thực thể city_123 có chiều dài là 4, vì vậy khoảng cách giữa term
“development” và “on” là 4, chính sự khác biệt này làm D không thể so trùng được với
Q 1 Chúng ta có thể thấy rằng lỗi này là do bởi vì cùng một NE nhưng nó có thể xuất hiện với nhiều tên khác nhau và nhiều chiều dài khác nhau trong truy vấn và tài liệu Mặc dù
NE trong truy vấn và tài liệu có thể so trùng được với nhau (như city_123 ở trên) nhưng chiều dài của chúng có thể khác nhau và điều này làm cho khoảng cách dựa trên token bị sai lệch
Một ví dụ khác là truy vấn Q 2 tìm kiếm tài liệu chứa tất cả các term “Cultural”,
“exhibitions”, “on”, “city”, “development” đứng sát nhau Ở đây “city” là một lớp thực thể gọi là City Ở Q 2 , câu truy vấn không đề cập đến một thành phố cụ thể nào nhưng đề cập đến tất cả thực thể có tên thuộc về lớp City Bởi vì “Ho Chi Minh City” là một thực thể thuộc lớp City cho nên một cách trực quan thì D có thể so trùng với câu truy vấn Q 2 Thế nhưng ở Q 2 khoảng cách giữa term “development” và “on” là 1 nhưng trong tài liệu
D khoảng cách giữa chúng lại là 4 Vì vậy, nếu theo cách tính khoảng cách dựa trên token, tài liệu D không thể so trùng được với Q 2 Ngoài Thành phố Hồ Chí Minh, còn có rất nhiều thực thể thành phố khác thuộc lớp City và mỗi thành phố trong số chúng có thể có chiều dài khác nhau Những chiều dài khác nhau của chúng làm cho khoảng cách giữa các term nằm trước và sau chúng cũng khác nhau Vì vậy việc so trùng term không còn dễ dàng như trong trường hợp so trùng từ khóa thuần Nó phải đối mặt với các khoảng cách động và biến đổi gây ra bởi những thực thể có tên có chiều dài khác nhau
Hai ví dụ trên cho thấy rằng khoảng cách được tính dựa trên token không thể áp dụng cho các câu truy vấn và tài liệu có chứa NE Trong luận án này, chúng tôi không đề xuất một mô hình xếp hạng mới có sử dụng khoảng cách giữa các term nhưng chúng tôi xem xét các khoảng cách động giữa các từ khóa và các thực thể có tên trong truy vấn và tài liệu như đã phân tích ở các ví dụ trên Cho đến nay, theo hiểu biết của chúng tôi, chưa có hệ thống truy hồi nào có hỗ trợ các câu truy vấn về khoảng cách giữa các từ khóa và các thực thể có tên
Mục tiêu của luận án này là khai thác các đặc tính ontology của thực thể có tên trong tìm kiếm theo khoảng cách, xem xét và phân tích các khoảng cách động giữa các từ khóa và các thực thể có tên, và sau đó phát triển một giải thuật để tính toán các khoảng cách động này Sau khi các khoảng cách được tính ra, bất cứ mô hình xếp hạng nào được đề cập ở trên đều có thể được áp dụng để xếp hạng các tài liệu được truy hồi Trong [12], chúng tôi đã đề xuất tìm kiếm theo khoảng cách có thực thể có tên trong đó vị trí của các term được cập nhật tĩnh lúc đánh chỉ mục nhưng chưa tiến hành thực nghiệm để đánh giá hiệu quả Trong luận án này, ngoài cách tiếp cận được đề xuất trong [12], chúng tôi còn đề xuất thêm tìm kiếm theo khoảng cách có thực thể có tên trong đó vị trí của các term được cập nhật động và tiến hành thực nghiệm để đánh giá hiệu quả của các phương pháp này trong việc cải thiện hiệu suất truy hồi dựa trên các độ đo độ chính xác, độ đầy đủ và độ hài hòa F Dựa trên các nghiên cứu đó, chúng tôi biến đổi thư viện S-Lucene
Các công trình liên quan
Trong các mô hình truy hồi hiện tại, các tài liệu được xếp hạng chủ yếu dựa trên nhiều loại đại lượng thống kê như tần số xuất hiện của term trong tài liệu (within- document term frequency – tf), tần số tài liệu nghịch đảo (inverse document frequency – idf) và chiều dài của tài liệu Bên cạnh đó, một cách trực quan khoảng cách giữa các term trong tài liệu cũng có thể được khai thác để làm tăng hiệu quả xếp hạng các tài liệu Tài liệu nào chứa các term được truy vấn càng gần nhau, tài liệu đó càng có khả năng được xếp hạng cao hơn Nhiều mô hình xếp hạng đã được đề ra kết hợp nội dung của tài liệu và khoảng cách để xếp hạng tài liệu Các mô hình này khác nhau ở cách chúng đo lường khoảng cách và cách chúng kết hợp độ đo khoảng cách vào trong mô hình truy hồi hiện có
Nghiên cứu của Keen ([10]) là một trong những cố gắng đầu tiên nghiên cứu về hiệu quả của khoảng cách trong các hệ thống truy hồi, trong đó, một toán tử NEAR được giới thiệu để lượng hóa khoảng cách giữa các term truy vấn Công trình này được phát triển dựa trên mô hình truy hồi Boolean được xem là không hiệu quả bằng các mô hình truy hồi khác như mô hình truy hồi không gian vectơ (Vector Space Model – VSM)
Một vài nghiên cứu khác khai thác khoảng cách đặc biệt dựa trên mô hình truy hồi BM25 ([2][3][19][23][25]) Nghiên cứu ở ([25]) sử dụng cách tiếp cận dựa trên khoảng văn bản (span-based) tức là cách dựa trên chiều dài của một đoạn văn bản (text) chứa tất cả các term trong câu truy vấn để đo lường khoảng cách Ngoài ra, các nghiên cứu trong ([2][3][19][25]) sử dụng cách tiếp cận kết hợp khoảng cách (distance aggregation approach) để đo lường khoảng cách bằng cách kết hợp các khoảng cách của từng cặp term (pair-wise) trong truy vấn Gần đây, Ruihua Song và các đồng nghiệp đã mở rộng cách tiếp cận dựa trên khoảng văn bản trong đó khái niệm khoảng văn bản (span) bây giờ không còn cần thiết chứa tất cả các term trong truy vấn và họ gọi nó là khoảng văn bản mở rộng (expanded span) ([23]) Để kết hợp độ đo khoảng cách vào trong các mô hình xếp hạng tài liệu hiện có, cách thông thường là kết hợp tuyến tính của độ đo khoảng cách và độ đo nội dung (ví dụ: tf, idf) ([2][3][19][25]) Một cách tiếp cận khác đề ra bởi Ruihua Song và các đồng nghiệp là độ đo khoảng cách được gắn thẳng vào trong hàm xếp hạng một cách tự nhiên bằng cách chỉnh sửa hàm xếp hạng đã có ([23])
Một vài nghiên cứu trong lĩnh vực tìm kiếm ngữ nghĩa xem xét khai thác các đặc tính ontology của các thực thể có tên ([4][5][6]) trong truy hồi văn bản Trong [5], các tác giả hiệu chỉnh mô hình không gian vectơ truyền thống với các vectơ trên không gian các định danh của thực thể có tên của cơ sở tri thức được khảo sát Đối với mỗi tài liệu hay mỗi câu truy vấn, các tác giả áp dụng kết hợp tuyến tính của vectơ dựa trên các định danh
NE và vectơ dựa trên từ khóa với hệ số là 0.5 Trong [6], mô hình LRD (Latent Relation Discovery) được đề xuất sử dụng cả từ khóa và thực thể có tên như là các term trong một không gian vectơ đơn Nội dung chủ yếu của mô hình là nó làm giàu nội dung mô tả của tài liệu bởi các term không có tồn tại nhưng có liên quan đến các term có tồn tại trong tài liệu
[6] chỉ sử dụng tên của thực thể và không khai thác hết các đặc điểm ontology của thực thể có tên Trong [4], các tác giả đã khảo sát sự kết hợp giữa tất cả các đặc tính ontology của thực thể có tên và từ khóa và sự kết hợp này có thể biểu diễn một dạng ngữ nghĩa ở mức cao của tài liệu và truy vấn Ví dụ, với câu truy vấn: tìm kiếm tài liệu về vấn đề ô nhiễm ở thành phố, những tài liệu trả về không nhất thiết phải chứa từ khóa “city” nhưng có thể chứa một vài thực thể có tên thuộc lớp City ví dụ như thành phố Sài Gòn hay thành phố Đà Nẵng Một ví dụ khác là câu truy vấn tìm kiếm tài liệu về vấn đề ô nhiễm ở thành phố Hồ Chí Minh Ở câu truy vấn này hệ thống của họ có thể trả về tài liệu về vấn đề ô nhiễm ở thành phố Sài Gòn bởi vì thành phố Sài Gòn là một tên khác của thành phố Hồ Chí Minh Ở hai ví dụ truy vấn này, các hệ thống truy hồi dựa trên từ khóa truyền thống không thể trả lời chính xác bởi vì chúng dựa trên tìm kiếm và so trùng từ khóa đơn giản
Các công trình đã đề cập ở trên chỉ mới xét đến khoảng cách giữa các từ khóa với nhau và chưa xét đến khoảng cách giữa các thực thể có tên và từ khóa Trong thực tế đã có công trình trong lĩnh vực tìm kiếm chuyên gia (expert search) xem xét đến khoảng cách giữa thực thể và từ khóa ([18]) nhưng mục đích của việc xem xét thêm khoảng cách là nhằm để xếp hạng chính xác hơn các thực thể được trả về Trong khi đó, trong lĩnh vực truy hồi tài liệu, chính tài liệu là các đối tượng được xếp hạng Cho nên có thể nói nghiên cứu về khoảng cách trong ([18]) không dành cho truy hồi tài liệu.
Cơ sở lý thuyết
Mô hình không gian vectơ dựa trên từ khóa
Trong truy hồi thông tin theo từ khóa, tài liệu dưới góc nhìn luận lý được thể hiện thông qua một tập các từ khóa được trích ra từ nội dung của tài liệu Trong một tập các từ khóa của một tài liệu, các từ khóa có mức độ mô tả tài liệu khác nhau Xem xét một tập với hàng trăm ngàn tài liệu thì việc một từ khóa xuất hiện trong hầu hết các tài liệu này rõ ràng là không thích hợp trong việc dùng nó để mô tả một tài liệu cụ thể nào; một từ khóa như vậy không giúp xác định tài liệu nào mà người dùng thật sự mong muốn Ngược lại một từ khóa chỉ xuất hiện trong năm tài liệu thì khá thích hợp bởi vì nó thu hẹp đáng kể không gian các tài liệu cần được xác định Để định lượng, các từ khóa trong tài liệu được gán một trọng số Lấy k i là một từ khóa, d j là một tài liệu, w i , j là trọng số gán cho cặp )
(k i d j Trọng số này định lượng mức độ quan trọng của từ khóa trong việc mô tả nội dung ngữ nghĩa của tài liệu được định nghĩa như sau trong [1]: Định nghĩa 2.1: Lấy t là tổng số từ khóa trong hệ thống và k i là từ khóa K={k 1 , …, k t ) là tập tất cả các từ khóa Một trọng số weight w i , j > 0 được gán cho mỗi từ khóa k i của tài liệu d j Với một từ khóa không xuất hiện trong tài liệu thì w i , j = 0 Tài liệu d j được thể hiện bằng một vector d j
= (w 1 , j , w 2 , j , …, w t , j ) Hơn nữa lấy g i là một hàm trả về trọng số của từ khóa k i (g i (d j )w i , j )
Có nhiều mô hình truy hồi thông tin theo từ khóa khác nhau Dưới đây sẽ trình bày khái quát mô hình không gian vector theo từ khóa (Keywords Vector Space Model –
KW VSM) ([1]) Đây là mô hình cơ bản và phổ biến trong truy hồi thông tin vì tính đơn giản, hiện thực nhanh và kết quả trả về khá tốt Định nghĩa 2.2: Gọi k i là từ khóa, d j là tài liệu, w i j , là trọng số được gán cho cặp (k i ,d j ), w i j , ≥ 0; w i q , là trọng số được gán cho cặp [k i , q], w i q , ≥ 0 Ta có vectơ truy vấn q= (w 1,q , …, w t q , ) và vectơ tài liệu d j = (w 1, j , …, w t j , ), với t là tổng số từ khóa trong bộ lưu trữ Độ tương tự ngữ nghĩa giữa tài liệu d j và truy vấn qđược tính bằng cosin của góc tạo bởi hai vectơ: sim (d j , q) = j j d q d q
Trọng số của từ khóa được tính theo phương pháp tf.idf :
Trong đó tf là là hàm theo tần số xuất hiện của từ khóa trong tài liệu và idf
(inverse term frequency) là hàm theo tần số nghịch đảo của tần số xuất hiện của từ khóa trong tất cả các tài liệu được tính theo định nghĩa 2.3 Định nghĩa 2.3: Lấy N là tổng số tài liệu trong hệ thống và n i là số tài liệu trong đó từ khóa k i xuất hiện Lấy freq i , j là tần số xuất hiện thô của từ khóa k i trong tài liệu d j
(nghĩa là số lần xuất hiện của từ khóa k i trong tài liệu d j ) Giá trị tf được tính như sau: tf i,j = , max , i j l l j freq freq
Nếu từ khóa k i không xuất hiện trong tài liệu d j thì tf i,j = 0
Giá trị idf được tính như sau : idf i = log i
N n Đối với trọng số cho từ khóa trong truy vấn, Salton và Buckley đề nghị cách tính như sau: w i q , = ,
trong đó, freq i q , là tần số xuất hiện của từ khóa k i trong truy vấn q Ưu điểm chính của mô hình không gian vector là: (1) đơn giản, hiệu suất truy hồi tốt; (2) việc sử dụng phương pháp tf.idf làm tăng hiệu suất truy hồi; (3) Cho phép xấp xỉ các điều kiện truy vấn; (4) Phương pháp tính độ tương tự theo cosin cho phép xếp hạng tài liệu theo các mức độ liên quan Về mặt lý thuyết mô hình không gian vector có nhược điểm là đã xem các từ khóa là độc lập với nhau, trọng số của từ khóa này không phụ thuộc vào trọng số của các từ khóa khác
Trong mô hình không gian vectơ, với một truy vấn cho trước, quá trình truy hồi bao gồm hai bước chính là lọc tài liệu và xếp hạng tài liệu Mục đích của bước lọc tài liệu là giới hạn tập tài liệu cần xếp hạng bằng cách chọn những tài liệu thỏa mãn biểu thức boolean trong câu truy vấn Ví dụ, với truy vấn k 1k 2, D 1 và D 2 lần lượt là hai tập tài liệu chứa k 1 và k 2, ta có D 1D 2 là tập tài liệu cần tìm Tập tài liệu này được xếp hạng theo độ tương tự với truy vấn theo các công thức trên trước khi trả về cho người dùng.
Mô hình không gian vectơ dựa trên thực thể có tên
Mô hình không gian vectơ dựa trên thực thể có tên (NE VSM) đã được khảo sát trong ([13]) trong đó đưa ra định nghĩa mô hình truy hồi thông tin theo thực thể có tên như định nghĩa 2.4 Định nghĩa 2.4: Cho một bộ ba (N , C, I ) trong đó N, C và I lần lượt là các tập của tên, lớp và danh hiệu của thực thể có tên trong bộ lưu trữ
(1) Tài liệu dlà một tập con của (N{*})(C{*})(I {*}), trong đó „*‟ đại diện cho một tên, lớp hay danh hiệu chưa biết của một NE trong tài liệu d
(2) d được miêu tả bởi bộ bốn vectơ (d N , d C , d NC , d I ) trong đó d N , d C , d NC , d I lần lượt là các vectơ của tài liệu d trên N, C, N C và I
Mỗi một vectơ trong bốn vectơ được giới thiệu trên được xem như một vectơ trong mô hình không gian vectơ truyền thống, trong đó không gian từ khóa được thay bằng không gian tên, lớp, tên-lớp và danh hiệu của NE
Ta gọi d K , q K là một trong các vectơ tài liệu và truy vấn trên Độ tương tự ngữ nghĩa cho cặp vectơ d K , q K là cosin giữa hai vectơ: sim(d K , q K ) = K K
trong đó, K lần lượt là N , C, N C và I Để tính trọng số cho các thành phần của vectơ tài liệu và truy vấn trên không gian
K, ta vẫn áp dụng phương pháp tf.idf trong mô hình vectơ cổ điển, trong đó từ khóa được thay thế bởi tên, lớp, tên-lớp và danh hiệu của các thực thể có tên Tuy nhiên, với các đặc trưng về ngữ nghĩa của NE, có hai yếu tố khác biệt quan trọng trong việc tính toán tần số xuất hiện Đó là các vấn đề về bao phủ lớp (class subsumption) và tên khác:
1 Tần số của tên NE được tính khi xuất hiện cả các tên khác của nó Nghĩa là, nếu tài liệu chứa NE với một tên khác, ta cũng xem như tên NE xuất hiện trong tài liệu Ví dụ, nếu tài liệu có NE thành phố Hồ Chí Minh, thì mỗi lần xuất hiện của nó cũng được tính là một lần xuất hiện của thành phố Sài Gòn, vì Hồ Chí Minh là một tên khác của Sài Gòn, cùng đề cập đến một
NE duy nhất đó là thành phố Sài Gòn ở Việt Nam
2 Tần số của lớp NE được tính khi xuất hiện lớp con của nó Nghĩa là, nếu tài liệu chứa một NE có lớp là lớp con của một lớp cần tìm thì ta cũng xem như lớp cần tìm xuất hiện trong tài liệu Ví dụ, nếu tài liệu có NE thành phố Sài Gòn, thì mỗi xuất hiện của nó cũng được tính như một lần xuất hiện của lớp Nơi chốn (Location), bởi vì Thành phố là lớp con của lớp Nơi chốn Độ tương tự giữa tài liệu d và câu truy vấn q sẽ được định nghĩa như sau: sim(d, q) = w N sim(d , N q ) + w N C sim(d , C q ) + C w NC sim(d NC , q NC )+ w I sim(d I , q ) I trong đó, w N + w C + w NC + w I = 1, w K = 0 nếu không tồn tại q K trong truy vấn q, với K lần lượt là N, C, N C và I Các trọng số w K chưa được gán giá trị xác định Tùy thuộc vào ứng dụng cụ thể, người sử dụng lựa chọn các giá trị thích hợp nhằm nhấn mạnh vào một đặc trưng cụ thể của NE Ngoài ra, cũng lưu ý rằng việc kết hợp hai vectơ d N và d C không thể thay thế được d NC vì vectơ d NC đề cập đến thực thể có tên với cặp tên-lớp xác định Đồng thời việc kết hợp giữaI với N và C là không cần thiết vì tên và lớp của một NE được dẫn xuất từ một NE cụ thể xác định bởi danh hiệu của nó
Tóm lại, mô hình truy hồi thông tin theo thực thể có tên đã dựa trên mô hình không gian vectơ truyền thống, thay thế từ khóa bởi các đặc trưng của NE, lần lượt là tên, lớp, tên-lớp và danh hiệu; và sử dụng bốn vectơ trên các không gian này để đặc tả một tài liệu hay truy vấn cho quá trình truy hồi thông tin.
Mô hình kết hợp thực thể có tên và từ khóa trên một không gian vectơ chung
Mô hình NE VSM truy hồi thông tin như đã đề cập ở trên chỉ khai thác các đặc trưng của NE mà bỏ qua từ khóa Tuy nhiên ngữ nghĩa của văn bản hay truy vấn không thể được thể hiện trọn vẹn chỉ thông qua NE Với câu truy vấn “ô nhiễm ở thành phố Hồ Chí Minh” thì việc bỏ qua từ khóa “ô nhiễm” mà chỉ truy vấn trên thực thể có tên “thành phố Hồ Chí Minh” đã làm mất đi thông tin quan trọng của từ khóa “ô nhiễm” Hơn nữa, câu truy vấn có thể không chứa một thực thể có tên nào [4] đã đề ra mô hình truy hồi thông tin kết hợp giữa NE và từ khóa trên một không gian vectơ chung (NE+KW) nhằm tận dụng được sức mạnh của từng mô hình riêng rẽ đồng thời bổ trợ các khiếm khuyết của nhau Trong mô hình này, [4] xem từ khóa và NE có vai trò như nhau và là một thành phần tổng quát trong một không gian vector chung Một tài liệu d được thể hiện bởi một vectơ trong một không gian tổng quát, trong đó các thành phần vectơ là từ khóa hoặc NE Đối với truy vấn q, cách tiếp cận cũng hoàn toàn tương tự Độ tương tự giữa tài liệu d và truy vấn q được tính toán theo mô hình không gian vectơ truyền thống Định nghĩa 2.5 là định nghĩa chính thức của mô hình NE+KW Định nghĩa 2.5: Gọi t i là từ khóa hoặc NE, w i d , và w i q , lần lượt là trọng số được gán cho cặp (t i ,d) và cặp (t i , q) Ta có, vectơ truy vấn q= (w 1,q , …, w t q , ) và vectơ tài liệu d (w 1,d , …, w t d , ), với t là tổng số từ khóa và NE trong bộ lưu trữ Độ tương tự ngữ nghĩa giữa tài liệu dvà truy vấn qđược tính bằng cosin của góc tạo bởi hai vectơ: sim (d, q) = d q d q
Để tính trọng số cho các thành phần của vectơ tài liệu và truy vấn, ta vẫn áp dụng phương pháp tf.idf theo mô hình vectơ cổ điển, trong đó từ khóa và NE có vai trò như nhau Với NE, mô hình KW+NE cũng áp dụng tên khác và bao phủ lớp như trong mô hình NE VSM trong việc tính toán tần số xuất hiện
Tổng quát, mô hình KW+NE tương tự mô hình không gian vectơ theo từ khóa truyền thống, từ cách tính độ tương tự theo cosin góc giữa hai vectơ, đến cách tính trọng số theo tf.idf Một điểm khác ở đây là nó đã mở rộng mô hình cho NE, trong đó NE được đại diện bởi bộ ba đặc trưng Với các đặc trưng này, cách tính tf.idf có những điều chỉnh phù hợp cho NE.
Tìm kiếm theo khoảng cách dựa trên từ khóa
Tìm kiếm theo khoảng cách tìm kiếm tài liệu có chứa hai hay nhiều term xuất hiện trong một khoảng cách được cho trước trong đó khoảng cách được định nghĩa là số lượng từ (word) hay kí tự nằm giữa các term Ngoài yếu tố khoảng cách, có một vài biến thể yêu cầu thỏa mãn thêm thứ tự của term, trong đó thứ tự của term xuất hiện trong tài liệu phải giống với thứ tự của chúng trong câu truy vấn (Wikipedia 2 ) Để khai thác khoảng cách trong truy hồi thì việc đầu tiên là cần tính toán được khoảng cách của các term truy vấn xuất hiện trong tài liệu Khi một tài liệu so trùng được với hai term trong câu truy vấn thì khoảng cách chỉ đơn giản là khoảng cách giữa hai term đó Tuy nhiên, trong trường hợp tổng quát, câu truy vấn có thể có nhiều hơn hai term và tài liệu có thể so trùng được với nhiều hơn hai term trong câu truy vấn Bên cạnh đó, mỗi term truy vấn lại có thể xuất hiện nhiều lần trong tài liệu Vì vậy, một thách thức đặt ra là tạo được một đại lượng đo lường khoảng cách tổng quát có tính đến số lượng biến thiên của term truy vấn có chứa trong tài liệu Để tính khoảng cách giữa các term, [25] đề ra hai loại tiếp cận Loại thứ nhất là các cách tiếp cận dựa trên khoảng văn bản (span-based) tức là cách dựa trên chiều dài của
2 http://en.wikipedia.org/wiki/Proximity_search_(text) một đoạn văn bản chứa tất cả các term trong câu truy vấn để đo lường khoảng cách Loại thứ hai là các cách tiếp cận dựa trên tổng hợp khoảng cách (distance aggregation approaches) tức là cách tính khoảng cách bằng cách tổng hợp từng cặp khoảng cách giữa từng hai term một (pair-wise distance) Có thể thấy rằng, loại đầu tiên có tính “toàn cục” hơn vì nó phải tính đến tất cả các term trong câu truy vấn Ngược lại, loại thứ hai có tính
“cục bộ” hơn vì nó có tính đến khoảng cách của từng cặp term một và còn phụ thuộc vào cách tổng hợp khoảng cách lại như thế nào
Phần sau sẽ trình bày một số độ đo khoảng cách theo hai loại tiếp cận trên Tài liệu d sau đây sẽ được dùng để giải thích các định nghĩa trong phần 2.4 Các định nghĩa này được tham khảo trong [25] d = t 1, t 2, t 1, t 3, t 5, t 4, t 2, t 3, t 4
Một vài độ đo khoảng cách dựa trên khoảng văn bản Định nghĩa 2.6 (Span): Span ([8]) được định nghĩa là chiều dài của một phân đoạn ngắn nhất (segment) của tài liệu bao phủ tất cả các term truy vấn xuất hiện trong tài liệu, bao gồm cả các xuất hiện lặp lại
Ví dụ, trong tài liệu d, ta có giá trị span bằng 7 đối với câu truy vấn {t 1; t 2} Định nghĩa 2.7 (Min coverage): Min coverage được định nghĩa là chiều dài của phân đoạn ngắn nhất của tài liệu bao phủ mỗi term truy vấn ít nhất một lần trong tài liệu
Ví dụ, nếu câu truy vấn là {t 1, t 2}, giá trị Min coverage của nó bằng 2, nhưng nếu câu truy vấn là {t 1, t 2, t 4}, giá trị Min coverage của nó sẽ là 5 (chiều dài của phân đoạn từ vị trí thứ
2 cho đến vị trí thứ 6)
Một vài độ đo dựa trên tổng hợp khoảng cách Đầu tiên các cặp term truy vấn có xuất hiện trong tài liệu sẽ được xác định và khoảng cách gần nhất của chúng trong tài liệu cũng được xác định Ví dụ, khi một truy vấn có ba term khác nhau {t 1 , t 2 , t 3 } và có một tài liệu có chứa cả ba term đó, ta sẽ có được ba cặp term truy vấn khác nhau đó là: {t 1, t 2 }, {t 1 , t 3 }, and {t 2 , t 3 } Trong tài liệu ví dụ d, khoảng cách gần nhất của ba cặp term này đều là 1 bởi vì chúng đều xuất hiện đứng cạnh nhau ở đâu đó trong tài liệu Đặt Dis(t 1 ; t 2 ; D) là khoảng cách gần nhất giữa các vị trí xuất hiện của term t 1 và term t 2 trong tài liệu D, ta có định nghĩa các độ đo dựa trên tổng hợp khoảng cách như sau: Định nghĩa 2.8 (Minimum pair distance (MinDist)): Minimum pair distance được định nghĩa là giá trị khoảng cách nhỏ nhất của tất cả các cặp term duy nhất xuất hiện trong tài liệu Một cách hình thức,
Ví dụ, giá trị MinDist của tài liệu ví dụ d đối với câu truy vấn Q = {t 1 , t 2 , t 3 } là 1 Định nghĩa 2.9 (Average pair distance (AveDist)): Average pair distance được định nghĩa là giá trị khoảng cách trung bình của tất cả các cặp term duy nhất xuất hiện trong tài liệu Một cách hình thức,
) 1 ( 2 q q D Q q q Dis q q D n n trong đó n là số lượng term duy nhất có xuất hiện trong tài liệu và trong công thức tính tổng, Dis(q 1 , q 2 , D) và Dis(q 2 , q 1 ; D) chỉ được tính một lần
Ví dụ, giá trị AveDist của tài liệu ví dụ d đối với câu truy vấn Q = {t 1, t 4 , t 5 } là (1 + 2 + 3)/3 = 2 Định nghĩa 2.10 (Maximum pair distance (MaxDist)): Maximum pair distance được định nghĩa là giá trị khoảng cách lớn nhất của tất cả cặp term duy nhất xuất hiện trong tài liệu Một cách hình thức,
Mô hình truy hồi dựa trên khoảng cách
Cho một hàm đo khoảng cách (Q,D) được định nghĩa trên tài liệu D và truy vấn Q, hàm này có thể là một trong các độ đo đã trình bày ở trên, giá trị truy hồi (retrieval score) dùng để xếp hạng (kí hiệu bởi (Q,D)) được tính dựa trên (Q,D), nghĩa là,
= f((Q,D)), trong đó f là một hàm chuyển đổi có thể có thông số Hàm
có thể được thiết kế dựa trên giả sử heuristic về khoảng cách như giá trị
càng nhỏ thì giá trị (Q,D) càng lớn Có nghĩa là các term truy vấn xuất hiện càng gần nhau trong tài liệu càng làm tăng khả năng liên quan của tài liệu đó với truy vấn Giả sử heuristic này được cụ thể hình thức như sau:
Ràng buộc (proximity heuristic): Lấy Q là một truy vấn và D là một tài liệu trong tập tài liệu Lấy D‟ là một tài liệu tạo ra bởi việc đảo các vị trí của hai term trong D Nếu
Một giả sử heuristic thứ hai đó là hàm (Q,D) cần giảm nhanh trong khoảng giá trị khoảng cách nhỏ và gần trở thành hằng số khi khoảng cách càng ngày càng lớn Điều này dựa trên quan sát rằng khoảng cách nhỏ giữa các term thường nói lên sự liên hệ mạnh mẽ về ngữ nghĩa giữa chúng, vì vậy (Q,D) cần đánh giá cao các trường hợp các term đứng thực sự gần nhau; tuy nhiên, khi khoảng cách lớn, các term được cho là có một sự liên hệ rất yếu về ngữ nghĩa, vì vậy hàm (Q,D) không nên quá nhạy với sự khác biệt về khoảng cách khi khoảng cách là lớn Giả sử heuristic này được hình thức hóa như sau:
Ràng buộc (Convex curve): Lấy Q là một truy vấn và D 1 , D 2 , và D 3 là ba tài liệu chỉ khác nhau về thứ tự các term và các phần còn lại đều giống nhau Có nghĩa là, chúng có cùng các term, nhưng thứ tự của các term thì khác nhau trong mỗi tài liệu Nếu (Q,D 1 ) )
Hai ràng buộc trên gợi ý một đường cong như Hình 2-1 Một đường cong như vậy có thể có được bằng hàm sau:
Hình 2-1: Dạng đường cong của hàm (Q,D)
Tất nhiên sẽ có rất nhiều hàm thỏa mãn các ràng buộc ở trên Vì vậy các nghiên cứu về khoảng cách chủ yếu khác nhau ở độ đo khoảng cách (Q,D) và hàm chuyển đổi sang giá trị truy hồi (Q,D) Sau khi đã xác định (Q,D) ta có thể dùng kết hợp tuyến tính nó với một mô hình truy hồi hiện có Ví dụ như ta có thể kết hợp với mô hình Okapi BM25 model như sau:
Đánh chỉ mục và tìm kiếm theo khoảng cách trong Lucene
Lucene 3 là một thư viện mã nguồn mở để lưu trữ, đánh chỉ mục, và tìm kiếm tài liệu ([7]) Thực sự, Lucene sử dụng mô hình không gian vectơ (Vector Space Model – VSM) với một sự chỉnh sửa nhỏ trong công thức cosine tính độ tương tự giữa truy vấn và tài liệu Trong Lucene, một term là một chuỗi các kí tự và tần số xuất hiện term được tính dựa trên việc so trùng chính xác chuỗi Phần sau sẽ lần lượt trình bày đánh chỉ mục và tìm kiếm theo khoảng cách trong Lucene Đánh chỉ mục trong Lucene Đánh chỉ mục tài liệu trong Lucene bao gồm ba bước chính Bước đầu tiên, tài liệu sẽ được rút trích text Ở bước thứ hai, văn bản sẽ được phân tích thành các term là những token được phân cách bởi khoảng trắng hay bởi dấu phân cách được định nghĩa bởi người dùng Sau đó, những từ không có ý nghĩa (stop words) được loại bỏ và các từ sẽ được chuẩn hóa thông qua tác vụ viết thường (lowercase) và đưa về từ gốc (stemming) Bước thứ ba, văn bản sẽ được đánh chỉ mục và ghi xuống tập tin lưu trữ Ở Lucene, một tài liệu được cấu trúc thành một tập các trường (field) Mỗi trường thể hiện một phần nội dung của tài liệu hay siêu dữ liệu của nó ví dụ như tên tác giả, tựa đề, chủ đề, và ngày chỉnh sửa Các trường được phân biệt dựa trên tên của chúng Thông thường các trường nội dung của một tài liệu chứa những token của tài liệu đó và là các trường dùng để đánh chỉ mục và tìm kiếm Các trường siêu dữ liệu thường được lưu trữ cùng với các tài liệu nhằm mục đích cung cấp thêm các thông tin về các tài liệu được trả về Lucene cung cấp bốn kiểu trường khác nhau :
Keyword: không được phân tích, nhưng được đánh chỉ mục và lưu trong kho chỉ mục theo đúng nguyên văn Kiểu này thích hợp cho những trường mà giá trị nguyên thủy của nó cần được giữ nguyên hoàn toàn như URL, đường dẫn của file, tên người
UnIndexed: không được phân tích lẫn đánh chỉ mục, nhưng giá trị của nó vẫn được lưu trong kho chỉ mục Kiểu này thích hợp cho những trường cần được biểu diễn với kết quả tìm kiếm (chẳng hạn như URL), nhưng giá trị của nó không được tìm kiếm một cách trực tiếp
Unstored: Ngược với UnIndexed, trường này được phân tích và đánh chỉ mục nhưng không được lưu trong kho chỉ mục Kiểu này thích hợp cho việc đánh chỉ mục một khối lượng lớn văn bản mà không cần được truy xuất theo nguyên văn ban đầu, như phần thân của một trang Web
Text: được phân tích và đánh chỉ mục.Việc lưu trường này hay không phụ thuộc vào nguồn của dữ liệu đầu vào Đây là trường thường được sử dụng nhất Để đánh chỉ mục một tập các tài liệu, Lucene sử dụng cấu trúc chỉ mục đảo Cấu trúc chỉ mục đảo bao gồm một danh sách các từ khóa (từ vựng) được sắp xếp theo thứ tự bảng chữ cái (alphabetical order) Mỗi từ khóa được liên kết với một danh sách các tài liệu (posting list) có chứa từ khóa đó Lucene lưu trữ vị trí xuất hiện của mỗi từ khóa trong tài liệu vào một bảng vị trí Việc lưu trữ các vị trí của từ khóa là nhằm để thực thi các câu truy vấn về khoảng cách
Hình 2-2 mô tả cấu trúc file chỉ mục của Lucene Trường có tên là “contents” có một danh sách các từ khóa (hay term) được sắp xếp theo dạng thứ tự bảng chữ cái tương ứng với trường đó, ví dụ [“barack”, “obama”, ] Ở đây, trong tập tài liệu có hai tài liệu có chứa term “obama” và IDs của hai tài liệu này lần lượt là 3 và 4 và số lần xuất hiện (raw frequencies) của term “obama” lần lượt là 10 và 2 Mỗi sự xuất hiện của một term trong tài liệu được liên kết với vị trí xuất hiện của chúng trong một bảng vị trí như được thể hiện trong Hình 2-2
Với cách tổ chức như vậy, việc tìm kiếm các tài liệu có chứa một câu truy vấn cụm từ cụ thể sẽ được thực hiện bằng cách tìm kiếm các tài liệu có chứa tất cả term trong câu truy vấn, sau đó tham khảo đến bảng vị trí để xem xem các vị trí xuất hiện của chúng có liên tục với nhau hay không Số lần xuất hiện của một term trong mỗi tài liệu và số tài liệu có chứa term đó được sử dụng để tính các độ đo dựa trên tf và idf trong vectơ thể hiện tài liệu trong mô hình VSM để xếp hạng các tài liệu được truy hồi
Hình 2-2: Cấu trúc file chỉ mục của Lucene Tìm kiếm theo khoảng cách trong Lucene
Với cấu trúc chỉ mục như trên, Lucene hỗ trợ hiệu quả nhiều dạng tìm kiếm khác nhau như tìm kiếm đơn và đa từ khóa và tìm kiếm theo khoảng cách Lucene sử dụng mô hình Boolean và mô hình VSM trong quá trình tìm kiếm Mô hình Boolean được sử dụng để lọc lấy ra các tài liệu là câu trả lời của một truy vấn Sau khi lọc ra các tài liệu, để xếp hạng các tài liệu này, Lucene sử dụng mô hình VSM để đo độ tương tự giữa một truy vấn và một tài liệu Một câu truy vấn đơn từ khóa sẽ được thực thi rất nhanh bởi cấu trúc chỉ mục đảo Lucene định vị từ khóa được truy vấn trong danh sách các từ khóa được xếp theo thứ tự bảng chữ cái, sau đó lấy ra danh sách các tài liệu có chứa từ khóa đó Đối với một câu truy vấn đa từ khóa, Lucene lấy ra danh sách các tài liệu cho mỗi từ khóa được truy vấn và tiến hành trộn các danh sách này lại với nhau dựa trên các toán tử Boolean trong truy vấn Ví dụ, xem xét một câu truy vấn tìm kiếm tất cả tài liệu có chứa từ khóa
“River” và “Mountain” Lucene sẽ lấy giao danh sách tài liệu chứa từ khóa “River” và danh sách tài liệu chứa từ khóa “Mountain” Quá trình lấy giao sẽ diễn ra rất nhanh bởi vì các danh sách này được sắp xếp theo ID của các tài liệu (xem Hình 2-3) Lucene sử dụng một danh sách nhảy (skipping list) để tăng tốc việc lấy giao
Hình 2-3: Tìm kiếm đa từ khóa
Lucene cũng có hỗ trợ tìm kiếm theo khoảng cách dựa trên khoảng cách term Tìm kiếm theo khoảng cách với khoảng cách bằng 0 được gọi là tìm kiếm chính xác cụm từ Khi khoảng cách lớn hơn 0, bên cạnh sự ràng buộc về khoảng cách, tìm kiếm theo khoảng cách có thể còn yêu cầu thỏa mãn thứ tự của các term dựa trên vị trí của chúng trong truy vấn Lucene hỗ trợ tìm kiếm chính xác cụm từ và tìm kiếm với khoảng cách lớn hơn 0 nhưng không yêu cầu thỏa mãn thứ tự của các term Các câu truy vấn của hai dạng tìm kiếm này được Lucene lần lượt gọi là PhraseQuery và SloppyPhraseQuery (sử dụng thuật ngữ slop để nói về khoảng cách) Trong Lucene, khoảng cách giữa term A và term B trong tài liệu là số bước cần thiết để di chuyển A (hay B) đến đúng vị trí của nó như cách nó xuất hiện trong câu truy vấn
Ví dụ, cho câu truy vấn q = “A B”, có nghĩa là, B nằm ngay bên phải phía sau A
Giả sử ta có những tài liệu sau trong đó “_” thể hiện một biến ẩn có thể là bất kỳ term nào: d 1 : “A _ _ _ B _” d 2 : “B _ A _” Ở d 1, để xuất hiện như trong câu truy vấn q, B phải được di chuyển như sau: d 1 : “A _ _ _ B _”
Có nghĩa là, ta phải tốn 3 bước để di chuyển B về phía trái để B nằm ngay phía sau bên phải của A Ở d 2, để xuất hiện như trong câu truy vấn q, B phải được di chuyển như sau: d 2: “B _ A _”
Có nghĩa là, ta phải tốn 3 bước để di chuyển B về phía phải để B nằm ngay phía sau bên phải của A Ở trên, trong tài liệu, A được giữ cố định và B được di chuyển Một cách khác, B có thể được giữ cố định trong khi A được di chuyển như sau: d 1 : “A _ _ _ B _” (tốn 3 bước di chuyển) d 2 : “ B _ A _” (tốn 3 bước di chuyển)
Một cách tổng quát, cho một câu truy vấn có n terms {t 1 ,…,t n }, trong một tài liệu, bất kỳ term t{t 1 ,…,t n } nào đều có thể được giữ cố định và các term còn lại được di chuyển đến đúng vị trí của chúng như cách chúng xuất hiện trong câu truy vấn Khoảng cách di chuyển của một term t i ứng với term cố định t 0 được tính theo công thức sau: step i = (pd i - pq i ) - (pd 0 - pq 0) (2.1) trong đó: pd i : vị trí của term t i trong tài liệu, pq i : vị trí của term t i trong truy vấn, pd 0: vị trí của term t 0 trong tài liệu, pq 0: vị trí của term t 0 trong truy vấn
Ta có thể thấy rằng: step i > 0: t i sẽ được di chuyển về phía trái, step i < 0: t i sẽ được di chuyển về phía phải, step i = 0: t i sẽ không được di chuyển
Với cách tính khoảng cách di chuyển như vậy, các điều kiện của Lucene để so trùng một tài liệu d và một truy vấn khoảng cách q như sau: slop = 0: d so trùng được với q nếu i: step i = 0 slop > 0: d so trùng được với q nếu maxstep ≤ slop, trong đó maxstep = max1 ≤ i ≤ n (step i ) Bởi vì có nhiều hơn một cách lựa chọn một term cố định nên giá trị maxstep có thể khác nhau Đặt ∆ i = pd i - pq i là hiệu số giữa các vị trí của term t i trong tài liệu và trong truy vấn Lucene chọn bất kỳ term t i nào thỏa mãn ∆ i = ∆ 0 = min(∆ i ), trong đó 1 ≤ i ≤ n để làm term cố định để tính giá trị maxstep Sau đó, giá trị step i = ∆ i - ∆0 sẽ luôn luôn lớn hơn hay bằng 0 đối với mỗi term t i , có nghĩa là nếu term t i được di chuyển, nó sẽ được di chuyển về phía trái
Đánh chỉ mục và tìm kiếm theo thực thể có tên
Như đã trình bày ở trên, Lucene hỗ trợ hiệu quả việc đánh chỉ mục và tìm kiếm dựa trên từ khóa Tuy nhiên, đánh chỉ mục và tìm kiếm theo ngữ nghĩa, cụ thể là theo thực thể có tên, đòi hỏi phải mở rộng Lucene Phần này trình bày cách mà các thực thể có tên được đánh chỉ mục cùng với từ khóa để thực hiện tìm kiếm theo thực thể có tên Lucene được mở rộng được gọi là S-Lucene ([4][15][16])
Nhận diện thực thể có tên
vn-kim-demo
Cultural exhibitions on Ho Chi Minh City development and integration opened in Lam Son park
Hình 2-4: Ví dụ một tài liệu HTML Để tìm kiếm tài liệu dựa trên thực thể có tên, một tài liệu cần phải được chú giải để nhận diện các thực thể có tên xuất hiện trong tài liệu ([17]) Ở bước này, một hệ thống chú giải được sử dụng để xác định tất cả các thực thể có tên xuất hiện trong tài liệu cùng với các bí danh (alias), lớp (class) và các lớp cha (super-class) của chúng Ở đây chúng tôi sử dụng KIM để làm hệ thống chú giải KIM (Knowledge & Information Management) 4 là hệ thống quản lý thông tin và tri thức được phát triển bởi Ontotext Lab Trong hệ thống KIM, ontology chứa các định nghĩa của lớp thực thể, các thuộc tính và các mối quan hệ Thực thể có tên và các mối quan hệ của chúng được lưu trữ trong cơ sở tri thức
4 http://www.ontotext.com/kim
KIM cho phép chú thích ngữ nghĩa của tài liệu, rút trích thông tin, hỗ trợ đánh chỉ mục và truy hồi Thực thể trong KIM được xác định bởi một URI duy nhất, được xem là danh hiệu của nó KIM IE được phát triển dựa trên nền mã nguồn mở GATE (General Architecture for Text Engineering) 5 , trong đó trung tâm là module nhận diện NE Nhận diện NE trong KIM cũng đạt được thành tựu nhất định, với độ chính xác và độ đầy đủ trung bình lần lượt là 90% và 86% 6 Đối với truy hồi thông tin, KIM cung cấp cơ chế đánh chỉ mục và truy hồi theo danh hiệu của thực thể có tên, và được xây dựng trên nền mã nguồn mở Lucene
Ho Chi Minh City
Ho Chi Minh City
Hình 2-5: Các thực thể có tên được nhận diện
Trong Hình 2-4, tài liệu HTML đơn giản chứa nội dung “Cultural exhibitions on
Ho Chi Minh City development and integration opened in Lam Son park” với các thông tin về TITLE, URL và đường dẫn của file cache Hình 2-5 trình bày kết quả của việc chú
6 http://www.ontotext.com/kim/performance.html giải tài liệu ví dụ, trong đó Ho Chi Minh City được nhận diện là một thực thể có tên thuộc lớp City, với ID tương ứng là city_123 Các kết quả còn bao gồm sự mở rộng tài liệu với các bí danh của Ho Chi Minh City, và super-class Location từ cơ sở tri thức và ontology Đánh chỉ mục dựa trên thực thể có tên và từ khóa
Các đặc tính ontology của thực thể có tên bao gồm tên, lớp cụ thể nhất, và định danh của nó nếu có tồn tại trong cơ sở tri thức được khảo sát Người dùng có thể tìm kiếm các tài liệu dựa trên một hay sự kết hợp của các đặc tính này Để tìm kiếm theo các đặc tính này, các NE term được giới thiệu ngoài các term từ khóa thông thường Cấu trúc của mỗi NE term là bộ ba (name/class/identifier) Tên, lớp, hay định danh nếu không được đặc tả sẽ được kí hiệu là “*”
Bảng 2-1: Trường ne+kw field name keyword term named entity term ne+kw “Cultural”, “exhibitions”, “on”, “Ho”,
“ho chi minh city/*/*”, “*/city/*”,
“ho chi minh city/city/*”,
“ho chi minh city/location/*”,
“saigon/location/*” Để dánh chỉ mục dựa trên thực thể có tên và từ khóa, với mỗi thực thể có tên n, lớp c và định danh id trong tài liệu, các bộ ba (n/*/*), (*/c/*), (n/c/*), (alias(n)/*/*),
(*/super(c)/*), (n/super(c)/*), (alias(n)/c/*), (alias(n)/ super(c)/*), and (*/*/id) được thêm vào tài liệu ([4]) Ở đây alias(n) và super(c) tương ứng nói về bất cứ tên khác nào của n và bất cứ lớp cha nào của c trong ontology và cơ sở tri thức Vì vậy, thông tin đánh chỉ mục của tài liệu không chỉ chứa các term từ khóa được phân tích từ tài liệu gốc mà còn chứa thêm các bộ ba NE Một trường gọi là ne+kw sẽ được tạo ra để chứa các term từ khóa và các bộ ba NE Việc lưu trữ các term này vào trong trường ne+kw bao gồm hai bước Bước đầu tiên, tất cả các term keyword được thêm vào trường Ở bước thứ hai, tất cả các bộ ba NE được thêm vào Ví dụ, ở tài liệu html được đề cập ở trên (Hình 2-3), trường ne+kw đầu tiên được thêm vào các term từ khóa “Cultural”, “exhibitions”, “on”,
“Ho”, “Chi”, “Minh”, “City”, “development”, “and”, “integration”, “opened”, “in”,
“Lam”, “Son”, “park” có vị trí lần lượt từ 0 đến 14 Sau đó, nó được thêm vào các bộ ba
NE của Ho Chi Minh City bao gồm “ho chi minh city/*/*”, “*/city/*”, “ho chi minh city/city/*”, “*/*/city_123”, “saigon/*/*”, “saigon/city/*”, “*/location/*”, “ho chi minh city/location/*”, “saigon/location/*” (xem Bảng 2-1)
Hình 2-6 mô tả cấu trúc file chỉ mục của S-Lucene cho tài liệu html ví dụ ở trên Trong hình, chỉ có hai trường là kw và ne+kw được thể hiện và tất cả các trường siêu dữ liệu đã bị ẩn đi kw là một trường thuần từ khóa chứa nội dung của tài liệu kw chỉ chứa các term từ khóa ne+kw là một trường dựa trên cả từ khóa và các thực thể có tên Nó chứa đồng thời cả term từ khóa và term thực thể có tên được sắp xếp theo thứ tự bảng chữ cái kw được sử dụng cho tìm kiếm thuần từ khóa khi tất cả thực thể có tên được đối xử như từ khóa thuần
Hình 2-6: Cấu trúc file chỉ mục của S-Lucene
Tìm kiếm theo thực thể có tên
Khác với câu truy vấn đơn từ khóa và đa từ khóa chỉ bao gồm các từ khóa, câu truy vấn trong tìm kiếm theo thực thể có tên và từ khóa có chứa cả thực thể có tên và từ khóa Ta có thể sử dụng các toán tử boolean AND, OR, NOT bên trong câu truy vấn Sau đây là một số ví dụ:
Tìm kiếm tài liệu chứa thực thể thuộc lớp City:
Tìm kiếm tài liệu các thực thể “Vietnam” and “Singapore”:
“entity:(ViệtNam/*/*)” AND “entity:(Singapore/*/*)”
Tìm kiếm tài liệu về president Barack Obama: president “entity:(barack obama/*/*)”
Tìm kiếm theo thực thể có tên mới chỉ cho phép tìm kiếm dạng boolean chưa cho phép tìm kiếm theo khoảng cách Cho nên các câu truy vấn sau sẽ không thực hiện được:
Tìm kiếm tài liệu nói về thực thể “Vietnam” và “Singapore” trong đó “Vietnam” và “Singapore” đứng cạnh nhau với một khoảng cách xa nhất là 10:
“entity:(Viet Nam/*/*) entity:(Singapore/*/*)”~10
Tìm kiếm tài liệu về president Barack Obama trong đó từ khóa “president” và thực thể “barack obama” đứng sát nhau:
Tìm kiếm tài liệu về presidency of Barack Obama trong đó thực thể “barack obama” và từ khóa “presidency” đứng cạnh nhau với một khoảng cách xa nhất là 3:
Tìm kiếm theo ngữ nghĩa có khoảng cách
Tìm kiếm theo khoảng cách với thực thể có tên và từ khóa
Để tìm kiếm theo khoảng cách với thực thể có tên, như đã được trình bày trong Chương 1, vấn đề nảy sinh là các vị trí dựa trên token là không thích hợp khi có các thực thể có tên trong truy vấn và tài liệu Phần này trình bày cách xác định lại vị trí của các term khi tài liệu và truy vấn có chứa thực thể có tên
Vị trí của thực thể có tên trong tài liệu Đối với những câu truy vấn cụm từ và truy vấn khoảng cách, một công cụ tìm kiếm theo từ khóa cần lưu trữ những vị trí tương đối của các term từ khóa trong tài liệu Một cách tương tự, đối với những câu truy vấn khoảng cách có bao gồm thực thể có tên, vị trí tương đối của chúng cũng cần được lưu trữ
Vị trí của NE trong tài liệu phải phản ánh được vị trí trước sau và khoảng cách của nó đối với các term xung quanh Một NE khi xuất hiện trong tài liệu nó sẽ bao phủ một chuỗi các token và các token này đều có vị trí của chúng, vì vậy NE này về mặt vị trí thì nó có thể lấy bất cứ vị trí nào trong số các vị trí của các token mà nó bao phủ Tuy nhiên, để cho quá trình so trùng vị trí giữa câu truy vấn khoảng cách và tài liệu được đơn giản, mỗi NE nên có một vị trí duy nhất trong tài liệu ứng với mỗi lần xuất hiện Chuỗi token bao phủ bởi một NE bây giờ sẽ được đối xử như một term đơn nhất có một vị trí
Ví dụ, ở Bảng 3-1, vị trí của các token “cultural”, “exhibitions”, “on”, “ho”, “chi”,
“minh”, “city”, “development”, “and”, “integration”, “opened”, “in”, “lam”, “son”, “park” lần lượt từ 0 cho đến 14 Đây là cách đánh vị trí theo token Tuy nhiên, khi chuỗi token
“ho chi minh city” được xem như là một term NE đơn nhất thì vị trí của các token
“cultural”, “exhibitions”, “on”, “ho chi minh city”, “development”, “and”, “integration”,
“opened”, “in”, “lam”, “son”, “park” lần lượt là 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 Ta thấy trong ví dụ trên các token ở phía sau của NE “ho chi minh city” đã được điều chỉnh lại vị trí tương ứng với NE này để đảm bảo khoảng cách giữa chúng là chính xác Ý tưởng xem các token được bao phủ bởi một NE như một term đơn nhất có một vị trí đơn trong tài liệu cộng với việc điều chỉnh vị trí của các token phía sau nó sẽ giúp giải quyết vấn đề chúng tôi đã nêu lên trong Chương 1 Vị trí sau khi được điều chỉnh được chúng tôi gọi là vị trí dựa trên NE (NE-based position), bởi vì mỗi token sẽ được điều chỉnh vị trí dựa vào các
NE đứng phía trước nó
Bảng 3-1: Ví dụ về vị trí dựa trên token
Term Vị trí dựa trên token NE
City 6 development 7 and 8 integration 9 opened 10 in 11
Từ ví dụ trên, một cách trực quan, vị trí của token dựa trên NE có thể được tính từ vị trí dựa trên token theo công thức như sau:
Cho một term A có vị trí dựa trên token x và N NEs xuất hiện bên trái của A, vị trí dựa trên NE của A được định nghĩa bởi: x – ( ( ) 1 )
NELength(E) là số lượng token mà một NE E bao phủ trong tài liệu Chú ý rằng term A có thể là term từ khóa hay là một term NE nhưng không là cả hai Vị trí dựa trên token của term NE là vị trí dựa trên token của token bên trái nhất được bao phủ bởi NE đó Ví dụ, vị trí dựa trên token của NE city_123 ở Bảng 3-1 là 3, bởi vì token bên trái nhất của nó là “ho” có vị trí dựa trên token là 3 Các term được bao phủ bởi một NE sẽ không có vị trí dựa trên NE và được tạm thời bỏ đi khỏi tài liệu khi thực thi các câu truy vấn khoảng cách có chứa thực thể có tên
Cho một tài liệu D và một truy vấn Q Đặt NE(D) là tập NE có trong tài liệu D,
NE(Q) là tập NE có trong Q Trong công thức 3.1, biến số N chỉ số lượng NE nằm bên trái term A Đặt NE(A) là tập các NE nằm bên trái A Khi tiến hành cập nhật vị trí cho các term trong truy vấn Q, ta dễ dàng thấy là NE(A)NE(Q) và x cũng được xác định trên Q Khi tiến hành cập nhật vị trí cho các term trong tài liệu D, x sẽ được xác định trên D và NE(A) có thể được xác định theo hai cách như sau:
2 NE(A) NE(Q) Ở trường hợp 1, ta thấy việc cập nhật vị trí không phụ thuộc vào truy vấn bởi vì tập NE(A) là tập con của NE(D) Trường hợp này xuất phát từ cái nhìn rằng tất cả các NE trong tài liệu sẽ tham gia ảnh hưởng đến vị trí của các term đứng phía sau nó Trong trường hợp này, việc cập nhật vị trí có một số lợi ích đó là bởi vì NE(D) được biết trước lúc đánh chỉ mục nên NE(A) cũng sẽ được biết trước lúc đánh chỉ mục, vì vậy, việc cập nhật vị trí cho các term có thể được chạy trước lúc đánh chỉ mục để làm giảm thời gian xử lý câu truy vấn khoảng cách Trường hợp này được chúng tôi gọi là cập nhật tĩnh vị trí Ở trường hợp 2, ta thấy việc cập nhật vị trí phụ thuộc vào truy vấn bởi vì tập NE(A) là tập con của NE(Q) Hơn nữa, bởi vì NE(Q) chỉ biết được lúc run-time khi biết được câu truy vấn Q cho nên việc cập nhật vị trí theo trường hợp này chỉ có thể thực hiện lúc run-time Điều này sẽ làm chậm thời gian xử lý câu truy vấn vì phải tốn thời gian cập nhật lại vị trí Trường hợp 2 xuất phát từ cái nhìn rằng chỉ các NE trong truy vấn sẽ tham gia ảnh hưởng đến vị trí của các term đứng phía sau nó Nếu một NE không có xuất hiện truy vấn và nằm phía trước A trong tài liệu, thì nó sẽ không được tham gia vào phần tổng trong công thức 3.1 ở trên hay nói một cách trực quan là nó sẽ bị ẩn đi Trường hợp này được chúng tôi gọi là cập nhật động vị trí
Cập nhật tĩnh vị trí
Bảng 3-2: Cập nhật tĩnh vị trí Term Vị trí dựa trên token NE Vị trí dựa trên NE
City 6 development 7 4 and 8 5 integration 9 6 opened 10 7 in 11 8
Son 13 10 park 14 11 Đối với tài liệu trong Bảng 3-1, các vị trí dựa trên NE của term xác định dựa trên công thức 3.1 được trình bày như trong Bảng 3-2 Trong Bảng 3-2, thực thể có tên city_123 có NELength bằng 4 bởi vì nó bao phủ 4 token “Ho”, “Chi”, “Minh”, “City” trong tài liệu Ta có thể thấy rằng, khi các vị trí dựa trên NE được áp dụng, khoảng cách giữa “on” và “development” trong tài liệu bây giờ là 1 Trong khi đó, nếu sử dụng vị trí dựa trên token thì khoảng cách giữa chúng là 4 Điều đó có nghĩa là tất cả các token được bao phủ bởi một NE được đối xử như một term đơn và term này có một vị trí đơn trong tài liệu Đó là lí do tại sao chúng tôi gọi nó là vị trí dựa trên NE Chú ý rằng các vị trí của term trong truy vấn cũng cần phải được xử lý theo cùng một cách đối với tài liệu Ví dụ, ở truy vấn Q 1, vị trí dựa trên NE của các term “Cultural”, “exhibitions”, “on”, “Saigon
City” “development” lần lượt là 0, 1, 2, 3, 4, bởi vì “Saigon City” là một NE có NELength là 2 Như vậy, ở truy vấn Q 1 khoảng cách giữa “on” và “development” cũng là 1 và vì vậy đoạn text D bây giờ có thể so trùng được với Q 1
Mặc dù các vị trí dựa trên NE cần được áp dụng để xử lý các truy vấn khoảng cách có NE, các vị trí dựa tên token vẫn còn cần để xử lý các câu truy vấn khoảng cách thuần từ khóa Ví dụ, chúng ta có thể muốn tìm kiếm “ho chi minh city development” ở dạng thuần túy từ khóa, đối xử tất cả các token được bao phủ bởi một NE như là các từ khóa tách biệt
Bởi vì số lượng các thực thể có tên trong một tài liệu được biết tại thời điểm đánh chỉ mục, cho nên các vị trí dựa trên NE có thể được tính trước vào lúc đánh chỉ mục tài liệu Ở bước xử lý các truy vấn, nếu một truy vấn thuần túy ở dạng từ khóa thì các vị trí dựa trên token sẽ được sử dụng; ngược lại thì các vị trí dựa trên NE sẽ được sử dụng
Cập nhật động vị trí
Trong phần này tài liệu trong bảng 3-3 sẽ được dùng để làm ví dụ Bảng 3-3 là tài liệu ở Bảng 3-1 có thêm vào một thực thể nữa là “Da Nang City” để minh họa sự khác nhau giữa cập nhật tĩnh và cập nhật động vị trí Trong Bảng 3-3 cũng có kèm theo vị trí dựa trên NE được tính theo cách cập nhật tĩnh vị trí
Xét câu truy vấn q = “Cultural exhibitions on Da Nang City development” Câu truy vấn này có một thực thể có tên là Da Nang City Như đã trình bày ở trên, trong trường hợp này cập nhật động vị trí sẽ chỉ dựa vào thực thể có tên xuất hiện trong câu truy vấn và tài liệu để cập nhật lại vị trí Bảng 3-4 là vị trí dựa trên NE được cập nhật động Trong Bảng 3-4 ta thấy mặc dù trong tài liệu có NE city_123 nhưng nó đã bị ẩn đi và không làm ảnh hưởng đến vị trí của các term đứng phía sau nó Ngược lại, cách cập nhật tĩnh lại không phụ thuộc vào câu truy vấn và tất cả các thực thể có tên đều ảnh hưởng đến vị trí của các term đứng phía sau nó Do cập nhật động phụ thuộc vào truy vấn cho nên vị trí dựa trên NE sẽ không cố định mà sẽ thay đổi phụ thuộc vào truy vấn Điều này làm cho nó không thể được xác định được vào lúc đánh chỉ mục mà phải chờ đến khi nhận được câu truy vấn của người dùng
Bảng 3-3: Tài liệu ví dụ cho cập nhật động vị trí Term Vị trí dựa trên token NE Vị trí dựa trên NE (tĩnh)
City 10 development 11 6 and 12 7 integration 13 8 opened 14 9 in 15 10
Son 17 12 park 18 13 Ở cập nhật động vị trí, các vị trí dựa tên token vẫn còn cần để xử lý các câu truy vấn khoảng cách thuần từ khóa Cũng tương tự như cách cập nhật vị trí tĩnh, ở bước xử lý truy vấn, nếu một truy vấn thuần túy ở dạng từ khóa thì các vị trí dựa trên token sẽ được sử dụng; ngược lại thì các vị trí dựa trên NE sẽ được sử dụng Trong hiện thực, chúng tôi hiện thực cả hai cách cập nhật vị trí và cung cấp khả năng lựa chọn sử dụng phương pháp nào lúc truy vấn Ở phần sau chúng tôi sẽ trình bày thí nghiệm so sánh hai cách này Kết quả thí nghiệm cho thấy cách cập nhật động xử lý truy vấn chậm hơn cách cập nhật tĩnh, tuy nhiên về mặt hiệu quả truy hồi hai cách trên không có nhiều khác biệt
Bảng 3-4: Cập nhật động vị trí ứng với câu truy vấn q
Term Vị trí dựa trên token
NE Vị trí dựa trên
City 10 development 11 6 9 and 12 7 10 integration 13 8 11 opened 14 9 12 in 15 10 13
Các giải thuật tính khoảng cách động giữa thực thể có tên và từ khóa
Để thực thi các câu truy vấn có NE, vị trí dựa trên NE được sử dụng trong công thức 2.1 được giới thiệu trong Chương 2 để tính toán khoảng cách giữa thực thể có tên và từ khóa Chúng tôi biến đổi giải thuật của Lucene so trùng d với q trong trường hợp slop
= 0 và slop > 0 để có thể thực hiện các câu truy vấn khoảng cách có thực thể có tên Ở đây, ta có hai cách cập nhật vị trí nên ứng với mỗi cách cập nhật vị trí ta sẽ có một giải thuật so trùng d với q trong trường hợp slop = 0 và một giải thuật so trùng d với q trong trường hợp slop > 0 Vì vậy ta sẽ có bốn giải thuật ứng với hai cách cập nhật vị trí
Một cách cụ thể, đối với một tài liệu d có chiều dài l (nghĩa là, có l token) và một term t, các vị trí xuất hiện của t trong d được kí hiệu là P d (t){1,…,l} Cho một câu truy vấn q={t 1 …t n }, vị trí của term t i q được kí hiệu bởi pq i Trước hết các giải thuật để so trùng d với q trong trường hợp slop = 0 và slop > 0 của cách cập nhật vị trí tĩnh được trình bày lần lượt trong Hình 3-1 và Hình 3-2 Sau đó các giải thuật để so trùng d với q trong trường hợp slop = 0 và slop > 0 của cách cập nhật vị trí động sẽ được trình bày lần lượt trong Hình 3-3 và Hình 3-4 Như đã đề cập đến ở cuối phần 2.5, một tài liệu d so trùng được với q phải chứa ít nhất một tập {t 1,…,t n } và thỏa mãn điều kiện slop Ở đây các thuật toán không dừng khi tìm thấy một tập như vậy, nhưng chúng sẽ tìm tất cả và trả về số lần xuất hiện (frequency) tập {t 1,…,t n } trong tài liệu d và thỏa mãn điều kiện slop
Khi số lần xuất hiện trả về lớn hơn 0, điều đó có nghĩa là tài liệu d so trùng được với q; ngược lại, d không so trùng được với q
Trong các giải thuật so trùng tài liệu d và q của trường hợp cập nhật tĩnh vị trí, các biến vị trí được sử dụng trong giải thuật sẽ là vị trí dựa trên NE khi truy vấn q có chứa
NE, ngược lại, khi truy vấn q là thuần từ khóa thì vị trí dựa trên token sẽ được sử dụng Lưu ý là vị trí dựa trên NE này đã được tính trước lúc đánh chỉ mục nên ta không cần tính lại lúc chạy giải thuật so trùng Trong các giải thuật so trùng tài liệu d và q của trường hợp cập nhật động vị trí, ta cần một hàm xác định lại vị trí ứng với mỗi bộ {t 1,…,t n } xuất hiện trong tài liệu và sau khi xác định lại vị trí thì các vị trí này được sử dụng trong các giải thuật Hàm này có tên là updatePosition được trình bày trong Hình 3-5
Hình 3-1 là giải thuật để so trùng tài liệu d với truy vấn q khi slop = 0 và sử dụng cách cập nhật tĩnh vị trí Vòng lặp từ dòng số 2 đến dòng số 5 dùng để khởi tạo tính giá trị ∆ i ứng với vị trí đầu tiên của các term t i Sau khi khởi tạo, vòng lặp ở dòng 7 sẽ quét qua tất cả các cụm {t 1 …t n } xuất hiện trong tài liệu d và đếm số lần cụm {t 1 …t n } thỏa mãn điều kiện slop = 0 Vòng lặp ở dòng 8 sẽ quét qua các giá trị ∆ i để xác định xem một cụm {t 1 …t n } xuất hiện trong tài liệu d có thỏa mãn điều kiện slop = 0 hay không Nếu nó thỏa mãn thì sẽ thoát khỏi vòng lặp dòng 8 và sau đó biến freq sẽ được tăng lên 1 Sau khi biến freq được tăng lên 1, vòng lặp 7 lại tiếp tục và cụm {t 1 …t n } xuất hiện kế tiếp sẽ được xem xét Giải thuật kết thúc khi tất cả cụm {t 1 …t n } xuất hiện trong tài liệu được xem xét Kết quả trả về là số lần xuất hiện của {t 1 …t n } trong tài liệu d thỏa mãn slop = 0
Hình 3-2 là giải thuật để so trùng d với q trong khi slop > 0 và sử dụng cách cập nhật tĩnh vị trí Giải thuật này cũng tương tự như giải thuật ở Hình 3-1 trừ vòng lặp ở dòng 12 Ở đây, trước khi tính khoảng cách, ứng với mỗi cụm {t 1 …t n } xuất hiện trong tài liệu, chúng cần được di chuyển sao cho chúng cùng ở trong một cửa sổ nhỏ nhất (min window) Vòng lặp ở dòng 12 dùng để thực hiện việc này Sau khi thoát khỏi vòng lặp ở dòng 12, dòng lệnh 20 sẽ tính khoảng cách matchLength giữa các term này Khi matchLength tính ra nhỏ hơn hay bằng slop, biến freq sẽ được cộng dồn vào thêm giá trị sloppyFreq(matchLength) Trong đó sloppyFreq(matchLength) = 1.0f / (matchLength +
1) Kết quả trả về là số lần xuất hiện của {t 1 …t n } (có thể không là số nguyên) trong tài liệu d thỏa mãn điều kiện slop
Hình 3-3 là giải thuật để để so trùng d với q khi slop = 0 và sử dụng cách cập nhật động vị trí Hình 3-4 là giải thuật để để so trùng d với q khi slop > 0 và sử dụng cách cập nhật động vị trí Hai giải thuật này cũng lần lượt tương tự với giải thuật ở Hình 3-1 và Hình 3-2 tuy nhiên vị trí của các term sẽ được điều chỉnh cùng lúc với việc thực thi giải thuật thông qua hàm updatePosition ở Hình 3-5 Trong giải thuật ở Hình 3-3, updatePosition sẽ được gọi trước khi vòng lặp ở dòng 6 thực hiện để tính các giá trị ∆ i
Nó cũng được gọi ứng với mỗi lần một cụm {t 1 …t n } xuất hiện kế tiếp được xem xét ở vòng lặp ở dòng 10 Cả hai giải thuật đều trả về số lần xuất hiện của cụm {t 1 …t n } trong tài liệu d thỏa mãn điều kiện slop Đầu vào: một truy vấn q={t 1 …t n } và một tài liệu d Đầu ra: Số lần xuất hiện của {t 1 …t n } trong tài liệu d thỏa mãn slop = 0
11: if next position of P d (minterm) exists then
12: pd next position of P d (minterm)
13: ∆ k pd pq k /* update the value ∆ of minterm */
17: while ∆ k < ∆ m /* ∆ m is the value ∆ of maxterm */
20: while ( next position of P d (maxterm) exists)
Hình 3-1: Giải thuật để so trùng d với q khi slop = 0 và cập nhật tĩnh vị trí
Input: a query q={t 1 …t n }, a document d, and slop
Output: Frequency of {t 1 …t n } occurring in d satisfying slop condition
8: maxterm t k where ∆ k = max(∆ i ); minterm t m where ∆ m = min(∆ i )
10: next min({∆ i \∆ m }) /* next min value of ∆ i */
14: if next position of P d (t m ) exists then
17: ∆ k pd pq m /* update the value ∆ of t m */
18: else done true end if
25: if pos > end then end pos end if
Hình 3-2: Giải thuật để so trùng d với q trong khi slop > 0 và cập nhật tĩnh vị trí Đầu vào: một truy vấn q={t 1 …t n } và một tài liệu d Đầu ra: Số lần xuất hiện của {t 1 …t n } trong tài liệu d thỏa mãn slop = 0
14: if next position of P d (minterm) exists then
15: pd k next position of P d (minterm)
23: while ∆ k < ∆ m /* ∆ m is the value ∆ of maxterm */
25: freq freq + 1; maxterm t m where ∆ m = max(∆ i )
26: while (next position of P d (maxterm) exists)
Hình 3-3: Giải thuật để so trùng d với q khi slop = 0 và cập nhật động vị trí
Input: a query q={t 1 …t n }, a document d, and slop
Output: Frequency of {t 1 …t n } occurring in d satisfying slop condition
2: for each t i q do pd i first position of P d (t i ) end for
4: for each t i q do ∆ i pd i pq i end for
7: maxterm t k where ∆ k = max(∆ i ); minterm t m where ∆ m = min(∆ i )
9: next min({∆ i \∆ m }) /* next min value of ∆ i */
13: if next position of P d (t m ) exists then
16: for each t i q do ∆ i pd i pq i end for
18: else done true end if
25: if pos > end then end pos end if
Hình 3-4: Giải thuật để so trùng d với q khi slop > 0 và cập nhật động vị trí Đầu vào: một bộ {t 1 …t n } trong tài liệu d và pd i là vị trí của t i trong d Đầu ra: các vị trí của của t i = pd i được điều chỉnh
2: pd i pd i ( NELength ( t k )1), trong đó t k là term nằm trước t i và ik
Xếp hạng tài liệu có khoảng cách
Phần 3.1 và 3.2 chúng tôi trình bày cách tìm kiếm theo khoảng cách với thực thể có tên và từ khóa, các thuật toán so trùng tài liệu d và q theo các cách cập nhật vị trí tĩnh và động Tuy nhiên, sau khi các khoảng cách được tính ra, chúng tôi sử dụng hàm xếp hạng tài liệu của Lucene có tính đến khoảng cách để xếp hạng các tài liệu trả về
Lucene sử dụng mô hình không gian vectơ, trong đó quá trình tìm kiếm bao gồm hai bước là chọn tài liệu thỏa mãn câu truy vấn, và xếp hạng tài liệu theo độ tương tự với truy vấn đó Độ tương tự được tính toán tùy theo mô hình được sử dụng
Trong cách tính độ tương tự giữa hai vectơ, Lucene sử dụng phương pháp tf.idf, với một số thay đổi nhỏ so với mô hình chuẩn được trình bày trong phần 2.1 Độ tương tự giữa một truy vấn q và một tài liệu d được định nghĩa thông qua các API (Application
Programming Interface – giao diện lập trình) của Lucene như sau: score(q,d) ( ( ) ( ) ( ) ( ))
( , ) ( ) t in q tf t in d idf t boost t field in d lengthNorm t field in d coord q d queryNorm q
(3.2) trong đó: tf(t in d): là tần suất xuất hiện của từ t trong tài liệu d idf(t): tần suất nghịch đảo các tài liệu có chứa từ t boost(t.field in d): độ ưu tiên của một trường dữ liệu t.field lengthNorm(t.field in d): giá trị chuẩn hóa của một trường dữ liệu, được cho bởi số lượng từ có trong trường dữ liệu coord(q, d): trọng số dựa trên số lượng từ trong truy vấn được tìm thấy trong tài liệu Một tài liệu chứa nhiều từ trong truy vấn sẽ có score lớn hơn tài liệu với ít từ trong truy vấn queryNorm(q): giá trị chuẩn hóa của một truy vấn, dựa trên tổng bình phương của trọng số các từ trong truy vấn
Với một số phép biến đổi toán học đơn giản, ta thấy cách tính tf.idf của Lucene về cơ bản không khác so với phương pháp chuẩn ([11])
Lucene xem mỗi cụm truy vấn khoảng cách {t 1 ,…,t n } như là một term bình thường có hai đại lượng kèm theo đó là tf và idf {t 1 ,…,t n } có tf chính là đầu ra được chuẩn hóa của các giải thuật đã trình bày trong Hình 3-1, Hình 3-2, Hình 3-3 và Hình 3-4 {t 1 ,…,t n } có idf được tính dựa vào công thức: idf({t 1,…,t n }) =
)((Sau khi tính được tf và idf của {t 1,…,t n }, {t 1,…,t n } sẽ tham gia vào công thức 3.2 như là một term đơn nhất và góp phần xếp hạng các tài liệu được trả về.
Hiện thực và các kết quả thực nghiệm
Đánh chỉ mục theo khoảng cách có thực thể có tên
Chúng tôi dựa trên thư viện S-Lucene ([4][15][16]) được mở rộng từ Lucene để hiện thực các thuật toán và hiện thực đánh chỉ mục theo khoảng cách có thực thể có tên Để hỗ trợ cách cập nhật tĩnh và động vị trí như đã trình bày trong Chương 3, kho chỉ mục cần lưu thêm một số thông tin vào trong bảng vị trí Ở cập nhật động, trong công thức 3.1 ta cần thông tin về NELength của mỗi thực thể có tên, cho nên chúng tôi lưu NELength ứng với mỗi thực thể có tên trong tài liệu vào trong kho chỉ mục Trong bảng vị trí, một cột mới có tên là NELength được thêm vào Đối với các term keyword thì cột NELength này được chúng tôi để mặc định là 1 Ở cập nhật tĩnh, các vị trí dựa trên NE có thể được tính trước lúc đánh chỉ mục và lưu vào kho chỉ mục Để lưu vị trí này, một cột mới có tên là NE-based position được thêm vào Như đã trình bày ở trên, dạng nào của vị trí sẽ được sử dụng phụ thuộc vào câu truy vấn Hình 4-1 là cấu trúc file chỉ mục mới của tài liệu ví dụ ở trên có chứa cả vị trí dựa trên token, NELength và vị trí dựa trên NE tính theo phương pháp cập nhật tĩnh của thực thể có tên và từ khóa Để phục vụ cho quá trình thực nghiệm chúng tôi sử dụng S-Lucene để đánh chỉ mục hai trường chính đó là keyword và nekw như bảng 4-1 Các trường siêu dữ liệu như Title, URL,… mặc dù không có trình bày ở đây nhưng cũng được chúng tôi tạo ra để cung cấp thêm thông tin cho các tài liệu trả về
Bảng 4-1: Các trường dữ liệu được đánh chỉ mục
Trường dữ liệu Phân tích Đánh chỉ mục Lưu trữ Chú thích keyword × × × Lưu chỉ mục cho từ khóa kw+ne × × × Lưu chỉ mục cho term tổng quát (từ khóa+ NE)
Hình 4-1: Cấu trúc file chỉ mục mới của S-Lucene
Cú pháp câu truy vấn
Cú pháp câu truy vấn trong Hình 4-2 là cho người dùng đầu cuối (front-end user)
Nó được thiết kế gần giống với cú pháp của Google Ở đây toán tử “+” có nghĩa là các tài liệu trả về phải có chứa term được truy vấn Trong khi đó, toán tử “-” loại trừ tất cả các tài liệu có chứa term được truy vấn Sau đây là một vài câu truy vấn ví dụ:
Tìm kiếm tài liệu nói về “pollution in Ho Chi Minh City”: pollution (Ho Chi Minh City)
Trong câu truy vấn này, “pollution” là một term từ khóa và (Ho Chi Minh City) là một cụm từ thể hiện thực thể có tên, cụm này sau đó được ánh xạ thành bộ ba NE (*/*/city_123) tương ứng với cơ sở tri thức được khảo sát
Tìm kiếm tài liệu nói về “pollution in Ho Chi Minh City” trong đó thực thể có tên
“Ho Chi Minh City” và từ khóa “pollution” đứng cạnh nhau với một khoảng cách tối đa là 3:
“pollution (Ho Chi Minh City)”~3 Đối với các câu truy vấn có khoảng cách, người dùng có thể lựa chọn cách cập nhật vị trí tĩnh và động thông qua hai từ khóa đó là ne_position_static hay là ne_position_dynamic Ví dụ tìm kiếm tài liệu nói về “pollution in Ho Chi Minh City” trong đó thực thể có tên “Ho Chi Minh City” và từ khóa “pollution” đứng cạnh nhau với một khoảng cách tối đa là 3 và sử dụng cập nhật vị trí tĩnh:
“ne_position_static: pollution (Ho Chi Minh City)”~3
|
OR |
|
|
|
““
Hình 4-2: Cú pháp câu truy vấn cơ bản
Về mặt API, S-Lucene được bổ sung thêm các lớp sau:
Lớp Phương thức Chức năng
StaticExactPhraseScorer Tính score theo cập nhật tĩnh (slop = 0)
StaticSloppyPhraseScorer Tính score theo cập nhật tĩnh (slop > 0)
DynamicExactPhraseScorer Tính score theo cập nhật động (slop = 0)
DynamicSloppyPhraseScorer Tính score theo cập nhật động (slop > 0)
Các API đánh chỉ mục của S-Lucene cũng được chỉnh sửa tương ứng để có thể đánh chỉ mục theo khoảng cách có thực thể có tên như đã trình bày ở trên.
Ứng dụng minh họa
Với API cung cấp bởi Semantic Lucene, chúng tôi xây dựng các ứng dụng hoàn chỉnh phục vụ cho quá trình thực nghiệm Ứng dụng hỗ trợ truy vấn theo các mô hình
KW, KW_proximity, NEKW, NEKW_proximity_static và NEKW_proximity_dynamic
Nó cung cấp cho người dùng giao diện tương tác tìm kiếm dưới dạng Web Application
Hình 4-3 là giao diện Web với ô nhập câu truy vấn và ô chọn lựa để chọn các mô hình KW, KW_proximity, NEKW, NEKW_proximity_static và
Hình 4-3: Giao diện tìm kiếm
Hình 4-4: Giao diện kết quả trả về
Thực nghiệm và đánh giá
Để kiểm nghiệm và đánh giá một hệ thống truy hồi thông tin, ta cần phải quan tâm đến các thành phần sau ([1]):
Tập dữ liệu kiểm thử
Các hệ thống truy hồi thông tin khác nhau cần so sánh
Các phương pháp đánh giá hiệu suất truy hồi
Tập dữ liệu kiểm thử
Một tập dữ liệu kiểm thử bao gồm ba yếu tố sau:
Tập các câu truy vấn
Các thông tin về các tài liệu nào liên quan đến từng câu truy vấn
Có nhiều tập dữ liệu kiểm thử chuẩn được biết đến nhiều như TREC, CISI, NTCIR, CLEF, Reuters-21578, TIME, and WBR99 [14] đã khảo sát các bài báo trong SIGIR-2007 7 and SIGIR-2008 8 nhằm biết được tập dữ liệu kiểm thử nào được dùng phổ
7 http://www.sigir2007.org biến trong cộng đồng truy hồi từ trước đến nay [14] chỉ khảo sát các bài báo về truy hồi văn bản và số bài báo là 56 bài được chia thành ba nhóm Nhóm thứ nhất sử dụng TREC 9 (The Text Retrieval Conference) có 33 bài (21 bài thuộc SIGIR-2007, 12 bài thuộc SIGIR-2008), nhóm thứ hai sử dụng các tập dữ liệu kiểm thử chuẩn khác có 11 bài (7 bài thuộc SIGIR-2007, 4 bài thuộc SIGIR-2008), nhóm thứ ba sử dụng tập dữ liệu kiểm thử tự xây dựng có 12 bài Như vậy có tới 59% bài báo sử dụng tập dữ liệu kiểm thử của TREC để làm thực nghiệm TREC được tổ chức hằng năm bởi tổ chức National Institute of Standards and Technology (NIST) và U.S Department of Defense nhằm hỗ trợ nghiên cứu và đánh giá các hệ thống truy hồi thông tin lớn Do trong luận án này chúng tôi cũng có so sánh mô hình của [14] nên chúng tôi sử dụng cùng tập dữ liệu kiểm thử với [14] Đó là tập L.A Times trong TREC Disk 5 được sử dụng bởi 15 bài báo trong số 33 bài của SIGIR-2007 và SIGIR-2008 Tập L.A Times bao gồm hơn 130,000 tài liệu với dung lượng gần 500MB Tập truy vấn được sử dụng là 124 truy vấn trong số 200 truy vấn của
QA Track-1999 mà có các tài liệu liên quan nằm trong tập L.A Times
Các hệ thống truy hồi thông tin khác nhau cần so sánh
Nhằm đánh giá hiệu suất truy hồi thông tin của hệ thống khi tích hợp thêm khoảng cách giữa thực thể có tên và từ khóa, chúng tôi sẽ tiến hành so sánh các hệ thống truy hồi thông tin dưới đây
1 Hệ thống truy hồi thông tin theo từ khóa (KW):
Hai hệ thống đơn cử được khảo sát Lucene Lucene là hệ thống mã nguồn mở hiện được Apache phát triển
2 Hệ thống truy hồi thông tin theo từ khóa nhưng có sử dụng thêm khoảng cách (KW_proximity):
Hệ thống này vẫn là Lucene nhưng sử dụng thêm khoảng cách
3 Hệ thống truy hồi thông tin theo thực thể có tên và từ khóa (NEKW):
Hệ thống này là mô hình NEKW được khảo sát trong [14]
4 Hệ thống truy hồi thông tin theo thực thể có tên và từ khóa có khoảng cách được cập nhật tĩnh (NEKW_proximity_static):
Hệ thống này là mô hình NEKW được khảo sát trong [14] nhưng có tính thêm yếu tố khoảng cách được cập nhật tĩnh
5 Hệ thống truy hồi thông tin theo thực thể có tên và từ khóa có khoảng cách được cập nhật động (NEKW_proximity_dynamic):
Hệ thống này là mô hình NEKW được khảo sát trong [14] nhưng có tính thêm yếu tố khoảng cách được cập nhật động
Các phương pháp đánh giá hiệu suất truy hồi
Cùng với việc phát triển các mô hình truy hồi thông tin, các phương pháp đánh giá hiệu suất truy hồi đã được khảo sát R Baeza-Yates và B Ribeiro-Neto mô tả chi tiết các phương pháp này trong [1] Dưới đây, chúng tôi chỉ trình bày những phương pháp chính, thường được sử dụng để đánh giá hiệu suất của một hệ thống truy hồi thông tin
1 Độ đầy đủ (Recall) và Độ chính xác (Precision)
Gọi q là một truy vấn thông tin, R là tập các tài liệu liên quan và A là tập các tài liệu được hệ thống trả về khi xử lý truy vấn q
Hình 4-5: Độ đầy đủ và độ chính xác đối với một truy vấn
Độ đầy đủ đánh giá khả năng truy hồi tất cả tài liệu liên quan, có giá trị là tỉ số giữa số tài liệu liên quan được truy hồi với tổng số tài liệu liên quan có trong hệ thống:
Tập tài liệu có trong hệ thống Tập tài liệu liên quan trong tập tài liệu trả về
Tập tài liệu liên quan
Tập tài liệu trả về
Độ chính xác đánh giá khả năng truy hồi chỉ những tài liệu liên quan, có giá trị là tỉ số giữa số tài liệu liên quan được truy hồi với tổng số các tài liệu trả về:
A Để tính độ đầy đủ và độ chính xác cần phải khảo sát toàn bộ tập tài liệu trả về Do đó, các độ đo này được gọi là độ đo dựa trên tập hợp Tuy nhiên, thông thường các tài liệu được xếp hạng theo độ tương tự với truy vấn, và được trả về lần lượt cho người dùng Người dùng đánh giá kết quả trả về trên các tài liệu được xếp hạng, do vậy đường cong P-R trung bình mô tả dưới đây đánh giá chính xác hơn khả năng truy hồi của hệ thống
2 Đường cong P-R trung bình Đường cong P-R cho một truy vấn được xác định bằng cách tính độ chính xác và độ đầy đủ khi một tài liệu liên quan được trả về Để tính đường cong P-R trung bình cho nhiều truy vấn, ta cần phải chuẩn hóa các đường P-R về cùng các mức truy hồi
Gọi r j , j {0, 1, 2, …, 10} là điểm thứ j trong hệ thống 11 độ truy hồi chuẩn (10%, 20%, …, 100%), ta có:
P(r j ) = maxr j r r j 1 P(r) Đường cong P-R trung bình cho tất cả các truy vấn được tính như sau:
trong đó, P(r j ) là độ chính xác trung bình tại điểm truy hồi r j , Q là tổng số truy vấn, và P r i ( ) j là độ chính xác tại điểm truy hồi r j của truy vấn thứ i Đường cong P-R trung bình được xem là một phương pháp chuẩn để đánh giá khả năng truy hồi thông tin, khi vẽ trên cùng một biểu đồ nó cho phép so sánh hiệu suất truy hồi của các giải thuật truy hồi khác nhau Đường cong nào nằm gần hơn về phía góc trái trên của biểu đồ thì có hiệu suất truy hồi tốt hơn
Hình 4-6: Đường cong P-R trung bình của một truy vấn
3 MAP (Mean Average Precision): Độ chính xác trung bình MAP là một đơn trị đại diện cho độ chính xác xuyên suốt các mức truy hồi Đối với một truy vấn, MAP được tính bằng trung bình cộng của độ chính xác khi có một tài liệu liên quan được trả về Giá trị MAP cho mọi truy vấn được tính bằng trung bình cộng của các giá trị MAP cho từng câu truy vấn:
4 Độ trung bình hài hòa F (Harmonic Mean): Độ F là một đơn trị thỏa hiệp giữa độ chính xác và độ đầy đủ của một hệ thống, được tính bằng độ trung bình hài hòa của độ chính xác và độ đầy đủ:
trong đó, P j( ) và ( )r j là độ chính xác và độ đầy đủ tại tài liệu thứ j
Giá trị F[0, 1], F = 0 khi không có tài liệu liên quan nào trả về, F = 1 khi tất cả các tài liệu trả về là liên quan đến truy vấn Độ trung bình hài hòa F có giá trị cao khi và chỉ khi cả độ chính xác và độ đầy đủ đều có giá trị cao
Các giá trị đạt được của các độ đo nói trên có thể xảy ra một cách tình cờ bởi vì: (1) nội dung hạn chế và cụ thể của các câu truy vấn và tài liệu trong tập kiểm thử; (2) đánh giá chủ quan của người đánh giá về sự liên quan giữa tập truy vấn và tài liệu; và (3) số lượng hạn chế của số lượng các câu truy vấn và tài liệu được sử dụng trong quá trình thí nghiệm Vì vậy, khi so sánh các hệ thống, có một giả thuyết null (null hypothesis) điển hình đặt ra là các hệ thống này đều tương đương nhau về hiệu suất mặc dù các độ đo hiệu suất được tính ra là khác nhau Để có thể loại bỏ được giả thuyết null này và khẳng định rằng một hệ thống thật sự tốt hơn các hệ thống còn lại, một kiểm định giả thuyết thống kê cần được thực hiện ([9])
Trong [22], các tác giả so sánh 5 cách kiểm định ý nghĩa từng được sử dụng bởi các nghiên cứu trong truy hồi thông tin bao gồm Student‟s paired t-test, Wilcoxon signed rank test, sign test, bootstrap, and Fisher‟s randomization (permutation) Họ đề nghị Fisher‟s randomization test cho đánh giá ý nghĩa của các khác biệt quan sát được giữa hai hệ thống Trong thực tế, luôn luôn không thể tính ra được số hoán vị ở mức hàm mũ Như được trình bày trong [22], 100,000 hoán vị đã có thể chấp nhận được cho một kiểm định ngẫu nhiên và ngưỡng 0.05 của two-sided significance level, hay p-value, là có thể chấp nhận được ý nghĩa thống kê
Bảng 4-2 mô tả độ chính xác trung bình ở 11 điểm truy hồi chuẩn của mô hình
KW, KW_proximity, NEKW, NEKW_proximity_static, NEKW_proximity_dynamic Tương tự, bảng 4-3 thể hiện độ F trung bình Nó cho thấy NEKW_proximity_static,
Tổng kết
Đóng góp của luận án
Trong luận án này chúng tôi đã khai thác các đặc tính ontology của thực thể có tên trong tìm kiếm theo khoảng cách cho các công cụ tìm kiếm theo ngữ nghĩa Đối với tìm kiếm theo khoảng cách với thực thể có tên, chúng tôi đã xem xét và phân tích các khoảng cách động giữa từ khóa và thực thể có tên trong truy vấn và tài liệu Chúng tôi cũng đã phát triển các giải thuật để tính toán các khoảng cách động đó và so trùng giữa tài liệu và truy vấn ứng với các trường hợp cập nhật tĩnh và động vị trí Chúng tôi đã phát triển một mã nguồn mở tổng quát để đánh chỉ mục và tìm kiếm theo ngữ nghĩa các tài liệu được chú giải thực thể có tên Các thực nghiệm của chúng tôi chỉ ra rằng việc tích hợp khoảng cách vào trong truy hồi thông tin giúp cho hiệu suất được cải thiện dựa trên các độ đo độ chính xác, độ đầy đủ và độ hài hòa F Điểm mới và đóng góp của luận án đó là giúp xử lý các câu truy vấn cụm từ và các câu truy vấn khoảng cách trong đó các chiều dài và các vị trí dựa trên token của các thực thể có tên được truy vấn trong tài liệu có thể khác nhau Vì vậy, các đóng góp của luận án sẽ hữu ích cho việc phát triển các công cụ tìm kiếm dựa trên ontology khi khoảng cách giữa các term truy vấn được quan tâm đến.
Hướng phát triển
Trong luận án này, chúng tôi vẫn còn sử dụng hàm xếp hạng vị trí theo mô hình không gian vectơ của Lucene Các mô hình xếp hạng khác cũng đáng được khảo sát để tích hợp với phương pháp tìm kiếm theo khoảng cách dựa trên ontology của chúng tôi Ngoài ra, chúng tôi cũng chưa xem xét các mối liên hệ ngữ nghĩa giữa các từ khóa trong đó các khái niệm đồng nghĩa có thể có chiều dài dựa trên token khác nhau, và vì vậy việc tính toán động khoảng cách giữa các khái niệm cho các câu truy vấn khoảng cách cũng cần thiết Đây là những chủ đề mà hiện tại chúng tôi đang khảo sát
Các công trình của tác giả liên quan đến luận án
Le, T.M.V., Cao, T.H., Hoang, S.M., Cho, J 2011, Ontology-based proximity search
In Proceedings of the 13th International Conference on Information Integration and Web-based Applications & Services (iiWAS 2011, December 5-7, Ho Chi Minh City, Vietnam), pp 288–291, 2011
Ngo, V.M., Cao, T.H., Le, T.M.V WordNet-Based Information Retrieval Using Common Hypernyms and Combined Features In Proceedings of the Fifth
International Conference on Intelligent Computing and Information Systems (ICICIS
Ngo, V.M & Cao, T.H & Le, T.M.V Combining Named Entities with WordNet and
Using Query-Oriented Spreading Activation for Semantic Text Search In
Proceedings of the IEEE International Conference on Computing and Communication Technologies Research, Innovation and Vision for the Future (RIVF 2010, November 1-4, Hanoi, Vietnam), 2010.