1. Trang chủ
  2. » Luận Văn - Báo Cáo

ĐỒ ÁN ỨNG DỤNG TRỢ LÝ ẢO HỎI ĐÁP TRÊN HỆ ĐIỀU HÀNH ANDROID

48 0 0
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Ngày nay điện thoại smartphone ngày càng phổ biến . Không chỉ đơn thuần là dùng để gọi điện và nhắn tin như những năm trước kia . Smartphone hiện tại có rất nhiều tiện ích cho con người như nghe nhạc , chụp ảnh , tìm kiếm thông tin, các ứng dụng tiện ích cá nhân,… Đi cùng với sự phát triển smartphone là sự tương tác giữa smartphone và người dùng . Làm thế nào có thể sử dụng smartphone một cách dễ dàng ít thao tác nhất là những điều mà chúng ta muốn hướng đến. Cùng với xu hướng đơn giản hóa cách người dùng sử dụng smartphone, máy tính, những trợ lý ảo thông minh đang xuất hiện ngày càng nhiều để thay đổi thói quen sử dụng thiết bị người dùng. Trong khoảng 1 thập kỉ trở lại đây, vẫn chưa có một cuộc cách mạng nào thực sự có thể thay đổi thói quen của người dùng. Tuy vậy, những năm gần đây, sự phát triển của công nghệ AI, nhận diện giọng nói và máy học hứa hẹn sẽ tạo ra một cuộc cách mạng mới về hình thức tương tác với các thiết bị công nghệ. Không bấm, không vuốt, người dùng tương lai có thể sẽ chuyển sang nói.

Trang 1

NG DNG TRỢ LÝ ẢO HI ĐÁP TRÊN H

Trang 2

Danh mục hình vẽ

Hình 1 Ví dụ về các mặt phân cách hai classes……….12

Hình 2 Ví dụ về Support vectors và margin……….12

Hình 3 Ví dụ về các biến slack  ………14

Hình 4 Giới thiệu về kernel ……… 15

Hình 5 Đồ thị vô hướng mô tả CRF……… 19

Hình 6 Các bước xử lý trong việc phân tích câu hỏi ………21

Hình 7 Kết quả độ đo F1 của SVM với kernel là linear………23

Hình 8 Kết quả độ đo F1 của SVM với kernel là poly……… …24

Hình 9 Kết quả độ đo F1 của SVM với kernel là sigmoid……… … 25

Hình 10 Kết quả độ đo F1 của SVM với kernel là lbf……….…… …26

Hình 11 Kết quả độ đo F1 của NaiveBayes ……… 26

Hình 12 Bảng tóm tắt thông tin về Trường Đại Học Bách Khoa Hà Nội ở Wikipedia 30

Hình 13 Sử dụng Regex tìm kiếm ứng cử viên là thời gian……… 32

Hình 14 Biểu đồ usecase tổng quát……… 34

Hình 15 Kiến trúc tổng thể của ứng dụng……… 38

Hình 16 Giao diện ứng dụng khi ra lệnh bằng giọng nói……… 38

Hình 17 Giao diện trả lời đáp án cho câu hỏi về giờ , ngày trong tuần , ngày lễ….…… 39

Hình 18 Giao diện trả lời đáp án cho câu hỏi về ngày âm lịch……….… 39

Hình 19 Giao diện trả lời đáp án cho câu hỏi địa điểm xung quanh……… 40

Hình 20 Giao diện trả lời đáp án cho câu hỏi tin tức và giá sản phẩm……….……….40

Hình 21 Giao diện trả lời đáp án cho câu hỏi về thông tin người ,địa điểm ,tổ chức…….41

Danh mục bảng Bảng 1 Ví dụ về truy vấn SPARQL ……….… 5

Bảng 2 Ví dụ về nhãn đầu ra NER cho câu hỏi về giá sản phẩm……….28

Bảng 3 Ví dụ về nhãn đầu ra NER cho câu hỏi về thông tin tổ chức……… 28

Bảng 4 Độ đo Accurancy sử dụng model CRF……….……… ……….29

Trang 3

Bảng 5 Đợ đo F1 của model CRF……… …… ….29

Bảng 6 Ví dụ về crawl từ Wikipedia……… …….31

Bảng 7 Ví dụ về snippet và title từ Google Search API……….….31

Bảng 8 Đặc tả use case hỏi giờ……… ……… ……….35

Bảng 9 Đặc tả use case hỏi ngày âm lịch……… ……….35

Bảng 10 : Đặc tả use case hỏi địa điểm xung quanh……….36

Bảng 11 Đặc tả use case hỏi giá sản phẩm……….……… 37

Bảng 12 Đặc tả use case hỏi thơng tin ………38

Bảng 13 Đặc tả use case hỏi tin tức……… …38

Danh mục từ viết tắt

SVM support vector machine NER Named Entity Recognition ĐATN Đồ Án Tốt Nghiệp

CRF Conditional random field NBC Nạve Bayes Classifier

Trang 4

4.1 Chuyển đầu vào âm thanh sang dạng văn bản 17

4.2 Xử lý câu hỏi với đầu vào được chuyển từ âm thanh sang văn bản 17

4.3 Nhận diện thực thể 18

4.4 Trích xuất tài liệu 18

5 Cơ sở lý thuyết 18

5.1 Cở sở lý thuyết về nền tảng Android 18

5.2 Phân loại văn bản bằng phương pháp học máy Support Vector Machine 19

5.3 Phân loại văn bản sử dụng thuật toán Naive Bayes 25

5.4 Nhận diện thực thể bằng Conditional Random Field (CRF) 27

Chương II Xây dựng trợ lý ảo với hệ hỏi đáp trên nền tảng Android 29

1 Phân tích bài toán 29

2 Phân tích câu hỏi 29

2.1 Phân loại câu hỏi 29

2.2 Trích xuất từ hỏi 35

2.3 Trích xuất thực thể 35

3 Trích xuất tài liệu 37

3.1 Trích xuất tài liệu bằng crawl dữ liệu từ 37

3.2 Trích xuất tài liệu sử dụng Google Search API 39

4 Trích xuất đáp án với những câu hỏi đơn giản 39

Trang 5

CHƯƠNG IV : KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 50

