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.
Xây dựng trợ lý ảo với hệ hỏi đáp trên nền tảng Android
Phân tích bài toán
Để xây dựng hệ hỏi đáp trên nền tảng Android ta chia thành các bước chính:
• Nhận đầu vào câu hỏi là giọng nói được chuyển qua dạng text
• Phân tích câu hỏi
• Trích xuất tài liệu liên quan đến câu hỏi
• Trích xuất đáp án từ tài liệu có được ở bước trên
Phân tích câu hỏi
Trong phân tích câu hỏi, ta thực hiện các kĩ thuật phân loại câu hỏi, loại bỏ từ dừng, lọc danh sách từ hỏi và nhận diện các thực thể trong câu hỏi
Hình 6 : Các bước xử lý trong việc phân tích câu hỏi
Phân loại câu hỏi là bước quan trọng trong quá trình phân tích câu hỏi, giúp ta có thể xác định được yêu cầu và nội dung của câu hỏi mà người dùng muốn
2.1.1 Huấn luyện dữ liệu bằng SVM
2.1.1.1 Tạo dữ liệu Để thu thập dữ liệu là giọng nói được chuyển sang văn bản sao cho đúng với phát âm mà người dùng truyền vào Do việc nhận dạng giọng nói của ứng dụng sử dụng Google Speech Recognition nên em tạo dữ liệu bằng cách sử dụng Google Voice để thu giọng nói của mình và chuyển sang văn bản Em đã tạo được hơn 170 câu hỏi về địa điểm xung quanh, 55 câu
Trích xuất thực thể Trích xuất từ hỏi
30 hỏi về tin tức , 320 câu hỏi về giá sản phẩm, 160 câu hỏi về giờ và ngày lễ và 800 câu hỏi về (thực thể) bao gồm câu hỏi về người , địa điểm , tổ chức, số lượng, thời gian và các câu hỏi lĩnh vực khác
2.1.1.2 Tiền xử lý dữ liệu
Tách từ là một quá trình xử lý nhằm mục đích xác định ranh giới của các từ trong câu văn, cũng có thể hiểu đơn giản rằng tách từ là quá trình xác định các từ đơn, từ ghép… có trong câu.Trong tiếng Việt, dấu cách (space) không được sử dụng như 1 kí hiệu phân tách từ, nó chỉ có ý nghĩa phân tách các âm tiết với nhau Vì thế, để xử lý tiếng Việt, công đoạn tách từ (word segmentation) là 1 trong những bài toán cơ bản và quan trọng bậc nhất Ở phần tách từ này em sử dụng công cụ tách từ pivy của thầy Trần Việt Trung Bộ công cụ này có độ đo F1 đạt 97,86% , hỗ trợ việc tách từ trong câu chính xác cao
2.1.1.2.2 Chuẩn hóa văn bản sang vector
Trong quá trình phân loại, các văn bản được biểu diễn dưới dạng vector với các thành phần (chiều) của vector này là các trọng số của các từ Ở đây, chúng ta bỏ qua thứ tự giữa các từ cũng như các vấn đề ngữ pháp khác Dưới đây là phương pháp định trọng số từ thông dụng: a Tần suất từ (term frequency – TF): là tần suất xuất hiện của một từ trong một đoạn văn bản Với những đoạn văn bản có độ dài khác nhau, sẽ có những từ xuất hiện nhiều ở những đoạn văn bản dài thay vì những đoạn văn bản ngắn
Trong đó : f t d ( , ) - số lần xuất hiện từ t trong văn bản d
- tổng số từ trong văn bản d b TF-IDF
IDF : Inverse Document Frequency(Nghịch đảo tần suất của văn bản), giúp đánh giá tầm quan trọng của một từ.
Mục đích của việc tính IDF là giảm giá trị của các từ thường xuyên xuất hiện như “để”,
“này”, “kia” Do các từ này không mang nhiều ý nghĩa trong việc phân loại văn bản
Trong đó : D số văn bản trong tập D , mẫu số là số văn bản chứa từ t Nếu từ đó không xuất hiện trong văn bản thì mẫu số sẽ bằng 0 lúc đó phép chia không hợp lệ, cho nên ta thường cộng 1 vào mẫu số để cho mẫu số khác 0
Và cuối cùng TF-IDF bằng :
2.1.1.3 Sử dụng thư viên sklearn để tạo model phân loại SVM
Về bài toán phân loại văn bản, dữ liệu dạng text khá phức tạp nhiều chiều hay bị nhiễu Vì vậy em sử dụng Soft Margin với việc phân lớp Multi-class SVM Thư viện em sử dụng là sklearn của Python để huấn luyện và tìm kiếm tham số tối ưu cho mô hình Sklearn là thư viện phổ biến nhất của python, hỗ trợ hầu hết các thuật toán của machine learning một cách đơn giản, hiệu quả mà chúng ta không phải cài đặt lại
Trong ứng dụng này , em phân loại câu hỏi thành 2 lần Ở lần thứ 1 bao gồm phân loại các câu hỏi : hỏi ngày giờ , hỏi địa điểm xung quanh, hỏi giá sản phẩm, hỏi tin tức, hỏi thông tin về người , địa điểm, tổ chức (entity) Khi phân loại câu hỏi thuộc class entity Em phân loại câu hỏi thứ 2 bao gồm các nhãn : người , đia điểm , tổ chức , thời gian , numberic , và other(các câu hỏi còn lại)
Trong thư viện sklearn các method SVC, NuSVC và LinearSVC là các method có khả năng phân loại muilti-class.SVC và NuSVC là method tương tự nhau, nhưng bộ tham số lại khác nhau SVC sử dụng tham số C từ 0 đến vô cùng ,NuSVC sử dụng tham số C trong khoảng [0,1] Thông thường chúng ta hay sử dụng SVC LinearSVC được sử dụng khi tập dữ liệu là tuyến tính , nó ko có kernel
SVC cung cấp các kernel : ‘linear’, ‘poly’, ‘rbf’, ‘sigmoid’ Ta lần lượt thử các kernel để tìm ra kernel và tham số cho độ chính xác cao nhất.Em sử dụng công cụ GirdSearch của sklearn để tìm ra parameter tốt nhất cho mô hình, ở đây với tham số C em thử với các giá trị từ 10 − 3 đến 10 7 , và tham số gamma thử với các giá trị từ 10 − 5 đến10 3 với bước nhảy đều là 10
Kết quả accurancy với từng loại :
- Với mô hình phân loại thứ 1 : 97.72% Độ đo F1 :
Hình 7a : Kết quả độ đo F1 của SVM với kernel là linear
- Với mô hình phân loại thứ 2 : 86% Độ đo F1 :
Hình 7b : Kết quả độ đo F1 của SVM với kernel là linear
Kết quả accurancy với từng loại :
- Với mô hình phân loại thứ 1 : 95.78% Độ đo F1 :
Hình 8a: Kết quả độ đo F1 của SVM với kernel là poly
- Với mô hình phân loại thứ 2 : 73.33% Ứng với C = 0.001 và gamma = 100 Độ đo F1 :
Hình 8b: Kết quả độ đo F1 của SVM với kernel là poly
Kết quả accurancy với từng loại :
- Với mô hình phân loại thứ 1 : 97.72% Ứng với C = 100 và gamma = 0.1 Độ đo F1 :
Hình 9a : Kết quả độ đo F1 của SVM với kernel là sigmoid
- Với mô hình phân loại thứ 2 : 86% Độ đo F1 :
Hình 9b : Kết quả độ đo F1 của SVM với kernel là sigmoid
Kết quả accurancy với từng loại :
- Với mô hình phân loại thứ 1 : 97.72% Ứng với C = 100 và gamma = 0.1 Độ đo F1 :
Hình 10a: Kết quả độ đo F1 của SVM với kernel là rbf
- Với mô hình phân loại thứ 2 : 87.33% Ứng với C = 10 và gamma = 0.1 Độ đo F1 :
Hình 10b: Kết quả độ đo F1 của SVM với kernel là rbf
2.1.1.4 Sử dụng thư viên sklearn để tạo model phân loại Nạve Bayes Đối với mơ hình Nạve Bayes sau khi huấn luyện kết quả như sau
- Phân loại thứ 1 : 95.78% Với độ đo F1 là :
Hình 11a: Kết quả độ đo F1 của NaiveBayes
- Phân loại thứ 2 : 63.33% Với độ đo F1 là :
Hình 11b: Kết quả độ đo F1 của NaiveBayes
Em rút ra một vài nhận xét sau:
- So sánh với phương pháp Nạve Bayes thì SVM cho đợ chính xác cao hơn với kernel là RBF với tham số C = 100 và gamma = 0.1 cho bộ phân lớp đầu tiên với tham số C = 10 và gamma = 0.1 cho bộ phân lớp thứ 2 với độ chính xác đạt 87.33%
- Độ chính xác của mô hình cao nhưng đó chỉ là bộ dữ liệu bản thân tự tạo chưa được chính xác , các câu hỏi đang còn khá tương đồng chưa phong phú Nên mô hình này chưa được chính xác cao so với thực tế
Những từ dừng trong câu không có ý nghĩa gì nhiều trong câu Để trích xuất những từ hỏi ta loại bỏ những từ dừng trong câu , những từ còn lại là từ hỏi Những tài liệu có chứa nhiều từ hỏi thì khả năng tài liệu đó có chứa đáp án càng cao
Ví dụ: Question: chủ tịch Hồ Chí Minh quê ở đâu ?
Sau khi loại bỏ từ dừng ta thu được các từ hỏi
QA : [chủ tịch, Hồ Chí Minh, quê]
Việc trích xuất thực thể trong câu hỏi giúp chúng ta xác định được đối tượng cần hỏi Từ đấy ta trích xuất những tài liệu và đáp án liên quan đến đối tượng được hỏi
2.3.1 Nhận diện thực thể bằng Conditional Random Field (CRF)
Trích xuất tài liệu
3.1 Trích xuất tài liệu bằng crawl dữ liệu từ Để crawl dữ liệu em sử dụng thư viện jsoup của java Jsoup là Java HTML Parser Nói cách khac Jsoup là một thư viện được sử dụng để phân tích tài liệu HTML Jsoup cung cấp các API dùng để lấy dữ liệu và thao tác dữ liệu từ URL hoặc từ tập tin HTML Nó sử dụng các phương thức giống với DOM, CSS , JQuery để lấy dữ liệu và thao tác với dữ liệu Đối với câu hỏi về giá sản phẩm và câu hỏi về tin tức em tìm kiếm thực thể được trích rút ở bước trên , sau đó crawl dữ liệu cần thiết trên websosanh.vn và baomoi.com Đối với câu hỏi thông tin về nhân vật, địa điểm hay tổ chức Để có được dữ liệu về đối tượng mà ta cần hỏi, em crawl dữ liệu thông tin từ Wikipedia Sau Ở đây em sử dụng thuật
38 toán CRF trình bày ở trên để nhận diện đối tượng cần hỏi , sau đó sử dụng thư viện Wikipedia ở Python để tìm kiếm link bài viết về đối tượng Sau đó em dùng thư viện Jsoup để crawl bảng tóm tắt thông tin ở trang wikipedia và lưu chúng dưới dạng key – value :
Ví dụ bảng tóm tắt thông tin ở Wikipedia về “Trường Đại Học Bách Khoa Hà Nội”:
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
Sau khi crawl từ bảng em lưu về key-value:
Tên khác Bách Khoa Hà Nội
Loại hình Đại học công lập
Hiệu trưởng PGS.TS Hoàng Minh Sơn
Hiệu phó PGS.TS Trần Văn Tớp
GS.TS Đinh Văn Phong PGS.TS Nguyễn Văn Khang
Khuôn viên 26 ha Địa chỉ Số 1 Đại Cồ Việt, Hai Bà
Trưng, Hà Nội, Việt Nam
Vị trí Hà Nội, Việt Nam
Bảng 6: Ví dụ về crawl từ Wikipedia
3.2 Trích xuất tài liệu sử dụng Google Search API
Những công cụ tìm kiếm hiện nay có khả năng tìm kiểu nhanh và rất hiệu quả với những nguồn tài liệu phong phú tổng hợp từ các website Trong đó Google Seach là một trong những công cụ tìm kiếm phổ biến nhất hiện nay
Trong bước trích chọn tài liệu em có sử dụng Google Search API, em gửi truy vấn là câu hỏi và lấy ra 10 snippet và title kết quả trả về Mỗi snippet có phần trích đoạn của trang web có liên quan tới câu hỏi
Ví dụ về 5 snippet đầu tiên mà Google Search API trả về sau khi thực hiện truy vấn với câu hỏi “tổng thống Mỹ hiện nay là ai”
Câu hỏi tổng thống Mỹ hiện nay là ai
Nhiệm kỳ tổng thống Donald Trump – Wikipedia tiếng Việt
Nhiệm kỳ tổng thống Donald Trump bắt đầu vào buổi trưa ngày 20 tháng 1 năm
2017, thực hiện để mang lại lợi ích người lao động Mỹ và các nhà máy của Mỹ." Con số này được coi là ít hơn đáng kể so với khoảng 1,8 triệu người theo dõi
Donald Trump tổng thống trung thực nhất trong lịch sử nước Mỹ
Donald Trump tổng thống trung thực nhất trong lịch sử nước Mỹ hiện đại Washington Post là tờ báo lớn của Mỹ thiên tả và có khuynh hướng
Tổng thống Hoa Kỳ – Wikipedia tiếng Việt
Các cá nhân chủ trì Quốc hội Lục địa trong thời Cách mạng Mỹ và dưới Hiến pháp Để thực hiện bổn phận này, tổng thống được giao trách nhiệm nắm giữ 4
Trump nói về Venezuela: 'Hãy để đất nước bạn tự do' - BBC News
Tổng thống Mỹ Donald Trump vừa lên tiếng kêu gọi đích danh quân đội Bài phát biểu thể hiện nỗ lực tiếp tục thuyết phục các quan chức hướng lòng Khu vực này là nơi sinh sống của hàng chục ngàn người nhập cư
Tổng thống Mỹ tái khẳng định ngừng trừng phạt bổ sung với Triều
Tổng thống Mỹ Donald Trump khẳng định các biện pháp trừng phạt bổ là tôi sẽ không thực hiện chúng sau này”, Tổng thống Trump nói
Bảng 7: Ví dụ về snippet và title từ Google Search API
Trích xuất đáp án với những câu hỏi đơn giản
Email hcth@hust.edu.vn
Website http://www.hust.edu.vn/
Câu hỏi về ngày lễ em sử dụng dictionary để lưu ngày và tên ngày lễ sau đó sử dụng keywords đối chiếu
Trích xuất đáp án từ câu hỏi về giá sản phẩm , em crawl giá , tên sản phẩm , và nơi bán trả về cho người dùng Tương tự như câu hỏi về tin tức em crawl các link bài báo liên quan
Câu hỏi về địa điểm xung quanh , em nhận diện thực thể địa điểm cần hỏi sau đó bật ứng dụng Google Map tìm kiếm và hiển thị các địa điểm xung quanh mà người dùng tìm kiếm
Với những câu hỏi thông tin đơn giản về người như: ngày sinh, ngày mất, quê, thông tin, chiều cao , vợ , con cái ,….những câu hỏi về địa điểm như : diện tích, dân số, mật độ, GDP, địa chỉ, người đứng đầu , … những câu hỏi về tổ chức như : ngày thành lập, trụ sở, người sáng lập, tài sản ,… thì em sẽ trích xuất đáp án từ Wikipedia sau khi crawl về Với dữ liệu Wikipedia sau khi crawl lưu về dạng Key – Value ở HashMap Em lấy những từ hỏi sau khi trích xuất ở phần xử lý câu hỏi để bắt key words và đối chiếu với giá trị Key trong HashMap, đáp án sẽ là giá trị Value với Key tương ứng Khó khăn trong phương pháp này là phải xét tất cả trường hợp các từ hay cụm từ đồng nghĩa, vì vậy với một số từ hỏi em chuyển các từ đồng nghĩa về cùng một giá trị Key
Ví dụ hỏi các câu hỏi “Việt Nam có bao nhiêu người”, “số người ở Việt Nam”, “dân số
Việt Nam là bao nhiêu” các câu hỏi này đều hỏi một mục đích như nhau , em chuẩn hóa chúng về chung một mục đích hỏi là “dân số”
Nếu viêc tìm kiếm thông tin không có trên Wikipedia Em trích xuất đáp án từ các snippet được trả về từ Google Search API Hiện giờ em mới trích xuất đáp án các câu hỏi về người, địa điểm, tổ chức, và thời gian Từ các snippet ta phải tìm ra các câu chứa các cử viên là đáp án bằng việc tìm các các câu có chứa nhiều từ hỏi Nếu ứng cử viên nằm trong một câu chứa nhiều từ hỏi thì khả năng câu đó có ý nghĩa tương đồng với câu hỏi càng lớn Nếu ứng cử viên nằm trong một câu có chứa tất cả các từ hỏi thì xác xuất ứng cử viên đó là đáp án càng cao Sau khi tìm được các câu có chứa ứng cử viên , sử dụng nhận diện thực thể bằng tool underthesea (độ đo F1 của NER đạt 86.6%), để tìm các thực thể có khả năng là ứng cử viên ví dụ với câu hỏi về người thì nhãn PERSON được giữ lại những nhãn còn lại thì loại bỏ Ở trong đề tài này , đối với câu hỏi về người ,tổ chức hay địa điểm các thực thể có nhãn là PERSON , ORGANIZATION, LOCATION Đối với câu hỏi về thời gian em sử dụng biểu thức chính quy để trích xuất ra các ứng cử viên có dạng là thời gian Sử dụng biểu thức chính quy để tìm ra ứng cử viên là thời gian
Em đưa về một dạng chuẩn chung là : dd/mm/yyyy
Hình 13 : Sử dụng Regex tìm kiếm ứng cử viên là thời gian
Với câu hỏi về number thì ứng cử viên là những con số
Sau khi trích chọn được các ứng cử viên có khả năng là đáp án , em xếp hạng các ứng cử viên này bằng những cách sau :
- Số lần ứng cử viên xuất hiện ở các snippet
- Số lần ứng cử viên xuất hiện ở các tittle
- Số lần xuất hiện ứng cử viên trong chuỗi con chung dài nhất Ứng cử viên có xếp hạng cao nhất em lựa chọn đáp án đưa ra cho người dùng.
Tích hợp API
Do việc phân loại văn bản và nhận diện thực thể (NER) được sử dụng bằng ngôn ngữ python và phía ứng dụng sử dụng ngôn ngữ java Cho nên em sử dụng API để tích hợp vào ứng dụng trả về kết quả sau khi phân loại và nhận diện thực thể Hiện tại em dùng Heroku service để đáp ứng nhu cầu của ứng dụng
Heroku là nền tảng đám mây cho phép các công ty xây dựng, phân phối, theo dõi và mở rộng ứng dụng - Heroku cung cấp cách nhanh nhất để chuyển từ ý tưởng sang URL, bỏ qua tất cả những cơ sở hạ tầng phức tạp khó hiểu Heroku hỗ trợ nhiều ngôn ngữ lập trình như NodeJS, Ruby, Python, PHP, Java, Scala, Clojure, Go, Kotlin… Heroku cung cấp dịch vụ máy chủ đám mây giúp dễ dàng trong việc deloy ứng dụng Chúng ta có thể sử dụng dịch vụ của Heroku hoàn toàn miễn phí
PHÂN TÍCH VÀ THIẾT KẾ HỆ THỐNG
Phân tích hệ thống
Vì đây là ứng dụng xây dựng dựa trên hệ hỏi đáp , nên yêu cầu của dụng dựa trên đáp án trả về của ứng dùng Đáp án trả về phải chính xác , ngắn gọn và phù hợp với câu hỏi mà người dùng đưa vào Ứng dụng phải sử dụng dễ dàng , đơn giản Lệnh đưa vào phải dễ hiểu, phải thuộc miền chức năng của ứng dụng
3.1.2.1 Tổng quan chức năng Ứng dụng sẽ cung cấp các chức năng chính sau :
- Hỏi giờ : Người dùng sử dụng chức năng bằng cách ra lệnh bằng giọng nói hỏi về giờ hiện tại, hỏi ngày trong tuần , hỏi về các ngày lễ tết
- Hỏi ngày âm lịch : người dùng sử dụng chức năng bằng cách ra lệnh bằng giọng nói hỏi ngày âm lịch , ứng dụng sẽ chuyển ngày Dương lịch sang âm lịch
- Hỏi địa điểm xung quanh : người dùng có thể tìm kiếm các địa điểm, quán xá, hay cửa hàng xung quanh tại vị trí hiện tại hoặc ở một khu vực cụ thể
- Hỏi giá sản phẩm : ứng dụng giúp cho người dùng tra cứu dễ dàng giá của sản phẩm cần hỏi ở các nơi bán sản phẩm này
- Hỏi tin tức : Cung cấp cho người dùng tin tức trong ngày , hay tin tức trong lĩnh vực cụ thể mà người dùng quan tâm
- Hỏi về thông tin người nổi tiếng, địa điểm, tổ chức : Ứng dụng trả lời một số thông tin như tóm tắt về đối tượng , ngày sinh (mất), quê quán ,… hay một số câu hỏi về địa điểm và tổ chức như : diện tích, dân số ,ngày thành lập, …
- Hệ thống trả lời một số câu hỏi đơn giản về người , địa điểm, tổ chức , thời gian
Hình 14 : Biểu đồ usecase tổng quát
3.1.2.3 Đặc tả use case Đặc tả usecase “hỏi giờ”
Tên use case Hỏi giờ, ngày
Chức năng Trả về thời gian tại vị trí hiện tại hoặc thời gian tại một thành phố nào đó trên thế giới
Các bước thực hiện Từ lệnh giọng nói đầu vào các câu hỏi về giờ, ứng dụng xử lý tính toán và trả lời thời gian hiện tại cho người dùng
Ngoại lệ Nếu điện thoại chưa kết nối mạng , khi thực hiện lệnh bằng giọng nói sẽ thông báo chưa kết nối mạng Điều kiện Điện thoại đã kết nối mạng
Bảng 8: Đặc tả use case hỏi giờ Đặc tả usecase “hỏi ngày âm lịch”
Tên use case Hỏi ngày âm lịch
Chức năng Trả về ngày âm lịch tương ứng với ngày Dương mà người dùng muốn hỏi Các bước thực hiện Từ lệnh giọng nói đầu vào các câu hỏi về ngày âm lịch , hệ thống kiểm tra ngày Dương người dùng hỏi có đúng không, sau đó quy đổi ngày Dương sang ngày âm trả về cho người dùng
Ngoại lệ Nếu ngày Dương mà người dùng hỏi không chính xác , ứng dụng sẽ thông báo ngày đó không tồn tại Điều kiện Điện thoại đã kết nối mạng
Bảng 9 : Đặc tả use case hỏi ngày âm lịch Đặc tả use case “hỏi địa điểm xung quanh”
Tên use case Hỏi địa điểm xung quanh
Chức năng Mở bản đồ hiển thị các địa điểm xung quanh
Các bước thực hiện Từ lệnh giọng nói đầu vào các câu hỏi về địa điểm xung quanh, hệ thống xác định địa điểm trong câu hỏi , sau đó bật ứng dụng bản đồ và hiển thị các địa điểm xung quanh
Ngoại lệ Nếu điện thoại chưa bật vị trí thì ứng dụng yêu cầu người dùng bật xác định vị trí hiện tại Điều kiện Điện thoại đã kết nối mạng
Bảng 10 : Đặc tả use case hỏi địa điểm xung quanh Đặc tả usecase “hỏi giá sản phẩm”
Tên use case Hỏi ngày giá sản phẩm
Chức năng Trả về danh sách giá sản phẩm và nơi bán sản phẩm
Các bước thực hiện Từ lệnh giọng nói đầu vào các câu hỏi giá của sản phẩm, hệ thống nhận diện sản phẩm cần hỏi, sau đó crawl dữ liệu từ trang websosanh.vn và trả về giá và nơi bán của sản phẩm cho người dùng
Ngoại lệ Nếu điện thoại chưa kết nối mạng , hiện lên thông báo yêu cầu kết nối mạng Điều kiện Điện thoại đã kết nối mạng
Bảng 11: Đặc tả use case hỏi giá sản phẩm Đặc tả usecase “hỏi thông tin người , địa điểm, tổ chức”
Tên use case hỏi thông tin người , địa điểm, tổ chức
Chức năng Trả về các thông tin mà người dùng muốn hỏi
Các bước thực hiện Từ lệnh giọng nói đầu vào các câu hỏi thông tin, hệ thống nhận diện thực thể Trích xuất tài liệu liên quan đến thực thể và câu hỏi bằng việc crawl dữ liệu từ Wikipedia và Google Search API, sau đó sử dụng các phương pháp trích xuất đáp án để đưa ra kết quả phù hợp cho người dùng
Ngoại lệ Nếu điện thoại chưa kết nối mạng , hiện lên thông báo yêu cầu kết nối mạng Điều kiện Điện thoại đã kết nối mạng
Bảng 12: Đặc tả use case hỏi thông tin Đặc tả usecase “hỏi tin tức”
Tên use case Hỏi tin tức
Chức năng Trả về danh sách các bài báo từ liên quan đến lĩnh vực mà người dùng quan tâm Các bước thực hiện Từ lệnh giọng nói đầu vào các câu hỏi giá của hỏi tin tức, hệ thống nhận diện người dùng muốn hỏi tin tức gì, sau đó crawl các bài báo về tin tức đó trên baomoi.com và đưa ra các link bài báo cho người dùng xem
Ngoại lệ Nếu điện thoại chưa kết nối mạng , hiện lên thông báo yêu cầu kết nối mạng Điều kiện Điện thoại đã kết nối mạng
Bảng 13 : Đặc tả use case hỏi tin tức
Thiết kế hệ thống
Em xây dựng ứng dụng với kiến trúc có 4 module chính:
• Module nhận diện âm thanh : có chức năng nhận diện giọng nói của người dùng và chuyển đổi sang dạng văn bản thông qua dịch vụ nhận diện giọng nói của Google
• Module xử lý câu hỏi : chức năng của module này xác định yêu cầu của người dùng thông qua việc sử dụng thuật toán học máy phân loại văn bản , và trích xuất từ hỏi và thực thể trong câu hỏi bằng thuật toán CRF
• Module xử lý tài liệu : chức năng của module này là trích xuất hoặc tải tài liệu liên quan đến câu hỏi
• Module xử lý đáp án : chức năng của module này trích xuất đáp án từ tài liệu ở bước trên đưa ra câu trả lời phù hợp và chính xác cho người dùng Biểu đồ kiến trúc tổng thể của ứng dụng :
Hình 15 Kiến trúc tổng thể của ứng dụng
Hình 16 : Giao diện ứng dụng khi ra lệnh bằng giọng nói
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ễ
Hình 18 : Giao diện trả lời đáp án cho câu hỏi về ngày âm lịch
48 Hình 19 : Giao diện trả lời đáp án cho câu hỏi địa điểm xung quanh
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
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