Phép tổng quát (generalization)

Một phần của tài liệu Luận văn thạc sĩ công nghệ thông tin phương pháp xử lý một số dạng câu hỏi tiếng việt cho công cụ tìm kiếm thư viện điện tử (Trang 31 - 85)

Phép tổng quát giữa 2 cấu trúc đặc tính là 1 cấu trúc chỉ chứa các thông tin có trong cả hai cấu trúc thành viên, tương tự phép giao trong lý thuyết tập hợp. Phép tổng quát giữa F3 F4 sau:

Hình 3.11 – Tổng quát 2 cấu trúc đặc tính (nguồn: [15])

Tổng quát của hai cấu trúc đặc tính F và G là cấu trúc đặc thỏa ba đặc tính sau đây:

- F  G  F - F  G  G

- Nếu H là một cấu trúc thỏa mãn H  F và H  G thì H  F  G

Không giống như phép hợp nhất, tổng quát là một phép toán của cấu trúc đặc tính, không phải là một phép toán từng phần. Xét ở góc độ toán học, tổng quát có phần dễ thực hiện hơn so với hợp nhất. Tuy nhiên nó không được sử dụng thường xuyên trong ngôn ngữ học tính toán như hợp nhất.

3.1.4 Biểu diễn các cấu tr c đặc t nh trong Prolog

Một điểm rất thuận lợi khi sử dụng UBG là có thể biểu diễn các cấu trúc đặc tính và các luật của chúng trực tiếp b ng ngôn ngữ Prolog.

Prolog sẽ biểu diễn các cấu trúc đặc tính như một danh sách mở của các cặp đôi thuộc tính - giá trị. Một danh sách mở là một danh sách với một biến chưa khởi tạo đứng cuối danh sách. Ví dụ [a, b, c | X] là một danh sách mở. Hiện tại danh sách chỉ chứa các phần tử a, b, c, nhưng nó có thể được kéo dài thêm b ng cách khởi tạo phần đuôi với một danh sách mở khác. Giả sử khởi tạo X b ng [d, e, f | Y], chúng ta nhận được danh sách mới [a, b, c, d, e, f | Y].

Prolog sẽ sử dụng dấu hai chấm (:) để tạo thành các cặp thuộc tính giá trị. Thuộc tính sẽ ở bên trái dấu : và giá trị ở bên phải. Sau đây là ví dụ một cặp giá trị thuộc tính trong Prolog: agr:sg. Dễ dàng sử dụng dấu hai chấm b ng cách khai báo dưới dạng phép toán trung tố:

?-op(500, xfy,:).

Dưới đây là một số ví dụ về cấu trúc đặc tính và cách biểu diễn chúng trong Prolog để tìm hiểu về hoạt động của chúng:

Danh sách trong Prolog là: [number:sg, person:3 | _] tương ứng với cấu trúc đặc tính:

Hình 3.12 – Cấu trúc đặc tính có giá trị nguyên tử (nguồn: [15])

Danh sách trong Prolog là: [cat:np, agr:[number:sg, person:3 | _] | _] tương ứng với cấu trúc đặc tính:

Hình 3.13 – Cấu trúc đặc tính có giá trị là 1 cấu trúc (nguồn: [15])

Và danh sách trong Prolog là:

[cat:s, head:[agr:[num:sg, pers:3| X] | _], subj:[agr:[num:sg, pers:3| X] | _] | _] sẽ tương ứng với cấu trúc đặc tính:

Hình 3.14 – Cấu trúc đặc tính có reentrancy (nguồn: [15])

Lưu ý cách biểu diễn một thực tế là (HEAD, AGR) và (HEAD, SUBJ, AGR) chia sẻ cùng giá trị. Thông tin về giá trị này được lặp lại, đó là một cấu trúc đặc tính có chứa các cặp thuộc tính giá trị NUM sg và PERS 3, và gán cùng một biến đến phần đuôi mở rộng của cả hai cấu trúc đặc tính này. Điều này chỉ ra r ng hai phần đuôi phải giống nhau. Nói cách khác, các giá trị của (HEAD, AGR) và (HEAD, SUBJ, AGR) sẽ luôn như nhau.