4.1 Kết luận 50

4.2 Hướng phát triển 50

TÀI LIỆU THAM KHẢO 51

Trang 6

Chương I ĐẶT VẤN ĐỀ VÀ GIỚI THIỆU VỀ HỆ HỎI ĐÁP1 Đặt vấn đề

Ngày nay điện thoại smartphone ngày càng phổ biến Không chỉ đơn thuần là dùng để gọi điện và nhắn tin như những năm trước kia Smartphone hiện tại có rất nhiều tiện ích cho con người như nghe nhạc , chụp ảnh , tìm kiếm thông tin, các ứng dụng tiện ích cá nhân,… Đi cùng với sự phát triển smartphone là sự tương tác giữa smartphone và người dùng Làm thế nào có thể sử dụng smartphone một cách dễ dàng ít thao tác nhất là những điều mà chúng ta muốn hướng đến Cùng với xu hướng đơn giản hóa cách người dùng sử dụng smartphone, máy tính, những trợ lý ảo thông minh đang xuất hiện ngày càng nhiều để thay đổi thói quen sử dụng thiết bị người dùng Trong khoảng 1 thập kỉ trở lại đây, vẫn chưa có một cuộc cách mạng nào thực sự có thể thay đổi thói quen của người dùng Tuy vậy, những năm gần đây, sự phát triển của công nghệ AI, nhận diện giọng nói và máy học hứa hẹn sẽ tạo ra một cuộc cách mạng mới về hình thức tương tác với các thiết bị công nghệ Không bấm, không vuốt, người dùng tương lai có thể sẽ chuyển sang nói

Ưu điểm của ra lệnh giọng nói là giúp người dùng tương tác với thiết bị ít hơn nhưng có hiệu suất làm việc cao hơn Điều này rất cần thiết cho lối sống đa nhiệm Người dùng có thể vừa chuẩn bị bữa sáng, vừa nghe trợ lý ảo đọc tin tức Hay có thể vừa lái xe và ra lệnh tìm kiếm đường Giọng nói là hình thức tương tác giúp rút ngắn thời gian nhập lệnh tốt nhất hiện nay.Ngoài ra, trợ lý ảo nhận lệnh bằng giọng nói có thể giúp người dùng giảm dần thời gian sử dụng điện thoại di động, điều mà các ông lớn công nghệ bắt đầu quan tâm Lĩnh vực trợ lý ảo đang là mối quan tâm lớn và tạo ra sự cạnh tranh giữa các nhà phát triển công nghệ trí tuệ nhân tạo Kể từ năm 2011, khi Siri lần đầu tiên được tích hợp vào một chiếc smarphone, lĩnh vực trợ lý ảo áp dụng trí tuệ nhân tạo đã có nhiều bước tiến vượt bậc, mở ra một thời đại con người có thể giao tiếp với máy móc, thực hiện các tác vụ từ đơn giản đến phức tạp Hiện nay, trên thế giới đã có khá nhiều trợ lý ảo nổi tiếng như Siri (Apple), Google Assistant (Google), Amazon Alexa (Amazon), Cortana (Microsoft) Dù đang gây sốt tại Mỹ và châu Âu nhưng đối với người Việt, tất cả những công cụ trợ lý ảo như Siri, Google Assistant, Amazon Alexa, Cortana… đều chưa thể hiện được sức mạnh do vấn đề ngôn ngữ

Phát triển được trợ lý ảo là một nhiệm vụ khó, trợ lý ảo sử dụng trí tuệ nhân tạo lại càng khó hơn và tạo ra được trợ lý ảo áp dụng trí tuệ nhân tạo giao tiếp bằng tiếng Việt chắc chắn là một thách thức to lớn Hiện tại, dù đã từng có một vài công cụ trợ lý ảo bằng tiếng Việt cho người Việt nhưng đa phần mới dừng lại ở việc ChatBots chứ chưa thể xử lý ngôn ngữ tiếng Việt một cách tự nhiên

Nhận thấy việc phát triển trợ lý ảo ở Việt Nam đang phát triển Bản thân em phát triển một trợ lý ảo bằng giọng nói , cụ thể là hỗ trợ về hệ hỏi đáp giúp đỡ người dùng tìm kiếm thông tin ngắn gọn

Trang 7

Một số vấn đề mà em giải quyết trong ứng dụng này là : - Nhận diện giọng nói và là đầu vào cho ứng dụng

- Xác định yêu cầu của người dùng với đầu vào là câu hỏi bằng giọng nói được chuyển qua text

- Trich xuất đán án phù hợp với câu hỏi và đưa ra câu trả lời

2 Giới thiệu về hệ hỏi đáp

2.1 Lịch sử phát triển và các hệ hỏi đáp thực tế

Ngày nay với sự phát triển mạnh mẽ của công nghệ và kĩ thuật , cùng với sự bùng nổ về Internet Chúng ta có thể tìm kiếm mọi thứ trên Internet dễ dàng với sự trợ giúp của các công cụ tìm kiếm như Google, Bing, Yahoo Search hay Bách khoa toàn thư trực tuyến Wikipedia.Khi mà các công cụ tìm kiếm trả lại cho người dung lượng thông tin rất là lớn, lên đến hàng nghìn trang web mà phần nhiều không chứa những thông tin mà người dung mong muốn Làm thế nào để lấy được những đáp án ngắn gọn và chính xác nhất mà người dùng mong muốn

Hệ hỏi đáp (QA system) là một môn khoa học máy tính trong lĩnh vực trích xuất thông tin và xử lý ngôn ngữ tự nhiên (NLP), xây dựng hệ thống tự động trả lời các câu hỏi mà con người đưa vào bằng ngôn ngữ tự nhiên

Theo Wikipedia [1], hai hệ hỏi đáp ban đầu là BASEBALL [2] và LUNAR [3] BASEBALL được phát triển để trả lời câu hỏi người dung về ngày thi đấu , địa điểm và kế quả của các trận bóng chày LUNAR trả lời các câu hỏi về việc phân tích địa chất của các loại đá trên mặt trăng thu được từ tàu Apollo Trên thực tế , LUNAR đã được chứng minh tại hội nghị khoa học vào năm 1971 và nó có thể trả lời 90% các câu hỏi được đặt ra chưa từng được đào tạo trong hệ thống Các hệ hỏi đáp với lĩnh vực cụ thể được phát triển những năm tiếp theo Đặc điểm chung của các hệ thống này là chúng có cơ sở dữ liệu có cấu trúc cố định hoặc hệ thống kiến thức được tạo trong các lĩnh vực cụ thể

