MỞ ĐẦU 1.1 Lý do chọn đề tài Để hỗ trợ cho quá trình giảng dạy môn Ngôn Ngữ Lập Trình, nhà trường có xây dựng diễn đàn để trả lời các thắc mắc về quá trình học tập môn này. Các câu hỏi được sinh viên đăng lên rất nhiều, trong đó có rất nhiều câu hỏi trùng nhau hoặc gần giống nhau. Thầy cô phải bỏ rất nhiều thời gian để trả lời đồng thời sinh viên phải theo dõi kết quả trả lời. Yêu cầu đặt ra là xây dựng một hệ thống trả lời tự động.
Chương trình sẽ tự động dò tìm các câu hỏi mới có bị trùng lặp với câu hỏi trước đó và trả về cùng câu trả lời nếu có. Mô hình này nếu thành công có thể được mở rộng, ứng dụng cho tất cả môn học khác hoặc các hệ thống có cùng ngữ cảnh.2 Mục đích nghiên cứu Tìm hiểu các kiến thức nền tảng, đặc trưng của Ngôn Ngữ Tự Nhiên (NNTN) và những kỹ thuật xử lý liên quan, sau đó tìm hiểu sâu vào phần trả lời tự động. Chúng ta phân tích bài toán của luận văn và dựa trên kiến thức đã tìm hiểu để đưa ra giải pháp. Cuối cùng là chúng ta sẽ thực hiện, so sánh đánh giá các giải pháp để đề xuất phương án khả thi 1.3 Đối tượng và phạm vi nghiên cứu Có hai lĩnh vực xử lý ngôn ngữ tự nhiên (XLNNTN) là: âm thanh và văn bản.
Trong luận văn này chúng ta chỉ đề cập đến xử lý văn bản. Dó đó trong suốt luận văn, ta ngầm hiểu NNTN được biểu diễn dưới dạng văn bản. Trong phạm vi luận văn, chúng ta chỉ xử lý các câu hỏi đơn giản, và tập trung vào việc tìm giải pháp.4 Phương pháp nghiên cứu Tập trung tìm hiểu các nghiên cứu xung quanh bài toán Hỏi Đáp (Q&A), tìm hiểu những kiến thức nền tảng về xử lý ngôn ngữ tự nhiên (văn bản) nói chung, mô hình học máy Neural Network trong xử lý ngôn ngữ tự nhiên, Chọn lựa hướng tiếp cận giải quyết, sau đó hiện thực và đánh giá mô hình, áp dụng trên bài toán cụ thể của luận văn là xây dựng hệ thống “Hỗ Trợ Môn Học Ngôn Ngữ Lập Trình”.5 Kết quả đạt được • Xây dựng được bộ phân tích ngữ nghĩa của câu hỏi. • Xây dựng được hệ thống trả lời tự động dựa trên dữ liệu thu thập được trước đó.
• Đánh giá hệ thống.6 Cấu trúc của luận văn Phần còn lại của luân văn này được tổ chức theo cấu trúc sau: Chương 2: Giới thiệu về NNTN, đặc thù và tính chất của NNTN, đồng thời giới thiệu một số kiến thức và kỹ thuật xử lý NNTN. Chương 3 sẽ đề cập đến các phương pháp nghiên cứu và các kiến thức liên quan đến XLNNTN nói chung và tập trung và phân tích ngữ nghĩa, bên cạnh đó sẽ tham khảo các hệ thống/phương pháp liên quan đến bài toán trong luận văn. Chương 4 sẽ phân tích bài toán của luận văn, đưa ra các giải pháp, các ưu nhược điểm của từng giải pháp. Chương 5 sẽ trình bày cách hiện thực các giải pháp đã nêu với những mô hình Neuron Net- work khác nhau để kiểm thử kết quả thực tế.
Chương 6: Tổng kết và so sánh các phương pháp, chọn phương án khả thi. Rút kết những việc đã đạt được và hướng phát triển tiếp theo. Cuối cùng là danh mục tài liệu tham khảo. 2 Chương 2 KIẾN THỨC NỀN TẢNG Để thực hiện đề tài, yêu cầu phải có kiến thức về xử lý ngôn ngữ tự nhiên cơ bản và ứng dụng mạng Neural Network trong việc xử lý ngôn ngữ tự nhiên.
Trong luận văn này, chúng ta đi vào một nhánh trong xử lý ngôn ngữ tự nhiên là “Tìm các câu hỏi có cùng ngữ nghĩa” để trả lời tự động.1 Tìm hiểu về xử lý ngôn ngữ tự nhiên NNTN được thể hiện qua các câu, các câu này gắn kết với nhau tạo thành những chủ đề mà người nói muốn diễn tả. Các câu được tạo bởi các từ (từ vựng) hoặc cụm từ, được sắp xếp theo một trình tự nhất định (gọi là ngữ pháp) sẽ xác định được ngữ nghĩa của câu đó. Bản thân từng từ cũng có ngữ nghĩa, những phụ thuộc vào vị trí trong câu hoặc ngữ cảnh mà ý nghĩa của từ sẽ khác nhau.1 Một số đặc điểm của ngôn ngữ tự nhiên • Từ kép: ngoài các từ đơn ta còn có nhiều từ hợp lại để diễn tả một nghĩa, ví dụ: find out, break out, burn down. • Từ đồng nghĩa: khác với xử lý ảnh, các từ hoàn toàn khác nhau nhưng lại có nghĩa giống nhau, ví dụ: good, awesome.
• Các từ mới phát sinh liên tục: tiếng lóng, các từ được phát sinh trong đời sống hàng ngày, ví dụ: rock (good). • Nghĩa của các từ còn phụ thuộc vào các từ xung quanh (ngữ cảnh), ví dụ: "Tom pushed Marry, then she (went/fell )". Từ “she” là Tom hay Marry phụ thuộc vào từ sau là “went” hay “fell”. • Các câu khác nhau (về số từ, và thứ tự các từ) nhưng có cùng ngữ nghĩa, ví dụ: “What are the best ways to lose weight?”, “How can a person reduce weight?” và “What are effective weight loss plans?” 3 • Các câu hầu như giống nhau (về số từ, và thứ tự các từ) nhưng có ngữ nghĩa khác nhau, ví dụ: "What is the step by step guide to invest in share market in India?" và "What is the step by step guide to invest in share market?" • Lỗi văn phạm, ví dụ: He GO (went) this morning.2 Xử lý ngôn ngữ tự nhiên Theo WikiPedia 1 định nghĩa như sau: Xử lý ngôn ngữ tự nhiên (Natural Language Process- ing - NLP) là một nhánh của trí tuệ nhân tạo tập trung vào các ứng dụng trên ngôn ngữ của con người.
Trong trí tuệ nhân tạo thì xử lý ngôn ngữ tự nhiên là một trong những phần khó nhất vì nó liên quan đến việc phải hiểu ý nghĩa ngôn ngữ - công cụ hoàn hảo nhất của tư duy và giao tiếp. Xử lý ngôn ngữ tự nhiên bao gồm các phần sau: phân tích hình thái, phân tích cú pháp, phân tích ngữ nghĩa, tích hợp văn bản, phân tích thực nghĩa. Các bài toán được ứng dụng: nhận dạng chữ viết, chuyển tiếng nói thành văn bản và ngược lại, tự động dịch, tìm kiếm thông tin (hỏi đáp), tóm tắt văn bản, khai phá dữ liệu và phát triển tri thức. Có rất nhiều ứng dụng trong đời sống như: các trợ lý ảo trong các hệ điều hành, dịch văn bản sang ngôn ngữ khác (Google Translate), phân tích cảm xúc trên các trang mạng xã hội.
Trong luận văn này, chúng tôi ứng dụng xử lý ngôn ngữ tự nhiên theo nhánh “Hỏi đáp dựa trên dữ liệu có sẵn” bằng cách so trùng các câu hỏi đã được hỏi trước đó. Do đặc tính NNTN khá phức tạp (đã trình bày ở phần trên), chúng ta không thể đơn giản so các từ và cụm từ để xác định hai câu có trùng nhau không, mà chúng ta phải có phương pháp so sánh ngữ nghĩa. Học máy là một trong những phương pháp hiệu quả tại thời điểm này.2 Tìm hiểu mô hình học máy 2.1 Học máy là gì? Học máy (Machine learning) là một lĩnh vực của trí tuệ nhân tạo liên quan đến việc phát triển các kĩ thuật cho phép các máy tính có thể "học". Cụ thể hơn, học máy là một phương pháp để tạo ra các chương trình máy tính bằng việc phân tích các tập dữ liệu.
Học máy có liên quan lớn đến thống kê, vì cả hai lĩnh vực đều nghiên cứu việc phân tích dữ liệu, nhưng khác với thống kê, học máy tập trung vào sự phức tạp của các giải thuật trong việc thực thi tính toán. 1 Xem htt ps : //vi.org/wiki/X%E1%BB%AD_l%C3%BD_ng%C3%B4n_ng%E1%BB%AF_t%E1 %BB%B1_nhi%C3%AAn 4 Học máy có tính ứng dụng rất cao bao gồm máy truy tìm dữ liệu, chẩn đoán y khoa, phát hiện thẻ tín dụng giả, phân tích thị trường chứng khoán, phân loại các chuỗi DNA, nhận dạng tiếng nói và chữ viết, dịch tự động, chơi trò chơi và rất nhiều ứng dụng khác.2 Các phương pháp học Có hai phương pháp học cơ bản đó là học có giám sát (supervied learning) và học không giám sát (unsupervied learning). Học có giám sát Trong học có giám sát, người ta cho trước một tập các dữ liệu đầu vào và các kết quả đầu ra tương ứng. Chương trình học phải xây dựng một hàm ánh xạ về mối quan hệ giữa dữ liệu đầu vào và dữ liệu đầu ra.
Có 2 loại bài toán được quan tâm là: "hồi quy" (regression) và "phân loại" (classification). Đối với bài toán hồi quy, ta mong muốn dự đoán kết quả đầu ra ở dạng liên tục, có nghĩa là ta xây dựng hàm đầu ra liên tục tương ứng với biến đầu vào. Đối với bài toán phân loại, kết quả đầu ra ở dạng rời rạc. Học không giám sát Khác với học có giám sát, học không giám sát ít hoặc không quan tâm đến kết quả đầu ra như thế nào.
Ta chỉ quan tâm đến việc đưa ra cấu trúc dữ liệu bằng cách "phân cụm" dữ liệu dựa trên các biến liên hệ trong tập dữ liệu đó. Với học không giám sát, ta không có phản hồi dựa trên kết quả dự đoán, tức là, không có người giám sát kết quả đúng sai mà chỉ là việc phân cụm dữ liệu.3 Neural Network nhân tạo Neural Network nhân tạo (Artificial Neural Network- ANN) là mô hình xử lý thông tin được mô phỏng dựa trên hoạt động của hệ thống thần kinh của sinh vật, bao gồm số lượng lớn các neural được gắn kết để xử lý thông tin. ANN giống như bộ não con người, được học bởi kinh nghiệm (thông qua huấn luyện), có khả năng lưu giữ những kinh nghiệm hiểu biết (tri thức) và sử dụng những tri thức đó trong việc dự đoán các dữ liệu chưa biết. Các ứng dụng của Neural Network được sử dụng trong rất nhiều lĩnh vực để giải quyết các bài toán có độ phức tạp và đòi hỏi có độ chính xác cao như điều khiển tự động, khai phá dữ liệu, nhận dạng,.
Nốt trong Neural Network Neural Network được tạo nên từ nhiều nốt (node), mỗi nốt tương ứng với một nơron (xem hình 2.1) và chúng được kết nối với nhau bằng các liên kết (link). Mỗi liên kết được gắn với một trọng số W ji , đây là thành phần rất quan trọng của một ANN, nó thể hiện độ quan trọng (độ 5 mạnh) của dữ liệu đầu vào đối với quá trình xử lý thông tin. Quá trình học (learning process) của ANN thực ra là quá trình điều chỉnh các trọng số của các dữ liệu đầu vào để có được kết quả mong muốn.