3.2 PHÂN TÍCH CÚ PHÁP CÂU HỎI TIẾNG VIỆT BẰNG UBG

3.2.1 Xây dựng tập các luật sinh cơ bản

Để xây dựng mô hình cú pháp phục vụ cho việc xử lý câu truy vấn tự nhiên b ng tiếng Việt cho thư viện điện tử, người viết xin đề xuất tập các luật sinh viết theo cú pháp UBG như sau:

subject(type:X, value:A) --> title(type:X), full_name(value:A).

title(type:write) --> tác giả | soạn giả | người viết | nhà văn | nhà thơ | ông | bà | GS | TS | PGS | THS | KS | CN | giáo sư | phó giáo sư | tiến sĩ | thạc sĩ | kỹ sư | cử nhân | nhà phê bình | GV | giảng viên |.

full_name(value:A) --> A.

name --> letter {, letter}.

letter --> en_letter | vi_letter | num_letter.

en_letter --> A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z | a | b | c | d | e | f | g | h | I | j | k | l | m | n | o | p | q | r | s | t | u | v | w | x | y | z. num_letter --> 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9. vi_letter --> À | Á | Â | Ã | È | É | Ê | Ì | Í | Ò | Ó | Ô | Õ | Ù | Ú | Ý | à | á | â | ã | è | é | ê | ì | í | ò | ó | ô | õ | ù | ú | ý | Ă | ă | Đ | đ | Ĩ | ĩ | Ũ | ũ | Ơ | ơ | Ư | ư | Ạ | ạ | Ả | ả | Ấ | ấ | Ầ | ầ | Ẩ | ẩ | Ẫ | ẫ | Ậ | ậ | Ắ | ắ | Ằ | | Ẳ | ẳ | Ẵ | ẵ | Ặ | ặ | Ẹ | ẹ | Ẻ | ẻ | Ẽ | ẽ | Ế | ế | Ề | ề | Ể | ể | Ễ | ễ | Ệ | ệ | Ỉ | ỉ | Ị | ị | Ọ | ọ | Ỏ | ỏ | Ố | ố | Ồ | ồ | Ổ | ổ | Ỗ | ỗ | Ộ | ộ | Ớ | ớ | Ờ | ờ | Ở | ở | Ỡ | ỡ | Ợ | ợ | Ụ | ụ | Ủ | ủ | Ứ | ứ | Ừ | ừ | | ử | Ữ | ữ | Ự | ự | Ỳ | ỳ | Ỵ | ỵ | Ỷ | ỷ | Ỹ | ỹ.

book_type --> sách | tài liệu | giáo trình | tự truyện | tiểu thuyết | truyện ngắn | thơ | truyện | tập thơ | bài giảng | hồi ký | sổ tay | báo | tạp chí |.

book_volume --> quyển | cuốn | tập | bộ |. book_name(value:A) --> A. (adsbygoogle = window.adsbygoogle || []).push({});

title(type:publish) --> NXB | nhà xuất bản | nhà sách | nhà in | nhà phát hành |.

verb(type:write) --> viết | sáng tác | biên soạn. verb(type:publish) --> xuất bản | phát hành | in | in ấn. what(type:write) --> wtitle(type:write) | vtitle(type:write),

adverb(aspect:question).

what(type:publish) --> wtitle(type:publish) | vtitle(type:publish), adverb(aspect:question).

what(type:time) --> năm nào | khi nào | thời gian nào | lúc nào | vào năm nào | vào khi nào | vào thời gian nào | vào lúc nào.

what(type:book) --> book_volume, book_type, adverb(aspect:question). what(type:topic) --> topic, adverb(aspect:question).

wtitle(type:write) --> ai | người nào.

wtitle(type:publish) --> ở đâu | nơi nào | chỗ nào | ở nơi nào | ở chỗ nào | nơi đâu | ở nơi đâu.

complement(value:1) --> có | có những | những | các | có các |. complement(value:2) --> những | các |.

verb_be --> là |.

verb_have(value:1) --> thuộc | thuộc về | có |. verb_have(value:2) --> có |.

adverb(aspect:passive) --> được | do | bởi |. adverb(aspect:active) --> đã |.