SHRDLU là một chương trình trả lời câu hỏi rất thành công được phát triển bởi Terry Winograd vào những cuối năm 60 đầu thập niên 70 Người dùng thực hiện một cuộc hội thoại với máy tính để có thể di chuyển, đặt tên cho các khối hoặc truy vấn trạng thái của một khối Trong đó các khối được chứa trong một hộp không gian ảo Sức mạnh của hệ thống này là sự lựa chọn một lĩnh vực cụ thể và với các luật được mã hóa trong chương trình

Hiện nay , hệ hỏi đáp được phát triển ngày càng thông minh và được sử dụng rộng rãi như các trợ lý ảo : Siri của IOS , Google Assistant của Android , Cortana của Windows Các trợ lý ảo này là các trợ lý cá nhân thông minh giúp cho người dùng sử dụng thiết bị một cách nhanh chóng hơn mà không phải dùng đến các thao tác tay bằng việc ra lệnh bằng giọng nói

2.2 Phân loại hệ hỏi đáp

Trang 8

Có nhiều cách phân loại hệ hỏi đáp dựa trên tiêu chí khác nhau như : theo miền ứng dụng, khả năng trả lời câu hỏi, hay theo cách giải quyết tiếp cận bài toán…

2.2.1 Phân loại theo miền ứng dụng (domain)

Hỏi đáp miền mở question answering) : Hệ thống xử lý hầu hết các câu hỏi và chỉ có thể dựa vào các ontology chung hay các mạng tri thức có sẵn như: wikipedia, bách khoa từ điển Mặt khác, các hệ thống này thường có nhiều dữ liệu phong phú dễ thu thập để trích xuất câu trả lời

Hỏi đáp miền đóng (Closed-domain question answering) : Hệ thống xử lý các câu hỏi trong một miền cụ thể (ví dụ : y học,giáo dục, thể thao…) Ngoài ra hệ hỏi đáp miền đóng có thể chỉ sử dụng trong tình huống một loại câu hỏi giới hạn, chẳng hặn như câu hỏi về mô tả hoặc khái niệm Xây dựng hệ hỏi đáp miền đóng được coi là dễ dàng hơn so với hệ hỏi đáp miền mở bởi chỉ cần khai thác một kho dữ liệu liên quan tới một lĩnh vực cụ thể (thường là ontology của miền cụ thể)

2.2.2 Phân loại theo khả năng trả lời câu hỏi

Mỗi câu hỏi thường có những câu trả lời ở dạng riêng, tùy vào mục đích câu hỏi để hệ thống trích xuất đáp án phù hợp Thường được chia thành các loại:

- Câu hỏi đơn giản : Trích suất đáp án từ những tài liệu có sẵn sau đó sử dụng các

suy luận để tìm mối quan hệ giữa câu hỏi và câu trả lời, ví dụ như “Chủ tịch Hồ

Chí Minh sinh năm bao nhiêu ?”, “tác giả của bài thơ Đất Nước là ai ?”

- Câu hỏi có câu trả lời Đúng hoặc Sai , Có hoặc Không

- Câu hỏi danh sách : Trả về danh sách các thực thể đối tượng là đáp án của câu hỏi

- Câu hỏi phức tạp : Là những câu hỏi về khái niệm, mô tả , cách thức , so sánh , nguyên nhân …

2.2.3 Phân loại theo cơ sở dữ liệu

Dựa vào loại cơ sở dữ liệu, hệ hỏi đáp được chia làm 2 loại:

2.2.3.1 Hệ hỏi đáp dữ liệu có cấu trúc:

Dữ liệu có cấu trúc dễ được xây dựng theo một cấu trúc nhất định và nhất quán , truy vấn dễ dàng Việc xây dựng dữ liệu đang còn phức tạp và hạn chế.Những kho dữ liệu này thường mô tả thông tin bằng ngôn ngữ RDF (Resource Description Framework).Mỗi đối tượng trong RDF được mô tả bởi các RDF statement (còn được gọi là bộ ba RDF).Một bộ 3 RDF bao gồm (chủ thể, thuộc tính hoặc quan hệ, đối tượng) Ví dụ câu “Hà Nội là thủ đô của Việt Nam” có chủ thể là “Hà Nội”, quan hệ là “là thủ đô”, đối tượng là “Việt Nam” RDF được xây dựng dựa trên XML

Ví dụ dữ liệu về đối tượng Empire Burlesque biểu diễn bởi RDF:

Trang 9

<?xml version="1.0"?> <rdf:RDF

xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:cd="http://www.recshop.fake/cd#">

<rdf:Description

rdf:about="http://www.recshop.fake/cd/Empire Burlesque"> <cd:artist>Bob Dylan</cd:artist>

<cd:country>USA</cd:country>

<cd:company>Columbia</cd:company> <cd:price>10.90</cd:price>

<cd:year>1985</cd:year> </rdf:Description>

</rdf:RDF>

Để truy vấn dữ liệu RDF ta sử dụng ngôn ngữ truy vấn là SPARQL SPARQL là ngôn ngữ và giao thức truy vấn tiêu chuẩn cho Dữ liệu Mở Liên kết (Linked Open Data) trên web hoặc trong cơ sở dữ liệu đồ họa ngữ nghĩa (còn được gọi là RDF triplestore - bộ 3 RDF),viết tắt của Giao thức SPARQL “SPARQL Protocol And RDF Query Language”, cho phép những người sử dụng truy vấn thông tin từ các cơ sở dữ liệu hoặc bất kỳ nguồn dữ liệu nào có thể được ánh xạ tới RDF SPARQL được tạo ra là một chuẩn để truy cập dữ liệu RDF làm việc theo nhóm của World Wide Web Consortium, và được coi là một trong những công nghệ chủ chốt của web semantic

Ví dụ sử dụng SPARQL để trả lời câu hỏi: Ai là tổng thống Argentina

