Phân tích câu hỏi trong hệ thống hỏi đáp trong tiếng việt

Qua giai đoạn thực tập, tôi đã được củng cố rất nhiều các nội dung kiến thức được học tập tại trường, cũng như tiếp cận những kiến thức hoàn toàn mới liên quan đến vấn đề rút trích thông tin trong văn bản như lý thuyết về xử lý ngôn ngữ tự nhiên NLP, mã nguồn mở OpenNLP và ngôn ngữ lập trình Python. Ngoài ra tôi cũng học hỏi được các kỹ năng và phong cách lập trình chuyên nghiệp hơn, thông qua cách thức đặt tên, truyền biến, xây dựng cấu trúc chương trình mạch lạc Học hỏi và nâng cao kỹ năng giải quyết vấn đề thông qua việc đặt câu hỏi, cách thức tìm kiếm các vấn đề liên quan, cách suy nghĩ sáng tạo. Thông qua những kinh nghiệm có được khi thực tập và nghiên cứu, tôi tin tưởng mình đã học tập được nhiều kinh nghiệm bổ ích c ho công việc mai sau.

pdf26 trang | Chia sẻ: lylyngoc | Lượt xem: 3125 | Lượt tải: 2download
Bạn đang xem trước 20 trang tài liệu Phân tích câu hỏi trong hệ thống hỏi đáp trong tiếng việt, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
ĐẠI HỌC QUỐC GIA HÀ NỘI TRƯỜNG ĐẠI HỌC CÔNG NGHỆ  Nguyễn Duy Long BÁO CÁO THỰC TẬP TỐT NGHIỆP PHÂN TÍCH CÂU HỎI TRONG HỆ THỐNG HỎI ĐÁP TIẾNG VIỆT Ngành: Công nghệ thông tin Cán bộ hướng dẫn: TS. Trương Anh Hoàng Nơi thực tập: Công ty Nhất Thái Dương iSolar Hà Nội, tháng 9/2012 Lời cảm ơn Lời đầu tiên em xin chân thành cảm ơn đến quý Thầy, Cô trường ĐH Công Nghệ - ĐH Quốc Gia Hà Nội, những người đã trực tiếp giảng dạy, truyền đạt những kiễn thức bổ ích cho em, đó chính là những nền tảng cơ bản, là những hành trang vô cùng quý giá, là buốc đầu tiên cho em bước vào sự nghiệp sau này trong tương lai. Đặc biệt là Tiến sĩ Trương Anh Hoàng người đã tận tình, quan tâm giúp đỡ em trong suốt quá trình em tham gia thực tập. Thầy đã giải đáp những thắc mắc khó khăn mà em đã gặp phải. Nhờ đó, em mới có thể hoàn thành được báo cáo thực tập chuyên ngành này. Bên cạnh đó, em cũng xin được gởi lời cảm ơn chân thành tới Giám đốc, các anh chị trong Công ty Nhất Thái Dương iSolar đã tạo cơ hội giúp em có thể tìm hiểu rõ về môi trường làm việc thực thế của một doanh nghiệp mà ngồi trên ghế nhà trường em chưa được biết. Em xin chân thành cảm ơn anh Vũ Tất Thắng giám đốc của công ty, mặc dù rất bận rộn với công việc nhưng vẫn dành thời gian chỉ bảo, hướng dẫn, tạo mọi điều kiện thuận lợi nhất để em có thể tìm hiểu và thu thập thông tin phục vụ cho báo cáo này. Trong quá trình thực tập và làm báo cáo, vì kinh nghiệm thực tế chưa có, chỉ dựa vào lý thuyết cùng với thời gian hạn hẹp nên báo cáo này không thể tránh những sai sót. Kính mong nhận được sự góp ý, nhận xét từ phía quý Thầy, Cô cũng như các anh chị trong Công ty để kiến thức của em càng hoàn thiện hơn và rút ra được những kinh nghiệm bổ ích để có thể áp dụng vào thực tiễn một cách hiệu quả nhất trong tương lai. Em xin chân thành cảm ơn! Sinh viên Nguyễn Duy Long Lời mở đầu Nghiên cứu về hệ thống hỏi đáp tự động (Q&A) đã được quan tâm từ rất lâu trên thế giới. Ngay từ những năm 1960, các hệ thống hỏi đáp đầu tiên sử dụng cơ sở dữ liệu đã được ra đời. Đến những năm 1970-1980, rất nhiều dự án lớn hướng đến việc “understanding text” và xây dựng hệ thống hỏi đáp dựa trên các mô hình ngôn ngữ thống kê. Cuối những năm 1990, World Wide Web ra đời và phát triển nhanh chóng trở thành một kho ngữ liệu khổng lồ. Các nhà nghiên cứu về hệ thống hỏi đáp cũng bắt đầu khai thác web như là một nguồn dữ liệu cho việc tìm kiếm câu trả lời. Các kĩ thuật mới đòi hỏi tốc độ cao, khả năng xử lý lượng dữ liệu web lớn đang rất được quan tâm. Tuy nhiên các nghiên cứu về xây dựng hệ thống hỏi đáp cho tiếng Việt vẫn còn rất nhiều hạn chế. Một trong những lý do chính là chúng ta còn thiếu các công cụ xử lý tiếng Việt, các tài nguyên ngôn ngữ học (Wordnet [28], ontology [30]…). Phân tích câu hỏi là pha đầu tiên trong kiến trúc chung của một hệ thống hỏi đáp, có nhiệm vụ tìm ra các thông tin cần thiết làm đầu vào cho quá trình xử lý của các pha sau (trích chọn tài liệu, trích xuất câu trả lời, …). Vì vậy phân tích câu hỏi có vai trò hết sức quan trọng, ảnh hưởng trực tiếp đến hoạt động của toàn bộ hệ thống. Nếu phân tích câu hỏi không tốt thì sẽ không thể tìm ra được câu trả lời. Trong bài viết báo cáo thực tập em đã thực hiện nghiên cứu các phương pháp xây dựng hệ thống hỏi đáp và phân tích câu hỏi đang được quan tâm hiện nay, từ đó đưa ra phương pháp phân tích câu hỏi phù hợp nhất (trên cơ sở các nguồn tài nguyên ngôn ngữ sẵn có) cho hệ thống hỏi đáp tiếng Việt. Những nghiên cứu này có thể coi là tiền đề cho các nghiên cứu tiếp theo để xây dựng một hệ thống hỏi đáp hoàn thiện cho tiếng Việt. CHƯƠNG 1: TỔNG QUAN VỀ QUÁ TRÌNH THỰC TẬP 1 Giới thiệu. Thực tập tốt nghiệp là một giai đoạn quan trọng đối viên sinh viên năm cuối, đặc biệt là sinh viên công nghệ thông tin. Thực tế công việc, cùng với những kinh nghiệm và kỹ năng học tập được trong giai đoạn này, sẽ giúp cho sinh viên vững vàng hơn khi đi vào công việc thực tế đầy áp lực. Với ý nghĩa thực tiễn đó, được sự cho phép của nhà trường, tôi đã may mắn được là sinh viên thực tập tại Công ty Nhất Thái Dương iSolar, một công ty chuyên gia công phần mềm cho ngành giáo dục. Với thời gian thực tập khoảng 2 tháng, nhưng nó đã đem lại cho tôi nhiều kinh nghiệm và kỹ năng trong công việc, cũng như nghiên cứu. Tôi được tham gia làm nghiên cứu về vấn đề xử lý ngôn ngữ tự nhiên Natural Language Processing. Cùng với những sinh viên thực tập khác và với sự hướng dẫn tận tình của TS. Vũ Tất Thắng, phần nghiên cứu NLP hiện nay đã khá hoàn chỉnh như những mục tiêu đề ra. Tên công ty thực tập Nhất Thái Dương iSolar Địa chỉ Phòng 1504, 671 đường Hoàng Hoa Thám Thời gian 01/07/2012 – 01/09/2012 Cán bộ trực tiếp quản lý TS. Vũ Tất Thắng Đề tài nghiên cứu Natural Language Processing Vị trí thực tập Research 2 Công ty Nhất Thái Dương iSolar. Được sự thông qua của Hội đồng Khoa học Ban Quản lý Khu Công nghệ cao Hoà Lạc, ngày 31/05/2011, nhóm Giải pháp sáng tạo và Nghiên cứu tiên tiến Nhất Thái Dương (iSolar) đã chính thức tham gia vào hoạt động ươm tạo tại Trung tâm Ươm tạo doanh nghiệp công nghệ cao. Nhóm ISOLAR do TS Vũ Tất Thắng,Viện CNTT-Viện KHCN Việt Nam làm trưởng nhóm, hoạt động trong lĩnh vực công nghệ thông tin với sản phẩm đang nghiên cứu triển khai là hệ thống Speech translation. Hiện nay nhóm ISOLAR đã phát triển thành Công ty Nhất Thái Dương iSolar với mục tiêu tạo ra các sản phẩm chuyên nghiệp cho ngành giáo dục Việt Nam. Đây là một trong những môi trường rất tốt dành cho sinh viên công nghệ thông tin để học hỏi và làm việc trong tương lại. Mục tiêu của công ty là cung cấp cho nhân viên một môi trường làm việc năng động, thử thách, vui nhộn, để mỗi nhân viên thật sự là một “tài sản” quý nhất của công ty, của khách hàng. 3 Đặt vấn đề Xử lý ngôn ngữ tự nhiên hiện đang là một lĩnh vực rất được quan tâm trong các hướng nghiên cứu và phát triển, không chỉ ở khía cạnh giao tiếp của con người mà ở một vài khía cạnh khác, nó còn là một phần trong các thể hiện hiểu biết và tri thức của con người. Xử lý ngôn ngữ tự nhiên là hướng tiếp cận máy tính hóa nhằm phân tích văn bản dựa trên cả lý thuyết và công nghệ. Có thể định nghĩa: “xử lý ngôn ngữ tự nhiên là học thuyết thúc đẩy sự phát triển các công nghệ tính toán khác nhau phục vụ cho việc phân tích và biểu diễn các văn bản. Việc phân tích và biểu diễn văn bản có thể được thực hiện ở một hoặc một vài mức độ khác nhau nhằm xử lý ngôn ngữ của con người từ dạng tự nhiên thành các định dạng nhất định cho từng công việc hoặc ứng dụng cụ thể”. 4 Mục tiêu. Mục tiêu của đề tài nghiên cứu là hiểu được các cách thức xử lý ngôn ngữ tự nhiên nói chung trong các ngôn ngữ. Đặc biệt xử lý đối với tiếng Việt và nghiên cứu sâu về phần phân tích câu hỏi trong hệ thống hỏi đáp đối với một miền đóng. 4.1 Phạm vi nghiên cứu. Đối tượng rút trích metadata của đề tài là những bài báo khoa học và có định dạng là tập tin PDF. Đề tài thực tập tập trung nghiên cứu cách rút trích thông tin metadata, còn việc tổ chức dữ liệu thư viện số và làm giàu ontology là hướng đi kế tiếp cho đề tài, trong lần nghiên cứu này chúng tôi chưa đi sâu vào vấn đề đó. 4.2 Kết quả dự kiến.  Xây dựng thành công một hệ thống quy mô nhỏ có khả năng hỏi và trả lời tự động theo phương thức Client-Server.  Kết quả chính xác phải từ 80% trở lên. 4.1 Mục tiêu, thời gian và kế hoạch thực tập. Các mục tiêu phải đạt được trong quá trình thực tập:  Tìm hiểu thực tế môi trường công việc trong một công ty phần mềm.  Quan sát học tập các kỹ năng mềm còn yếu và thiếu như: kỹ năng xử lý vấn đề, kỹ năng giao tiếp, kỹ năng đặt câu hỏi v.v…  Nâng cao kỹ năng lập trình.  Nâng cao khả năng học hỏi, sáng tạo trong xử lý vấn đề chuyên môn cũng như trong giao tiếp. 4.4 Thời gian và kế hoạch thực tập Những công việc cụ thể trong giai đoạn này là: o Tìm hiểu xử lý ngôn ngữ tự nhiên NLP và phân tích câu hỏi trong hệ thống hỏi đáp cho tiếng Việt o Tìm hiểu về mã nguồn mở OpenNLP và ngôn ngữ lập trình Python o Phân tích, thiết kế hệ thống và code demo o Kiểm tra độ chính xác của hệ thống và viết báo cáo thu hoạch. Thời gian Nội dung 2 tuần Tìm hiểu về lý thuyết xử lý ngôn ngữ tự nhiên. 1 tuần Tìm hiểu về phân tích những câu hỏi trong hệ thống trả lời tự động của Tiếng Việt 3 tuần Tìm hiểu về mã nguồn mở OpenNLP và ngôn ngữ lập trình Python.và ngôn ngữ lập trình Python. Tiến hành phân tích hệ thống hỏi đáp trên thực tế. 2 tuần Thu thập dữ liệu về các địa điểm, tên người để phục vụ cho việc code demon hệ thống 5 Bố cục báo cáo. Phần 1: Tổng quan của quá trình thực tập tốt nghiệp: thực tập ở công ty nào, thời gian thực tập ra sao, tham gia những dự án gì… Ngoài ra trong Chương 1 cũng giới thiệu khái quát về công ty thực tập, đề tài thực tập, mục tiêu và kế hoạch của đợt thực tập này. Phần 2: Giới thiệu về hệ thống hỏi đáp tự động. Phần 3: Phân tích câu hỏi trong hệ thống hỏi đáp. Phần 4: Xây dựng hệ thống trả lời tiếng Việt tự động và sử dụng mã nguồn mở OpenNLP và Java. Phần kết luận sẽ tổng hợp những nội dung kiến thức đã được tiếp cận, những kỹ năng lập trình đã được học hỏi, kinh nghiệm thực tiễn đã tích lũy, những điều làm được và chưa được trong nghiên cứu xử lý ngôn ngữ tự nhiên NLP và phương hướng sắp tới. Chương 2: Giới thiệu về hệ thống hỏi đáp tự động 1 Hệ thống hỏi đáp tự động Hệ thống hỏi đáp tự động có thể coi như một lựa chọn thứ hai bên cạnh hệ thống trích chọn thông tin khi người dùng muốn tìm kiếm thông tin họ cần. Hệ thống trích chọn thông tin nhận đầu vào là các từ khóa và trả về tập các tài liệu liên quan (có chứa các từ khóa đó). Kết quả mà hệ thống trích chọn thông tin (máy tìm kiếm) trả lại cho người dùng là rất lớn, có thể lên đến hàng nghìn trang web mà phần nhiều không chứa thông tin người dùng mong muốn. Trong khi đó, hệ thống hỏi đáp nhận đầu vào là câu hỏi dưới dạng ngôn ngữ tự nhiên của người dùng, trả lại các đoạn văn bản ngắn chứa câu trả lời trực tiếp cho câu hỏi. Nghiên cứu về hệ thống hỏi đáp tự động hiện đang thu hút sự quan tâm của rất nhiều các nhà nghiên cứu từ các trường đại học, các viện nghiên cứu và cả các doanh nghiệp lớn trong ngành công nghệ thông tin, có ý nghĩa khoa học lẫn ý nghĩa thực tế. Rất nhiều các hội nghị thường niên về khai phá dữ liệu, trích chọn thông tin dành một chủ đề riêng cho các nghiên cứu về hệ thống hỏi đáp như TREC1, CLEF2, vv. Bài toán xây dựng hệ thống hỏi đáp là một bài toán khó thuộc lĩnh vực xử lý ngôn ngữ tự nhiên (Natural Language Processing). Chúng ta biết rằng ngôn ngữ tự nhiên vốn nhập nhằng, đa nghĩa, việc xác định được ngữ nghĩa của câu hỏi cũng như phát hiện ra câu trả lời là một thách thức không nhỏ. Không những vậy, giữa câu hỏi và câu trả lời còn tồn tại các quan hệ “ngầm” hay phụ thuộc vào ngữ cảnh. Ví dụ câu hỏi: Một người đang đi trên đường với một chiếc điện thoại di động có kết nối internet. Người này muốn tìm đường từ Kim Mã tới Xuân Thủy. Người này đặt ra câu hỏi. “Tôi muốn tìm đường từ Kim Mã tới Cầu Giấy” Câu trả lời trên một ứng dụng điện thoại, chỉ đường trên GoogleMap. Một câu hỏi khác: “ Bill Gates sinh năm nào ?” và câu trả lời “….Bill Gates sinh ngày 28, tháng 10, năm…”. Để tìm được câu trả lời trên cho câu hỏi, hệ thống cần có cơ chế để biết được rằng Kim Mã và Xuân Thủy là tên của 2 địa điểm hoặc cần học được các mẫu thường gặp của câu trả lời (các mẫu về ngày tháng năm sinh, về thời gian, địa chỉ….) tương ứng với từng loại câu hỏi. Các hệ thống Q&A trên thế giới hiện nay sử dụng rất nhiều các công cụ xử lý ngôn ngữ như: Bộ gán nhãn từ loại (POS Tagger), bộ nhận dạng tên thực thể (Named Entity Recognizer), bộ phân tích ngữ pháp (Parser)… và các tài nguyên ngôn ngữ để phân tích câu hỏi và trích xuất câu trả lời. Một hệ thống hỏi đáp được người dùng đánh giá là hữu ích nếu đáp ứng được các tiêu chuẩn: Tính hợp lý về thời gian (Timeliness): Câu trả lời phải được đưa ra trong thời gian ngắn, ngay cả khi có hàng ngàn người dùng cùng truy nhập hệ thống một lúc. Các nguồn dữ liệu mới cần phải được tích hợp vào hệ thống ngay khi chúng sẵn sàng để có thế cung cấp cho người dùng câu trả lời cho những câu hỏi về các sự kiện có tính thời sự. Tính chính xác: Tính chính xác của hệ thống hỏi đáp tự động là cực kì quan trọng bởi việc đưa ra câu trả lời sai còn tai hại hơn nhiều là không đưa ra câu trả lời. Nghiên cứu về Q&A cần tập trung vào việc đánh giá tính đúng đắn của câu trả lời đưa ra, bao gồm cả phương thức để phát hiện các trường hợp mà dữ liệu hiện thời không chứa câu trả lời cho câu hỏi. Các thông tin mâu thuẫn trong dữ liệu cũng cần được tìm ra và các thông tin này cần được xử lý theo một cách phù hợp, nhất quán. Để đạt được sự chính xác, hệ thống Q&A cần được tích hợp các nguồn tri thức (world knowledge ) và cơ chế “bắt chước” việc suy luận thông thường (việc bắt chước có thể hiểu như là một quá trình học). Tính khả dụng: Hệ thống Q&A cần đáp ứng được các yêu cầu cụ thể của một người dùng. Các ontology trên từng miền cụ thể và ontology trên miền mở cần được tích hợp trong hệ thống. Hệ thống Q&A cần có khả năng khai phá câu trả lờitừ bất kì dạng dữ liệu gì (văn bản, web, cơ sở dữ liệu, …) và đưa ra câu trả lời dưới định dạng mà người dùng mong muốn, cho phép người dùng miêu tả ngữ cảnh của câu hỏi và cung cấp các thông tin giải thích, trích dẫn nguồn cho câu trả lời. Tính hoàn chỉnh: Câu trả lời hoàn chỉnh cho câu hỏi của người dùng là điều mà các hệ thống Q&A hướng tới. Trong nhiều trường hợp (câu hỏi về danh sách, nguyên nhân, cách thức…), các phần của câu trả lời nằm rải rác trong một văn bản, thậm chí trong nhiều văn bản. Vì vậy cần phải hợp nhất các phần này dựa trên các thông tin liên kết để tạo ra câu trả lời hoàn chỉnh. Tính thích hợp của câu trả lời: Trong ngôn ngữ tự nhiên, câu hỏi đưa ra luôn gắn với ngữ cảnh nào đó và câu trả lời cũng nằm trong một ngữ cảnh nhất định. Câu trả lời mà hệ thống Q&A đưa ra phải phù hợp ngữ cảnh với câu hỏi. Một hệ thống Q&A có khả năng giao tiếp (interactive Q&A) là cần thiết trong nhiều trường hợp bởi chuỗi các câu hỏi liên quan đến một vấn đề sẽ giúp làm sáng tỏ thông tin mà người dùng đang hỏi. Việc đánh giá một hệ thống Q&A cần hướng người dùng bởi ý kiến người dùng là đánh giá tốt nhất cho tính thích hợp của câu trả lời. Các tiêu chuẩn trên được đặt ra với mong muốn xây dựng được một hệ thống Q&A hoàn chỉnh. Tuy nhiên, không phải hệ thống nào cũng có khả năng thông minh và hoàn thiện như thế. Các nghiên cứu về Q&A hiện nay đang tập trung vào xây dựng hệ thống hỏi đáp có tính chính xác cao và có khả năng sử dụng nguồn dữ liệu web khổng lồ trên Internet. 2 Phân loại hệ thống hỏi đáp tự động Có nhiều cách phân loại hệ thống hỏi đáp dựa trên các tiêu chí khác nhau như: phân loại theo miền ứng dụng, theo khả năng trả lời câu hỏi, theo cách tiếp cận giải quyết bài toán… 2.1 Phân loại theo miền ứng dụng (domain) Hệ thống hỏi đáp miền mở (open domain Question answering): Hệ thống trả lời bất kỳ câu hỏi nào được đưa vào. Khó khăn cho hệ thống miền mở đó chính là việc xây dựng các tri thức nên cho việc trả lời cũng như phân tích câu hỏi, các phương pháp hiện nay thường sử dụng một số các ontology khái quát hay các mạng tri thức như: wikipedia, bách khoa từ điển... Tuy nhiên, dữ liệu cho việc trích rút câu trả lời là phong phú, dễ thu thập. Hệ thống hỏi đáp miền đóng (close domain Question answering): Hệ thống tập trung vào trả lời các câu hỏi liên quan đến một miền cụ thể (giáo dục, y tế, thể thao, du lịch, tìm đường...). Xây dựng hệ thống hỏi đáp miền đóng được coi là bài toán dễ hơn so với xây dựng hệ thống hỏi đáp miền mở vì có thể sử dụng các tri thức miền (thường là ontology của miền cụ thể). Các nghiên cứu hiện nay về Q&A đang tập trung vào xây dựng hệ thống hỏi đáp trên miền mở, sử dụng nguồn dữ liệu phi cấu trúc (kho văn bản lớn hay dữ liệu Miền đóng Miền mở Hệ thống hỏi đáp Dữ liệu có cấu trúc Dữ liệu phi cấu trúc (text) web) để tìm câu trả lời. Các nghiên cứu mới và cải tiến những phương pháp cũ để có thể áp dụng cho nguồn dữ liệu web vốn đa dạng, nhiều “nhiễu” và trùng lặp đang rất được quan tâm. 2.2 Phân loại theo khả năng trả lời câu hỏi Hệ thống có khả năng trả lời các câu hỏi liên quan đến sự vật, hiện tượng,... dựa trên việc trích ra câu trả lời có sẵn trong tập tài liệu. Câu trả lời là các chuỗi ký tự trong một tài liệu. Kỹ thuật chính được sử dụng là xử lý chuỗi và từ khóa. Hệ thống có cơ chế lập luận đơn giản: Trích xuất các câu trả lời có sẵn trong tập tài liệu sau đó sử dụng các suy luận để tìm mối liên kết giữa câu trả lời và câu hỏi. Hệ thống sử dụng các nguồn tri thức như ontology về từng miền cụ thể và ontology chung. Hệ thống trả lời các câu hỏi yêu cầu khả năng tổng hợp: Các phần của câu trả lời được trích rút từ nhiều tài liệu sau đó được tổng hợp lại thành câu trả lời hoàn chỉnh. Câu hỏi thường là về danh sách, về cách thức, nguyên nhân... Hệ thống có khả năng giao tiếp với người dùng: Trả lời chuỗi các câu hỏi của người dùng về cùng một vấn đề. Ví dụ các câu hỏi của người dùng như: “Tôi đang đứng ở đâu? Tôi muốn đến Hàng Bông? Nói với vợ tôi rằng tối nay anh không về”. Hoặc câu hỏi như: “Giáo sư Nguyễn Văn Hiệu sinh ra ở đâu?” Hệ thống có khả năng lập luận tương tự: Có thể trả lời các câu hỏi có tính chất suy đoán, câu trả lời ẩn trong tập tài liệu. Hệ thống cần trích ra các luận chứng và sử dụng lập luận tương tự để tìm ra câu trả lời. 2.3 Các bước chung của hệ thống hỏi đáp tự động Một hệ thống hỏi đáp tự động thường gồm 3 bước chung sau: Bước1-Phân tích câu hỏi: Bước phân tích câu hỏi tạo truy vấn cho bước trích chọn tài liệu liên quan và tìm ra những thông tin hữu ích cho bước trích xuất câu trả lời. Bước2-Trích chọn tài liệu liên quan: Bước này sử dụng câu truy vấn được tạo ra ở bước phân tích câu hỏi để tìm các tài liệu liên quan đến câu hỏi. Bước3-Trích xuất câu trả lời: Bước này phân tích tập tài liệu trả về từ bước 2 và sử dụng các thông tin hữu ích do bước phân tích câu hỏi cung cấp để đưa ra câu trả lời chính xác nhất. Các hệ thống hỏi đáp tự động hiện nay có kiến trúc rất đa dạng, tuy nhiên chúng đều bao gồm ba phần cơ bản như trên. Sự khác nhau chính giữa các hệ thống là ở quá trình xử lý trong từng bước, đặc biệt là ở cách tiếp cận trong việc xác định câu trả lời. Cách tiếp cận theo trích chọn thông tin thuần túy (pure IR) là: chia nhỏ một tài liệu trong tập dữ liệu thành chuỗi các tài liệu con, trích chọn các tài liệu con có độ tương đồng lớn nhất với câu truy vấn (do bước phân tích câu hỏi tạo ra) và trả lại chúng cho người dùng.Thách thức lớn nhất ở đây là làm sao chia nhỏ được tài liệu thành các phần với kích cỡ tương ứng với kích cỡ của câu trả lời mà vẫn đủ lớn để có thể đánh chỉ mục được (nếu chia quá nhỏ thì số lượng tài liệu để đánh chỉ mục sẽ rất lớn, gây gánh nặng cho hệ thống trích chọn thông tin). Cách tiếp cận theo xử lý ngôn ngữ tự nhiên (pure NLP) là: so khớp giữa biểu diễn ngữ pháp và (hoặc) biểu diễn ngữ nghĩa của câu hỏi với dạng biểu diễn ngữ pháp, ngữ nghĩa của các câu trong các tài liệu liên quan trả về. Khó khăn của cách tiếp cận này là hệ thống phải thực hiện việc phân tích ngữ pháp, ngữ nghĩa và so khớp đủ Câu hỏi Phân tích câu hỏi và trích xuất câu trả lời Câu trả lời DATA SET Trích xuất mẫu tổng quát nhanh để đưa ra câu trả lời trong thời gian chấp nhận được, bởi số lượng các tài liệu cần xử lý là rất lớn trong khi các bước phân tích trên lại phức tạp và tốn nhiều thời gian. Sự khác nhau trong cách trích xuất câu trả lời dẫn đến việc phân tích câu hỏi cũng trở nên đa dạng. Trong hướng tiếp cận theo trích xuất thông tin thuần túy, phân tích câu hỏi chỉ cần làm tốt việc tạo truy vấn, trong khi với hướng tiếp cận theo xử lý ngôn ngữ tự nhiên, câu hỏi cần được phân tích ngữ pháp, ngữ nghĩa một cách chính xác. Các hệ thống hiện nay thường là sự kết hợp giữa hai hướng tiếp cận, sử dụng hệ thống trích chọn thông tin để thu hẹp không gian tìm kiếm câu trả lời, đồng thời phân tích câu hỏi để tìm ra các thông tin về ngữ pháp, ngữ nghĩa nhằm tìm ra câu trả lời chính xác nhất. Kết quả của bước phân tích câu hỏi là đầu vào cho cả hai bước trích chọn tài liệu liên quan và trích xuất câu trả lời. Bước phân tích câu hỏi có ý nghĩa rất quan trọng, bởi nó ảnh hưởng đến hoạt động của các bước sau và do đó quyết định đến hiệu quả của toàn hệ thống. Chương 3: Phân tích câu hỏi của hệ thống hỏi đáp 1 Nội dung của phân tích câu hỏi Bài toán phân tích câu hỏi: Phân tích câu hỏi nhận đầu vào là câu hỏi dưới dạng ngôn ngữ tự nhiên của người dùng, đưa ra câu truy vấn cho bước trích chọn tài liệu liên quan và các thông tin cần thiết cho bước trích rút câu trả lời. Câu truy vấn là dạng tổ hợp của các từ khóa quan trọng trong câu hỏi (và các từ khóa mở rộng) với các phép toán tập hợp AND, OR. Các thông tin cần thiết để trích xuất câu trả lời là rất đa dạng, tùy phuộc vào phương pháp trích xuất câu trả lời. Thông thường các thông tin đó là mục đích của câu hỏi (ví dụ mục đích hỏi để khẳng định một điều, để so sánh hay để tìm kiếm thông tin, để hỏi về định nghĩa, cách thức…), loại câu trả lời mong đợi (question target hay answer type). Ví dụ câu hỏi “Dân số trên thế giới hiện tại là bao nhiêu”, câu trả lời được mong đợi là một “con số” hay câu hỏi “Chủ tịch nước Việt Nam là ai” thì loại câu trả lời là một “tên người”. 2 Khó khăn của phân tích câu hỏi Câu hỏi đầu vào của hệ thống hỏi đáp tự động là câu hỏi dưới dạng ngôn ngữ tự nhiên của người dùng. Vì vậy việc phân tích câu hỏi cũng gặp những khó khăn của xử lý ngôn ngữ tự nhiên. Khó khăn ở đây là làm thế nào để máy tính hiểu được ngôn ngữ của con người. Bản chất phức tạp của ngôn ngữ của con người, đặc biệt là sự đa nghĩa và nhập nhằng ngữ nghĩa của ngôn ngữ. Thêm nữa, có một khác biệt sâu sắc là con người ngầm hiểu và dùng quá nhiều lẽ thường (common sense) trong ngôn ngữ, như khi hỏi về “thời gian” thì tức là hỏi về “giờ, phút, tháng, năm, thứ …” Cùng hỏi về một thông tin nhưng câu hỏi có thể được diễn đạt theo nhiều cách khác nhau, sử dụng từ ngữ, cấu trúc câu khác nhau, lúc ở dạng nghi vấn, lúc lại ở dạng khẳng định. Mô hình cần có khả năng chuyển đổi các câu hỏi phức tạp thành chuỗi các câu hỏi đơn giản hơn, có thể xác định được các nhập nhằng và xử lý chúng theo ngữ cảnh hoặc sử dụng cách thức giao tiếp với người dùng để làm rõ ngữ nghĩa. 3 Một số nội dung của xử lý ngôn ngữ tự nhiên trong phân tích câu hỏi Việc xử lý ngôn ngữ tự nhiên thường bao gồm các bước (tầng, layer) cơ bản sau: o Tầng ngữ âm (phonetic and phonological layer): Nghiên cứu về ngữâm (linguistic sounds), như mô hình hoá việc các từ trong cách nói thông thường được phát âm thế nào, về bản chất thanh điệu, ngôn điệu, ngữ điệu (prosody, intonation), trường độ âm tiết, độ nhấn, biến thanh, … o Tầng hình thái (morphological layer): Nghiên cứu về các thành phần có nghĩa của từ (word), như từ được tạo ra bởi các hình vị (morphemes) và từ được tách ra trong một câu thế nào. Thí dụ, từ “tiếng Việt” tạo thành từ “t-iế- ng V-iệ-t”, còn ngữ (phrase) “xử lý tiếng Việt” tạo thành gồm hai từ “xử lý” và “tiếng Việt”. Trong tiếng Việt, một bài toán quan trọng là phân tách từ (word segmentation). Một thí dụ quen thuộc là câu “Ông già đi nhanh quá” có thể phân tách thành (Ông già) (đi) (nhanh quá) hoặc (Ông) (già đi) (nhanh quá) hoặc những cách khác nữa. o Tầng ngữ pháp (morphological layer): Nghiên cứu các quan hệ cấu trúc giữa các từ, xem các từ đi với nhau thế nào để tạo ra câu đúng. Quá trình này thường được cụ thể trong các bước cơ bản sau:  Xác định từ loại (POS tagging): Xem mỗi từ trong câu là loại gì (danh từ, động từ, giới từ, …). Trong thí dụ trên, có thể “Ông già” là danh từ, “đi” là động từ, “nhanh” là trạng từ, và “quá” là thán từ.  Xác định cụm từ (chunking): Thí dụ “Ông già” là cụm danh từ, “đi” là cụm động từ, “nhanh quá” là cụm trạng từ. Như vậy câu trên có hai phân tích (Ông già) (đi) (nhanh quá) hoặc (Ông) (già đi) (nhanh quá).  Xác định quan hệ ngữ pháp (parsing): (Ông già) (đi) (nhanh quá) là quan hệ chủ ngữ-vị ngữ-trạng ngữ. o Tầng ngữ nghĩa (semantic layer): Nghiên cứu xác định nghĩa của từng từ và tổ hợp của chúng để tạo nghĩa của câu. Thí dụ trong phân tích (Ông già) (đi) (nhanh quá), động từ “đi” có thể có nghĩa “bước đi”, hay “chết” hay “điều khiển” (khi đánh cờ), … và tương ứng ta có các nghĩa khác nhau của câu. o Tầng ngữ dụng (pragmatic layer): Nghiên cứu mối quan hệ giữa ngôn ngữ và ngữ cảnh sử dụng ngôn ngữ (context-of-use). Ngữ dụng như vậy nghiên cứu việc ngôn ngữ được dùng để nói về người và vật như thế nào. Việc phân tích một câu nói hay một câu trong văn bản ở các tầng từ ngữ âm (1) đến tầng ngữ pháp (3) gọi là phân tích sơ bộ(shallow parsing). Nếu phân tích thêm cả tầng ngữ nghĩa (từ (1) đến (4)) ta sẽ có phân tích đầy đủ (fully parsing). Trong các vấn đề của xử lí ngôn ngữ, có vấn đề cần đến phân tích đầy đủ (như dịch tự động), nhưng cũng có những vấn đề chỉ với phân tích sơ bộ cũng có thể đã xử lí được (như tìm kiếm thông tin, phân tích văn bản cho tổng hợp tiếng nói, mô hình ngôn ngữ trong nhận dạng tiếng nói…). Chương 4: Xây dựng hệ thống trả lời tiếng Việt tự động và sử dụng mã nguồn mở OpenNLP 1 Mô tả hệ thống thực tế. Hệ thống này được xây dựng cho một thiết bị di động có kết nối internet để đáp ứng các câu hỏi của người dùng về các lĩnh vực sau: Tìm đường: Người dùng có thể tìm đường đi từ vị trí này tới vị trí khác trong khu vực Hà Nội hoặc có thể xác định vị trí mà mình đang đứng hiện tại. Nhắn tin: Người dùng có thể dễ dàng nhắn tin cho người có trong danh sách điện thoại bằng giọng nói. Hẹn giờ: Người dùng cũng có thể hẹn giờ bằng giọng nói. TEXT Xác định miền cụ thể cho câu hỏi Chuyển âm thanh thành text Xử lý câu hỏi Định dạng câu trả lời Gửi câu trả lời về cho ứng dụng của thiết bị Mô hình của hệ thống trả lời tự động bằng giọng nói Trong việc xây dựng hệ thống này không quan tâm tới việc làm thế nào để chuyển dữ liệu âm thanh thành TEXT, mà chúng ta chỉ quan tâm làm thế nào để phân tích câu hỏi dưới dạng TEXT và câu trả lời. 2 Phân tích câu hỏi tiếng Việt cho hệ thống trả lời tự động Trong hệ thống trả lời tự động các câu hỏi tiếng Việt này, chúng ta chỉ làm việc với 3 lĩnh vực đã nêu lên ở trên. Trong thực tế người dùng sẽ hỏi những câu hỏi như:  Đường đi từ Hàng Bài tới Trần Thái Tông như thế nào?  Nói với Nguyễn Duy Long, bạn có muốn đi ăn tối với tớ không?  Hãy báo thức cho tôi lúc 3 giờ 30 phút chiều.  Tôi muốn dậy lúc 9 rưỡi tối. Vì chúng ta chỉ làm việc với hệ thống hỏi đáp miền đóng nên một số câu hỏi mà người ta muốn đưa ra là không nhiều chỉ với số hữu hạn câu. Nhưng hệ thống phải phân tích được câu hỏi và xử lý được yêu cầu mà người hỏi muốn có. Trong lĩnh vực tìm đường, người hỏi chỉ quan tâm về địa điểm muốn tìm như: ... địa điểm A tới địa điểm B. Trong lĩnh vực nhẵn tin, người nhẵn chỉ quan tâm làm thế nào để tin nhắn của mình đến được đúng được người mà mình đang nhắn như: Nguyễn Văn A, Người yêu... Hay trong khi hẹn giờ cái quan trọng nhất là giờ mà người ta muốn báo thức: X giờ Y phút. Có 2 điều quan trọng nhất trong phân tích ngữ nghĩa của câu:  Làm thế nào để xác định được câu hỏi thuộc loại lĩnh vực nào: tìm đường, nhắn tin hay hẹn giờ. Vấn đề này hay còn được gọi là phân lớp cho câu (Classifying).  Sau đã phân lớp xong cho câu, chúng ta phải phát hiện được các thực thể và số cần thiết trong câu. 3 Phân lớp cho câu (Classifying) và OpenNLP Để xây dựng được hệ thống phân lớp được cho các câu. Mã nguồn mở OpenNLP cho phép chúng ta có thể tạo ra một Model để làm nhiệm vụ này. Để xây dựng một Model thì ta phải viết được tài liệu định đạng phân lớp chuẩn theo OpenNLP. Mỗi dòng chứa một thể loại (category) và văn bản được ngăn cách bởi dấu cách trắng. Ở dưới đây timduong, nhantin, hengio, lần lượt là các thể loại của tìm đường, nhắn tin và hẹn giờ. timduong Đường đi từ Hàng Bài tới Trần Thái Tông như thế nào?\ Làm thế nào để đi đến Hàng Bông. nhantin Nói với Nguyễn Duy Long, bạn có muốn đi ăn tối với tớ không? hengio Tôi muốn dậy lúc 3 rưỡi\ Hãy báo thức tôi lúc 9 giờ tối. Khi đã thực sự có một Model rồi. OpenNLP có hỗ trợ Document Categorizer API để hiện phân lớp: InputStream is = ... DoccatModel m = new DoccatModel(is); Với lớp DoccatModel được gọi chúng ta tiếp tục String inputText = “Đường đi từ Hàng Bài tới Trần Thái Tông như thế nào?” DocumentCategorizerME myCategorizer = new DocumentCategorierME(m); double[] outcomes = myCategorizer.categorize(inputText); String category = myCategorizer.getBestOutcome();// ket qua: timduong 4 Phát hiện thực thể trong câu (Name Finder) và OpenNLP Để xác định được thực thể Name Finder trong một câu sau chúng ta cũng cần có một Model. Model ở đây là bị phụ thuộc vào từng ngôn ngữ khác nhau và kiểu thực thể chúng ta huấn luyện. Để có thể tìm tên trong văn bản hay là câu ở dạng dữ liệu thôi thì phải được phân tách thành các thẻ (token) và các câu. Trong hệ thống này thì chúng ta phải phân tách thực thể trong mỗi câu. Ví dụ huyến luyện Model như sau: Hãy chỉ đường từ Kim Mã tới Xuân Thủy Nói với Nguyễn Duy Long bạn đi ăn tối với tôi nhé. Hãy báo thức tôi lúc bốn giờ chiều Để có một model tốt thì chúng ta nên huấn luyện với ít nhất 15000 câu. Câu lệnh sau sẽ chuyển dữ liệu trên thành model với định dang .bin $bin/opennlp TokenNameFinderTrainer -encoding UTF-8 -lang en -data en-ner- person.train -model en-ner-person.bin Để có thể tiến hành tìm được tên trong câu chúng ta sẽ sử dụng code OpenNLP. TokenNameFinderModel model = null; try { model = new TokenNameFinderModel(modelIn); } catch (IOException e) { e.printStackTrace(); } finally { if (modelIn != null) { try { modelIn.close(); } catch (IOException e) { } } } NameFinderME nameFinder = new NameFinderME(model); String text = "Đánh thức tôi lúc bốn giờ chiều"; String[] sentence = text.split(" "); Span nameSpans[] = nameFinder.find(sentence); 4.1 Phân tích và trả lời các câu trong lĩnh vực tìm đường Đối với trong hệ thống câu hỏi tìm đường, chúng ta có thể phân tích rằng người ta thường tìm đường với một số câu hỏi thông dụng như sau:  Tôi muốn đi từ ... tới ...  Làm thế nào để đi từ ... tới...  Hãy chỉ đường cho tôi từ ... tới ...  Đường đi từ ... tới ... như thế nào?  Hãy dẫn đường tới ...  Tôi đang đứng ở đâu?  Chỗ này là chỗ nào? Trong dấu “...” là tên địa điểm mà người ta muốn đề cập tới. Làm thế nào để hệ thống có thể phát hiện bất cứ một địa điểm nào trong một câu là điều rất khó. Đòi hỏi chúng ta phải có một cơ sở dữ liệu lớn về tên các địa điểm và được cập nhật đúng theo thời gian. Vậy nên với hệ thống trong quá trình mới phát triển chúng ta chỉ có thể làm việc với một số địa danh nổi tiếng và chính trong khu vực TP.Hà Nội. Sau khi chúng ta đã có một Model tốt để phục vụ. Chúng ta sẽ tiến hành tìm danh từ của địa điểm trong câu và trả lời cho ứng dụng di động. Khi đã xác định được địa điểm trong câu. Đối với câu có 2 địa điểm thì địa điểm đứng trước sẽ là nơi xuất phát, địa điểm sau sẽ là đích đến. Vậy câu trả lời cho client sẽ có dạng: timduong|địa điểm 1 – địa điểm 2 Đối với câu chỉ xác định được 1 địa điểm thì đây chính là địa điểm đích còn địa điểm xuất phát chính là nơi đang đứng hiện tại. Câu trả lời cho client sẽ có dạng: timduong|địa điểm hiện tại – địa điểm Khi client nhận được kết quả có định dạng như trên nó sẽ hiểu rằng đây là câu hỏi tìm đường. Và sử dụng Googlemap để hiển thị đường đi cho người dùng theo thứ tự như câu trả lời. 4.2 Phân tích và trả lời các câu trong lĩnh vực nhắn tin Những câu hỏi thông dụng mà sẽ có thể được hỏi khi nhắn tin bằng giọng nói như sau:  Nói với ... (nội dung)  Nhắn tin tới ... (nội dung)  Bảo với ... (nội dung) Trong dấu “...” là tên của một người. Cũng như vấn đề trong phần tìm đường làm thế nào để hệ thống có thể nhận dạng ra được đúng tên người trong câu là không dễ dàng gì. Đòi hỏi chúng ta phải có một cơ sở dữ liệu tên người rất lớn để đào tạo. Tên người trong tiếng Việt là rất lớn và phong phú vậy nên để có thể nhận dạng tốt chúng ta phải cần có thời gian để thu thập được lượng dữ liệu này. Sau khi sử dụng OpenNLP để nhận dạng được tên người trong câu. Chúng ta cần tách được nội dung tin nhắn trong câu để gửi trả kết quả cho client. Điều này cũng dễ nhận ra bời vì nội dung tin nhắn nằm ngay sau tên người trong câu hỏi. Vậy chúng ta sẽ tạo câu trả lời cho client như sau: nhantin|tên người| nội dung tin nhắn 4.3 Phân tích và trả lời các câu trong lĩnh vực hẹn giờ Những câu hỏi giờ thông thường hàng ngày trong tiếng Việt là rất đa dạng và phức tạp, bao gồm cả những từ như: kém, rưỡi, sáng, chiều, trưa, tối. Và nhiệm vụ của hệ thống là phải phân tích và đưa ra câu trả lời chính xác như người dùng mong muốn. Những câu hỏi mà người dùng hay hỏi như:  Đánh thức tôi lúc ...  Tôi muốn dậy lúc...  Tôi muốn đánh thức vào lúc...  Hãy gọi tôi lúc... Trong dấu “...” trong trường hợp này là thời gian mà người hẹn giờ muốn đặt báo thức. Ở đây có thể là những câu thông thường như: 3 rưỡi chiều => 15h30min 12 giờ 35 phút => 12h35min 5 giờ kém 15 chiều => 16h45min 12 giờ chiều => không hợp lệ Dưới đây, em xin đưa ra thuật toán để đưa thời gian trong tiếng Việt về thời gian chuẩn. INPUT: time OUPUT: hour:minute Var: minute=0, hour=0; minute = getMinute(); hour = getHour(); if (exist “kém”) { hour = hour – 1; minute = 60 – minute; } if (exist “sáng”) { } if (exist “trưa”) { if(hour >= 10 && hour <= 12) giữ nguyên thời gian if(hour >= 1 && hour <= 3) hour = hour + 12; } if (exist “chiều”) { if(hour >= 12 && hour <= 15) giữ nguyên thời gian if(hour >= 1 && hour <= 5) hour = hour + 12; } if (exist “tối”) { if(hour >= 18 && hour <= 24) giữ nguyên thời gian if(hour >= 6 && hour <= 12) hour = hour + 12; } if(exist “rưỡi”) minute = 30; Sau khi xử lý xong giờ thì ta sẽ tiến hành định dạng câu trả lời để gửi về cho client. Câu trả lời cho client nên có dạng như sau: hengio|hour:minute KẾT LUẬN Qua giai đoạn thực tập, tôi đã được củng cố rất nhiều các nội dung kiến thức được học tập tại trường, cũng như tiếp cận những kiến thức hoàn toàn mới liên quan đến vấn đề rút trích thông tin trong văn bản như lý thuyết về xử lý ngôn ngữ tự nhiên NLP, mã nguồn mở OpenNLP và ngôn ngữ lập trình Python. Ngoài ra tôi cũng học hỏi được các kỹ năng và phong cách lập trình chuyên nghiệp hơn, thông qua cách thức đặt tên, truyền biến, xây dựng cấu trúc chương trình mạch lạc… Học hỏi và nâng cao kỹ năng giải quyết vấn đề thông qua việc đặt câu hỏi, cách thức tìm kiếm các vấn đề liên quan, cách suy nghĩ sáng tạo. Thông qua những kinh nghiệm có được khi thực tập và nghiên cứu, tôi tin tưởng mình đã học tập được nhiều kinh nghiệm bổ ích cho công việc mai sau. Đối với đề tài thực tập, nhóm chúng tôi đã hoàn thành khá tốt những mục tiêu ban đầu đề ra, đó là xây dựng được hệ thống hỏi đáp tự động các câu hỏi trong tiếng Việt trong một miền đóng với kết quả chính xác khá tốt. Hướng phát triển trong tương lai của đề tài là nghiên cứu các vấn đề về xử lý ngôn ngữ tự nhiên và đặc biệt cho tiếng Việt khi chưa được phát triển so với các ngôn ngữ khác. MỤC LỤC Lời cám ơn Lời nói đầu CHƯƠNG 1: TỔNG QUAN VỀ QUÁ TRÌNH THỰC TẬP .......................... 4 1 Giới thiệu. ................................................................................................................................. 4 2 Công ty Nhất Thái Dương iSolar. .................................................................................... 5 3 Đặt vấn đề ................................................................................................................................. 5 4 Mục tiêu. .................................................................................................................................... 6 4.1 Mục tiêu, thời gian và kế hoạch thực tập. ............................................................ 6 Các mục tiêu phải đạt được trong quá trình thực tập: .............................................. 6 5 Bố cục báo cáo. ....................................................................................................................... 8 Phần 1: Tổng quan của quá trình thực tập tốt nghiệp:.............................................. 8 Phần 2: Giới thiệu về hệ thống hỏi đáp tự động. .......................................................... 8 Phần 3: Phân tích câu hỏi trong hệ thống hỏi đáp. ...................................................... 8 Phần 4: Xây dựng hệ thống trả lời tiếng Việt tự động và sử dụng mã nguồn mở OpenNLP và Java. .............................................................................................................. 8 Chương 2: Giới thiệu về hệ thống hỏi đáp tự động ......................................................... 9 1 Hệ thống hỏi đáp tự động .................................................................................................. 9 2 Phân loại hệ thống hỏi đáp tự động ............................................................................ 11 2.2 Phân loại theo khả năng trả lời câu hỏi ............................................................. 12 2.3 Các bước chung của hệ thống hỏi đáp tự động .............................................. 12 Chương 3: Phân tích câu hỏi của hệ thống hỏi đáp ...................................................... 14 1 Nội dung của phân tích câu hỏi ..................................................................................... 14 2 Khó khăn của phân tích câu hỏi .................................................................................... 14 Chương 4: Xây dựng hệ thống trả lời tiếng Việt tự động và sử dụng mã nguồn mở OpenNLP ................................................................................................................................ 16 1 Mô tả hệ thống thực tế. .................................................................................................... 16 2 Phân tích câu hỏi tiếng Việt cho hệ thống trả lời tự động ................................. 17 3 Phân lớp cho câu (Classifying) và OpenNLP ........................................................... 17 4 Phát hiện thực thể trong câu (Name Finder) và OpenNLP ............................... 18 4.1 Phân tích và trả lời các câu trong lĩnh vực tìm đường ................................ 19 4.2 Phân tích và trả lời các câu trong lĩnh vực nhắn tin ..................................... 20 4.3 Phân tích và trả lời các câu trong lĩnh vực hẹn giờ ...................................... 21 KẾT LUẬN ...................................................................................................................................... 24

Các file đính kèm theo tài liệu này:

  • pdfnguyenduylong_baocaothuctap_4614.pdf