adverb(aspect:question) --> nào | gì.

time(value:Y) --> pre_time, year(value:Y).

pre_time --> năm | vào năm | trong năm |.

year(value:Y) --> Y.

question --> ?.

expletive(pos:pre) --> hãy cho biết | cho biết |.

expletive(pos:mid) --> có phải | có đúng | có phải là | có đúng là | phải là | đúng là |.

expletive(pos:suf) --> có phải | có đúng | có phải không | có đúng không | phải không | đúng không | có phải không vậy | có đúng không vậy | phải không vậy | đúng không vậy |.

topic --> chủ đề.

vtitle(type:write) --> tác giả | soạn giả | người viết.

vtitle(type:publish) --> NXB | nhà xuất bản | nhà sách | nhà in | nhà phát hành.

interrogative --> không | không vậy |.

vpossessive --> của |.

because --> bởi.

so --> vậy |.

A --> name {, name}.

Y --> num_letter, num_letter, num_letter, num_letter.

Bảng 3.1 – Tập các luật sinh cơ bản (adsbygoogle = window.adsbygoogle || []).push({});

3.2.2 Tập các câu hỏi được mô tả b ng UBG

Dựa trên tập các câu hỏi tiếng việt dùng để truy vấn CSDL thư viện điện tử đã xác định và hệ thống văn phạm xây dựng dựa trên ngôn ngữ UBG ở trên, ta tiến hành lắp ghép để tạo các mẫu câu hỏi.

A) Các câu hỏi về tác giả

Các câu hỏi liên quan đến việc tìm tác giả dựa trên các thông tin khác như tên sách, nội dung sách, chủ đề sách, tên nhà xuất bản, năm xuất bản.

Q.1.1a --> expletive(pos:pre), book(value:A), verb_be, adverb(aspect:passive), what(type:write),

adverb(aspect:active), verb(type:write), so, question.

[Hãy cho biết] [quyển] sách "A" [là] [do] tác giả nào [đã] viết [vậy]?

Q.1.1b --> expletive(pos:pre), verb_be, adverb(aspect:passive), what(type:write), adverb(aspect:active), verb(type:write), book(value:A), so, question.

[Hãy cho biết] [là] [do] ai [đã] viết [quyển] sách "A" [vậy]? [Hãy cho biết] [là] [do] tác giả nào [đã] viết [quyển] sách "A" [vậy]?

Q.1.1c --> expletive(pos:pre), vtitle(type:write), vpossessive, book(value:A), verb_have(value:2), lname, verb_be, adverb(aspect:question), so, question.

[Hãy cho biết] tác giả [của] [quyển] sách "A" [có] tên [là] gì [vậy]?

Q1.1d --> expletive(pos:pre), what(type:write), verb_be,

vtitle(type:write), vpossessive, book(value:A), so, question. [Hãy cho biết] ai là tác giả [của] [quyển] sách "A" [vậy]? Q.1.1e --> expletive(pos:pre), vtitle(type:write), vpossessive,

book(value:A), verb_be, wtitle(type:write), so, question. [Hãy cho biết] tác giả [của] [quyển] sách "A" là ai [vậy]? Q.1.1f --> expletive(pos:pre), book(value:A), verb_have(value:2),

vtitle(type:write), lname, verb_be, adverb(aspect:question), so, question.

Q.1.1g --> expletive(pos:pre), book(value:A), verb_have(value:2), vtitle(type:write), verb_be, wtitle(type:write), so, question. [Hãy cho biết] [quyển] sách "A" [có] tác giả là ai [vậy]? Q.1.1h --> expletive(pos:pre), complement(value:1), what(type:write),

adverb(aspect:active), verb(type:write), book_type,

verb_have(value:1), topic, full_name(value:C), so, question. [Hãy cho biết] [có] [những] tác giả nào [đã] viết sách [thuộc] chủ đề "C" [vậy]?

[Hãy cho biết] [có] [những] ai [đã] viết sách [thuộc] chủ đề "C" [vậy]?

Q.1.1i --> expletive(pos:pre), verb_have(value:1), topic,