Trang 10

Truy vấn SPARQL Kết quả Tìm đối tượng có kiểu là Country và có

nhãn là Argentina:

SELECT DISTINCT ?x0 WHERE {

?x0 rdf:type DBpedia-owl:Country ?x0 rdfs:label "Argentina"@en }

x0: Argentina

Tìm đối tượng vị trí lãnh đạo của Argentina có tên là “President”: SELECT DISTINCT ?x1

WHERE {

?x0 rdf:type DBpedia-owl:Country ?x0 rdfs:label "Argentina"@en ?x0 dbpprop:leaderTitle ?x1 ?x1 dbpprop:post "President"@en }

}

x3:

"Cristina Fernández de Kirchner"@en "Cristina Fernández de Kirchner"@de "Cristina Fernández de Kirchner"@es "Cristina Fernández de Kirchner"@it "Cristina Fernández de Kirchner"@fr

Bảng 2 Ví dụ về truy vấn SPARQL

Một trong những kho dữ liệu có cấu trúc lớn nhất là DBpedia, là một tập dữ liệu liên kết có trích xuất từ Wikipedia bao gồm 3.4 triệu khái niệm được mô tả bởi 1 tỷ triple và các tóm tắt trong 11 ngôn ngữ khác nhau Cấu trúc thông tin này được xây dựng sẵn có trên World Wide Web DBpedia cho phép người dùng truy vấn các quan hệ và thuộc tính liên quan đến tài nguyên Wikipedia, bao gồm các liên kết tới dữ liệu liên kết

2.2.3.2 Phân loại theo cách tiếp cận

Tiếp cận nông (shalow): Nhiều phương pháp sử dụng trong Q&A dùng các kĩ thuật dựa trên từ khóa để định vị các câu, đọan văn có khả năng chứa câu trả lời từ các văn bản được trích chọn về Sau đó giữ lại các câu, đoạn văn có chứa chuỗi ký tự cùng loại với loại câu trả lời mong muốn (ví dụ các câu hỏi về tên người, địa danh, số lượng…) Tiếp cận sâu (deep): Trong những trường hợp khi mà hướng tiếp cận bề mặt không thể tìm ra câu trả lời, những quá trình xử lý về ngữ pháp, ngữ nghĩa và ngữ cảnh là cần thiết

Trang 11

để trích xuất hoặc tạo ra câu trả lời Các kĩ thuật thường dùng như nhận dạng thực thể (named-entity recognition), trích xuất mối quan hệ, loại bỏ nhập nhằng ngữ nghĩa,… Hệ thống thường sử dụng các nguồn tri thức như Wordnet, ontology để làm giàu thêm khả năng lập luận thông qua các định nghĩa và mối liên hệ ngữ nghĩa Các hệ thống hỏi đáp dựa theo mô hình ngôn ngữ thống kê cũng đang ngày càng phổ biến

2.3 Các thành phần chính trong hệ hỏi đáp

Hệ hỏi đáp có 3 module riêng biệt : Module xử lý câu hỏi có chức năng chính phân loại câu hỏi, Module xử lý tài liệu có chức năng chính trích xuất tài liệu có chứa đáp án, Module

xử lý đáp án có chức năng trích xuất câu trả lời

Thông thường, hệ hỏi đáp thường có các kịch bản sau: 1 Đầu tiên, người dùng đưa câu hỏi vào hệ thống QA

2 Tiếp theo bộ phận phân tích câu hỏi xác định trọng tâm của câu hỏi để nâng cao tính chính xác của hệ thống

3 Phân loại câu hỏi bằng cách xác định loại câu hỏi đó và đưa ra loại câu trả lời dự kiến

4 Thành phần truy xuất thông tin được sử dụng để truy xuất các tài liệu liên quan dựa trên các key words xuất hiện trong câu hỏi

5 Các tài liệu liên quan được truy xuất , được lọc và rút ngắn thành các đoạn dự kiến có chứa câu trả lời

6 Sau đó các đoạn được lọc ở trên được sắp xếp và chuyển đến Module xử lý câu trả lời

7 Dựa trên thể loại câu trả lời và các kỹ thuật nhận dạng khác , các câu trả lời được xác định

8 Trích xuất , và xác thực tính chính xác của đáp án

2.3.1.1 Module xử lý câu hỏi

Lấy câu hỏi ngôn ngữ tự nhiên làm đầu vào, chức năng tổng thể của module xử lý câu hỏi là phân tích và xử lý câu hỏi bằng cách tạo một số biễu diễn thông tin được yêu cầu Do đó, module xử lý câu hỏi được yêu cầu có các chức năng sau:

- Phân tích câu hỏi : thể hiện thông tin chính được yêu cầu để trả lời câu hỏi người

dùng Ví dụ với câu hỏi “Dòng sông nào dài nhất thế giới ?” thì thông tin chính

ở đây là “dòng sông dài nhất”

- Phân loại câu hỏi : Phân loại câu hỏi để xác định xem câu hỏi thuộc thể loại gì từ đó đưa ra thể loại câu trả lời tương tứng (ví dụ như hỏi về người , địa điểm , thời gian…)

- Sau khi phân tích và phân loại câu hỏi , modulde xử lý câu hỏi đưa ra danh sách các key words chuyển đến thành phần truy xuất thông tin trong module xử lý dữ liệu Quá trình trích xuất key words bằng việc tách từ và loại bỏ các stop words

(từ dừng) trong câu hỏi Ví dụ với câu hỏi “chiều cao của Lionel Messi là bao

Trang 12

nhiêu” sau khi tách từ và loại bỏ từ dừng ta được danh sách key words { chiều

cao, Lionel Messi }

2.3.1.2 Module xử lý tài liệu

Trong module này , các key words ở câu hỏi đưa vào hệ thống truy xuất thông tin, từ đó lấy ra một danh sách xếp hạng các tài liệu liên quan Module xử lý tài liệu thường dựa vào một hoặc nhiều hệ thống truy xuất thông tin để thu thập thông tin từ một bộ sưu tập tài liệu mà thông thường đều liên quan đến World Wide Web Các tài liệu được trả về bởi hệ thống truy xuất thông tin sau đó được lọc và ranking Do đó mục đích chính của module này là tạo ra một tập hợp các đoạn tài liệu được sắp xếp theo thứ tự có khả năng chứa câu trả lời chính xác Các chức năng trong module xử lý tài liệu :

