Một đặc điểm chung của các công trình nghiên cứu nói trên là đều sử dụng văn phạm phi ngữ cảnh CFG: Context-Free Grammar để xử lý cú pháp cho các câu hỏi tiếng Việt.. 1.2 MỤC TIÊU ĐỀ TÀI
Trang 1Họ và tên tác giả luận văn NGUYỄN ĐÌNH LIÊN
Tên đề tài luận văn
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Ử
Chuyên ngành:
Luận văn Thạc sĩ Công nghệ thông tin
Người hướng dẫn khoa học
TS NGUYỄN TUẤN ĐĂNG
Đồng Nai, Năm 2011
Trang 2Trong thời gian gần một năm thực hiện luận văn này, ngoài nỗ lực của chính bản thân, tôi cũng đã nhận được rất nhiều sự giúp đỡ từ các Thầy, các đồng nghiệp, bạn bè và gia đình về tri thức khoa học cũng như sự động viên khích lệ về mặt tinh thần Đây là một nguồn động lực vô cùng to lớn giúp tôi kịp hoàn thành luận văn Nhân đây, tôi xin bày tỏ lòng biết ơn chân thành đến:
Thầy TS Nguyễn Tuấn Đăng – một người Thầy hướng dẫn tận tâm với học viên Chính Thầy đã có những định hướng đúng đắn trong suốt quá trình nghiên khoa học của tôi, đã truyền đạt cho tôi những kiến thức chuyên ngành và kinh nghiệm trong nghiên cứu khoa học Thầy cũng luôn quan tâm, động viên mỗi khi tôi gặp khó khăn đồng thời tạo mọi điều kiện thuận lợi cho trong suốt thời gian tôi thực hiện đề tài
Thầy TS Trần Hành và Thầy PGS.TS Trần Văn Lăng đã có những chỉ dẫn thiết thực cho học viên trong việc lựa chọn và thực hiện đề tài luận văn
Các thành viên trong nhóm NLKE do thầy Nguyễn Tuấn Đăng làm chủ nhiệm Thông qua những trao đổi cùng các bạn trên diễn đàn, tôi đã thu thập được rất nhiều kiến thức cho bản thân góp phần hoàn thành luận văn
Các Thầy trong Ban Giám Hiệu và các đồng nghiệp ở Trung tâm Thông tin tư liệu của trường Đại học Lạc Hồng đã tạo điều kiện về mặt thời gian giúp tôi hoàn tất luận văn
Gia đình là nguồn động lực lớn lao và là chỗ dựa tinh thần vững chắc giúp tôi vượt qua mọi khó khăn và luôn vững tin vào thành công
Đồng Nai, Tháng 6 năm 2011
Trang 3CHƯƠNG 1: TỔNG QUAN 1
1.1 ĐẶT VẤN ĐỀ 1
1.2 MỤC TIÊU ĐỀ TÀI 1
1.3 PHẠM VI NGHIÊN CỨU 2
1.4 NỘI DUNG NGHIÊN CỨU 3
1.5 ĐÓNG GÓP MỚI CỦA ĐỀ TÀI 3
1.6 BỐ CỤC LUẬN VĂN 4
CHƯƠNG 2: MÔ HÌNH VÀ KIẾN TRÚC HỆ THỐNG 5
2.1 VẤN ĐỀ XÂY DỰNG CÔNG CỤ TÌM KIẾM THƯ VIỆN ĐIỆN T 5
2.2 CHỨC NĂNG HỆ THỐNG 6
2.3 KIẾN TRÚC HỆ THỐNG 7
2.3.1 Tiền xử lý câu hỏi 9
2.3.2 Phân tích cú pháp câu hỏi b ng UBG 9
2.3.3 Phát sinh câu truy vấn SQL 10
2.3.4 Xử lý kết quả truy vấn cơ sở dữ liệu 11
2.4 CÁC QUI TẮC CÚ PHÁP 12
2.5 PHÁT SINH TRUY VẤN TỪ CẤU TRÚC CÚ PHÁP 13
CHƯƠNG 3: PHÂN TÍCH CÚ PHÁP CÂU HỎI TIẾNG VIỆT BẰNG UNIFICATION-BASED GRAMMAR 15
3.1 LÝ THUYẾT UNIFICATION-BASED GRAMMAR 15
3.1.1 Giới thiệu Unification-Based Grammar 15
Trang 4A Phép So sánh (Subsumption) 19
B Phép hợp nhất (Unification) 21
C Phép tổng quát (generalization) 22
3.1.4 Biểu diễn các cấu trúc đặc tính trong Prolog 23
3.2 PHÂN TÍCH CÚ PHÁP CÂU HỎI TIẾNG VIỆT BẰNG UNIFICATION-BASED GRAMMAR 24
3.2.1 Xây dựng tập các luật sinh cơ bản 24
3.2.2 Tập các câu hỏi được mô tả b ng UBG 28
A Các câu hỏi về tác giả 28
B Các câu hỏi về sách và tác giả 30
C Các câu hỏi về tác giả và nhà xuất bản 32
D Các câu hỏi về sách 34
E Các câu hỏi về nhà xuất bản 37
F Các câu hỏi về sách và nhà xuất bản 40
G Các câu hỏi về năm xuất bản 41
H Các câu hỏi về sách và năm xuất bản 42
CHƯƠNG 4: XÂY DỰNG CHƯƠNG TRÌNH 45
4.1 XÂY DỰNG CÁC THÀNH PHẦN HỆ THỐNG 45
4.2 THÀNH PHẦN TIỀN X LÝ CÂU HỎI 45
4.2.1 Bước tách tham số trong câu 46
4.2.2 Bước loại bỏ ký tự thừa 46
Trang 54.3.1 Tách từ và nhân diện từ loại 50
4.3.2 Chuyển câu hỏi về cú pháp UBG 54
4.3.3 Phát sinh cây cú pháp 55
4.4 THÀNH PHẦN PHÁT SINH CÂU TRUY VẤN SQL 56
4.4.1 Tìm cấu trúc phù hợp 56
4.4.2 Phát sinh và thực thi câu lệnh SQL 57
4.5 THÀNH PHẦN X LÝ KẾT QUẢ TRUY VẤN 58
4.5.1 Câu lệnh SQL trả về giá trị 59
4.5.2 Lệnh SQL không trả về giá trị 59
4.5.3 Tìm được cấu trúc gần đúng 59
4.5.4 Không tìm được cấu trúc gần đúng 60
4.6 CÀI ĐẶT CHƯƠNG TRÌNH 60
4.6.1 Công nghệ sử dụng 60
4.6.2 Cài đặt và sử dụng hệ thống 61
CHƯƠNG 5: KẾT LUẬN 65
5.1 ĐÁNH GIÁ HỆ THỐNG 65
5.2 ĐỊNH HƯỚNG PHÁT TRIỂN 65 TÀI LIỆU THAM KHẢO
PHỤ LỤC: CÁC CÂU HỎI KIỂM TRA HỆ THỐNG
Trang 6UBG – Unification-Based Grammar: Văn phạm dựa trên sự hợp nhất
CFG – Context Free Grammar: Văn phạm phi ngữ cảnh
BNF – Backus Naur Form: Ký pháp mô tả cú pháp của ngôn ngữ
EBNF – Extended Backus Naur Form: Ký pháp mô tả cú pháp của ngôn ngữ
mở rộng
ANTLR – ANother Tool for Language Recognition: Bộ công cụ phân tích cú
pháp
LEX – Lexical Analyser: Bộ công cụ phân tích từ vựng
YACC – Yet Another Compiler Compiler: Bộ công cụ phân tích cú pháp PROLOG – PROgramming in LOGic: Một ngôn ngữ lập trình
SQL – Structured Query Language: Một ngôn ngữ truy vấn dữ liệu có câu
trúc
CSDL: Cơ sở dữ liệu
Trang 7Hình 2.1 – Mô hình chức năng của hệ thống 7
Hình 2.2 – Mô hình kiến trúc của hệ thống 8
Hình 2.3 – Sơ đồ quá trình phân tích cú pháp câu hỏi b ng UBG 10
Hình 2.4 – Sơ đồ xác định và thực thi câu truy vấn 12
Hình 2.5 – Sơ đồ chuyển câu hỏi về câu truy vấn SQL 14
Hình 3.1 – Cấu trúc đặc tính có giá trị là nguyên tử 17
Hình 3.2 – Cấu trúc đặc tính có giá trị là 1 cấu trúc 18
Hình 3.3 – Biểu diễn cấu trúc đặc tính b ng đồ thị 18
Hình 3.4 – Đồ thị biểu diễn cấu trúc đặc tính có reentrancy 19
Hình 3.5 – Cấu trúc đặc tính có reentrancy 19
Hình 3.6 – Hai cấu trúc đặc tính gộp nhau 20
Hình 3.7 – Cấu trúc đặc tính 1 gộp cấu trúc đặc tính 2 20
Hình 3.8 – Hai cấu trúc đặc tính không có phép gộp 20
Hình 3.9 – Hợp nhất 2 cấu trúc đặc tính 21
Hình 3.10 – Hai cấu trúc đặc tính không hợp nhất 21
Hình 3.11 – Tổng quát 2 cấu trúc đặc tính 22
Hình 3.12 – Cấu trúc đặc tính có giá trị nguyên tử 23
Hình 3.13 – Cấu trúc đặc tính có giá trị là 1 cấu trúc 24
Hình 3.14 – Cấu trúc đặc tính có reentrancy 24
Hình 4.1 – Các Mô hình dữ liệu của hệ thống 45
Hình 4.2 – Lưu đồ các thao tác loại bỏ các ký tự thừa 47
Hình 4.3 – Biểu diễn các thành phần của Token 50
Trang 8Hình 4.6 – Phát sinh câu lệnh SQL 58
Hình 4.7 – Giao diện khi nhận câu hỏi đúng 61
Hình 4.8 – Giao diện khi nhận câu hỏi gần đúng 62
Hình 4.9 – Giao diện liệt kê các dạng câu hỏi 63
Hình 4.10 – Giao diện khi gặp câu hỏi quá khác biệt 63
Hình 4.11 – Giao diện khi câu hỏi không trả về thông tin 64
Trang 9Bảng 2.1 – Mô tả các trường thông tin 5
Bảng 3.1 – Tập các luật sinh cơ bản 25
Bảng 3.2 – Các câu hỏi về tác giả 28
Bảng 3.3 – Các câu hỏi về sách và tác giả 31
Bảng 3.4 – Các câu hỏi về tác giả và nhà xuất bản 32
Bảng 3.5 – Các câu hỏi về sách 34
Bảng 3.6 – Các câu hỏi về nhà xuất bản 37
Bảng 3.7 – Các câu hỏi về sách và nhà xuất bản 40
Bảng 3.8 – Các câu hỏi về năm xuất bản 41
Bảng 3.9 – Các câu hỏi về sách và năm xuất bản 42
Bảng 4.1 – Bảng liệt kê một số TOKEN 51
Trang 10CHƯƠNG 1 TỔNG QUAN
1.1 ĐẶT VẤN ĐỀ
Trong những năm gần đây, vấn đề nghiên cứu xây dựng các công cụ tìm kiếm b ng truy vấn tiếng Việt cho thư viện đã được triển khai và đã đạt được một số kết quả ban đầu, qua các công trình nghiên cứu: [1], [2], [3], [4], [5], [6], [7], [8], [9], [10], [11], [12] Một số nhận định tổng quan về tình hình nghiên cứu của lĩnh vực này đã được trình bày trong [10] Một đặc điểm chung của các công trình nghiên cứu nói trên là đều sử dụng văn phạm phi ngữ cảnh (CFG: Context-Free Grammar) để xử lý cú pháp cho các câu hỏi tiếng Việt Mặc dù đơn giản nhưng mô hình văn phạm CFG cũng có nhiều hạn chế, đặc biệt là trong vấn đề xử lý các ràng buộc ngữ pháp
Trong cùng hướng nghiên cứu với các công trình nói trên ([1], [2], [3], [4], [5], [6], [7], [8], [9], [10], [11], [12]) nhưng với cách tiếp cận hoàn toàn khác, trong đề tài này chúng tôi sử dụng mô hình văn phạm UBG (Unification-Based Grammar) để phân tích cú pháp cho các câu hỏi tiếng Việt Trên nguyên tắc, mô hình văn phạm UBG có thể cho phép khắc phục nhiều nhược điểm của CFG, mặc dù vấn đề triển khai và cài đặt UBG cũng có những khó khăn, phức tạp riêng
1.2 MỤC TIÊU ĐỀ TÀI
Đề tài tập trung nghiên cứu vấn đề sử dụng mô hình văn phạm UBG để xây dựng phương pháp xử lý các dạng câu hỏi tiếng Việt được dùng trong công cụ tìm kiếm thư viện điện tử b ng truy vấn tiếng Việt Trên cơ sở đó, đề
Trang 11tài phát triển một công cụ tìm kiếm b ng truy vấn tiếng Việt cho thư viện điện tử của một trường đại học, áp dụng cho trường Đại học Lạc Hồng Công
cụ này cho phép xử lý những câu hỏi tiếng Việt có nội dung liên quan đến các thông tin mô tả về tài liệu như: tên tài liệu, tác giả, nhà xuất bản, năm xuất bản
1.3 PHẠM VI NGHIÊN CỨU
Như mục tiêu của đề tài đã xác định, trong phạm vi tương tự với các công trình khác ([1], [2], [3], [4], [5], [6], [7], [8], [9], [10], [11], [12]) đã được giới thiệu trong cùng lĩnh vực nghiên cứu, chúng tôi chỉ giới hạn việc
xử lý các câu hỏi tiếng Việt có nội dung xoay quanh các thông tin mô tả về tài liệu trong thư viện: tên tài liệu, tác giả, nhà xuất bản, năm xuất bản Kết quả tìm kiếm vì vậy sẽ là một câu trả lời tương ứng với nội dung truy vấn được và các dữ liệu có liên quan (nếu có) chứ không phải là tài liệu chứa từ khóa như trong tìm kiếm so khớp dựa trên từ khóa
Nội dung của các câu truy vấn b ng tiếng Việt phải đáp ứng được các yêu cầu sau:
- Mỗi câu truy vấn chỉ có một đối tượng thông tin được hỏi (tên tài liệu, tác giả, nhà xuất bản, năm xuất bản) hoặc câu hỏi dạng khẳng định (đúng/sai)
- Chỉ xử lý các dạng câu hỏi được đề cập trực tiếp, không xử lý các câu hỏi có tính gián tiếp hoặc có chứa ẩn ý
- Chỉ xử lý các câu truy vấn có cấu trúc đơn, câu không chứa nhiều thành phần ghép với nhau bởi các liên từ như và, hoặc, hay, …
- Chỉ xử lý các câu truy vấn có cấu trúc rõ ràng, không nhập nh ng,
mơ hồ
Trang 12- Trong giai đoạn nghiên cứu này chỉ xử lý các câu truy vấn có từ một đến hai tham số tìm kiếm
1.4 NỘI DUNG NGHIÊN CỨU
Những vấn đề nghiên cứu trọng tâm của đề tài bao gồm:
- Nội dung 1: Khảo sát cơ sở dữ liệu của thư viện điện tử nh m xác định các thông tin lưu trữ, từ đó sẽ xây dựng tập các câu hỏi tiếng Việt dùng để tìm kiếm các thông tin được chọn lọc trong số những thông tin được lưu trữ
- Nội dung 2: Định nghĩa một văn phạm UBG hạn chế có khả năng phân tích các dạng câu hỏi đã được xác định
- Nội dung 3: Từ cấu trúc cú pháp câu hỏi trong văn phạm UBG, xác định nội dung câu hỏi và phát sinh các truy vấn phù hợp trên ngôn ngữ truy vấn cơ sở dữ liệu
- Nội dung 4: Xử lý các kết quả truy vấn cơ sở dữ liệu
1.5 ĐÓNG GÓP MỚI CỦA ĐỀ TÀI
Đề tài xây dựng phương pháp xử lý các câu hỏi tiếng Việt cho công cụ tìm kiếm thư viện điện tử của trường Đại học Lạc Hồng với một số đặc thù riêng:
- Xây dựng mới hoàn toàn một văn phạm hạn chế dựa trên UBG thay
vì sử dụng CFG như các công trình trước đây đã triển khai ([1], [2], [3], [4], [5], [6], [7], [8], [9], [10], [11], [12])
- Sử dụng ngôn ngữ Prolog để cài đặt văn phạm UBG hạn chế đã được xây dựng
Trang 13- Chương 2 Mô hình và kiến trúc hệ thống
Chương này sẽ trình bày tổng quát về hệ thống: các chức năng, kiến trúc, các thành phần hệ thống
- Chương 3 Phân tích cú pháp câu hỏi tiếng Việt b ng Based Grammar (UBG)
Unification-Chương này tập trung vào vấn đề xây dựng các qui tắc cú pháp dựa trên mô hình UBG để phân tích các câu hỏi tiếng Việt
- Chương 4 Xây dựng chương trình
Nội dung chương này trình bày các vấn đề kỹ thuật trong việc xây dựng hệ thống Ngoài ra, chương này cũng giới thiệu hệ thống tìm kiếm đã được xây dựng
- Chương 5 Kết luận và hướng phát triển
Nhận định và đánh giá về hệ thống được xây dựng, đề xuất một số hướng nghiên cứu tiếp theo trong tương lai
- Phụ lục và tài liệu tham khảo
Trang 14CHƯƠNG 2
MÔ HÌNH VÀ KIẾN TRÚC HỆ THỐNG
2.1 Vấn đề xây dựng c ng c t m ki m thư vi n đi n t
Thư viện điện tử của trường Đại học Lạc Hồng hiện lưu trữ hàng chục nghìn sách, tài liệu và tạp chí các loại Tùy theo mục tiêu tìm kiếm, việc xây dựng công cụ tìm kiếm cho những nguồn tài liệu này đòi hỏi phải xử lý nhiều đối tượng thông tin đa dạng có liên quan Trong phạm vi luận văn, chúng tôi chỉ quan tâm tới một số thông tin mô tả quan trọng của các tài liệu trong thư viện: tên tài liệu, tác giả, nhà xuất bản, năm xuất bản
Sau khi tiến hành khảo sát tổng thể cơ sở dữ liệu của hệ thống thư viện trường Đại học Lạc Hồng, chúng tôi xác định những trường thông tin cụ thể của các đối tượng được liệt kê trong Bảng 2.1
Object: Books
BookID Mã sách hoặc tài liệu
BookName Tên tài liệu
ParallelTitle Tên gọi khác của tài liệu
Language Ngôn ngữ tài liệu sử dụng
CopyrightYear Năm xuất bản tài liệu
Abstract Tóm tắt nội dung tài liệu
URLAddress Địa chỉ tài liệu trên Internet
Object: Authors
Trang 15AuthorID Mã số tác giả
AuthorName Tên của tác giả
Role Đóng góp của tác giả trong tài liệu
Object: Publishers
PublisherID Mã số nhà xuấ bản
PublishserName Tên nhà xuất bản
Place Địa điểm của nhà xuất bản
Ngoài ra hệ thống còn các chức năng khác như: giới thiệu các mẫu câu hỏi mà hệ thống hỗ trợ và hướng dẫn người dùng cách đặt câu hỏi, đề xuất các mẫu câu hỏi có khả năng phù hợp với ý người sử dụng muốn đặt ra trong trường hợp không tìm ra kết quả
Mô hình chức năng của hệ thống được trình bày trong Hình 2.1
Trang 16Hình 2.1 – Mô hình chức năng của hệ thống
Quy trình xử lý câu hỏi cần tiến hành qua nhiều bước khác nhau và sẽ được thảo luận chi tiết hơn ở phần còn lại của chương này
2.3 KIẾN TRÚC HỆ THỐNG
Kiến trúc hệ thống gồm có 4 thành phần:
- Thành phần: Tiền sử lý câu hỏi
Khi đưa ra câu hỏi, người sử dụng có thể gặp phải các sai sót trong nhập liệu và hệ thống phải đảm bảo r ng các sai sót này phải bị loại trừ trước khi chuyển qua thực hiện các bước kế tiếp
- Thành phần: Phân tích cú pháp câu hỏi b ng UBG
Thành phần này thực hiện việc phân tích cú pháp để xây dựng cây
cú pháp của câu hỏi
- Thành phần: Phát sinh câu truy vấn SQL
Trước khi phát sinh câu truy vấn SQL thì cần phải kiểm tra xem câu hỏi tương ứng với cấu trúc nào đã khai báo trước đó Nếu không tương ứng với bất kỳ cấu trúc nảo trong hệ thống thì phải đưa ra câu thông báo cho người dùng biết và đề xuất câu hỏi thay thế Nếu tìm
Đặt câu hỏi b ng tiếng việt
dẫn, đề xuất
Trang 17được cấu trúc phù hợp thì việc phát sinh câu lệnh SQL là khá đơn giản
- Thành phần: Xử lý kết quả truy vấn cơ sở dữ liệu
Câu lệnh SQL sinh ra ở bước trên sẽ được gọi thực thi Nếu quả là rỗng thì hệ thống phải tự đưa ra câu trả lời, nếu kết quả khác rỗng thì hệ thống sẽ tổi chức sắp xếp lại kết quả rồi gửi về cho người dùng
Mô hình kiến trúc hệ thống truy vấn thông tin từ thư viện điện tử được minh họa trong Hình 2.3
Hình 2.2 – Mô hình kiến trúc của hệ thống
Phát sinh câu truy vấn
Trang 182.3.1 Tiền x lý câu hỏi
- Tách các tham số có trong câu: trong câu truy vấn tự nhiên thường xuất hiện các tham số dùng để xác định câu trả lời (như: sách “Lý thuyết điều khiển mờ”, tác giả “Lê Văn Sự”, chủ đề “Tin học”, ) Việc tách các tham số này khỏi các thành phần khác của câu sẽ dựa trên dấu hiệu nhận biết (như đặt trong cặp dấu nháy kép)
- Loại bỏ các ký tự dư thừa có trong câu hỏi như: các khoảng trắng
dư, các dấu câu không hợp lý, các ký tự hệ thống không hỗ trợ
- Chuyển từ tiếng Việt về dạng mã xử lý được: nhiều ngôn ngữ lập trình và công cụ biểu diễn cú pháp văn phạm hiện nay không hỗ trợ đầy đủ cho tiếng Việt Do đó cần chuyển các từ tiếng Việt về dạng phù hợp có thể xử lý được trên các môi trường khác nhau (như chuyển về dạng mã Telex)
2.3.2 Phân t ch c pháp câu hỏi ng UBG
- Tách từ và nhân diện từ loại trong câu: trước hết cần thực hiện việc tách tiếng dựa vào khoảng trắng hoặc dấu câu giữa 2 tiếng Sau đó
sẽ thực hiện việc hình thành từ vào xác định từ loại
- Chuyển câu hỏi về cú pháp UBG: từ câu truy vấn đã được phân tích,
có thể chuyển sang cú pháp UBG thông qua một ký pháp cụ thể, ví
dụ như Prolog
- Phát sinh cây cú pháp: cây cú pháp được tạo ra tương ứng với câu truy vấn biểu diễn dưới dạng cú pháp văn phạm UBG thu được ở bước trên
Trang 19Hình 2.3 – Sơ đồ quá trình phân tích cú pháp câu hỏi b ng UBG
2.3.3 Phát sinh câu truy vấn SQL
- Giới hạn dạng câu hỏi có thể phù hợp: tuy hệ thống triển khai trong phạm vi hẹp nhưng cũng có rất nhiều dạng câu hỏi cần phải xử lý
Để nâng cao tốc độ xử lý hệ thống thì trước khi đối chiếu để tìm ra cấu trúc câu phù hợp thì cần giới hạn lại phạm vi tìm kiếm dựa trên các yếu tố như số tham số thu được và động từ của câu
1
Tách từ và nhận diện từ loại
Chuyển câu hỏi
về cú pháp UBG
Phát sinh cây cú pháp tương ứng
Câu truy vấn b ng
tiếng Việt
Tách các tham số, loại bỏ ký tự thừa
Chuyển câu hỏi tiếng Việt về dạng
Trang 20- Kiểm tra để tìm ra câu hỏi phù hợp: kiểm tra câu hỏi với các cấu trúc đã được giới hạn của hệ thống để tìm ra cấu trúc tương ứng
- Phát sinh câu lệnh SQL: khi đã có cấu trúc câu hỏi, ta thực hiện ánh
xạ để lấy câu lệnh SQL khai báo trước cho cấu trúc đó rồi gắn thêm các điều kiện truy vấn nếu có
- Gọi thực thi câu lệnh vừa phát sinh: bước này chỉ đơn thuần về mặt
kỹ thuật, phụ thuộc vào hệ quản trị cơ sở dữ liệu và ngôn ngữ lập trình mà hệ thống sử dụng
2.3.4 X lý k t quả truy vấn cơ sở dữ li u
- Tiếp nhận và kiểm tra kết quả: tùy thuộc vào câu truy vấn mà cấu trúc dữ liệu trả về có thể khác nhau, do đó việc xử lý kết quả cũng sẽ phải khác nhau Cần lưu ý tới trường hợp kết quả trả về là rỗng
- Đưa ra câu trả lời tương ứng với kết quả: các câu trả lời cũng có sự khác biệt tùy thuộc vào dạng câu hỏi mà người dùng đặt ra cho hệ thống
Trang 21Hình 2.4 – Sơ đồ xác định và thực thi câu truy vấn
2.4 CÁC QUI TẮC CÚ PHÁP
Trong đề tài này, chúng tôi sử dụng một tập từ vựng (tương đối lớn) và một tập các qui tắc cú pháp được định nghĩa trước Tập từ vựng này đã được gán nhãn từ loại và tiểu từ loại trước Tập các qui tắc cú pháp cũng được xây dựng trước với khả năng có thể bao quát một số lượng khá lớn các dạng câu hỏi thường gặp trong lĩnh vực ứng dụng
Bộ phân tích từ vựng được chúng tôi xây dựng dựa trên các ý tưởng như sau:
- Xây dựng tập từ vựng: chứa tất cả các từ có thể dùng trong phạm vi tìm kiếm thông tin trên thư viện Các từ này được phân loại thành
Câu hỏi biểu diễn
ở dạng UBG
Xác định mẫu câu hỏi phù hợp
Phát sinh và thực thi câu lệnh SQL
Tiếp nhận và xử
lý kết quả
Phát sinh câu trả lời tương ứng
Trang 22các từ loại và tiểu từ loại Khi phân tích câu hỏi tự nhiên, xét các từ trong câu hỏi tự nhiên có trùng khớp với các từ vựng đã được định nghĩa trong hệ thống hay không? Nếu không, hệ thống thông báo từ vựng chưa được xác định và hệ thống không thể xử lý
- Nếu tất cả các từ vựng đều n m trong tập từ vựng của hệ thống, hệ thống sẽ tiến hành xem xét cấu trúc cú pháp của câu hỏi tự nhiên theo các qui tắc cú pháp đã được định nghĩa trước Do số lượng các câu hỏi tiếng Việt trong phạm vi thư viện là hữu hạn và không quá lớn, không có mơ hồ, nên các câu hỏi tự nhiên khi đã đúng cú pháp thì có thể xử lý được
Các qui tắc cú pháp được định nghĩa b ng văn phạm UBG (Unification-Based Grammar)
2.5 PHÁT SINH TRUY VẤN SQL TỪ CẤU TRÚC CÚ PHÁP
Từ cấu trúc cú pháp của câu hỏi tiếng Việt đã được xác định, chúng ta cần xác định các thông tin cần thiết để xây dựng câu truy vấn SQL Trong cấu trúc cú pháp của câu hỏi đã có đầy đủ các thông tin cần tìm kiếm và những thông tin được cung cấp Những thông tin trên đã được gán nhãn trong quá trình xây dựng cây cú pháp Chẳng hạn thông tin cung cấp gán các dấu hiệu như (<, >, =), thông tin cần tìm kiếm được gán dấu ? ở ngay sau đối tượng
Phương pháp phát sinh tự động các câu truy vấn SQL được thực hiện theo hướng sau:
- Xác định các thông tin cần tìm kiếm và tiến hành gán chúng vào mệnh đề SELECT
- Xác định các thông tin dùng làm điều kiện và tiến hành gán vào mệnh đề WHERE
Trang 23- Xác định xem các thông tin ở hai mệnh đề trên thuộc về bảng dữ liệu nào và gán vào mệnh đề FROM Nếu thông tin đến từ 2 bảng dữ liệu trở lên thì cần xây dựng điều kiện kết giữa các bảng
Quá trình phát sinh câu truy vấn SQL từ cấu trúc cú pháp của câu hỏi tiếng Việt được thể hiện trong Hình 2.5
Hình 2.5 – Sơ đồ chuyển câu hỏi về câu truy vấn SQL
1
2
Xác định các thông tin
Thực thi câu truy vấn SQL
Phát sinh câu truy vấn SQL
3
4
5
Dữ liệu thư viện
Trang 24CHƯƠNG 3 PHÂN TÍCH CÚ PHÁP CÂU HỎI TIẾNG VIỆT BẰNG
UNIFICATION-BASED GRAMMAR
3.1 LÝ THUYẾT UNIFICATION-BASED GRAMMAR
3.1.1 Giới thi u Unification-Based Grammar
Unification-Based Grammar (UBG) là một loại văn phạm hình thức, sử dụng các luật tương tự trong văn phạm phi ngữ cảnh (CFG) ([13], [14], [15]) UBG là một hệ thống gồm bốn thành phần ký hiệu là G (V, T, P, S), trong đó:
- V là tập hữu hạn các biến (hay ký tự chưa kết thúc)
- T là tập hữu hạn các ký tự kết thúc, V T =
- P là tập hữu hạn các luật sinh mà mỗi luật sinh có dạng A → α, với
A là biến và α là chuỗi các ký hiệu (V T)*
- S là một biến đặc biệt gọi là ký hiệu bắt đầu văn phạm
Điểm khác biệt lớn giữa UBG và CFG là các ký tự chưa kết thúc của UBG có thể đính kèm một cấu trúc đặc tính nh m mô tả thêm thông tin cho các ký tự này Sự khác biệt này giúp cho văn phạm biểu diễn b ng UBG có số
ký tự chưa kết thúc ít hơn nhưng lại giảm tính nhập nh ng so với văn phạm biểu diễn b ng CFG
Ví dụ 3.11
: Xây dựng một văn phạm nhỏ tạo ra 2 câu “The dog barks”
và “The dogs bark”
Văn phạm UBG được xây dựng:
1
Dẫn theo [15]
Trang 25S NP VP: number of NP = number of VP
NP Det N
VP IV
Det the
N dog: number of N = singular
N dogs: number of N = plural
IV barks: number of IV = singular
IV bark: number of IV = plural
Văn phạm CFG có cùng số luật sinh:
Tuy nhiên, nếu sử dụng văn phạm CFG mô tả ở trên thì sẽ có sự nhập
nh ng Cụ thể là ngoài hai câu trong ví dụ 3.1 thì văn phạm CFG nói trên cũng sẽ chấp nhận các câu như: “The dogs barks” và “The dog bark” Rõ ràng
2 câu sau là không phù hợp trong tiếng Anh Do đó, cần phải định nghĩa lại văn phạm CFG như sau:
S NPsg VPsg
S NPpl VPpl
NPsg Det Nsg
NPpl Det Npl
Trang 26Rõ ràng là đối với những câu càng nhiều thành phần thì khả năng nhập
nh ng càng cao, vì vậy muốn loại bỏ hoàn toàn sự nhập nh ng trong CFG là rất khó khăn và sẽ tạo ra tập văn phạm rất lớn
3.1.2 Cấu tr c đặc t nh (Feature Structures)
Các cấu trúc đặc tính thường được biểu diễn dưới dạng ma trận giá trị thuộc tính
Ví dụ 3.22
: Ma trận giá trị thuộc tính thể hiện một đối tượng số ít và ngôi thứ 3 được trình bày trong Hình 3.1
Hình 3.1 – Cấu trúc đặc tính có giá trị là nguyên tử (nguồn: [15])
Trong ví dụ 3.2, tất cả các giá trị đặc tính là nguyên tử, nhưng chúng cũng có thể là một cấu trúc đặc tính khác Điều này cho phép có thể nhóm các đặc tính của một loại phổ biến với nhau
Ví dụ 3.33: Giá trị của một đặc tính có thể là một cấu trúc như trong Hình 3.2
2
Dẫn theo [15]
Trang 27Hình 3.2 – Cấu trúc đặc tính có giá trị là một cấu trúc (nguồn: [15])
Một cách phổ biến dùng biểu diễn các cấu trúc đặc tính là sử dụng đồ thị có hướng Trong trường hợp này, các giá trị (bất kể nguyên tử hay không) được đại diện bởi các nút trong đồ thị, với các đặc tính làm nhãn cạnh
Ví dụ 3.44: Biểu diễn cấu trúc đặc tính b ng đồ thị như trong Hình 3.3
Hình 3.3 – Biểu diễn cấu trúc đặc tính b ng đồ thị (nguồn: [15])
Đồ thị trong Hình 3.3 có cấu trúc cây, nghĩa là không có nút nào có nhiều hơn một cạnh đến Điều này không đúng trong mọi trường hợp
Ví dụ 3.55: Đồ thị biểu diễn cấu trúc đặc tính có reentrancy như trong Hình 3.4
Hình 3.4 – Đồ thị biểu diễn cấu trúc đặc tính có reentrancy (nguồn: [15])
Trong Hình 3.4, cả hai đường (HEAD, ARG) và (HEAD, SUBJ, ARG) dẫn đến cùng một nút, nghĩa là chúng có cùng một giá trị và chia sẻ giá trị đó
Trang 28Tính chất mà một số đặc tính có thể chia sẻ cùng một giá trị của cấu trúc đặc tính được gọi là reentrancy Đây là một trong những lý do tại sao cấu trúc đặc tính rất hữu ích cho ngôn ngữ học tính toán
Trong ma trận giá trị thuộc tính, reentrancy thường được thể hiện b ng cách đánh cùng chỉ số các giá trị được chia sẻ Đồ thị trong Hình 3.4 được biểu diễn dưới dạng ma trận như trong Hình 3.5 Các ô đánh số 1 cho thấy hai chuỗi đặc tính cùng chia sẻ một giá trị
Hình 3.5 – Cấu trúc đặc tính có reentrancy (nguồn: [15])
3.1.3 Các phép toán trên cấu tr c đặc t nh
A) Phép So sánh (Subsumption)
Với hai tập thuộc tính khác nhau, điều cần phải làm là so sánh các thông tin mà chúng có Một khái niệm để so sánh hai cấu trúc đặc tính là phép gộp (subsumption)
Một cấu trúc đặc tính F1 là gộp () của một cấu trúc đặc tính khác F2, khi và chỉ khi tất cả các thông tin có trong F1 cũng có trong F2
Hai cấu trúc đặc tính sau đây là gộp của nhau vì cả hai có cùng một số thông tin, thứ tự các thuộc tính được liệt kê trong ma trận là không quan trọng
Trang 29Hình 3.6 – Hai cấu trúc đặc tính gộp nhau (nguồn: [15])
Hai cấu trúc kế tiếp, cấu trúc thứ nhất là gộp cấu trúc thứ hai, nhưng điều ngược lại không đúng Mỗi mẩu thông tin có trong cấu trúc đặc tính thứ nhất cũng có trong cấu trúc đặc tính thứ hai, nhưng cấu trúc đặc tính thứ hai
có thêm thông tin
Hình 3.7 – Cấu trúc đặc tính 1 gộp cấu trúc đặc tính 2 (nguồn: [15])
Với hai cấu trúc còn lại, cấu trúc thứ nhất không gộp cấu trúc thứ hai và ngược lại vì mỗi cấu trúc đều chứa giá trị thuộc tính riêng
Hình 3.8 – Hai cấu trúc đặc tính không có phép gộp (nguồn: [15])
Mối quan hệ gộp giữa các cấu trúc đặc tính tương tự như mối quan hệ tập con giữa các tập hợp: cấu trúc đặc tính F1 là gộp của cấu trúc đặc tính F2khi và chỉ khi tất cả các thông tin của F1 cũng có trong F2
Trang 30B) Phép hợp nhất (Unification)
Hợp nhất là một phép toán (từng phần) trên cấu trúc đặc tính Về trực quan, đó là phép toán kết hợp hai cấu trúc đặc tính và như vậy cấu trúc đặc tính mới có tất cả các thông tin của hai cấu trúc ban đầu, không chứa thông tin khác Ví dụ ta có phép hợp nhất 2 cấu trúc đặc tính F1 F2:
Hình 3.9 – Hợp nhất 2 cấu trúc đặc tính (nguồn: [15])
Phép hợp nhất là một phép toán từng phần vì nó có thể không trả về kết quả khi giá trị cùng một thuộc tính mâu thuẫn như ví dụ sau:
Hình 3.10 – Hai cấu trúc đặc tính không hợp nhất (nguồn: [15])
Hợp nhất giữa hai cấu trúc đặc tính F và G (nếu có) là cấu trúc đặc tính thỏa ba tính chất sau:
- F F G (F G là phủ của F)
- G F G (F G là phủ của G)
- Nếu H là một cấu trúc đặc tính thỏa mãn F H và G H thì F G
H (F G là cấu trúc đặc tính nhỏ nhất thỏa mãn hai tính chất đầu) Nếu không có cấu trúc đặc tính nhỏ nhất là bị gộp của cả F và G thì chúng ta nói r ng phép hợp nhất giữa F và G là không xác định
Trang 31Phép hợp nhất () rất gần với phép hợp trong lý thuyết tập hợp Tuy nhiên có một sự khác biệt: phép hợp giữa các tập là một phép toán trong khi
đó phép hợp nhất chỉ là một phép toán từng phần của cấu trúc đặc tính
C) Phép tổng quát (generalization)
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
Trang 323.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ố:
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:
Trang 33Hì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:
Trang 34subject(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
Trang 35book_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
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 |
Trang 36time(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 |
Trang 37interrogative > 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
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]?
[Hãy cho biết] [quyển] sách "A" [là] [do] ai [đã] viết [vậy]?
Trang 38Q.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
[Hãy cho biết] [quyển] sách "A" [có] tác giả tên [là] gì [vậy]?
Trang 39Q.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,
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ả
Các câu hỏi dùng để xác định tác giả T có viết sách A hay không
Trang 40Q.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),
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]?