full_name(value:C), complement(value:1), what(type:write), adverb(aspect:active), verb(type:write), book_type, so,

question.

[Hãy cho biết] [thuộc] chủ đề "C" [có] [những] tác giả nào [đã] viết sách [vậy]?

[Hãy cho biết] [thuộc] chủ đề "C" [có] [những] ai [đã] viết sách [vậy]?

Bảng 3.2 – Các câu hỏi về tác giả

B) Các câu hỏi về sách và tác giả

Q.1.2a --> expletive(pos:mid), subject(type:write, value:T),

adverb(aspect:active), verb(type:write), book(value:A), interrogative, question.

[Có phải là] tác giả "T" [đã] viết [quyển] sách "A" [không vậy]?

Q.1.2b --> subject(type:write, value:T), expletive(pos:mid), (adsbygoogle = window.adsbygoogle || []).push({});

adverb(aspect:active), verb(type:write), book(value:A), interrogative, question.

Tác giả "T" [có phải là] [đã] viết [quyển] sách "A" [không vậy]?

Q.1.2c --> subject(type:write, value:T), adverb(aspect:active),

verb(type:write), book(value:A), expletive(pos:suf), question. Tác giả "T" [đã] viết [quyển] sách "A" [có phải không] [vậy]? Q.1.2d --> expletive(pos:mid), book(value:A), adverb(aspect:passive),

subject(type:write, value:T), verb(type:write), interrogative, question.

[Có phải là] [quyển] sách "A" do tác giả "T" viết [không vậy]? Q.1.2.e --> book(value:A), expletive(pos:mid), adverb(aspect:passive),

subject(type:write, value:T), verb(type:write), interrogative, question.

[Quyển] sách "A" [có phải là] [do] tác giả "T" viết [không vậy]?

Q.1.2f --> book(value:A), verb_be, adverb(aspect:passive), subject(type:write, value:T), verb(type:write), expletive(pos:suf), question.

[Quyển] sách "A" [là] do tác giả "T" viết [có phải không] [vậy]?

Bảng 3.3 – Các câu hỏi về sách và tác giả

C) Các câu hỏi về tác giả và nhà xuất ản

Các câu hỏi dùng để xác định tác giả T có viết sách do nhà xuất bản X phát hành hay không.

Q.1.3a --> expletive(pos:mid), subject(type:write, value:T),

verb_have(value:2), book_type, adverb(aspect:passive), subject(type:publish, value:X), verb(type:publish), interrogative, question.

[Có phải là] tác giả "T" có sách [do] nhà xuất bản "X" phát hành [không vậy]?

Q.1.3b --> expletive(pos:pre), book_type, vpossessive, subject(type:write,value:T), verb_have(value:2), adverb(aspect:passive), subject(type:publish, value:X), verb(type:publish), interrogative, question.

[Hãy cho biết] sách [của] tác giả "T" [có] được nhà xuất bản "X" phát hành [không vậy]?

Q.1.3c --> expletive(pos:pre), book_type, adverb(aspect:active), verb(type:write), because, subject(type:write, value:T), verb_have(value:2), adverb(aspect:passive),

subject(type:publish, value:X), verb(type:publish), interrogative, question.

[Hãy cho biết] sách [được] viết bởi tác giả "T" [có] do nhà xuất bản "X" phát hành [không vậy]?

Q.1.3d --> expletive(pos:pre), subject(type:publish, value:X), verb_have(value:2), verb(type:publish), book_type, vpossessive , subject(type:write, value:T), interrogative, question.

[Hãy cho biết] nhà xuất bản "X" [có] phát hành sách [của] tác giả "T" [không vậy]?

Q.1.3e --> expletive(pos:pre), subject(type:publish, value:X), verb_have(value:2), verb(type:publish), book_type, adverb(aspect:passive), subject(type:write, value:T), verb(type:write), interrogative, question.

[Hãy cho biết] nhà xuất bản "X" [có] phát hành sách [do] tác giả "T" viết [không vậy]?

Q.1.3f --> expletive(pos:pre), book_type, verb(type:publish), because, subject(type:publish, value:X), verb_have(value:2),

vpossessive, subject(type:write, value:T), interrogative, question.