- Trích xuất một bộ tài liệu và xếp hạng các kết quả này theo mức độ phù hợp Thông thường hệ thống trích xuất thông tin sử dụng mô hình không gian vector để đo độ tương đồng cosine giữa tập tài liệu và câu hỏi.Khi hệ thống QA muốn lấy tài liệu chứa tất cả key words, dẫn đến việc các key words đã được lựa chọn cẩn thận và được điều chỉnh tại module xử lý câu hỏi Các hệ thống trích xuất thông tin dựa trên sự tương đồng cosine thường trả về các tài liệu ngay cả khi tài liệu không chứa tất cả các key words Hệ thống trích xuất thông tin thường được đánh giá bằng phép đo Precision-Recall

- Lọc các tài liệu ứng viên được hệ thống truy xuất trả về : Số lượng tài liệu được hệ thống truy xuất thông tin trả về có thể rất lớn, việc lọc tài liệu được sử dụng để giảm số lượng tài liệu ứng cử viên và để giảm số lượng văn bản ứng cử viên từ mỗi tài liệu Việc lọc ứng viên dựa trên nguyên tắc tài liệu chứa các từ hỏi trong một vài đoạn văn lân cận, thay vì phân tán trên toàn bộ tài liệu Do đó, nếu tất cả các từ khóa được tìm thấy trong một số N đoạn liên tiếp, thì tập hợp các đoạn đó sẽ được trả về, nếu không tài liệu đó sẽ bị loại bỏ

- Xếp hạng các đoạn văn theo mức độ hợp lý có chứa câu trả lời đúng Việc sắp xếp mức độ hợp lý bằng thuật toán Radix sort Radix sort dựa vào 3 tiêu chí để sắp xếp:

i Số lượng từ trong câu hỏi có trong đoạn văn ii Số lượng từ giữa 2 từ khóa cách xa nhất iii Số lượng từ khóa còn thiếu trong đoạn văn

Việc rút ngắn tài liệu thành các đoạn làm cho hệ thống nhanh hơn Thời gian trả lời của hệ thống QA rất quan trọng do tính chất tương tác của việc trả lời câu hỏi Điều này đảm bảo rằng một số lượng đoạn văn hợp lý được chuyển tới module xử lý câu trả lời

2.3.1.3 Module xử lý đáp án

Là giai đoạn cuối cùng trong hệ QA, module xử lý đáp án chịu trách nhiệm xác định,

Trang 13

trích xuất và xác thực các câu trả lời từ tập hợp các đoạn ứng viên Mục tiêu chính của module này là trích xuất các câu trả lời tiềm năng ngắn gọn Module xử lý đáp án có những phương pháp trích xuất đáp án như :

- Phương pháp dựa trên mẫu : Phương pháp tìm kiếm các ứng cử viên bằng việc kiểm tra xem các ứng cử viên có xuất hiện trong các mẫu được định nghĩa sẵn hay không Ví dụ với câu hỏi về năm sinh : “X sinh năm bao nhiêu ?” , với những đáp án có dạng “Bill Gates sinh năm 1955” , “Lê Lợi (1385-1433)” ,hệ thống đưa ra các mẫu được định nghĩa sẵn như “<NAME>sinh năm<TIME>” hoặc “<NAME>(<TIME>-<TIME>)” qua đó dựa vào mẫu mà trích xuất ra đáp án

- Phương pháp nhận diện thực thể : Hiện nay phương pháp nhận diện thực thể được sử dụng phổ biến Phương pháp này thường sử dụng cho những câu hỏi đơn giản ví dụ như người , địa điểm, thời gian …Ví dụ nếu phân loại câu hỏi về hỏi người thì ta sử dụng nhận diện thực thể giữ lại những ứng cử viên có nhãn là người còn những từ có nhãn địa điểm, tổ chức , … bỏ đi Sau đó sử dụng một số phương pháp trích chọn để tìm đáp án phù hợp

- Đối với câu trả lời của lớp định nghĩa, mô tả … thì ta có thể sử dụng độ đo tương đồng Cosine được tính giữa câu hỏi và các đoạn trả lời được trích xuất từ tài liệu, câu trả lời có điểm tương tự cao nhất được lấy ra

- Ngoài ra chúng ta có thể sử dụng trích xuất đáp án bằng keywords

Module trích xuất câu trả lời phụ thuộc vào việc xác định trọng tâm câu hỏi hoặc bất kỳ đặc trưng nào thu được trong module phân tích câu hỏi Những ứng cử viên sau đó được chấm điểm dựa trên sự giống nhau với trọng tâm câu hỏi Câu trả lời được lấy ra với ứng cử viên điểm cao nhất Xác minh tính tin cậy của đáp án có thể bằng cách tính số lần xuất hiện của đáp án trong các tài liệu khác nhau

3 Mục tiêu và phạm vi đề tài

Đồ án hướng tới việc xây dựng một ứng dụng trợ lý ảo có thể trả lời cho chúng ta với môt số miền hỏi cụ thể với đầu vào là giọng nói Ứng dụng có hai hệ thống chính là phân tích câu hỏi và trích xuất câu trả lời Chức năng của ứng dụng sẽ giúp người dùng trả lời một số câu hỏi :

- Hỏi về thời gian , ví dụ : “bây giờ lấy mấy giờ ?”, “ngày hôm nay là ngày bao nhiêu”, “ngày Quốc tế thiếu nhi vào ngày nào” , “ngày 17 tháng 8 là ngày bao nhiêu âm lịch”, …

- Hỏi về địa điểm xung quanh , ví dụ “cây ATM xung quanh”, “gần đây có quán bún ốc nào không”, “trạm xăng ở khu vực Cầu Giấy”, …

- Hỏi về tin tức , ví dụ “Hôm nay có tin gì mới không” , “tin tức về thể thao” … - Hỏi giá sản phẩm , ví dụ “giá của chiếc điện thoại IPhone X”

