1.2 Phạm vi nghiên cứu Như mục tiêu của đề tài đã xác định ở trên, hệ thống chỉ giới hạn trong việc truy vấn bằng tiếng Việt các thông tin về vấn đề tuyển sinh như: các thông tin về trư
Trang 1TRƯỜNG ĐẠI HỌC LẠC HỒNG TRUNG TÂM THÔNG TIN TƯ LIỆU
- -
BÁO CÁO NGHIÊN CỨU KHOA HỌC GIÁO VIÊN
ĐỀ TÀI:
HỆ THỐNG TRẢ LỜI TỰ ĐỘNG TIẾNG VIỆT CHO
CÔNG TÁC TUYỂN SINH ĐẠI HỌC
NGUYỄN BÌNH TRỌNG
ĐỒNG NAI, THÁNG 5/2012
Trang 2TRƯỜNG ĐẠI HỌC LẠC HỒNG TRUNG TÂM THÔNG TIN TƯ LIỆU
- -
BÁO CÁO NGHIÊN CỨU KHOA HỌC GIÁO VIÊN
ĐỀ TÀI:
HỆ THỐNG TRẢ LỜI TỰ ĐỘNG TIẾNG VIỆT CHO
CÔNG TÁC TUYỂN SINH ĐẠI HỌC
Thực hiện: Nguyễn Đình Liên
Lương Quốc Sơn Nguyễn Bình Trọng
ĐỒNG NAI, THÁNG 5/2012
Trang 3MỤC LỤC DANH MỤC TỪ VIẾT TẮT
DANH MỤC HÌNH
CHƯƠNG 1: TỔNG QUAN 1
1.1 Mục tiêu của đề tài 1
1.1.1 Đặt vấn đề 1
1.1.2 Mục tiêu của đề tài 2
1.2 Phạm vi nghiên cứu 3
1.3 Phương pháp nghiên cứu 4
1.3.1 Các nội dung cần triển khai 4
1.3.2 Điểm mới của đề tài 5
1.3.3 Kết quả dự kiến đạt được của đề tài 5
1.4 Bố cục của đề tài 5
CHƯƠNG 2: KIẾN TRÚC HỆ THỐNG 7
2.1 Mô hình chức năng của hệ thống 7
2.2 Các thành phần cơ bản của hệ thống 8
2.2.1 Thành phần dữ liệu 8
2.2.2 Thành phần xử lý 10
2.2.3 Thành phần giao tiếp người dùng 10
2.3 Quy trình xử lý câu hỏi 11
2.3.1 Tiền xử lý câu hỏi 11
2.3.2 Phân tích câu hỏi 12
2.3.3 Tổng hợp dữ liệu trên cây truy vấn để tiến hành truy vấn CSDL 13
2.3.4 Nhận kết quả và hiển thị lên cho người dùng 13
CHƯƠNG 3: PHÂN TÍCH CÚ PHÁP CÂU HỎI DỰA TRÊN DCG 14
3.1 Cơ bản về CFG và DCG 14
3.1.1 Cơ bản về CFG 14
3.1.1.1 Định nghĩa 14
Trang 43.1.1.2 Cây cú pháp 15
3.1.1.3 Sự mơ hồ (nhập nhằng) trong văn phạm phi ngữ cảnh 16
3.1.2 Cơ bản về DCG 20
3.1.2.1 Định nghĩa 20
3.1.2.2 Quy tắc cú pháp: 20
3.1.2.3 Đối số trong DCG 21
3.1.2.4 Cây cú pháp trong DCG 21
3.2 Xây dựng cú pháp các câu hỏi tuyển sinh dựa trên DCG 21
3.2.1 Ý tưởng xây dựng cây cú pháp 21
3.2.2 Xây dựng các thành phần cơ bản cho việc xây dựng cú pháp 39
3.2.2.1 Từ điển từ đơn 40
3.2.2.2 Định nghĩa các từ tổ và từ ghép 41
3.2.2.3 Định nghĩa từ có thể “khuyết” 42
3.2.2.4 Định nghĩa nhóm từ đại diện cho các từ đồng nghĩa 43
3.2.2.5 Định nghĩa thành phần “tên” hoặc “giá trị” cho một đối tượng trong câu hỏi 45
3.2.2.6 Định nghĩa các thành phần WHERE 47
3.2.2.7 Định nghĩa các thành phần mặc định 47
3.2.2.8 Định nghĩa các thành phần SELECT 47
3.2.2.9 Định nghĩa các thành phần sử dụng chung của các câu hỏi 48
3.2.2.10 Các thành phần chung khác 49
3.2.2.11 Định nghĩa thành phần đại diện chung cho đối tượng nghi vấn 50
3.3 Cú pháp các câu hỏi sử dụng trong hệ thống 51
CHƯƠNG 4: XÂY DỰNG CHƯƠNG TRÌNH 52
4.1 Các thành phần trong hệ thống 52
4.2 Thành phần dữ liệu 52
4.3 Thành phần xử lý 54
4.3.1 Tiền xử lý câu hỏi 54
4.3.1.1 Loại bỏ các ký tự thừa 55
Trang 54.3.1.2 Chuyển mã tiếng việt 55
4.3.2 Phân tích cú pháp câu hỏi 57
4.3.4 Tổng hợp dữ liệu để tiến hành truy vấn CSDL 58
4.3.4.1 Tổng hợp các nút lá lại trên mỗi nút WHERE 59
4.3.4.2 Phát sinh câu truy vấn SQL 62
4.3.5 Xử lý kết quả trả lời 63
4.3.5.1 Câu lệnh SQL trả về giá trị 64
4.3.5.2 Lệnh SQL không trả về giá trị 64
4.3.5.3 Tìm được cấu trúc gần đúng 64
4.3.5.4 Không tìm được cấu trúc gần đúng 65
4.3.6 Ví dụ mô tả lại các bước của thành phần xử lý 65
4.4 Thành phần giao diện người dùng 67
4.4.1 Các công nghệ và nền tảng mà hệ thống sử dụng 67
4.4.2 Giao diện của hệ thống 68
4.5 Thử nghiệm và đánh giá 71
4.5.1 Một số câu hỏi thử nghiệm trong hệ thống 71
4.5.2 Đánh giá hệ thống 72
CHƯƠNG 5: KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 74
5.1 Kết quả đạt được của hệ thống 74
5.2 Những điểm hạn chế của hệ thống 75
5.3 Hướng phát triển 75
TÀI LIỆU THAM KHẢO
PHỤ LỤC 1: ĐỊNH NGHĨA CÚ PHÁP CHO CÁC THÀNH PHẦN
CỦA CÂU HỎI PHỤ LỤC 2: ĐỊNH NGHĨA CÚ PHÁP CHO CÁC DẠNG CÂU HỎI
TRONG HỆ THỐNG PHỤ LỤC 3: CÁC LƯU ĐỒ XỬ LÝ TRONG HỆ THỐNG
PHỤ LỤC 4: CÁC CÂU HỎI CHUẨN CỦA HỆ THỐNG
Trang 6DANH MỤC TỪ VIẾT TẮT CFG: Context Free Grammar
DCG: Definite Clause Grammar
CSDL: Cơ Sở Dữ Liệu
SQL: Structured Query Language
Trang 7DANH MỤC HÌNH
Hình 2.1: Mô hình chức năng của hệ thống 7
Hình 2.2: Quy trình xử lý câu hỏi 11
Hình 2.3: Công đoạn tiền xử lý 11
Hình 2.4: Công đoạn phân tích câu hỏi 12
Hình 2.5: Công đoạn tổng hợp dữ liệu và truy vấn dữ liệu 13
Hình 2.6: Công đoạn hiển thị kết quả 13
Hình 3.1 Cây cú pháp câu hỏi 16
Hình 3.2 Cây cú pháp câu hỏi – dạng cây thứ nhất 17
Hình 3.3 Cây cú pháp câu hỏi – dạng cây thứ hai 18
Hình 3.4 Cây cú pháp câu hỏi – dạng cây thứ ba 18
Hình 3.5 Cây cú pháp câu hỏi – dạng cây thứ tư 19
Hình 3.6 Cây cú pháp câu hỏi 24
Hình 3.7 Cây truy vấn của câu hỏi 30
Hình 3.8 Cây truy vấn của câu hỏi – đã được tối ưu 32
Hình 3.9 Cây truy vấn của câu hỏi 37
Hình 3.10 Cây truy vấn của câu hỏi 39
Hình 4.1 Các thành phần trong hệ thống 52
Hình 4.2 Mô hình cơ sở dữ liệu của hệ thống 53
Hình 4.3 Mô hình quy trình xử lý công việc của hệ thống 54
Hình 4.6 Cây truy vấn của câu hỏi 59
Hình 4.7 Kết quả trả về dưới dạng một danh sách 69
Hình 4.8 Trả lời cho dạng câu hỏi “có/không” 69
Hình 4.9 Khi câu hỏi nhập vào với tham số xác định bị sai 70
Hình 4.10 Thông báo khi không phân tích được câu hỏi 70
Hình 4.11 Gợi ý những câu hỏi liên quan đến từ được nhập 71
Trang 8CHƯƠNG 1: TỔNG QUAN 1.1 Mục tiêu của đề tài
1.1.1 Đặt vấn đề
Thông tin tuyển sinh của các trường đại học đều được phổ biến rộng rãi trên internet ở một số tờ báo mạng, diễn đàn và được đưa lên website chính của từng trường Tuy nhiên, các thông tin trên các diễn đàn và các báo mạng thường
là ý kiến của nhiều người nên có thể sẽ trái chiều nhau gây ra cảm giác ngờ vực, phân vân nơi người sử dụng Mặt khác, cách trình bày nội dung của mỗi website của từng trường lại khác nhau nên sẽ gây khó khăn cho người quan tâm muốn
có được câu trả lời mong muốn Người dùng sẽ tốn nhiều thời gian và công sức
để truy cập mỗi website của từng trường, duyệt qua nội dung của các trang web trong mỗi website đó, mong muốn tìm được câu trả lời cần thiết
Hiện nay chưa có công cụ tìm kiếm chuyên dụng nào cho các thông tin tuyển sinh của các trường Học sinh và phụ huynh của học sinh muốn tìm kiếm thông tin về trường học và ngành nghề tương lai thì có thể dùng các công cụ tìm kiếm web để tìm kiếm thông tin Nhưng để có được câu trả lời ưng ý cũng đòi hỏi nhiều thời gian và công sức để duyệt qua các câu gợi ý từ những hệ thống tìm kiếm trên
Đề tài “Hệ thống trả lời tự động tiếng Việt cho công tác tuyển sinh đại học”
đưa ra một giải pháp cho vấn đề tìm kiếm thông tin dựa trên ngôn ngữ tự nhiên bằng tiếng Việt nhằm giúp giải quyết cho những nhu cầu trên Người dùng chỉ cần đưa ra những câu hỏi bằng ngôn ngữ tự nhiên, hệ thống sẽ đáp trả lại câu trả lời tương ứng với câu hỏi cho người dùng Hệ thống ra đời cũng với mục đích làm giảm công việc cho bộ phận tuyển sinh của trường đại học và cũng giúp cho các em học sinh lớp 12 có thể tìm hiểu, lựa chọn được ngành nghề và trường phù hợp với mình trong tương lai
Trang 9Việc xây dựng các hệ thống tìm kiếm ngữ nghĩa bằng tiếng việt cũng là hướng nghiên cứu của các công trình [1], [2], [3], [4], [5], [6], [7], [8], [9].
1.1.2 Mục tiêu của đề tài
Đề tài tập trung xây dựng mô hình công cụ tìm kiếm bằng truy vấn tiếng Việt cho các vấn đề liên quan đến tuyển sinh, áp dụng cho trường Đại học Lạc Hồng và có thể mở rộng thêm cho nhiều trường khác Đề tài không tìm kiếm dựa trên từ khoá hay cụm từ, do đó sẽ không trả về nội dung chứa từ khoá hay cụm từ đó, mà sẽ nhận một câu hỏi bằng tiếng Việt do người dùng nhập vào phân tích, xử lý để trả về câu trả lời chính xác đối với câu hỏi đặt ra
Hệ thống cho phép người dùng đặt ra các câu hỏi bằng tiếng Việt để tìm kiếm thông tin về tuyển sinh Đó là các câu hỏi đơn liên quan đến những thông tin mô tả về ngành học, khoa, điểm chuẩn, khối thi, chuẩn đầu ra, chuyển ngành,
Câu hỏi đặt cho hệ thống phải thỏa những điều kiện sau:
- Là câu hỏi đơn liên quan đến vấn đề tuyển sinh như: thông tin về trường, ngành, khoa, điểm chuẩn, chuẩn đầu ra, học phí,
- Câu hỏi phải đúng chuẩn cú pháp của ngôn ngữ tự nhiên không chứa các
Trang 10cần tìm kiếm chính xác hơn việc dùng các từ khóa
- Câu trả lời hệ thống đưa ra đáp ứng đúng theo yêu cầu của câu hỏi đặt ra ban đầu
- Tập các câu hỏi liên quan đến lĩnh vực tuyển sinh được tác giả tham khảo tại [15], [16], [18], [19], Dưới đây là số ví dụ về các câu hỏi mà hệ thống sẽ
xử lý:
Trường đại học Lạc Hồng có bao nhiêu ngành?
Trường đại học Lạc Hồng có dạy Ngành công nghệ Thông tin không?
Điểm chuẩn của ngành công nghệ thông tin năm 2011 của trường đại học lạc hồng ở hệ đại học là bao nhiêu điểm?
Chuẩn đầu ra của ngành công nghệ thông tin là gì?
1.2 Phạm vi nghiên cứu
Như mục tiêu của đề tài đã xác định ở trên, hệ thống chỉ giới hạn trong việc truy vấn bằng tiếng Việt các thông tin về vấn đề tuyển sinh như: các thông tin về trường, ngành học, điểm chuẩn, khối thi, chuẩn đầu ra, 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ó)
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 hỏi sẽ hỏi một vấn đề về trường, khoa, ngành, điểm chuẩn, hoặc là một dạng câu hỏi khẳng định “có/không”
- 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 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ó nghĩa rõ ràng, không nhập nhằng, không
Trang 111.3 Phương pháp nghiên cứu
1.3.1 Các nội dung cần triển khai
Để xây dựng hệ thống trả lời tự động bằng ngôn ngữ tự nhiên tiếng Việt cho các câu hỏi liên quan đến vấn đề tuyển sinh như yêu cầu đặt ra, đề tài thực hiện những nội dung cụ thể sau:
- Khảo sát các câu hỏi đơn liên quan đến vấn đề tuyển sinh nhằm xác định chính xác các thông tin, từ đó sẽ tiến hành xây dựng một CSDL để lưu trữ các thông tin cung cấp cho câu trả lời của hệ thống
- Dựa vào thông tin khảo sát trên tiến hành xây dựng tập các câu hỏi tự nhiên bằng tiếng Việt phù hợp với thông tin lưu trữ trong CSDL
- Dựa trên tập câu hỏi đã xác định được, tiến hành định nghĩa một bộ văn phạm cú pháp hạn chế dựa trên DCG nhằm phân tích đầy đủ và chính xác tập câu hỏi đã đề ra
- Nghiên cứu các giải pháp tiền xử lý câu hỏi nhằm tách các thành phần của câu, đồng thời giải quyết các vấn đề phát sinh khi hệ thống xử lý tiếng Việt
- Phân tích kết quả trả về sau khi phân tích cú pháp, từ đó tiến hành tổng hợp dữ liệu và truy vấn CSDL để tìm ra câu trả lời
- Xử lý dữ liệu trả về sau khi truy vấn CSDL, phát sinh câu trả lời cùng các thông tin liên quan, phù hợp với câu hỏi người dùng đặt ra
Trang 121.3.2 Điểm mới của đề tài
Đề tài phát triển hệ thống tra cứu các dữ liệu liên quan quan đến tuyển sinh với một số đặc thù riêng:
- Xây dựng mới hoàn toàn bộ văn phạm phân tích cú pháp cho các câu hỏi trong phạm vi ứng dụng là các thông tin mô tả về vấn đề tuyển sinh của trường
Bộ văn phạm được định nghĩa dựa trên DCG thay vì UBG hay CFG như các hệ thống khác có chức năng trả lời tự động tương tự
- Sử dụng ngôn ngữ Prolog để biểu diễn bộ văn phạm được xây dựng bằng DCG ở trên
- Xây dựng bộ cú pháp phát sinh trực tiếp ra cây truy vấn thay vì phải phát sinh cây cú pháp rồi mới chuyển qua cây truy vấn
- Truy vấn trực tiếp CSDL vì vậy nên thông tin có thể tìm kiếm sẽ chính xác và đỡ tốn thời gian cho việc duyệt kết quả tìm kiếm
1.3.3 Kết quả dự kiến đạt đƣợc của đề tài
- Xây dựng một CSDL hoàn chỉnh chứa các thông tin cơ bản về trường, khoa, ngành, điểm chuẩn, của một số trường đại học
- Cài đặt CSDL và website trên server để hỗ trợ cho người dùng sử dụng web browser truy cập đến trang web của hệ thống và đặt câu hỏi
- Xây dựng một trang web hỗ trợ cho người dùng có thể truy vấn các thông tin liên quan đến vấn đề tuyển sinh bằng ngôn ngữ tự nhiên
- Cập nhật lại các câu hỏi chưa xử lý được để có thể chỉnh sửa hoặc xây dựng thêm cú pháp để đáp ứng nhu cầu sử dụng
1.4 Bố cục của đề tài
Đề tài được chia thành 5 chương, bố cục cụ thể như sau:
- Chương 1 Tổng quan: Giới thiệu tổng quan về đề tài như mục tiêu đạt
được, phạm vi nghiên cứu, và phương pháp nghiên cứu
Trang 13- Chương 2 Kiến trúc hệ thống: Trình bày tổng quát về hệ thống gồm
chức năng, kiến trúc và đề ra các giải pháp để giải quyết vấn đề đặt ra
- Chương 3 Phân tích cú pháp câu hỏi tuyển sinh bằng DCG: Đi sâu
phân tích phương pháp xây dựng bộ văn phạm hạn chế cho hệ thống bằng văn phạm DCG Đây là thành phần quan trọng nhất trong các hệ thống xử lý ngôn ngữ tự nhiên
- Chương 4 Xây dựng chương trình: Trình bày từng bước để xây dựng
hoàn thiện hệ thống Giới thiệu chương trình thử nghiệm của hệ thống Tiến hành đánh giá hệ thống
- Chương 5: Kết luận và hướng phát triển
- Phần tài liệu tham khảo và phụ lục
Trang 14CHƯƠNG 2: KIẾN TRÚC HỆ THỐNG 2.1 Mô hình chức năng của hệ thống
Với tập cú pháp được định nghĩa trước, hệ thống tiếp nhận câu hỏi tiếng việt từ người dùng thông qua giao diện chương trình(Web) Tiến hành phân tích
cú pháp để hiểu được nội dung người dùng muốn hỏi, sau đó sẽ truy vấn CSDL
để tìm ra kết quả và hiển thị lên cho người dùng
Hình 2.1: Mô hình chức năng của hệ thống
Hệ thống chỉ hỗ trợ xử lý những câu hỏi đơn và “thuần” với ngôn ngữ tự nhiên Những câu hỏi mà hệ thống hỗ trợ được là các câu hỏi đơn về thông tin của trường đại học, khoa, ngành học, thông tin về điểm chuẩn, về khối thi, về chuẩn đầu ra,
Ví dụ một số câu hỏi sử dụng hỏi đáp trong hệ thống:
- Trường đại học Lạc Hồng có những ngành nào?
- Ngành công nghệ thông tin thi khối nào?
- Chuẩn đầu ra ngành xxxx của trường yyyy là gì?
- Điểm chuẩn của ngành xxx của trường yyyy là bao nhiêu điểm?
Ngoài chức năng cơ bản là trả lời câu hỏi của người dùng Hệ thống còn hỗ trợ đưa ra những lời gợi ý gần giống với câu hỏi sai cú pháp và một số chức năng khác hỗ trợ tốt cho việc nhập lại câu hỏi cũ, xem những câu hỏi mà nhiều người khác quan tâm,
Đặt câu hỏi
Nhận câu trả lời Trả về kết quả
Trang 152.2 Các thành phần cơ bản của hệ thống
2.2.1 Thành phần dữ liệu
Sau khi tiến hành khảo sát tổng thể thành phần dữ liệu phục vụ trả lời cho các câu hỏi liên quan đến vấn đề tuyển sinh Thành phần dữ liệu chủ yếu cần lưu trữ để trả lời là: các thông tin về Trường, khoa, ngành, chuyển ngành, khối thi, điểm chuẩn, chuẩn đầu ra,
Các trường thông tin cụ thể của các đối tượng được liệt kê trong bảng:
Bảng: tblTruong
PhuongCham Phương châm đào tạo của trường
Bảng: tblKhoa
MoTaKhoa Giới thiệu khái quát về khoa
Bảng: tblNganh
MoTaNganh Giới thiệu khái quát về ngành
Bảng: tblKhoiThi
Bảng: tblHeDaoTao
Trang 16HeDaoTaoID Mã của hệ đào tạo
TenHeDaoTao Tên của hệ đào tạo
Bảng: tblMonHoc
LyThuyet Số tiết lý thuyết
Bảng: tblGiangVien
GiangVienID Mã của giảng viên
TenGiangVien Tên của giảng viên
SoNamDaoTao Số năm đào tạo của một ngành ứng với một hệ đào tạo
ChuanDauRa Các thông tin về chuẩn đầu ra của một ngành của một hệ
đào tạo DiemChuan Điểm chuẩn của một ngành của một hệ bậc đào tạo tại một
năm nào đó
ChiTieu Số lượng sinh viên đầu vào của một ngành của một hệ bậc đào tạo trong một năm
Bảng 2.1: Bảng mô tả các trường dữ liệu
Ngoài những thông tin cơ bản trên, trong CSDL còn có những Filed khác chứa các thông tin về cơ sở vật chất của trường, các mối quan hệ giữa các
Trang 17ngành, mối quan hệ giữa các ngành với hệ đào tạo, ngành với khối thi,
- Một công cụ hỗ trợ nhúng trình biên dịch của Prolog vào trong C# Để từ
đó có thể phân tích cú pháp lấy được dữ liệu cần thiết rồi truy vấn dữ liệu và hiển thị kết quả cho người dùng
- Trước khi đưa vào phân tích cú pháp, câu hỏi phải qua một công đoạn tiền
xử lý để đưa câu hỏi do người dùng nhập về gần đúng với cú pháp của ngôn ngữ
tự nhiên Tức là loại bỏ những ký tự đặc biệt, loại bỏ những khoảng trắng thừa, có trong câu hỏi
2.2.3 Thành phần giao tiếp người dùng
- Người dùng và hệ thống giao tiếp với nhau thông qua giao diện Web
- Hệ thống được xây dựng dựa trên Microsoft Studio 2010 với nền NET Frameworks 4.0
- Sử dụng thư viện JQuery để xử lý các thao tác trên web browser, làm giảm công việc cho server
- Sử dụng công nghệ AJAX để kết nối giữa web browser và server, giúp cho giao diện được mượt mà và trơn tru hơn
- Hệ thống hoạt động tốt trên các trình duyệt web thông dụng như: FireFox, Internet Exploer,
Trang 182.3 Quy trình xử lý câu hỏi
Hình 2.2: Quy trình xử lý câu hỏi
Quy trình xử lý câu hỏi bao gồm các công việc chính của thành phần xử lý trong hệ thống Quy trình này sẽ được mô tả chi tiết ở chương 4 Sau đây là những mô tả cơ bản về từng công đoạn
2.3.1 Tiền xử lý câu hỏi
Có nhiệm vụ loại bỏ những “rác” trong câu, đó là những khoảng trắng thừa, những ký tự đặc biệt không phải ký tự chữ cái hoặc số Đồng thời ở bước này cũng xử lý chuyển mã các ký tự unicode của các từ tiếng việc có dấu thành không dấu dưới dạng mã của kiểu gõ VNI Ví dụ, từ “tên”= “te6n”
Hình 2.3: Công đoạn tiền xử lý
Hiển thị kết quả
Tiền
xử lý
Phân tích câu hỏi
Kết quả truy vấn
Loại bỏ các
ký tự đặc biệt và khoảng trắng thừa
“chuẩn”
Chuyển ký
tự có dấu thành mã VNI
Trang 192.3.2 Phân tích câu hỏi
Ở công đoạn này công việc được đưa lại cho trình biên dịch của prolog xử
lý Với tập cú pháp được định nghĩa trước đó, các câu hỏi sẽ được phân tách ra thành các thành phần trong một danh sách(list) trước khi đưa vào Prolog Sau đó Prolog sẽ tiến hành so khớp các thành phần trong danh sách với tập cú pháp của câu hỏi đã được định nghĩa Kết quả trả về là một tập các cây truy vấn nếu so khớp thành công hoặc trả về FALSE nếu không thành công Các cây truy vấn này có thể trùng nhau
Hình 2.4: Công đoạn phân tích câu hỏi
Trong trường hợp ở công đoạn trên trả về FALSE mà không trả về cây truy vấn Hệ thống sẽ quay lại so khớp để đề xuất ra các câu hỏi có ý gần giống với câu hỏi do người dùng nhập vào
Tách câu hỏi ra thành danh sách
Cây truy vấn
False
Câu hỏi
“chuẩn”
So sánh danh sách
và tập cú pháp
Trình biên dịch của Prolog
Trang 202.3.3 Tổng hợp dữ liệu trên cây truy vấn để tiến hành truy vấn CSDL
Với các cây truy vấn nhận được từ công đoạn trên, tác giả tiến hành tổng hợp các nút lá lại để được dữ liệu hoàn chỉnh, sau đó phát sinh câu truy vấn SQL tự động dựa trên các nút WHERE và SELECT
Hình 2.5: Công đoạn tổng hợp dữ liệu và truy vấn dữ liệu
2.3.4 Nhận kết quả và hiển thị lên cho người dùng
- 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
Hình 2.6: Công đoạn hiển thị kết quả
Tổng hợp
dữ liệu trên các nút lá
Cây
truy vấn
Phát sinh câu truy vấn SQL
Truy vấn
dữ liệu
Hiển thị kết quả
Xử kết quả truy vấn
Truy vấn
dữ liệu
Kết quả truy vấn
Trang 21CHƯƠNG 3: PHÂN TÍCH CÚ PHÁP CÂU HỎI DỰA TRÊN
DCG 3.1 Cơ bản về CFG và DCG
3.1.1 Cơ bản về CFG
Nhưng kiến thức cơ bản về CFG được tác giả tham khảo ở [10], [14], [17]
3.1.1.1 Định nghĩa
Văn phạm phi ngữ cảnh (CFG) là một hệ thống gồm bốn thành phần, ký hiệu là văn phạm G (V, T, P, S), trong đó :
- V là tập hữu hạn các ký hiệu chưa kết thúc( non – terminal)
- T là tập hữu hạn các ký hiệu kết thúc (terminal), 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 ∈
V và α ∈ (V ∪ T)
- S là ký hiệu bắt đầu văn phạm
Ví dụ: phân tích cú pháp của câu sau: “Trường ĐH Lạc Hồng giảng dạy sinh viên tốt”
Ta có các luật sinh sau:
Trang 22V={chủ_ngữ, vị_ngữ, tên_riêng, danh_từ, động_từ, bổ_ngữ, tính_từ} là tập các ký hiệu chưa kết thúc tức là còn có thể phân tích được nữa
T={„Trường ĐH Lạc Hồng‟,‟Sinh viên‟,‟giảng dạy‟, „tốt‟} là tập các ký hiệu tử kết thúc
P là tập hợp các luật sinh bởi các phần tử của V với các phần tử của V ∪
T
S=‟câu_đơn‟ là ký hiệu bắt đầu văn phạm
Một định nghĩa khác: CFG là một tập các luật để xây dựng nên cấu trúc ngữ pháp của ngôn ngữ tự nhiên
Văn phạm CFG là một văn phạm rất mạnh dùng để mô tả ngôn ngữ tự nhiên của con người cũng như xây dựng nên bộ phận tích cú pháp cho các ngôn ngữ lập trình
3.1.1.2 Cây cú pháp
Kết quả sau khi so khớp câu hỏi với tập cú pháp được xây dựng dựa trên văn phạm CFG sẽ là một cây cú pháp Mà qua cây cú pháp này chúng ta sẽ biết được câu hỏi đó có nhập đúng cú pháp không và nội dung của nó
Cây cú pháp được định nghĩa như sau:
Cho văn phạm G (V, T, P, S) Cây dẫn xuất (hay cây phân tích cú pháp) của G được định nghĩa như sau :
Trang 23- Nếu nút n có nhãn A và có các nút con theo thứ tự từ trái qua là n1, n2, n3, nn có lần lượt các nhãn là A1, A2, A3, An thì sẽ tồn lại 1 luật sinh: A A1,A2,A3, An ∈ P
Ví dụ: Với ví dụ ở trên ta có cây cú pháp sau:
Hình 3.1 Cây cú pháp câu hỏi “Trường ĐH Lạc Hồng giảng dạy sinh viên
tốt”
Phân tích cú pháp của câu chính là việc đi xây dựng cây cú pháp cho câu
đó Tức là thông qua cây cú pháp ta có thể biết được thông tin mà câu hỏi đặt ra
3.1.1.3 Sự mơ hồ (nhập nhằng) trong văn phạm phi ngữ cảnh
Khi xây dựng cú pháp với CFG nếu không ràng buộc rõ ràng thì kết quả trả về sau khi so khớp có thể là nhiều cây cú pháp Trong đó có thể có cây cú pháp trùng nhau và cũng có thể không trùng nhau Mỗi cây cú pháp không trùng nhau sẽ mang một “nghĩa” khác nhau Đây chính là sự nhập nhằng về “nghĩa của câu” khi xây dựng cú pháp câu dựa trên văn phạm CFG
Ví dụ: ta sẽ xét lại ví dụ trên nhưng có thay đổi trong luật sinh
Phân tích cú pháp của câu sau: “Trường ĐH Lạc Hồng giảng dạy sinh viên tốt”
tính_từ danh_từ
„Trường ĐH
Lạc Hồng‟
Trang 24Nhận xét thấy là có sự khác biệt so với ví dụ trên ở luật sinh thứ hai
Với tập luật sinh này sẽ có bốn cây cú pháp sau:
Hình 3.2 Cây cú pháp câu hỏi “Trường ĐH Lạc Hồng giảng dạy sinh viên
tính_từ danh_từ
„Trường ĐH
Lạc Hồng‟
Trang 25Hình 3.3 Cây cú pháp câu hỏi “Trường ĐH Lạc Hồng giảng dạy sinh viên
tính_từ danh_từ
„Trường ĐH
Lạc Hồng‟
„Trường ĐH Lạc Hồng ‟
tính_từ danh_từ
„sinh viên‟
Trang 26Hình 3.5 Cây cú pháp câu hỏi “Trường ĐH Lạc Hồng giảng dạy sinh viên
tốt” – dạng cây thứ tư Khi xử lý, để có kết quả chính xác ta cần phải duyệt qua tất cả các cây cú pháp để tìm được cây “ưng ý” nhất Tuy nhiên, trong một số trường hợp, có thể người lập trình sẽ chọn cây “ngắn nhất” hoặc là cây trả về đầu tiên khi phân tích
tính_từ danh_từ
„sinh viên‟
„Trường ĐH Lạc Hồng ‟
„tốt
Trang 273.1.2 Cơ bản về DCG
3.1.2.1 Định nghĩa
DCG là một văn phạm mở rộng của văn phạm CFG làm cho cú pháp được
rõ ràng hơn Mặt khác khi thêm vào các đối số phụ trong quá trình phân tích cú pháp chúng ta có thể sinh ra được cây cú pháp như ý muốn DCG chủ yếu được xây dựng và phát triển chủ yếu trong Prolog, hỗ trợ trong việc xây dựng cú pháp cho ngôn ngữ tự nhiên [13]
3.1.2.2 Quy tắc cú pháp:
Vì DCG là văn phạm mở rộng của CFG nên cú pháp của DCG thì cơ bản giống với CFG Ngoài cách định nghĩa quy tắc cú pháp của DCG giống như CFG ở trên, ta có thể định nghĩa theo cách sau:
Head > Body
Trong đó:
- Head: Có thể là một biến hay một ký hiệu không kết thúc
- Body: Có thể là các biến hoặc các ký hiệu kết thúc hoặc các ký hiệu không kết thúc Các thành phần liên kết với nhau thông qua phép toán kết hợp AND(dấu phẩy) hoặc OR(dấu chấm phẩy)
- Ký hiệu: “ >”: Biểu thị luật sinh trong DCG
- Dấu “.”: Kết thúc một luật sinh
Ví dụ:
tu_HocSinh > [học,sinh]
tu_Ngoan > [ngoan]
cauhoi >tu_HocSinh,tu_Ngoan
Trang 283.1.2.3 Đối số trong DCG
Chúng ta có thể thêm các đối số vào các ký hiệu không kết thúc trong các quy tắc của DCG Việc thêm các đối số phụ giúp ta lần theo đường đi trong quá trình DCG tiến hành phân tích câu Từ đó ta sẽ thu được cấu trúc của cây cú pháp [11], [12], [13]
3.1.2.4 Cây cú pháp trong DCG
Cây cú pháp của DCG được sinh ra phụ thuộc vào đối số mà chúng ta muốn nhận về
Mỗi đối số trong một luật sinh X sẽ là một nút con của nút X
Thứ tự các nút con của nút gốc có thứ tự trái qua phải tương ứng với thứ tự các đối số truyền vào
Cách truyền đối số và xây dựng cây cú pháp trong DCG sẽ được trình bày chi tiết trong phần sau
3.2 Xây dựng cú pháp các câu hỏi tuyển sinh dựa trên DCG
3.2.1 Ý tưởng xây dựng cây cú pháp
Với phương pháp xây dựng cú pháp của câu dựa trên DCG, kết quả thu được sau khi so khớp giữa câu của người dùng nhập và cú pháp đã được định nghĩa trước là một cây cú pháp
Qua cây cú pháp ta có thể biết được thông tin mà người dùng muốn hỏi để
từ đó tìm được câu trả lời chính xác cho câu hỏi đặt ra
Xét ví dụ với câu hỏi sau: “Trường có ngành A không?”
Trang 29
Viết cú pháp cho câu hỏi trên:
câu_hỏi(cau_hoi(NV,QH,XD,TH)) >
đối_tượng_nghi_vấn(NV),quan_hệ(QH), đối_tượng_xác_định(XD),từ_hỏi(TH)
Trang 30Ta thu được một cây cú pháp dạng chuỗi sau:
cau_hoi(
nghi_van(
nv_truong(
tu_truong(trường) )
), quan_he(
qh_truong_nganh(
tu_co(có) )
), xac_dinh(
nganh(
tu_nganh(ngành), ten(a)
) ), tu_hoi(không) )
Trang 31Hình 3.6 Cây cú pháp câu hỏi “trường có ngành a không”
Qua cây cú pháp cho ta biết được câu do người dùng nhập vào hệ thống có khớp với cú pháp đã được định nghĩa trước đó hay không và cũng biết được nội dung mà người dùng muốn hỏi Cây cú pháp được trả về sau khi so khớp có cấu trúc phụ thuộc vào cách người lập trình xây dựng cú pháp của câu Nghĩa là cấu trúc của cây có thể thay đổi theo ý muốn tùy theo mục đích và nhu cầu của người lập trình
Việc xây dựng cấu trúc của cây cú pháp còn ảnh hưởng đến việc tìm ra kết quả trả lời cho câu hỏi do người dùng nhập vào hệ thống Với hệ thống trả lời tự động các câu hỏi liên quan đến vấn đề tuyển sinh, các thông tin, dữ liệu được lưu trong hệ quản trị cơ sở dữ liệu SQL server nên việc truy xuất dữ liệu chủ yếu dựa trên câu lệnh SQL Câu lệnh SQL có cấu trúc như sau:
SELECT [cho biết những dữ liệu cần lấy ra]
FROM [các bảng dữ liệu có quan hệ với nhau]
WHERE [điều kiện để trích lọc dữ liệu]
Trang 32Với cây cú pháp ở hình 3.6, việc phân tích để phát sinh câu truy vấn SQL được thực hiện tương đối phức tạp Đầu tiên ta cần xây dựng tập định nghĩa các
từ loại, dựa trên từ loại đó để phân định ra các thành phần thuộc mệnh đề SELECT và mệnh đề WHERE Dựa vào các thành phần SELECT và WHERE
đó mới xác định được mệnh đề FROM là những bảng dữ liệu nào cần kết với nhau để đưa ra được kết quả Muốn vậy, ta cần xây dựng một mô hình dữ liệu định nghĩa mối quan hệ giữa các bảng trong CSDL và các mối quan hệ đó dựa trên các khóa nào Việc phát sinh câu truy vấn SQL dựa trên cây cú pháp ở hình 3.6 là tương đối phức tạp Tác giả nhận thấy cần thay đổi cấu trúc của cây cú pháp sao cho việc phát sinh câu truy vấn SQL trở nên đơn giản hơn
Với nhận định ở trên, tác giả sẽ xây dựng cú pháp sao cho cây cú pháp thu được chỉ chứa các thành phần dữ liệu liên quan đến mệnh đề WHERE và SELECT mà thôi Từ các thành phần của mệnh đề SELECT và WHERE sẽ tiến hành xác định ra các bảng dữ liệu liên quan và từ đó hoàn thành được mệnh đề FROM và có được câu SQL hoàn chỉnh Sau đó sẽ truy vấn CSDL và trả về kết quả cho người dùng Khi đó cây cú pháp thu được sau quá trình phân tích được gọi với một tên khác là cây truy vấn
Xét ví dụ với câu hỏi:
Trường XYZ có bao nhiêu ngành?
Trường XYZ có những ngành nào?
Nếu ta thay thế từ “có” bằng các từ “giảng dạy”, “đào tạo”, và thay thế từ
“ngành” bằng “ngành nghề”, “ngành học”, ta sẽ thu được các câu có nghĩa tương đương với câu hỏi ở trên Nếu ta thêm từ “vậy” vào cuối câu cũng không ảnh hưởng đến ý nghĩa của câu
Các bước thực hiện xây dựng cú pháp cho câu hỏi trên:
Trang 33 Định nghĩa từ điển các từ đơn sử dụng: Là các từ đơn cơ bản sẽ xuất hiện trong câu hỏi do người dùng nhập vào
nhtừ_Ngành >từ_ngành;từ_NgànhNghề;từ_NgànhHọc
nhtừ_ĐàoTạo >từ_ĐàoTạo;từ_GiảngDạy;từ_dạy;từ_có
Trang 34 Định nghĩa những từ có thể “khuyết”: Trong câu sẽ có một số từ có thể
có hoặc không mà không làm thay đổi hay mất ý nghĩa của câu Đó chính là những từ có thể “khuyết” Việc định nghĩa loại từ này sẽ gây tâm lý thoải mái cho người dùng, người dùng có thể gõ theo ý mình một cách tự nhiên nhất mà không bị ràng buộc cứng nhắc của cú pháp câu
t_vậy >từ_vậy;[]
t_những >từ_những;[]
Định nghĩa thành phần “tên” hoặc “giá trị” của một đối tượng: Là dữ liệu do người dùng nhập kèm với câu hỏi Thông thường dữ liệu là tên của một trường, một ngành, một khoa, một khối hoặc là giá trị của một năm, Các từ thuộc thành phần dữ liệu này thì không cần định nghĩa trước trong từ đơn hoặc
từ tổ Dữ liệu này được cung cấp cho vế phải của các mệnh đề con trong mệnh
Định nghĩa các phần tử thuộc WHERE: Là thành phần sẽ được tạo thành một nút con trên cây cú pháp Phần này kết hợp với phần trên để tạo ra các mệnh
đề con của mệnh đề WHERE trong câu SQL Qua đó cho ta biết được người dùng muốn lọc dữ liệu theo điều kiện gì
trườngNào(where(T)) >trường(T)
trường(trường(T)) >từ_trường,nhập(T)
Trang 35 Định nghĩa các phần tử thuộc SELECT: Là thành phần được tạo thành một nút con trên cây cú pháp Phần này cho ta biết người dùng muốn lấy dữ liệu
cauhoi(ngànhcủaTrường(TR),S) >trườngNào(TR),
nhtừ_ĐàoTạo,t_những, ngànhSelect(S),từ_nào,t_vậy
Kết quả:Khi người dùng nhập các câu hỏi:
Trường đại học Lạc Hồng có bao nhiêu ngành [vậy]
Trường đại học lạc hồng dạy bao nhiêu ngành [vậy]
Trường đại học lạc hồng có [những] ngành nào [vậy]
Trường đại học lạc hồng dạy [những] ngành nào [vậy]
Kết quả sau khi so khớp các câu trên với cú pháp đã xây dựng đều cho ra một cây truy vấn dạng chuỗi sau:
Trang 36ngànhcủaTrường(
where(
trường(
tên(đại, tên(học, tên(lạc, tên(hồng) )
) ) ) ), select(
nganh(nganh) )
)
Chuyển thành cấu trúc của cây truy vấn dạng chuỗi ta sẽ thu được hình sau:
Trang 37Hình 3.7 Cây truy vấn của câu hỏi “Trường đại học Lạc Hồng có bao
nhiêu ngành”
Nhận xét: Nút lá cuối cùng bên phần WHERE có vẻ “dư thừa”, ta có thể định nghĩa lại phần định nghĩa dữ liệu cho phần WHERE để thu được cây truy vấn tốt hơn:
ten đại
ten học
Trang 38Ta sẽ thu được cây truy vấn dạng chuỗi ngắn hơn:
) ),
select(
nganh(nganh) )
)
Hình thu được từ cây cú pháp dạng chuỗi trên:
Trang 39Hình 3.8 Cây truy vấn của câu hỏi “Trường đại học Lạc Hồng có bao
nhiêu ngành” – đã được tối ưu
Từ cây cú pháp trên, ta thu được 2 thành phần của câu lệnh SQL đó là WHERE và SELECT:
SELECT ngành FROM
ten đại
ten học
lạc
Trang 40 Xét ví dụ khác:
Ngành ABC [của] trường XYZ có chỉ tiêu [là] bao nhiêu [người] (2) Ngành ABC [của] trường có chỉ tiêu [là] bao nhiêu [người] (3) Khoa XYZ [của] trường có chỉ tiêu [là] bao nhiêu [người] (4) Nhận xét:
(1) người dùng chỉ nhập tên ngành mà không nói rõ của trường nào Trong trường hợp này sẽ không trả về kết quả cho người dùng Nhưng để tiện ích cho người sử dụng, hệ thống sẽ thiết lập một trường mặc định để khi người dùng “quên” không nhập tên trường thì sẽ trả về kết quả ứng với trường mặc định đó
(2) người dùng nhập đầy đủ tên của ngành và của trường nào thì sẽ tiến hành tìm chỉ tiêu của ngành ở trường đó
(3) người dùng có nhập chữ “trường” nhưng lại không nhập vào tên của trường Trường hợp này xảy ra do trong ý thức của người dùng đang tưởng là hệ thống này đang phục vụ cho một trường cố định nên người dùng nghĩ không cần nhập đầy đủ tên của trường Để tiện ích thì hệ thống cũng sẽ gán tên trường mặc định cho trường hợp này
(4) Câu hỏi chỉ khác nhau về đối tượng nghi vấn và giống nhau hoàn toàn về cú pháp Đối tượng nghi vấn ở đây có thể là một khoa hay một ngành của một trường Do đó khi xây dựng cú pháp, thay vì sẽ phải xây dựng cú pháp cho khoa và ngành riêng ra, tác giả sẽ xây dựng một thành phần chung đại diện cho khoa và ngành Như vậy cú pháp của bộ văn phạm sẽ gọn nhẹ hơn
Các bước thực hiện xây dựng cú pháp cho mẫu câu này sẽ tương tự như trên nhưng sẽ có thêm một phần định nghĩa cho các thành phần mặc định và thành phần đại diện chung cho một số đối tượng nghi vấn Ở từng bước xây dựng các thành phần, tác giả sẽ sử dụng lại các định nghĩa ở trên và chỉ khai báo thêm các định nghĩa mới