[Hãy cho biết] sách phát hành bởi nhà xuất bản "X" [có] của tác giả "T" [không vậy]?

D) Các câu hỏi về sách

Các câu hỏi liên quan đến việc tìm sách dựa trên các thông tin khác như tên tác giả, nội dung sách, chủ đề sách, tên nhà xuất bản, năm xuất bản. (adsbygoogle = window.adsbygoogle || []).push({});

Q.2.1a --> expletive(pos:pre), complement(value:1), what(type:book), verb_be, adverb(aspect:passive), subject(type:write, value:T), verb(type:write), so, question.

[Hãy cho biết] [có những] [quyển] sách nào [là] [do] tác giả "T" viết [vậy]?

Q.2.1b --> expletive(pos:pre), verb_be, subject(type:write, value:T), adverb(aspect:active), verb_have(value:2), verb(type:write), complement(value:2), what(type:book), so, question.

[Hãy cho biết] [là] tác giả "T" [đã] [có] viết [những] [quyển] sách nào [vậy]?

Q.2.1c --> expletive(pos:pre), complement(value:1), what(type:book), verb_have(value:2), vtitle(type:write), verb_be,

full_name(value:T), so, question.

[Hãy cho biết] [những] [quyển] sách nào [có] tác giả là "T" [vậy]?

Q.2.1d --> expletive(pos:pre), subject(type:write, value:T), verb_be, vtitle(type:write), vpossessive, complement(value:2), what(type:book), so, question.

[Hãy cho biết] tác giả "T" là soạn giả [của] [những] [quyển] sách nào?

Q.2.1e --> expletive(pos:pre), complement(value:1), what(type:book), verb_be, vpossessive, subject(type:write, value:T), so, question.

[Hãy cho biết] [có] [những] [quyển] sách nào [là] của tác giả "T" [vậy]?

Q.2.1f --> expletive(pos:pre), complement(value:1), what(type:book), verb_be, adverb(aspect:passive), subject(type:publish,value:X), verb(type:publish), so, question.

[Hãy cho biết] [có] [những] [quyển] sách nào [là] [do] nhà xuất bản "X" phát hành [vậy]?

Q.2.1g --> expletive(pos:pre), verb_be, subject(type:publish, value:X), adverb(aspect:active), verb_have(value:2), verb(type:publish), verb_have(value:2), what(type:book), so, question.

[Hãy cho biết] [là] nhà xuất bản "X" [đã] [có] phát hành [những] [quyển] sách nào [vậy]?

Q.2.1h --> expletive(pos:pre), complement(value:1), what(type:book), verb_have(value:2), vtitle(type:publish), verb_be,

full_name(value:X), so, question.

[Hãy cho biết] [những] [quyển] sách nào [có] nhà xuất bản là "X" [vậy]?

Q.2.1i --> expletive(pos:pre), subject(type:publish, value:X), verb_be, vtitle(type:publish), vpossessive, complement(value:2), what(type:book), so, question.

[Hãy cho biết] nhà xuất bản "X" là nhà phát hành [của] [những] [quyển] sách nào?

Q.2.1j --> expletive(pos:pre), complement(value:1), what(type:book), verb_be, vpossessive, subject(type:publish, value:X), so, question.

[Hãy cho biết] [có] [những] [quyển] sách nào [là] của nhà xuất bản "X" [vậy]?

Q.2.1k --> expletive(pos:pre), complement(value:1), what(type:book), verb_have(value:1), topic, full_name(value:C), so, question. [Hãy cho biết] [có] [những] [quyển] sách nào [thuộc] chủ đề "C" [vậy]?

Q.2.1l --> expletive(pos:pre), verb_have(value:1), topic,

full_name(value:C), complement(value:1), what(type:book), so, question.

[Hãy cho biết] [thuộc] chủ đề "C" có [những] [quyển] sách nào [vậy]?

Q.2.1m --> expletive(pos:pre), complement(value:1), what(type:book), adverb(aspect:active), adverb(aspect:passive), verb(type:write), time(value:Y), so, question.

[Hãy cho biết] [có những] [quyển] sách nào [đã được] viết [vào] năm "Y" [vậy]?