- Những câu hỏi đơn giản về thông tin của những người nổi tiếng , địa điểm , tổ chức ví dụ “thông tin về Ronaldo”, “chủ tịch Hồ Chí Minh sinh năm bao nhiêu”,

Trang 14

“CEO của Apple là ai”, “diện tích của Việt Nam là bao nhiêu” , “đạo diễn bợ phim Titanic là ai”,…

Hệ hỏi đáp được triển khai trên hệ điều hành Android ở smartphone Người dùng sử dụng ứng dụng bằng giọng nĩi

4 Định hướng giải pháp

Các giải pháp mà em áp dụng để xây dựng ứng dụng như sau :

- Với việc đầu vào là giọng nĩi , đồ án hướng đến việc sử dụng mợt dịch vụ nhận giạng giọng nĩi và chuyển âm thanh thành văn bản sao cho đúng chính tả , đúng ngữ pháp

- Sau khi cĩ được đầu vào là văn bản Bước tiếp theo là xử lý câu hỏi , ứng dụng sẽ sử dụng thuật tốn học máy để phân loại câu hỏi thuợc yêu cầu gì và trích xuất những đặc trưng trong câu hỏi

- Nhận diện thực thể bằng thuật tốn CRF (Condition Random Fields) để tìm kiếm dữ đến đối tượng được hỏi

- Trích xuất tài liệu cĩ chứa đáp án, hệ thống sử dụng Search API của cơng cụ tìm kiếm Google và cơng nghệ crawl dữ liệu từ Wikipedia

- Sử dụng các phương pháp trích chọn đáp án để đưa ra đáp án phù hợp và liên quan tới câu hỏi mà người dùng đưa ra

4.1 Chuyển đầu vào âm thanh sang dạng văn bản

Với việc đầu vào là âm thanh , chúng ta cần chuyển âm thanh thành văn bản để phân tích và xử lý trong những bước tiếp theo Hiện tại cĩ những dịch vụ hỗ trợ nhận dạng giọng nĩi rất tốt trên thế giới Mợt trong những dịch vụ nhận dạng tiếng Việt nổi bật cĩ đợ chính xác cao và hồn thiện đĩ là Google Speech Recognition Qua nhiều lần kiểm tra em thấy việc nhận diện giọng nĩi rất tốt và đúng chính tả Tuy nhiên cĩ mợt nhược điểm là chỉ sử dụng được khi máy đã kết nối mạng

4.2 Xử lý câu hỏi với đầu vào được chuyển từ âm thanh sang văn bản

Để xác định xem câu hỏi yêu cầu gì Trong ứng dụng này em cĩ chia các yêu cầu thành các class : thời gian (time) , sản phẩm (hỏi giá), tin tức (news), địa điểm xung quanh (location), và thực thể (entity) Nếu câu hỏi thuợc class entity , em sẽ phân loại văn bản tiếp cĩ các class : người (person) , địa điểm (location_2), tổ chức (group),thời gian (time_2), number và other

Để xác định yêu cầu người dùng Em sử dụng thuật tốn học máy để phân lớp văn bản Em xin đề xuất 2 thuật tốn học máy phân loại văn bản rất tốt hiện nay đĩ là Nạve Bayes và Support Vector Machine (SVM) Thuật tốn SVM hoạt đợng rất tốt trên khơng gian cĩ số chiều cao cụ thể là văn bản

Sau khi phân loại văn bản , đối với câu hỏi thuợc lớp entity , em trích xuất các từ hỏi để tiến hành xử lý trong giai đoạn tiếp theo

Trang 15

4.3 Nhận diện thực thể

Sau khi phân loại được câu hỏi thuộc yêu cầu gì , việc nhận diện thực thể trong câu hỏi rất quan trọng Mục đích của việc làm này là xác định đối tượng được hỏi từ đó mà ta có thể trích chọn những tài liệu và đán án phù hợp Hiện này , có rất nhiều phương pháp để giải quyết bài toán nhận diện thực thể Một số phương pháp học máy tiêu biểu được sử dụng như: Trường điều kiện ngẫu nhiên (Conditional Random Fields - CRFs), Máy hỗ trợ vector (Support Vector Machine - SVM), hay Cực đại hóa Entropy… Các phương pháp này đã nghiên cứu kỹ lượng trong thời gian dài và đặc biệt thích hợp với các ngôn ngữ có nguồn dữ liệu ít như Tiếng Việt Em xin đề xuất sử dụng phương pháp Trường điệu kiện ngẫu nhiên (CRFs) để giải quyết bài toán nhận diện thực thể CRF là một mô hình xác suất cho các bài toán dự đoán có cấu trúc và đã được áp dụng rất thành công trong rất nhiều lĩnh vực như thị giác máy tính, xử lý ngôn ngữ tự nhiên, sinh-tin học…Các nhãn mà em sử dụng trong bài toán này gồm : LOCATION, PLACE, PRODUCT, PERSON, ORGANIZATION, NEWS

4.4 Trích xuất tài liệu

Ở giai đoạn này , ứng dụng sẽ tìm kiếm và đưa ra những tài liệu liên quan đến câu hỏi

Đối với câu hỏi về giá sản phẩm em crawl dữ liệu giá sản phẩm ở website : “websosanh.vn” và câu hỏi về tin tức em crawl dữ liệu ở website : “baomoi.com” Đối với câu hỏi về entity

em crawl dữ liệu từ Wikipedia và sử dụng Google Search API

4.5 Trích xuất và trả về đáp án cho người dùng

Ứng dụng trợ lý ảo sẽ giúp người dùng trích xuất đáp án phù hợp từ tài liệu đã được trích xuất Ở bước này , ứng dụng sử dụng các phương pháp như : nhận diện thực thể , kiểm tra sự tương đồng của các từ , xếp hạng đáp án … để đưa ra đán án phù hợp và ngắn gọn cho người dùng

5 Cơ sở lý thuyết

5.1 Cở sở lý thuyết về nền tảng Android 5.1.1 Giới thiệu về Android

Android là một hệ điều hành có mã nguồn mở dựa trên nền tảng Linux được thiết kế dành riêng cho các thiết bị di động có màn hình cảm ứng như điện thoại thông minh và máy tính bảng Ban đầu, hệ điều này này được phát triển bởi công ty Android, với sự hỗ trợ tài chính từ Google, sau đó chính Google đã mua lại công ty này và tiếp tục phát triển Android trở thành một nền tảng hiệu quả hơn

Trang 16

xem, đó là một Activity Activty giúp người dùng tương tác với hệ thống, thực hiện các chức năng cần thiết trên đó, chuyển đổi qua lại giữa các màn hình giao diện/ chức năng.Thường thường khi sử dụng Activity chúng ta sẽ kết thừa từ lớp cha của nó là Activity ( tất nhiên hiện tại Android SDK ở các phiên bản mới đã có nhiều subActivity hỗ trợ chúng ta trong từng trường hợp thuận tiện )

• Services : thành phần chạy ẩn trong Android từ lúc chạy cho tới khi thiết bị cầm tay tắt đi Service sử dụng để update dữ liệu, đưa ra các cảnh báo (Notification) và không bao giờ hiển thị cho người dùng thấy

• Broadcast Receivers : Broadcast receiver được sử dụng trong nhiều trường hợp, ví dụ: chúng ta có thể chuyển dữ liệu từ service lên activity (ngoài sử dụng binding) chúng ta có thể sử dụng broadcast để gửi dữ liệu Hoặc trong các ứng dụng như hẹn giờ, khi đến giờ hẹn, ứng dụng sẽ sử dụng broadcast báo thức, tạo ra notification trên màn hình để báo cho người dùng biết

• Content providers : Một nguồn cung cấp thành phần cung cấp nội dung dữ liệu từ một ứng dụng khác theo yêu cầu Yêu cầu đó được xử lý bởi các phương

thức của lớp ContentResolver Các dữ liệu có thể được lưu trữ trong hệ thống

tập tin, cơ sở dữ liệu hoặc một nơi nào đó khác hoàn toàn

5.2 Phân loại văn bản bằng phương pháp học máy Support Vector Machine 5.2.1 Thuật toán

Thuật toán SVM ban đầu được tìm ra bởi Vladimir N Vapnik và dạng chuẩn hiện nay sử dụng được tìm ra bởi Vapnik và Corinna Cortes năm 1995 SVM rất hiệu quả để giải quyết các bài toán với dữ liệu có số chiều lớn như các vector biểu diễn văn bản Thuật toán SVM ban đầu được thiết kế để giải quyết bài toán phân lớp nhị phân (hai lớp) Thuật toán được cho trước một số điểm dữ liệu cùng với nhãn của chúng thuộc một trong hai lớp cho trước Mục tiêu của thuật toán là xác định xem một điểm dữ liệu mới sẽ được thuộc về lớp nào Mỗi điểm dữ liệu được biểu diễn dưới dạng một vector p-chiều, và ta muốn biết liệu có thể chia tách hai lớp dữ liệu bằng một siêu phẳng p − 1 chiều Đây gọi là phân loại tuyến tính Có nhiều siêu phẳng có thể phân loại được dữ liệu Một lựa chọn hợp lý trong chúng là siêu phẳng có lề lớn nhất giữa hai lớp

Cho tập huấn luyện:

Trang 17

D ={ (( ,x yii)) | xip

R , yi{-1,+1} }n1i =

Với yi mang giá trị -1 hoặc + 1 , xác định lớp của điểm xi Mỗi xilà một vectơ thực

p-chiều Ta cần tìm siêu phẳng có lề lớn nhất chia tách các điểm có yi= 1 và các điểm có yi

= -1

Hình 1: Ví dụ về các mặt phân cách hai classes

Làm thế nào để tìm được mặt phân chia tốt nhất trong các mặt phân chia? Các điểm gần nhất với các siêu phẳng được gọi là các Support Vectors.Việc tìm mặt phân chia tốt nhất là việc tối ưu hóa : 1 Support Vectors có khoảng cách lớn nhất tới siêu phẳng (mặt phân chia) 2 Hai lớp nằm trên các mặt khác nhau của siêu phẳng

Hình 2: Ví dụ về Support vectors và margin

Khoảng cách (margin) từ một điểm Support Vectors (x yn, n) đến siêu phẳng có phương trình wTx b+ =0 được xác định bởi :

Trang 18

1arg minw

Subject to : 1−yn(wTxn +   =b)0,n1, 2, ,N

Đưa bài toán về phương trình Lagrangian :

 theo w và b bằng 0: Ta tính được :

nn

Trang 19

Hình 3 : Ví dụ về các biến slack 

Trang 20

1, , 2

1()arg min

Hình 4 a: Dữ liệu của hai classes là không phân biệt tuyến tính trong không gian hai chiều

b: Các điểm dữ liệu chuyển sang chiều không gian 3 chiều và đã trở nên phân biệt tuyến tính

Kernel SVM là việc đi tìm một hàm số biến đổi dữ liệu x từ không gian feature ban đầu thành dữ liệu trong một không gian mới bằng hàm số ( )x Hàm số này cần thỏa mãn mục

đích của chúng ta: trong không gian mới, dữ liệu giữa hai classes là phân biệt tuyến

tính hoặc gần như phần biệt tuyến tính

Một số ví dụ về hàm Kernel

Trang 21

( , )exp()

kxz =− xz ,  0• Sigmoid: k x( , )z =tanh(xTz+r)

5.2.2 Phân lớp đa lớp với SVM

Các phương pháp Support Vector Machine đã đề cập (Hard Margin, Soft Margin, Kernel) đều được xây dựng nhằm giải quyết bài toán Binary Classification, tức bài toán phân lớp với chỉ hai classes.Các mô hình làm việc với bài toán có 2 classes còn được gọi là Binary classifiers Một cách tự nhiên để mở rộng các mô hình này áp dụng cho các bài toán multi-class classification, tức có nhiều classes dữ liệu khác nhau, là sử dụng nhiều binary classifiers và các kỹ thuật như one-vs-one hoặc one-vs-rest

a One vs rest

Giả sử cần phải nhận dạng K lớp thì cần sử dụng K SVM SVM thứ i sẽ phân biệt lớp thứ i và các lớp còn lại (i là lớp -1, còn lại là lớp 1) Một mẫu thử x sẽ được kiểm tra trên K SVM này Hàm nhận dạng SVM thứ i nào cho ra kết quả có giá trị bé nhất thì mẫu thử x thuộc lớp i đó