Q.2.1n --> expletive(pos:pre), time(value:Y), complement(value:1),

what(type:book), adverb(aspect:active), adverb(aspect:passive), verb(type:write), so, question. (adsbygoogle = window.adsbygoogle || []).push({});

[Hãy cho biết] [vào] năm "Y" có [những] [quyển] sách nào [đã được] viết [vậy]?

Q.2.1o --> expletive(pos:pre), complement(value:1), what(type:book), adverb(aspect:active), adverb(aspect:passive),

verb(type:publish), time(value:Y), so, question.

[Hãy cho biết] [có những] [quyển] sách nào [đã được] phát hành [vào] năm "Y" [vậy]?

Q.2.1p --> expletive(pos:pre), time(value:Y), complement(value:1),

what(type:book), adverb(aspect:active), adverb(aspect:passive), verb(type:publish), so, question.

[Hãy cho biết] [vào] năm "Y" có [những] [quyển] sách nào [đã được] phát hành [vậy]?

Bảng 3.5 – Các câu hỏi về sách

E) Các câu hỏi về nhà xuất ản

Các câu hỏi liên quan đến việc tìm nhà xuất bản dựa trên các thông tin khác như tên sách, tên tác giả, nội dung sách, chủ đề sách, năm xuất bản.

Q.3.1a --> expletive(pos:pre), book(value:A), verb_be, adverb(aspect:passive), what(type:publish),

adverb(aspect:active), verb(type:publish), so, question.

[Hãy cho biết] [quyển] sách "A" [là] [do] nhà xuất bản nào [đã] phát hành [vậy]?

[Hãy cho biết] [quyển] sách "A" [là] [do] nơi nào [đã] phát hành [vậy]?

Q.3.1b --> expletive(pos:pre), verb_be, adverb(aspect:passive),

what(type:publish), adverb(aspect:active), verb(type:publish), book(value:A), so, question.

[Hãy cho biết] [là] [do] nơi nào [đã] phát hành [quyển] sách "A" [vậy]?

[Hãy cho biết] [là] [do] nhà xuất bản nào [đã] phát hành [quyển] sách "A" [vậy]?

Q.3.1c --> expletive(pos:pre), vtitle(type:publish), vpossessive, book(value:A), verb_have(value:2), lname, verb_be, adverb(aspect:question), so, question.

[Hãy cho biết] nhà xuất bản [của] [quyển] sách "A" [có] tên [là] gì [vậy]?

Q.3.1d --> expletive(pos:pre), what(type:publish), verb_be,

vtitle(type:publish), vpossessive, book(value:A), so, question. [Hãy cho biết] nơi nào là nhà xuất bản [của] [quyển] sách "A" [vậy]?

Q.3.1e --> expletive(pos:pre), vtitle(type:publish), vpossessive, book(value:A), verb_be, wtitle(type:publish), so, question. [Hãy cho biết] nhà xuất bản [của] [quyển] sách "A" là nơi nào [vậy]?

Q.3.1f --> expletive(pos:pre), book(value:A), verb_have(value:2),

vtitle(type:publish), lname, verb_be, adverb(aspect:question), so, question.

[Hãy cho biết] [quyển] sách "A" có nhà xuất bản tên [là] gì [vậy]?

Q.3.1g --> expletive(pos:pre), book(value:A), verb_have(value:2),

vtitle(type:publish), verb_be, wtitle(type:publish), so, question. [Hãy cho biết] [quyển] sách "A" có nhà xuất bản là nơi nào [vậy]?

Q.3.1h --> expletive(pos:pre), complement(value:1), what(type:publish), adverb(aspect:active), verb(type:publish), book_type,

verb_have(value:1), topic, full_name(value:C), so, question. [Hãy cho biết] [có] [những] nhà xuất bản nào [đã] phát hành sách [thuộc] chủ đề "C" vậy? (adsbygoogle = window.adsbygoogle || []).push({});

[Hãy cho biết] [có] [những] nơi nào [đã] phát hành sách [thuộc] chủ đề "C" vậy?

Q.3.1i --> expletive(pos:pre), verb_have(value:1), topic,