b One vs one

Xây dựng rất nhiều bộ binary classifiers cho từng cặp classes Bộ thứ nhất phân biệt class 1 và class 2, bộ thứ hai phân biệt class 1 và class 3, … Khi có một dữ liệu mới vào, đưa nó vào toàn bộ các bộ binary classifiers trên Kết quả cuối cùng có thể được xác định bằng cách xem class nào mà điểm dữ liệu đó được phân vào nhiều nhất (major voting)

Hoặc với Logistic Regression thì ta có thể tính tổng các xác suất tìm được sau mỗi bộ binary

Trang 22

5.3 Phân loại văn bản sử dụng thuật toán Naive Bayes 5.3.1 Thuật toán

Naive Bayes Classification (NBC) là một thuật toán phân loại dựa trên tính toán xác suất dựa theo công thức Bayes Naive Bayes Classification là một trong những thuật toán ứng dụng nhiều trong các lĩnh vực Machine learning dùng để đưa các dự đoán chính xác nhất dự trên một tập dữ liệu đã được thu thập Naive Bayes là một thuật toán đơn giản nhưng mạnh mẽ đáng ngạc nhiên cho mô hình dự đoán Nó thuộc vào nhóm Supervised Machine Learning Algorithms

Định luật Bayes:

( | ) ( )( | )

( )

P B AP AP A B

- P(B|A) là xác suất xảy ra B khi biết A xảy ra

- P(A) là xác suất sảy ra của riêng A mà không quan tâm đến B - P(B) là xác suất xảy ra của riêng B mà không quan tâm đến A Áp dụng trong bài toán phân loại, các dữ kiện cần có:

- D: tập dữ liệu huấn luyện đã được vector hoá dưới dạng =(x x1, 2, ,xn) - Ci: tập các tài liệu của D thuộc lớp Ci với i={1,2,3,…}

- Các thuộc tính x x1, 2, ,xnđộc lập xác suất đôi một với nhau Theo định lý Bayes :

( | ) ( )( | )

Trang 23

Cĩ 3 mơ hình thuật tốn Naive Bayes thường sử dụng là: mơ hình Bernoulli , mơ hình

Multinomial và mơ hình Gaussian

a Gaussian Nạve Bayes

Với mỗi chiều dữ liệu i và mợt class c, xituân theo mợt phân phối chuẩn cĩ kỳ vọng  và phương sai ci 2

 :

( | ) ( | , ) exp ( )22

arg max

b Multinomial Nạve Bayes

Ở mơ hình này các feature vector là các số tự nhiên biểu diễn số lần xuất hiện của từ đĩ trong văn bản

Khi đĩ ta tính xác suất như sau : ( | )

Ncip x c

Nc là tổng số từ (kể cả lặp) xuất hiện trong class c Nĩi cách khác, nĩ là tổng số từ trong tồn bợ các văn bản thuợc vào class c

Cơng thức trên cĩ hạn chế là khi từ xi khơng xuất hiện lần nào trong văn bản, ta sẽ cĩ N =ci 0 Điều này làm cho p x c =( i | ) 0, dẫn đến vế phải của (5) bằng 0 bất kể các giá trị cịn lại cĩ lớn thế nào Việc này cĩ kết quả khơng chính xác

Để khắc phục vấn đề này, người ta sử dụng kỹ thuật gọi là Laplace Smoothing bằng cách cợng thêm vào cả tử và mẫu để giá trị luơn khác 0

( | ) cii

Np x c

+=

Trang 24

c Bernouli Nạve Bayes

Ở mơ hình này, các feature vector là các giá trị nhị phân 0, 1 Trong đĩ 1 thể hiện từ cĩ xuất hiện trong văn bản, 0 thể hiện từ đĩ khơng xuất hiện trong văn bản

dữ liệu quan sát nhằm hỗ trợ cho quá trình phân lớp

Cho mợt đồ thị vơ hướng khơng cĩ chu trình G = (V, E), ở đây V là tập các đỉnh của đồ thị và E là tập các cạnh vơ hướng nối các đỉnh đồ thị Các đỉnh V biểu diễn các thành phần của biến ngẫu nhiên Y sao cho tồn tại ánh xạ mợt-mợt giữa mợt đỉnh và mợt thành phần của yv của Y Ta nĩi (Y|X) là mợt trường ngẫu nhiên cĩ điều kiện khi với điều kiện X, các biến ngẫu nhiên YV tuân theo tính chất Markov đối với đồ thị G:

( v|,,)( v|,,( ))

P YX Y v =P YX Y N v

Ở đây, N(v) là tập tất cả các đỉnh kề với v Như vậy, mợt CRF là mợt trường ngẫu nhiên phụ thuợc tồn cục vào X Kí hiệu X =(X X1, 2, ,Xn),Y =( ,Y Y1 2, ,Yn)

Hình 5 : Đồ thị vơ hướng mơ tả CRF

Kí hiệu X là biến ngẫu nhiên nhận giá trị là chuỗi dữ liệu cần phải gán nhãn và Y là biến ngẫu nhiên nhận giá trị là chuỗi nhãn tương ứng Mỗi thành phần yi của Y là mợt biến ngẫu nhiên nhận giá trị trong tập hữu hạn các trạng thái S Trong bài tốn nhận dạng thực thể định danh, X cĩ thể nhận giá trị là các câu trong văn bản, Y là mợt chuỗi ngẫu nhiên các tên thực thể tương ứng với các câu này và mỗi mợt thành phần yi của Y cĩ miền giá trị là tập

tất cả các nhãn tên thực thể (I-PER, B-PER, …)

Dữ liệu đầu vào của chúng ta là mợt câu Để dự đốn thực thể từ hiện tại ta dựa vào những từ ở trước và sau từ hiện tại Để mơ hình hĩa điều này , ta sẽ sử dụng Feature Functions, ví dụ với các tham số của hàm sẽ là :

1 Vector đầu vào X

Ngày đăng: 25/06/2024, 17:37

Xem thêm:

TÀI LIỆU CÙNG NGƯỜI DÙNG

  • Đang cập nhật ...

TÀI LIỆU LIÊN QUAN