full_name(value:C), complement(value:1), what(type:publish), adverb(aspect:active), verb(type:publish), book_type, so, question.

[Hãy cho biết] [thuộc] chủ đề "C" có [những] nhà xuất bản nào [đã] phát hành sách [vậy]?

[Hãy cho biết] [thuộc] chủ đề "C" có [những] nơi nào [đã] phát hành sách [vậy]?

F) Các câu hỏi về sách và nhà xuất ản

Các câu hỏi dùng để xác định nhà xuất bản X có phát hành sách A hay không.

Q.3.2a --> expletive(pos:mid), subject(type:publish, value:X), adverb(aspect:active), verb(type:publish), book(value:A), interrogative, question.

[Có phải là] nhà xuất bản "X" [đã] phát hành [quyển] sách "A" [không vậy]?

Q.3.2b --> subject(type:publish, value:X), expletive(pos:mid),

adverb(aspect:active), verb(type:publish), book(value:A), interrogative, question.

Nhà xuất bản "X" [có phải là] [đã] phát hành [quyển] sách "A" [không vậy]?

Q.3.2c --> subject(type:publish, value:X), adverb(aspect:active), verb(type:publish), book(value:A), expletive(pos:suf), question.

Nhà xuất bản "X" [đã] phát hành [quyển] sách "A" [có phải không] [vậy]?

Q.3.2d --> expletive(pos:mid), book(value:A), adverb(aspect:passive), subject(type:publish, value:X), verb(type:publish),

interrogative, question.

[Có phải là] [quyển] sách "A" do nhà xuất bản "X" phát hành [không vậy]?

Q.3.2e --> book(value:A), expletive(pos:mid), adverb(aspect:passive), subject(type:publish, value:X), verb(type:publish),

interrogative, question.

[Quyển] sách "A" [có phải là] do nhà xuất bản "X" phát hành [không vậy]?

Q.3.2f --> book(value:A), verb_be, adverb(aspect:passive), subject(type:publish, value:X), verb(type:publish), expletive(pos:suf), question.

[Quyển] sách "A" [là] do nhà xuất bản "X" phát hành [có phải không] [vậy]?

Bảng 3.7 – Các câu hỏi về sách và nhà xuất bản

G) Các câu hỏi về năm xuất ản

Các câu hỏi liên quan đến việc tìm năm xuất bản dựa trên các thông tin khác như tên sách, tên tác giả, nội dung sách, chủ đề sách, nhà xuất bản.

Q.4.1a --> expletive(pos:pre), book(value:A), adverb(aspect:active), adverb(aspect:passive), verb(type:write), what(type:time), interrogative, question.

[Hãy cho biết] [quyển] sách "A" [đã được] viết [vào] năm nào [vậy]?

Q.4.1b --> expletive(pos:pre), what(type:time), book(value:A),

adverb(aspect:active), adverb(aspect:passive), verb(type:write), interrogative, question.

[Hãy cho biết] [vào] năm nào [quyển] sách "A" [đã] được viết [vậy]? (adsbygoogle = window.adsbygoogle || []).push({});

Q.4.1c --> expletive(pos:pre), book(value:A), adverb(aspect:active), adverb(aspect:passive), verb(type:publish), what(type:time), interrogative, question.

[Hãy cho biết] [quyển] sách "A" [đã] [được] phát hành [vào] năm nào [vậy]?

Q.4.1d --> expletive(pos:pre), what(type:time), book(value:A), adverb(aspect:active), adverb(aspect:passive), verb(type:publish), interrogative, question.

[Hãy cho biết] [vào] năm nào [quyển] sách "A" [đã] được phát hành [vậy]?

Bảng 3.8 – Các câu hỏi về năm xuất bản

H) Các câu hỏi về sách và năm xuất ản

Các câu hỏi dùng để xác định sách A có phát hành năm Y hay không.

Q.4.2a --> expletive(pos:mid), book(value:A), adverb(aspect:active), adverb(aspect:passive), verb(type:write), time(value:Y), interrogative, question.

[Có phải là] [quyển] sách "A" [đã] [được] viết [vào] năm "Y" [không vậy]?

Q.4.2b --> book(value:A), adverb(aspect:active), adverb(aspect:passive), verb(type:write), time(value:Y), expletive(pos:suf), question. [Quyển] sách "A" [đã] [được] viết [vào] năm "Y" [có phải không] vậy?

Q.4.2c --> time(value:Y), expletive(pos:mid), book(value:A),

adverb(aspect:active), adverb(aspect:passive), verb(type:write), interrogative, question.

[Vào] năm "Y" [có phải là] [quyển] sách "A" [đã] được viết [không vậy]?

Q.4.2d --> time(value:Y), book(value:A), adverb(aspect:active),

adverb(aspect:passive), verb(type:write), expletive(pos:suf), question.

[Vào] năm "Y" [quyển] sách "A" [đã] được viết [có phải không vậy]?

Q.4.2e --> expletive(pos:mid), book(value:A), adverb(aspect:active), adverb(aspect:passive), verb(type:publish), time(value:Y), interrogative, question.

[Có phải là] [quyển] sách "A" [đã được] phát hành [vào] năm "Y" [không vậy]?

Q.4.2f --> book(value:A), adverb(aspect:active), adverb(aspect:passive), verb(type:publish), time(value:Y), expletive(pos:suf),

question.

[Quyển] sách "A" [đã] [được] phát hành [vào] năm "Y" [có phải không] vậy?

Q.4.2g --> time(value:Y), expletive(pos:mid), book(value:A), adverb(aspect:active), adverb(aspect:passive), verb(type:publish), interrogative, question.

[Vào] năm "Y" [có phải là] [quyển] sách "A" [đã] được phát hành [không vậy]?

Q.4.2h --> time(value:Y), book(value:A), adverb(aspect:active),

adverb(aspect:passive), verb(type:publish), expletive(pos:suf), question.

[Vào] năm "Y" [quyển] sách "A" [đã] được phát hành [có phải không vậy]?

CHƯƠNG 4

XÂY DỰNG CHƯƠNG TRÌNH

4.1 XÂY DỰNG CÁC THÀNH PHẦN HỆ THỐNG [8][9]

Từ các thông tin cần truy vấn, chúng tôi đã tiến hành xây dựng mô hình dữ liệu của hệ thống cần phải xử lý như hình 4.1 dưới đây: (adsbygoogle = window.adsbygoogle || []).push({});

Hình 4.1 – Mô hình dữ liệu của hệ thống

Dựa trên kiến trúc của hệ thống (Hình 2.2), chúng tôi triển khai xây dựng các thành phần của hệ thống, sau đó tích hợp các thành phần này trong một hệ thống hoàn chỉnh.

4.2 THÀNH PHẦN TIỀN XỬ LÝ CÂU HỎI

Các bước tiền xử lý như sau:

- Loại bỏ các ký tự thừa.

- Chuyển từ tiếng Việt về dạng mã hệ thống xử lý được.

4.2.1 Bước tách tham số trong câu

Hệ thống hiện quy ước tham số của câu truy vấn phải đặt trong cặp dấu nháy kép. Bước này sẽ tìm các thành phần n m trong cắp dấu nháy kép và tách chúng ra khỏi câu.

Với câu hỏi:

Ai viết sách “Giáo trình cơ sở dữ liệu” vậy? Sẽ thu được câu:

Ai viết sách + param[1] + vậy? Trong đó:

param[1] = “Giáo trình cơ sở dữ liệu”

Tham số tìm được sẽ được dùng làm điều kiện cho phép chọn khi hệ thống phát sinh câu lệnh SQL, nên chúng sẽ không bị thay đổi ở các bước xử lý kế tiếp.

4.2.2 Bước loại ỏ ký tự thừa

Việc loại bỏ các ký tự dư thừa trong câu hỏi có thể thực hiện tương đối dễ dàng thông qua các bước sau:

- Định nghĩa tập ký tự của hệ thống.

- Duyệt qua từng ký tự của câu truy vấn, nếu ký tự đó không thuộc

Một phần của tài liệu Luận văn thạc sĩ công nghệ thông tin phương pháp xử lý một số dạng câu hỏi tiếng việt cho công cụ tìm kiếm thư viện điện tử (Trang 31 - 85)