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

Hệ thống chatbot phục vụ đa lĩnh vực

94 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

Thông tin cơ bản

Định dạng
Số trang 94
Dung lượng 1,47 MB

Cấu trúc

  • 1.1 Đặt vấn đề (13)
  • 1.2 Mục tiêu và phạm vi đề tài (14)
  • 1.3 Định hướng giải pháp (15)
  • 1.4 Bố cục đồ án (16)
  • 1.5 Một số khái niệm các cơ sở lĩnh vực liên quan (17)
  • 2.2 Tổng quan chức năng (24)
  • 2.3 Đặc tả chức năng (31)
  • 2.4 Yêu cầu phi chức năng (45)
  • 3.1 Lý thuyết (46)
  • 3.2 Công nghệ (64)
  • 4.1 Thiết kế kiến trúc (69)
  • 4.2 Thiết kế chi tiết (72)
  • 4.3 Xây dựng ứng dụng (83)
  • 4.4 Triển khai (89)
  • 6.1 Khó khăn (92)
  • 6.2 Kết luận và hướng phát triển (92)
  • Tài liệu tham khảo (94)

Nội dung

Ngày nay, các dịch vụ chăm sóc, hỗ trợ khách hàng ngày càng phát triển. Nếu như trước kia, chỉ cần một vài người ngồi trực và trả lời các thông tin, các câu hỏi từ phía khách hàng. Nhưng bước vào thời đại 4.0, các giao dịch cũng như các trao đổi thông tin diễn ra trên internet tăng mạnh, đòi hỏi phải cung cấp các thông tin nhanh hơn và nhiều hơn. Đòi hỏi một giải pháp mạnh mẽ hơn và tiết kiệm chi phí hơn. Chatbot ra đời giải quyết được vấn đề này.

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

Ở phần trước, chúng ta đã được nghe về những chatbot kiểu tự phát triển cho các ứng dụng thông thường và một số hạn chế của chúng Sau đây, chúng ta sẽ đi nhanh tìm hiểu một số công cụ, nền tảng có sẵn trên thị trường, đánh giá ưu, nhược điểm của từng loại rồi sau đó sẽ nêu mục tiêu, phạm vi cho đề tài

Một số sản phẩm có sẵn nổi bật trên thị trường

Facebook Messenger Platform Đây là sản phẩm nổi tiếng và phổ biến với nhiều người dùng nhất cả ở Việt Nam và trên thế giới Hệ thống này giúp hỗ trợ doanh nghiệp, người bán hàng, v.v tạo chatbot nhanh chóng qua nền tảng chat trực tuyến của facebook thông qua mô hình tạo các kịch bản

Theo đánh giá thì đây là một công cụ đáp ứng được khả năng linh động trong tạo kịch bản Người tạo ra chatbot có thể không cần là lập trình viên cũng có thể tạo ra các chatbot theo ý tưởng của mình Ngoài ra, với số lượng người dùng khổng lồ trên facebook, thì đây là một môi trường tuyệt vời để tiến hành đặt chatbot (bên cạnh trang web hay ứng dụng di động của doanh nghiệp) Tuy nhiên, chatbot được xây dựng trên nền tảng này thường chưa được thực sự “thông minh”, nó chỉ trả lời chính xác khi người dùng nhập đúng những câu mà chatbot đã được cài đặt từ trước đó Hiện tại với lượng người dùng nhiều và mới thì đây chưa phải vấn đề, song sẽ gặp thách thức ở tương lai do sự phát triển của công nghệ

Dòng sản phẩm chatbot của FPT AI Theo ý kiến đánh giá cá nhân tôi thì là một sản phẩm tương đối hoàn thiện, mạnh mẽ Ngoài hỗ trợ người dùng tạo các kịch bản xử lý như

Hình 1-2 FPT.AI Đồ án sẽ tham khảo nhiều chức năng từ sản phẩm này, lược bỏ một số phần phức tạp như yêu cầu người dùng phải phải nhập tay toàn bộ dữ liệu cho phần xử lý thực thể, cùng với đó, sẽ bổ sung một số chức năng Những phần phức tạp và những phần được bổ sung sẽ được nói rõ hơn ở chương 3

Mục tiêu và phạm vi đề tài Để giải quyết các vấn đề đặt ra ở phần 1.1, qua tham khảo nhanh 2 sản phẩm nổi bật trên thị trường, tôi đề xuất giải pháp như sau:

Một hệ thống được xây dựng trên nền tảng trang web – nền tảng phổ biến, dễ tiếp cận và được hỗ trợ nhiều - hỗ trợ người dùng tạo dựng các kịch bản trả lời cho khách hàng và cung cấp được đầu ra là các api để có thể tích hợp ở hệ thống khác; Ngoài ra, hệ thống sẽ tích hợp một số phương pháp trong xử lý NLP để chatbot thông minh hơn, gần gũi với người dùng cuối hơn, đồng thời cung cấp luôn một công cụ chat thử nghiệm để những người tạo chatbot dễ dàng tiếp cận hơn Đối tượng hướng đến của đồ án là một hệ thống chatbot phục vụ được cho hầu hết các lĩnh vực, song với khoảng thời gian không nhiều trong một kỳ, đồ án sẽ phục vụ tốt nhất cho các dịch vụ như mua bán, hỏi đáp, giao dịch, v.v.

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

Với mục tiêu là xây dựng một hệ thống chatbot như đã đề cập ở phần trước đó, tôi sẽ nêu một số giải pháp chính như sau

Các thành phần của chatbot sẽ được xử lý bằng phương pháp chính là học máy thay vì là học dựa trên chuyên gia và so khớp mẫu Và để thuận tiện cho quá trình này, tôi sẽ sử dụng ngôn ngữ python làm ngôn ngữ chính cho toàn bộ trang web Lý do cho việc này là vì đây là một trong những ngôn ngữ mạnh mẽ nhất trên thế giới hỗ trợ cho các bài toán về khoa học dữ liệu (Bên cạnh R, SQL, nhưng chỉ có python thích hợp để làm web)

Nhìn từ ngoài vào thì hệ thống sẽ bao gồm 2 phần chính Phần thứ nhất là trang web dùng để quản lý các loại dữ liệu cho chatbot cũng như trực quan hóa quá trình tạo chatbot Phần thứ hai sẽ là các api để các hệ thống bên ngoài có thể gọi và sử dụng dịch vụ của chatbot

Nhìn từ bên trong hệ thống, hệ thống sẽ bao gồm 3 bài toán lớn: (i) bài toán xử lý ý định; (ii) bài toán trích xuất thực thể trong câu; (iii) bài toán kịch bản cho đoạn hội thoại Cả 3 bài toán này sẽ được trình bày kỹ hơn ở các chương sau Trong đó bài toán (i) và (ii) là 2 bài toán sẽ ứng dụng học máy để xử lý, còn bài toán số (iii) bên cạnh mục đích ban đầu theo như tên của nó là kịch bản cho đoạn hội thoại, sẽ áp dụng một số giải pháp để khắc phục các vấn đề còn đọng lại của bài toán số (i) và bài toán số (ii).

Bố cục đồ án

Đồ án là sự giao thoa giữa 2 loại đồ án nghiên cứu và đồ án ứng dụng, nên để dễ theo dõi, phần còn lại của báo cáo đồ án tốt nghiệp được tổ chức như sau:

Phần cuối chương 1, tôi sẽ nêu lên các lý thuyết về chatbot, các thành phần trong chatbot, một vài nét về xử lý ngôn ngữ tự nhiên và ứng dụng xử lý ngôn ngữ tự nhiên trong chatbot Phần này phục vụ cho việc đọc các phần sau của tài liệu này, đặc biệt là ở chương 3

Chương 2 sẽ đi phân tích hiện trạng và khảo sát yêu cầu người dùng, qua đó đề ra các chức năng chính một cách cụ thể cho hệ thống Ngoài ra, chương này cũng sẽ đưa ra các yêu cầu về hiệu năng cũng như yêu cầu bảo mật cho hệ thống

Chương 3 sẽ đưa ra các các lý thuyết công nghệ mà hệ thống sử dụng ở cả quá trình tạo dựng trang web cũng như áp dụng cho các bài toán học máy Đối với một số lý thuyết và công nghệ đặc biệt, tôi cũng sẽ giải thích lý do chọn nó thay vì các công nghệ khác

Chương 4 sẽ phân tích chỉ ra kiến trúc được sử dụng trong hệ thống Chương này cũng sẽ nêu thiết kế chi tiết cho một số thành phần quan trọng trong hệ thống Ngoài ra, chương này cũng sẽ nêu thiết kế cơ sở dữ liệu, dữ liệu được triển khai ra sao Cuối cùng sẽ đưa ra phần kiểm thử và triển khai cho hệ thống

Chương 5, tôi sẽ nêu đóng góp nổi bật của đồ án trong việc giải quyết các vấn đề liên quan đến nhu cầu sử dụng hệ thống của người dùng

Chương 6 cũng là chương cuối, tôi sẽ sẽ tổng kết lại toàn bộ nội dung , khó khăn gặp phải, những mong đợi mà người dùng hi vọng, cũng như định hướng để hoàn thiện, phát triển sản phẩm tốt hơn trong tương lại.

Một số khái niệm các cơ sở lĩnh vực liên quan

Phần này sẽ lần lượt nêu tổng quan về chatbot, các thành phần của chatbot rồi từ đó ta sẽ có cái nhìn tổng quan về chatbot Tiếp theo ta sẽ tìm hiểu một chút về xử lý ngôn ngữ tự nhiên và cách áp dụng xử lý ngôn ngữ tự nhiên vào bài toán chatbot

Các thành phần cơ bản trong chatbot

Các thành phần của một hệ thống chatbot là không nhiều Trong phần này, chúng ta sẽ thảo luận ngắn gọn về các thành phần chính của một chatbot Ý định (intent)

Khi một người dùng tương tác với một chatbot, mục đích sử dụng chatbot của anh ta là gì/ anh ta yêu cầu điều gì? Đó chính là ý định

Ví dụ: khi người dùng nói, “Đặt vé xem phim” với một chatbot, chúng ta có thể hiểu rằng người dùng muốn đặt vé xem phim Đây là ý định dành người dùng muốn chatbot thực hiện

Nó có thể được đặt tên là ý định “book_movie”

Một ví dụ khác có thể là khi người dùng nói, "Tôi muốn đặt đồ ăn" hoặc "Bạn có thể giúp tôi đặt đồ ăn không?" Chúng có thể được đặt tên là ý định “order_food” Tương tự như vậy, mỗi chatbot có thể có nhiều ý định khác nhau, do cách mà người tạo bot định nghĩa chúng

Trong ví dụ về đặt vé xem phim, để thông tin được đầy đủ, bình thường chúng ta sẽ phải xác định xem phim mà người dùng cuối muốn xem là phim gì Thì tên phim sẽ được coi là một thực thể cần xác định

Ví dụ: khi người dùng nói: “Đặt vé xem phim Bố già” thì chatbot ngoài xác định được ý định người dùng là đặt vé, phải xác định được cả thực thể tên phim là “Bố già”

Các loại thực thể như tên phim thì thường chỉ xuất hiện trong các chatbot liên quan đến phim như đặt vé xem phim, review phim, v.v Tuy nhiên, cũng có một số thực thể có thể được sử dụng ở nhiều loại chatbot khác nhau, ví dụ như số lượng, khối lượng, ngày tháng, v.v

Ví dụ: khi người dùng nói: “Đặt 2 vé xem phim Bố già” thì chatbot sẽ phải thêm thực thể số lượng vé muốn đặt là 2

Cách nói là các dạng khác nhau của lời nói, âm thanh nhưng mang cùng ý định khi sử dụng chatbot Ví dụ: (i) Siri, Tắt đèn (ii) Siri, bạn vui lòng tắt đèn được không? (iii) Bạn có thể vui lòng tắt đèn được không?

Cả 3 ví dụ trên đều mang ý định là tắt đèn, người dùng có thể có nhiều cách nói hơn nữa cho cùng 1 ý định, và chatbot cần nhận diện được chúng Nên có tối đa 10 cách nói cho mỗi ý định và tối thiểu là 5, nhưng điều này không bị hạn chế [1]

Kịch bản Để hiểu hơn về kịch bản trong chatbot, ta nên biết một chút về cây quyết định Cây quyết định (decision tree) là một đồ thị của các quyết định và các hậu quả có thể có của nó Sau đây, ta sẽ điểm qua một vài lợi ích khi sử dụng cây quyết định: (i) Giúp đỡ trong việc tạo ra một bức tranh đầy đủ về vấn đề Nhìn vào cây quyết định, chúng ta có thể dễ dàng hiểu được điều gì còn thiếu hoặc điều gì cần sửa đổi (ii) Giúp các nhà phát triển gỡ lỗi nhanh hơn, cũng có thể giúp các nhà phát triển, lãnh đạo giới thiệu hành vi dự kiến hoặc giải thích việc thay đổi nào trong kịch bản nếu cầu (iii) AI vẫn chưa ở giai đoạn đó mà nó có thể được đào tạo với nhiều dữ liệu và thực hiện với độ chính xác 100% Nó vẫn đòi hỏi rất nhiều thủ tục bằng cách viết logic và quy tắc kinh doanh Cây quyết định giúp ích cho bất cứ đâu khi quá trình học máy gặp vấn đề và thực hiện chúng

Bây giờ, chúng ta sẽ đi vào một ví dụ và sau đó liên hệ xem nó có thể giúp ích gì cho chatbot Hãy xem sơ đồ ví dụ cho một chatbot bắt đầu bằng câu hỏi liệu người dùng đang tìm kiếm áo thun hay quần jean và dựa trên đầu vào, luồng sơ đồ sẽ đi xa hơn để đưa ra các tùy chọn liên quan đến sản phẩm bằng cách đặt thêm câu hỏi

Hình 1-3 Cây quyết định mua quần áo Ở đây, cây quyết định giúp giữ cho người dùng tập trung vào luồng trò chuyện Các luồng trò chuyện này chính là kịch bản Kịch bản giúp định hướng câu trả lời của chatbot khi gặp câu hỏi của người dùng, cũng như định hướng cách người dùng sẽ nói chuyện với chatbot Như ở ví dụ trên, kịch bản giúp định hướng chính xác để lấy các thông tin về sản phẩm mà người dùng muốn mua

Các bước cần làm để xây dựng một chatbot

Xây dựng chatbot gồm khá nhiều bước, nhưng có 3 bước cơ bản mà ta cần nắm ở đây

Bước thứ nhất là thu thập tất cả các tình huống, nhiệm vụ mà bạn muốn chatbot thực hiện, cùng với đó là thu thập tất cả các câu hỏi liên quan mà người dùng có thể sẽ hỏi hay yêu cầu (câu mẫu) Mỗi câu hỏi hay yêu cầu đó sẽ xác định một ý định Bước này có thể đặt tên là

Bước thứ hai là sắp xếp các câu mẫu đó vào các ý định, sao cho mỗi câu chỉ có một ý định Ngoài ra, việc sắp xếp này cũng nên đảm bảo tiêu chí bên trên: Mỗi ý định sẽ chỉ có từ 5 đến

10 cách nói khác nhau Bước này có thể gọi là bước gán nhãn

Bước thứ ba là huấn luyện chatbot dựa trên tập dữ liệu thu được đã được gán nhãn kia Ở bước này có nhiều tùy chọn, có thể sử dụng các phương pháp từ chuyên gia hoặc phương pháp học máy

Tổng quan chức năng

Biểu đồ use case tổng quan

Dựa vào phần 1 5 đã trình bày trước đó, hệ thống sẽ phải quản lý những thành phần giúp định nghĩa lên chatbot như ý định, thực thể, cách nói, kịch bản ,v.v Riêng phần kịch bản không dùng đến học máy, ta sẽ tách nó ra thành chức năng khác Những phần còn lại liên quan đến học máy, ta sẽ có 2 nhóm chức năng là quản lý dữ liệu cho các phần đó và kiểm tra độ chính xác Cụ thể hơn, ta quan sát hình dưới đây:

Hình 2-1 Biểu đồ use case tổng quan

Hình trên là use case tổng quan của hệ thống Theo đó, ta có thể thấy được, hệ thống sẽ bao gồm 3 tác nhân tham gia vào Đầu tiên, Người sử dụng bot, chính là đối tượng khách hàng, trò chuyện với chatbot và sẽ nhận được câu trả lời từ chatbot Thực hiện trò chuyện theo 1 số cách như đặt câu hỏi hay nhấn nút, v.v

Tiếp theo, Người tạo bot, đây mới là đối tượng chính mà đồ án hướng đến Hệ thống sẽ cung cấp chức năng để đối tượng này có thể tạo ra chatbot Công việc của đối tượng này sẽ bao gồm: (i) Cung cấp dữ liệu để huấn luyện chatbot và có thể bổ sung, chỉnh sửa dữ liệu theo thời gian (ii) Cập nhật các kịch bản cũ và thêm mới các kịch bản để đáp ứng được yêu cầu đa dạng từ những người sử dụng bot (iii) Theo dõi lịch sử bot và điều chỉnh bot học tập thông qua trò chuyện trực tiếp với người dùng (iv) Kiểm tra NLP

Cuối cùng là Quản trị viên có đầy đủ các quyền của Người tạo bot, ngoài ra, họ có thể có quyền kiểm soát những người tạo bot Tác nhân này dùng để quản trị chung cho một hệ thống về sau có thể bao gồm nhiều chatbot, nhiều người dùng

Phân rã use case “Quản lý dữ liệu NLP”

Hình 2-2 Biểu đồ phân rã use case “Quản lý dữ liệu NLP”

Use case này như tên gọi, dùng để quản lý các dữ liệu phục vụ cho phần NLP Ta có use case con “Quản lý câu mẫu” và “Quản lý ý định” sẽ phục vụ cho bài toán lấy ý định trong câu Use case “Quản lý câu mẫu”, “Quản lý loại thực thể”, “Quản lý từ khóa” sẽ phục vụ cho bài toán trích xuất thực thể trong câu

Các use case con kể trên bên trong lại gồm các chức năng như thêm, sửa, xóa các loại dữ liệu tương ứng, chi tiết quan sát các hình ở bên dưới

Hình 2-3 Biểu đồ phân rã use case “Quản lý câu mẫu”

Như đã được trình bày ở mục 1.5 thì cách nói là một dữ liệu cần quản lý Ở hệ thống, để dễ hiểu hơn, ta thay thuật ngữ cách nói thành câu mẫu

Hình 2-4 Biểu đồ phân rã use case “Quản lý ý định”

Use case này giúp quản lý các ý định có trong hệ thống (ý định là một trong các thành phần của chatbot đã được đề cập đến ở mục 1.5)

Hình 2-5 Biểu đồ phân rã use case “Quản lý loại thực thể” Ở mục 1.5, ta đã đề cập đến thực thể bao gồm 1 cặp ví dụ như: Hà Nội – địa điểm Để dễ quản lý hơn, ta chia thực thể thành cặp khái niệm loại thực thể và từ khóa Như ở ví dụ trên, loại thực thể ứng với “địa điểm”, còn từ khóa ứng với “Hà Nội”

Hình 2-6 Biểu đồ phân rã use case “Quản lý từ khóa”

Biểu đồ use case phân rã “Quản lý kịch bản”

Hình 2-7 Biểu đồ phân rã use case “Quản lý kịch bản” Ở đây có các khái niệm cần phải nắm được đó là: Nhóm bước, bước và thẻ Đầu tiên thì một nhóm bước sẽ bao gồm nhiều bước, nhóm bước chỉ mang yếu tố gom nhóm để người dùng dễ hình dung hơn Ví dụ nhóm bước “nhóm chuyển khoản” sẽ bao gồm các bước “chuyển khoản – thực hiện”, “chuyển khoản – hủy”, v.v

Các bước thì sẽ bao gồm nhiều thẻ, các bước thì có ý nghĩa đánh dấu xem cuộc hội thoại đang ở bước nào Ví dụ, sau khi chào hỏi xong, chatbot phát hiện người dùng có ý định

“chuyển khoản”, ngay lập tức, chatbot sẽ chuyển trạng thái đến bước “chuyển khoản”, tại đây, chatbot sẽ được thực hiện một loạt các thao tác, các thao tác đó gọi chung là các thẻ xử lý (gọi tắt là thẻ)

Các hành động trong bước được gọi chung là các thẻ Ví dụ: Khi người dùng muốn hỏi giá vàng Hệ thống sẽ kích hoạt bước “Hỏi giá vàng” từ nhóm bước “Hỏi đáp” Trong bước này, hệ thống sẽ thực hiện gọi 1 api lấy thông tin giá vàng và 1 bước trả ra kết quả cho người dùng Từng hành động trên sẽ được định nghĩa trong “thẻ”

Biểu đồ use case phân rã “Quản lý lịch sử trò chuyện”

Hình 2-8 Biểu đồ phân rã use case “Quản lý lịch sử trò chuyện”

Use case này giúp người tạo bot có thể xem lại lịch sử trò chuyện của người dùng cuối với chatbot Thông tin hiển thị sẽ bao gồm không chỉ nội dung cuộc trò chuyện mà còn cả các thông số như ý định mà chatbot đã đoán, độ chính xác khi đưa ra dự đoán đó Cuối cùng, người tạo bot có thể đánh giá các câu trả lời của chatbot Các dữ liệu được đánh giá sẽ được thêm vào kho dữ liệu dùng để huấn luyện cho chatbot.

Đặc tả chức năng

Đặc tả use case “Quản lý dữ liệu NLP” Đây là một use case lớn, chi tiết về đặc tả sẽ được mô tả thông qua đặc tả các use case con Đặc tả use case “Quản lý câu mẫu”

Bảng 2-1 Đặc tả use case “Quản lý câu mẫu”

Mã Use case UC0101 Tên Use case Quản lý câu mẫu

Tác nhân Người tạo bot, quản trị viên

Tiền điều kiện Người dùng đăng nhập thành công với vai trò người tạo bot hoặc quản trị viên

STT Thực hiện bởi Hành động

1 Người tạo bot Chọn chức năng câu mẫu ở menu

2 Hệ thống Hiển thị màn hình xem câu mẫu với dữ liệu sắp xếp từ mới nhất đến cũ nhất

3 Người tạo bot Nhập vào ô tìm kiếm các từ khóa của câu mẫu cần tìm

4 Hệ thống Trả về kết quả tìm kiếm tương ứng ở bảng

5 Người tạo bot Lọc câu mẫu theo ý định

6 Hệ thống Trả về câu mẫu theo ý định đó kết hợp với kết quả tìm kiếm từ khóa trước đó Thêm câu mẫu

STT Thực hiện bởi Hành động

1 Người tạo bot Tại màn hình xem câu mẫu, chọn nút “Thêm câu mẫu”

2 Hệ thống Hiển thị màn hình thêm câu mẫu

3 Người tạo bot Nhập thông tin câu mẫu

4 Người tạo bot Chọn ý định từ thanh cuộn

5 Hệ thống Hiển thị các ý định đang có trong hệ thống để người dùng lựa chọn

6 Hệ thống Trả về câu mẫu theo ý định đó kết hợp với kết quả tìm kiếm từ khóa trước đó

7 Người tạo bot Chọn nút thêm để thêm câu mẫu

8 Hệ thống Hiểu thị thông báo thành công nếu thêm thành công

9 Hệ thống Trở về giao diện trang mẫu Thêm từ file excel

STT Thực hiện bởi Hành động

2 Hệ thống Hiển thị màn hình chọn file excel

3 Người tạo bot Chọn file excel

4 Hệ thống Hiển thị thông tin các câu mẫu sẽ thêm

5 Người tạo bot Xác nhận thêm

6 Hệ thống Thêm các câu mẫu và hiện màn hình chờ

7 Hệ thống Trả về thông báo thành công khi thực hiện xong

STT Thực hiện bởi Hành động

1 Người tạo bot Tại câu mẫu muốn sửa, chọn vào biểu tượng sửa

2 Hệ thống Lấy thông tin từ câu mẫu

3 Hệ thống Hiển thị lên màn hình sửa câu mẫu với những thông tin đó

4 Người tạo bot Sửa thông tin các trường của câu mẫu đó

5 Người tạo bot Chọn ý định muốn thay đổi

6 Hệ thống Hiển thị các ý định đang có trong hệ thống để người dùng lựa chọn

7 Người tạo bot Chọn ý định muốn thay đổi

8 Người tạo bot Chọn lưu

9 Hệ thống Kiểm tra tính hợp lệ thông tin

10 Hệ thống Trả về kết quả thành công và quay trở về màn hình câu mẫu Xóa câu mẫu

STT Thực hiện bởi Hành động

1 Người tạo bot Tại câu mẫu muốn xóa, chọn vào biểu tượng xóa

2 Hệ thống Hỏi lại người dùng có thực sự muốn xóa thông tin này

3 Người tạo bot Xác nhận xóa

4 Hệ thống Xóa thông tin câu mẫu đó khỏi hệ thống

5 Hệ thống Trả về kết quả thành công

Luồng sự kiện thay thế

STT Thực hiện bởi Hành động

3a Người tạo bot Lọc câu mẫu theo ý định

4a Hệ thống Trả về kết quả tìm kiếm tương ứng hiển thị trong bảng

5a Người tạo bot Nhập vào ô tìm kiếm nội dung câu mẫu cần tìm kiếm

6a Hệ thống Trả về câu mẫu theo từ khóa cần tìm kiếm kết hợp với kết quả lọc từ ý định trước đó Thêm câu mẫu

STT Thực hiện bởi Hành động

8a Hệ thống Trả về lỗi nếu dữ liệu được nhập và chọn là không hơp lệ Thêm từ file excel

STT Thực hiện bởi Hành động

6a Hệ thống Trả về lỗi nếu định dạng file excel không thích hợp hoặc lỗi file, v.v

STT Thực hiện bởi Hành động

10a Hệ thống Trả về lỗi nếu dữ liệu được nhập và chọn là không hơp lệ Xóa câu mẫu

STT Thực hiện bởi Hành động

3a Người tạo bot Xác nhận không xóa 4a Hệ thống Trả về thông báo xóa không thành công

Hậu điều kiện Không Đặc tả use case “Quản lý ý định”

Bảng 2-2 Đặc tả use case “Quản lý ý định”

Mã Use case UC0102 Tên Use case Quản lý ý định

Tác nhân Người tạo bot, quản trị viên

Tiền điều kiện Người dùng đăng nhập thành công với vai trò người tạo bot hoặc quản trị viên

STT Thực hiện bởi Hành động

1 Người tạo bot Chọn chức năng ý định ở menu

2 Hệ thống Hiển thị màn hình xem danh sách với dữ liệu sắp xếp từ mới nhất đến cũ nhất

3 Người tạo bot Nhập vào ô tìm kiếm các từ khóa cần tìm

4 Hệ thống Trả về kết quả tìm kiếm tương ứng ở bảng Thêm ý định

STT Thực hiện bởi Hành động

1 Người tạo bot Tại màn hình xem ý định, chọn nút “Thêm ý định”

2 Hệ thống Hiển thị màn hình thêm ý định

3 Người tạo bot Nhập thông tin ý định bao gồm tên, mô tả

4 Hệ thống Kiểm tra trùng lặp ý định qua tên, tên có đạt chuẩn yêu cầu hay không

5 Hệ thống Thêm ý định vào cơ sở dữ liệu

6 Hệ thống Thông báo thành công Sửa ý định

STT Thực hiện bởi Hành động

1 Người tạo bot Tại ý định muốn sửa, chọn vào biểu tượng sửa

2 Hệ thống Lấy thông tin từ ý định

3 Hệ thống Hiển thị lên màn hình sửa ý định với những thông tin đó

4 Người tạo bot Sửa thông tin các trường của ý định đó

5 Người tạo bot Chọn lưu

6 Hệ thống Kiểm tra tính hợp lệ thông tin

7 Hệ thống Trả về kết quả thành công Xóa ý định

STT Thực hiện bởi Hành động

1 Người tạo bot Tại ý định muốn xóa, chọn vào biểu tượng xóa

2 Hệ thống Hỏi lại người dùng có thực sự muốn xóa thông tin này

3 Người tạo bot Xác nhận xóa

4 Hệ thống Xóa thông tin câu mẫu đó khỏi hệ thống

5 Hệ thống Trả về kết quả thành công

Luồng sự kiện thay thế

STT Thực hiện bởi Hành động

5a Hệ thống Trả về lỗi nếu dữ liệu được nhập và chọn là không hơp lệ Sửa ý định

STT Thực hiện bởi Hành động

7a Hệ thống Trả về lỗi nếu dữ liệu được nhập và chọn là không hơp lệ Xóa ý định

STT Thực hiện bởi Hành động

3a Người tạo bot Xác nhận không xóa

4a Hệ thống Trả về thông báo xóa không thành công

Hậu điều kiện Không Đặc tả use case “Quản lý loại thực thể”

Tác nhân Người tạo bot, quản trị viên

Tiền điều kiện Người dùng đăng nhập thành công với vai trò người tạo bot hoặc quản trị viên

STT Thực hiện bởi Hành động

1 Người tạo bot Chọn chức năng Loại thực thể ở menu

2 Hệ thống Hiển thị màn hình xem danh sách với dữ liệu sắp xếp từ mới nhất đến cũ nhất

3 Người tạo bot Nhập vào ô tìm kiếm các từ khóa cần tìm

4 Hệ thống Trả về kết quả tìm kiếm tương ứng ở bảng Thêm loại thực thể

STT Thực hiện bởi Hành động

1 Người tạo bot Tại màn hình xem loại thực thể, chọn nút “Thêm loại thực thể”

2 Hệ thống Hiển thị màn hình thêm loại thực thể

3 Người tạo bot Nhập thông tin loại thực thể bao gồm tên, mô tả

4 Hệ thống Kiểm tra trùng lặp ý định qua tên, tên có đạt chuẩn yêu cầu hay không

5 Hệ thống Thêm loại thực thể vào cơ sở dữ liệu

6 Hệ thống Thông báo thành công Sửa loại thực thể

STT Thực hiện bởi Hành động

1 Người tạo bot Tại loại thực thể muốn sửa, chọn vào biểu tượng sửa

2 Hệ thống Lấy thông tin loại thực thể

3 Hệ thống Hiển thị lên màn hình sửa loại thực thể với những thông tin đó

4 Người tạo bot Sửa thông tin các trường của loại thực thể đó

5 Người tạo bot Chọn lưu

6 Hệ thống Kiểm tra tính hợp lệ thông tin

7 Hệ thống Trả về kết quả thành công Xóa loại thực thể

STT Thực hiện bởi Hành động

1 Người tạo bot Tại loại thực thể muốn xóa, chọn vào biểu tượng xóa

2 Hệ thống Hỏi lại người dùng có thực sự muốn xóa thông tin này

3 Người tạo bot Xác nhận xóa

4 Hệ thống Xóa thông tin về loại thực thể đó khỏi hệ thống

5 Hệ thống Trả về kết quả thành công

Luồng sự kiện thay thế

STT Thực hiện bởi Hành động

5a Hệ thống Trả về lỗi nếu dữ liệu được nhập và chọn là không hơp lệ Sửa ý định

STT Thực hiện bởi Hành động

7a Hệ thống Trả về lỗi nếu dữ liệu được nhập và chọn là không hơp lệ Xóa ý định

STT Thực hiện bởi Hành động

3a Người tạo bot Xác nhận không xóa

4a Hệ thống Trả về thông báo xóa không thành công

Hậu điều kiện Không Đặc tả use case “Quản lý từ khóa”

Bảng 2-4 Đặc tả use case “Quản lý từ khóa”

Mã Use case UC0104 Tên Use case Quản lý từ khóa

STT Thực hiện bởi Hành động

1 Người tạo bot Chọn chức năng Từ khóa ở menu

2 Hệ thống Hiển thị màn hình xem danh sách với dữ liệu sắp xếp từ mới nhất đến cũ nhất

3 Người tạo bot Nhập vào ô tìm kiếm các từ khóa cần tìm

4 Hệ thống Trả về kết quả tìm kiếm tương ứng ở bảng

5 Người tạo bot Chọn thanh lọc theo loại thực thể

6 Hệ thống Hiển thị kết quả lọc được theo loại thực thể và từ khóa tìm kiếm trước đó Thêm từ khóa

STT Thực hiện bởi Hành động

1 Người tạo bot Tại màn hình xem từ khóa, chọn nút “Thêm từ khóa”

2 Hệ thống Hiển thị màn hình thêm từ khóa

3 Người tạo bot Nhập thông tin từ khóa bao gồm từ khóa, các từ đồng nghĩa

4 Người tạo bot Chọn thông tin loại thực thể dành cho từ khóa

5 Hệ thống Kiểm tra tính hợp lệ của các thông tin

6 Hệ thống Thông báo thành công Sửa từ khóa

STT Thực hiện bởi Hành động

1 Người tạo bot Tại từ khóa muốn sửa, chọn vào biểu tượng sửa

2 Hệ thống Lấy thông tin từ từ khóa

3 Hệ thống Hiển thị lên màn hình sửa từ khóa với những thông tin đó

4 Người tạo bot Sửa thông tin các trường của từ khóa đó

5 Người tạo bot Chọn lưu

6 Hệ thống Kiểm tra tính hợp lệ thông tin

7 Hệ thống Trả về kết quả thành công Xóa từ khóa

STT Thực hiện bởi Hành động

1 Người tạo bot Tại từ khóa muốn xóa, chọn vào biểu tượng xóa

2 Hệ thống Hỏi lại người dùng có thực sự muốn xóa thông tin này

3 Người tạo bot Xác nhận xóa

4 Hệ thống Xóa thông tin từ khóa đó khỏi hệ thống

5 Hệ thống Trả về kết quả thành công

Luồng sự kiện thay thế

STT Thực hiện bởi Hành động

3a Người tạo bot Chọn loại thực thể trên thanh chọn (Lọc theo loại thực thể) 4a Hệ thống Hiển thị kết quả lọc theo loại thực thể 5a Người tạo bot Nhập từ khóa muốn tìm kiếm vào ô tìm kiếm

6a Hệ thống Trả về kết quả theo cả loại thực thể và từ khóa tìm kiếm Thêm từ khóa

STT Thực hiện bởi Hành động

7a Hệ thống Trả về lỗi nếu dữ liệu được nhập và chọn là không hơp lệ Sửa từ khóa

STT Thực hiện bởi Hành động

7a Hệ thống Trả về lỗi nếu dữ liệu được nhập và chọn là không hơp lệ Xóa từ khóa

STT Thực hiện bởi Hành động

3a Người tạo bot Xác nhận không xóa Đặc tả use case “Quản lý từ điển” Đặc tả use case “Quản lý lịch sử trò chuyện”

Bảng 2-5 Đặc tả use case “Quản lý lịch sử trò chuyện”

Mã Use case UC02 Tên Use case Quản lý lịch sử trò chuyện

Tác nhân Người tạo bot, quản trị viên

Tiền điều kiện Người dùng đăng nhập thành công với vai trò người tạo bot hoặc quản trị viên

Xem dạnh sách các cuộc trò chuyện

STT Thực hiện bởi Hành động

1 Người tạo bot Chọn chức năng Lịch sử trò chuyện ở menu

2 Hệ thống Hiển thị màn hình xem danh sách với dữ liệu sắp xếp từ mới nhất đến cũ nhất được tổ chức ở dạng bảng

3 Người tạo bot Nhập vào ô tìm kiếm các câu mà người dùng đã dùng để trò chuyện

4 Người tạo bot Chọn tìm kiếm

5 Hệ thống Trả về danh sách tìm kiếm dưới dạng bảng, các dữ liệu sẽ bao gồm: Câu người dùng sử dụng, ý định mà hệ thống đã dự đoán, độ chính xác dự đoán Sửa nhãn

STT Thực hiện bởi Hành động

1 Người tạo bot Tại màn hình lịch sử trò chuyện, tại câu trò chuyện muốn sửa lại ý định, chọn vào nút Sửa ý định

2 Hệ thống Hiển thị màn hình giống như khi Thêm câu mẫu

3 Hệ thống Chuyển dữ liệu câu và ý định đã được hệ thống dự báo

4 Người tạo bot Thay đổi lại ý định

5 Người tạo bot Chọn lưu

6 Hệ thống Thêm dữ liệu câu mẫu đó vào database

7 Hệ thống Thông báo thành công Đánh dấu nhãn đúng

STT Thực hiện bởi Hành động

1 Người tạo bot Tại màn hình lịch sử trò chuyện, tại câu trò chuyện mà ý định đã chính xác, chọn mục Đánh dấu chính xác

2 Hệ thống Hỏi lại người dùng xem có thực sự muốn thêm câu nói đó của người dùng vào câu mẫu hay không

3 Người tạo bot Enter hoặc chọn đồng ý

4 Hệ thống Thêm câu mẫu với dữ liệu bao gồm câu và ý định đó vào database

5 Hệ thống Thông báo thành công

Luồng sự kiện thay thế Đánh dấu câu nói người dùng chính xác

STT Thực hiện bởi Hành động

3a Người tạo bot Chọn không

4a Hệ thống Thông báo không thành công

Hậu điều kiện Không Đặc tả use case “Quản lý kịch bản”

Bảng 2-6 Đặc tả use case “Quản lý kịch bản”

Mã Use case UC03 Tên Use case Quản lý kịch bản

Tác nhân Người tạo bot, quản trị viên

Tiền điều kiện Người dùng đăng nhập thành công với vai trò người tạo bot hoặc quản trị viên

Xem danh sách nhóm bước

STT Thực hiện bởi Hành động

1 Người tạo bot Tại menu chọn Kịch bản

2 Hệ thống Trả về màn hình Kịch bản bao gồm các thông tin sau: Danh sách các nhóm bước và các bước ở trong kịch bản; Thông tin của bước mặc định; Các thẻ trong bước mặc định

STT Thực hiện bởi Hành động

2 Hệ thống Hiển thị ra một input có thể sửa với chữ trong đó đang là tên nhóm bước hiện tại

3 Người tạo bot Nhập lại tên nhóm bước

4 Người tạo bot Click chuột ra ngoài

5 Hệ thống Lưu lại thông tin đó Xóa nhóm bước

STT Thực hiện bởi Hành động

1 Người tạo bot Tại giao diện Kịch bản, tại nhóm bước muốn xóa, chọn vào icon hình thùng rác

2 Hệ thống Hỏi lại xem bạn có thật sự muốn xóa hay không

3 Người tạo bot Xác nhận xóa

4 Hệ thống Cập nhật lại dữ liệu và giao diện

5 Hệ thống Thông báo thành công Xem thông tin bước

STT Thực hiện bởi Hành động

1 Người tạo bot Tại giao diện Kịch bản, click chọn vào bước muốn xem thông tin

2 Hệ thống Hiển thị lại phần thông tin các thẻ trong Bước đã chọn Xóa bước

STT Thực hiện bởi Hành động

1 Người tạo bot Di chuột vào bước muốn xóa

2 Hệ thống Hiển thị nút xóa

3 Người tạo bot Click chuột vào nút xóa

4 Hệ thống Hỏi lại xem có thật sự muốn xóa hay không

5 Người tạo bot Xác nhận xóa

6 Hệ thống Cập nhật lại dữ liệu và giao diện

7 Hệ thống Thông báo xóa thành công Thêm thẻ

STT Thực hiện bởi Hành động

1 Người tạo bot Chọn loại thẻ muốn thêm vào bước

2 Hệ thống Hiển thị thẻ mà người dùng chọn ở thứ tự tiếp theo

3 Người tạo bot Nhập các thông tin cho thẻ đó (Ở đây có nhiều loại thẻ, tham khảo lại ở chương 3)

4 Người tạo bot Di chuột ra khỏi khu vực thẻ đó

5 Hệ thống Thêm thông tin

Luồng sự kiện thay thế

STT Thực hiện bởi Hành động

3a Người tạo bot Chọn không xóa

4a Hệ thống Thông báo xóa không thành công Xóa bước

STT Thực hiện bởi Hành động

5a Người tạo bot Chọn không xóa

6a Hệ thống Thông báo xóa không thành công

Hậu điều kiện Không Đặc tả use case “Kiểm tra NLP”

Bảng 2-7 Đặc tả use case “Kiểm tra NLP”

Mã Use case UC04 Tên Use case Kiểm tra NLP

Tác nhân Người tạo bot, quản trị viên

Tiền điều kiện Người dùng đăng nhập thành công với vai trò người tạo bot hoặc quản trị viên

STT Thực hiện bởi Hành động

1 Người tạo bot Chọn nút Huấn luyện ở màn hình sau khi đăng nhập

2 Hệ thống Tiến hành thu thập thông tin trên database

5 Hệ thống Trả về thông báo thành công khi quá trình train model hoàn thành, model được lưu trong database Kiểm tra NLP

STT Thực hiện bởi Hành động

1 Người tạo bot Chọn nút Kiểm tra NLP ở màn hình sau khi đăng nhập

2 Hệ thống Trả về màn hình Kiểm tra NLP

3 Người tạo bot Nhập câu muốn kiểm tra

4 Người tạo bot Chọn nút Kiểm tra

5 Hệ thống Lấy model mới nhất trong database, sau đó tiến hành lấy kết quả dự báo từ model đó

6 Hệ thống Trả về kết quả là danh sách các thực thể được tìm thấy và danh sách ý định theo độ tin cậy giảm dần

Luồng sự kiện thay thế

Yêu cầu phi chức năng

Bảo mật trang web: việc kết hợp công nghệ front-end với back-end phát triển độc lập với nhau Do đó khi phát triển các API, cần lưu ý rất nhiều để tránh bị khai thác các lỗ hổng Vì vậy, cần phải đặc biệt chú trọng việc bảo mật trong phát triển hệ thống web API Đầu tiên là việc xác nhận (validate) tham số, xác nhận các tham số từ client gửi lên trước khi thực hiện các yêu cầu Tất cả những dữ liệu qua validate không hợp lệ thì server sẽ trả về thông báo cho client để bảo mật dữ liệu Và điều thứ hai là xác thức quyền Do trang web có phân cấp

3 quyền với những chức năng phù hợp với các quyền, do đó cần sử dụng JWT Sau khi đăng nhập thì server sẽ gửi về phía client một token, và người dùng phải dùng token để xác thực danh tính của mình trong mỗi yêu cầu gửi qua API Server sẽ nhận yêu cần và kiểm tra token, nếu hợp lệ thì server sẽ thực hiện yêu cầu

Trong chương 2 đã thực hiện phân tích và khảo sát yêu cầu Tiếp đến chương này, phần đầu, tôi sẽ trình bày các lý thuyết để giải quyết các bài toán đã đặt ra Ở phần sau, tôi sẽ phân tích chi tiết và đi sâu vào những công nghệ được sử dụng trong hệ thống web Hệ thống được xây dựng theo hướng web app, kết hợp sử dùng các công nghệ ở hai phía front-end và back- end Trong mỗi phần sẽ áp dụng những công nghệ phù hợp để giải quyết được những vấn đề đã nếu ra ở chương 2

Lý thuyết

Bài toán xử lý ý định

Bài toán Xử lý ý định sẽ có 2 pha: (i) Pha huấn luyện (training), (ii) Pha dự báo (prediction)

Lý thuyết và Công nghệ sử dụng

Bài toán có đầu vào là các dữ liệu có sẵn của hệ thống (Cụ thể ở đâu là câu mẫu và ý định) Ngoài ra, người đào tạo bot có thể bổ sung thông qua lịch sử sử dụng của người dùng cuối

Các bước Tiền xử lý dữ liệu, Trích chọn đặc trưng và Sử dụng thuật toán học máy sẽ được trình bày ở các phần bên dưới Đầu ra của chương trình sẽ là các model học máy mà khi có dữ liệu cần dự đoán, hệ thống sẽ cho dữ liệu chạy qua các model này để đưa ra kết quả dự đoán (nhãn) Việc dự đoán được thể hiện qua hình vẽ sau đây:

Tiền xử lý dữ liệu

Trong học máy, tiền xử lý dữ liệu là bước trong đó dữ liệu được chuyển đổi hoặc mã hóa để đưa về trạng thái mà máy có thể dễ dàng phân tích cú pháp Từ đó, các tính năng của dữ liệu có thể dễ dàng giải thích bằng thuật toán

Hình 3-3 Các bước tiền xử lý dữ liệu

Các bước tiền xử lý văn bản sẽ bao gồm:

Loại bỏ các ký tự HTML: Trong thực tế, dữ liệu được lấy ở trên web rất nhiều Mà trong các dữ liệu này, rất có thể bị dính kèm với HTML Hoặc trong quá trình crawl dữ liệu từ trên mạng, việc tách HTML là công việc bắt buộc, không thể tránh khỏi Kỹ thuật dùng để loại bỏ HTML sẽ là sử dụng biểu thức chính quy

Thường hóa các chữ cái: Đối với bài toán lấy ý định từ người dùng, chúng ta sẽ sử dụng kỹ thuật tf-idf cho nên việc phân biệt các chữ cái hoa thường là không thật sự cần thiết

Tách câu: Một bước nữa sử dụng đến biểu thức chính quy Qua bước này, ta sẽ xác định được văn bản gồm những câu văn nào

Loại bỏ các ký tự đặc biệt: Thêm một bước sử dụng đến biển thức chính quy Qua bước này, các chữ cái không phải số hay chữ cái, dấu câu sẽ bị loại bỏ

Loại bỏ stopword (từ dừng, từ nối): Các từ nối như “is”, “of” hay “that” trong tiếng Anh thường xuất hiện rất nhiều lần nhưng lại không mang nhiều ý nghĩa Do đó, việc lại bỏ những từ nối trong câu là cần thiết, để việc dự đoán chính xác hơn

Tách từ: Không giống như tiếng Anh, tiếng Việt có các từ ghép Khi đứng một mình, mỗi từ trong từ ghép sẽ không có ý nghĩa hoặc sẽ bị hiểu sai khi đứng cạnh nhau Vậy nên bước này sẽ giải quyết được vấn đề nêu trên Các từ ghép sẽ được gộp lại một từ và nối với nhau bằng dấu gạch dưới Ví dụ: “lạ lùng” → “lạ_lùng”

Bảng 3-1 Các bước tiền xử lý dữ liệu

Câu ban đầu Đây là tiêu đề $%^####% Đây cũng là tiêu đề

Chào bạn, bạn có Khỏe không ví dụ

Loại bỏ các ký tự

HTML Đây là tiêu đề $%^####% Đây cũng là tiêu đề Chào bạn, bạn có Khỏe không ví dụ

Thường hóa các chữ cái đây là tiêu đề $%^####% đây cũng là tiêu đề chào bạn, bạn có khỏe không ví dụ

Tách câu [“đây là tiêu đề”, “$%^####% đây cũng là tiêu đề”, “chào bạn, bạn có khỏe không ví dụ”]

Loại bỏ ký tự đặc biệt [“đây là tiêu đề”, “đây cũng là tiêu đề”, “chào bạn bạn có khỏe không ví dụ”]

Loại bỏ stopword [“tiêu đề”, “tiêu đề”, “chào khỏe ví dụ”]

Tách từ [“tiêu_đề”, “tiêu_đề”, “chào khỏe ví_dụ”]

Ghép lại tiêu_đề tiêu_đề chào khỏe ví_dụ

Trích chọn thông tin (Feature Engineering)

Các dạng dữ liệu phổ biến hiện nay là văn bản, âm thanh và hình ảnh Nhưng máy tính thì không hiểu những thứ này Chúng chỉ hiểu 0 và 1

Feature Engineering là quá trình chuyển đổi tập dữ liệu thô ban đầu thành tập các thuộc tính

(features) có thể giúp biểu diễn tập dữ liệu ban đầu tốt hơn, tạo điều kiện để giải quyết các bài toán dễ dàng hơn, giúp tương thích với từng mô hình dự đoán cụ thể, cũng như cải thiện độ chính xác của mô hình dự đoán hiện tại [3]

Có thể nói ngôn ngữ là thứ giúp con người ta phát triển vượt bậc so với các loài động vật khác Để máy tính có thể hiểu được và xử lý ngôn ngữ tự nhiên, ta cần phải biểu diễn ngôn ngữ sang một dạng nào đó mà máy tính có thể hiểu được Hiện nay có rất nhiều phương pháp được sử dụng để biểu diễn ngôn ngữ tự nhiên, có thể kể đến như one-hot-vector, mô hình túi từ, tf-idf, word-embedding, v.v

One-hot-vector Đây là cách đơn giản nhất để biểu diễn ngôn ngữ sang dạng vector với số chiều là kích thước từ điển Các thành phần sẽ chỉ mang giá trị nhị phân 0 hoặc 1 (Theo Wikipedia)

Giả sử chúng ta có một từ điển có kích thước là n Một từ thứ i trong từ điển sẽ được biểu diễn dưới dạng một vector n chiều :

Trong đó xi có giá trị bằng 1, các thành phần khác có giá trị bằng 0

Nhận xét: Một từ có thể biểu diễn dễ dàng dưới dạng one-hot-vector, tuy nhiên cách biểu diễn này phụ thuộc vào kích thước từ điển, độ dài vector là quá lớn Ngoài ra độ tương tự giữa cosin giữa 2 từ luôn bằng 0 (do phép tích vô hướng của 2 từ luôn bằng 0) dẫn đến không có sự tương quan ngữ nghĩa giữa 2 từ

Mô hình túi từ (Bag of words)

Khác với one-hot-vector, mô hình túi từ biểu diễn một câu hoặc một đoạn văn, văn bản sang một vector đặc trưng với số chiều cũng bằng kích thước từ điển Trong đó các phần tử trong một vector được biểu diễn bằng tần suất xuất hiện của từ đó trong đoạn văn

S1: “Tôi có một con chó”

S2: “Tôi có một con mèo con”

Tập từ vựng V={“Tôi”,”có”,”một”,”con”,”chó”,”mèo”}

Khi đó câu S1 sẽ được biểu diễn:

Tuy nhiên với từ điển chứa 2 câu khác:

S1 : “Tôi làm cô ấy buồn”

S2 : “Cô ấy làm tôi buồn”

Bằng cách làm tương tự ta được cách biểu diễn của 2 câu:

Rõ ràng hai câu trên mang ý nghĩa trái ngược nhau nhưng lại có cùng một cách biểu diễn Phương pháp này có một nhược điểm là không quan tâm đến trật tự của các từ trong câu

Với hạn chế của mô hình túi từ, người ta nghĩ ra cách biểu diễn dựa trên tần suất xuất hiện liên tiếp nhau của từ có trong dữ liệu n được gọi là số từ liên tiếp nhau Các mô hình thường xuyên sử dụng bi-grams (n=2), tri-grams (n=3), v.v

Công nghệ

Các ngôn ngữ và công nghệ sử dụng phía Frontend

HTML (tiếng Anh, viết tắt cho HyperText Markup Language, hay là “Ngôn ngữ Đánh dấu siêu văn bản”) là một ngôn ngữ đánh dấu được thiết kế ra để tạo nên các mẩu thông tin được trình bày trên World Wide Web HTML được định nghĩa như một ứng dụng đơn giản của SCML và được sử dụng trong các tổ chức cần đến các yêu cầu xuất bản phức tạp HTML đã trở thành một chuẩn Internet do tổ chức World Wide Web Consortium (W3C) duy trì

HTML5 là phiên bản mới nhất hiện nay của HTML HTML5 đã phản ánh thực tế rằng HTML VÀ XHTML được sử dụng phổ biến trên World Wide Web là một hỗn hợp các tính năng với các thông số kỹ thuật khác nhau, được giới thiệu bởi nhiều nhà sản xuất phần mềm, cùng với các sản phẩm phần mềm được giới thiệu như trình duyệt web, những người thành lập phổ biến thực tế và có quá nhiều lỗi cú pháp trong văn bản web Đây là một nỗ lực để xác định một ngôn ngữ đánh dấu đuy nhất có thể được viết bằng cú pháp HTML hoặc XHTML Nó bao gồm các mô hình xử lý chi tiết để tăng tính tương thích, mở rộng, cải thiện và chuẩn hóa các đánh dấu cho tài liệu Do đó, HTML5 là một ứng cử viên tiềm năng cho nền tảng ứng dựng di động, để tạo ra các ứng dụng Web phức tạp

CSS (Cascading Style Sheets) được dùng để làm sinh động, miêu tả, tô vẽ các tài liệu viết bằng ngôn ngữ HTML và XHTML Ngoài ra ngôn ngữ định kiểu theo tầng cũng có thể dùng

CSS sẽ biến khung hình đó trở lên sinh động hơn thông qua các thẻ quy định kiểu dáng, kích cỡ, màu sắc, phân bố Giúp cho việc biến bản thiết kế thành một ngôn ngữ Web được hoàn chỉnh hơn vì CSS sẽ tác động trực tiếp lên các phần tử khung, rất hữu ích cho lập trình viên khi muốn chỉnh sửa giao diện của trang Web hay ứng dụng Nó hạn chế tối thiểu việc làm rối mà HTML của trang Web, làm gọn và tách bạch để lập trình viên có thể dễ dàng chỉnh sửa mà không cần tác động quá nhiều đến bộ khung đã dựng trước

CSS3 là phiên bản thứ 3 và cũng là phiên bản mới nhất của CSS Phiên bản này đã bổ sung thêm rất nhiều tính năng tiện lợi và khắc phục những khuyết điểm của các phiên bản trước đó Từ những ưu điểm hết sức vượt trội khi CSS3 tương thích với HTML5, hỗ trợ tương thích với các kích thước màn hình mà không cần chỉnh sửa nội dung hiển thị đã tạo nên bước ngoặt lớn cho các website CSS3 cũng được đánh giá rất cao về khả năng tương thích khi có thể hoạt động tốt trên hầu hết các trình duyệt phổ biển Với các tính năng mới đầy tiện lợi cho lập trình viên như bộ chọn, màu trong CSS3, làm tròn góc, hiệu ứng đổ bóng, v.v hứa hẹn đem lại rất nhiều lợi ích và tiện lợi, hỗ trợ rất lớn cho các lập trình viên frontend

Bootstrap và Responsive Web Design

BOOTSTRAP là một front-end framework hoàn toàn miễn phí hỗ trợ lập trình nhanh hơn và dễ dàng hơn rất nhiều Nó bao gồm các HTML, CSS và JavaScript template dùng để phát triển website chuẩn responsive Bootstrap là một bộ sưu miễn phí của các mã nguồn mở và công cụ dùng để tạo ra một mẫu website hoàn chính với các thuộc tính về giao diện được quy định sẵn như kích thước, màu sắc, độ cao, độ rộng, v.v Các designer có thể sáng tạo sản phẩm mới mẻ nhưng vẫn tiết kiệm về thời gian khi làm việc với framework này trong qua trình thiết kế giao diện website

Responsive Web Design là xu hướng mới theo đó quy trình thiết kế và phát triển web sẽ đáp ứng mọi thiết bị và môi trường của người dùng theo các tiêu chí kích thước và chiều của màn hình thiết bị Việc thiết kế này giúp cho trang web theo kịp được với sự phát triển chóng mặt của các thiết bị điện tử (smartphone, tablet, v.v.) Chúng ta có thể tiết kiệm thời gian và giảm chi phí đi rất nhiều khi không phải tạo ra từng phiên bản khác nhau cho điện thoại và máy tính Ngoài ra còn giúp các lập trình viên dễ dàng bảo trì trang web khi mà nó không liên quan gì đến phía server, chúng ta chỉ tác động vào thay đổi html và css để thay đổi giao diện, làm mới giao diện của trang web hoặc sắp xếp lại bố cục thích hợp với các thiết bị

Jquery jQuery là một thư viện JavaScript nhanh, nhỏ và giàu tính năng Nó làm cho những thứ như thao tác và duyệt tài liệu HTML, xử lý sự kiện, hoạt ảnh và Ajax trở nên đơn giản hơn nhiều với một API dễ sử dụng hoạt động trên vô số trình duyệt Với sự kết hợp giữa tính linh hoạt và khả năng mở rộng, jQuery đã thay đổi cách mà hàng triệu người viết JavaScript

Django template là một tài liệu văn bản hoặc một chuỗi Python được đánh dấu bằng ngôn ngữ Django template Một số cấu trúc được công cụ khuôn mẫu nhận ra và diễn giải Những cái chính là các biến và thẻ

Một mẫu được hiển thị với một ngữ cảnh Việc kết xuất thay thế các biến bằng các giá trị của chúng, được tra cứu trong ngữ cảnh và thực thi các thẻ Mọi thứ khác đều là đầu ra

Các ngôn ngữ và công nghệ sử dụng phía Backend

Python là một ngôn ngữ lập trình bậc cao cho các mục đích lập trình đa năng, do Guido van Rossum tạo ra và lần đầu ra mắt vào năm 1991 Python được thiết kế với ưu điểm mạnh là dễ đọc, dễ học và dễ nhớ Python là ngôn ngữ có hình thức rất sáng sủa, cấu trúc rõ ràng, thuận tiện cho người mới học lập trình Cấu trúc của Python còn cho phép người sử dụng viết mã lệnh với số lần gõ phím tối thiểu

Python hoàn toàn tạo kiểu động và dùng cơ chế cấp phát bộ nhớ tự động; do vậy nó tương tự như Perl, Ruby, Scheme, Smalltalk, và Tcl Python được phát triển trong một dự án mã mở, do tổ chức phi lợi nhuận Python Software Foundation quản lý

Ban đầu, Python được phát triển để chạy trên nền Unix Nhưng rồi theo thời gian, Python dần mở rộng sang mọi hệ điều hành từ MS-DOS đến Mac OS, OS/2, Windows, Linux và các hệ điều hành khác thuộc họ Unix

Python hiện đang là ngôn ngữ phổ biến nhất thế giới năm 2020 (Theo số liệu của trang stackoverflow) Đây cũng là một trong những ngôn ngữ hỗ trợ cho khoa học dữ liệu mạnh mẽ bậc nhất thế giới (bên cạnh R và SQL)

Django là một framework bậc cao của Python có thể thúc đẩy việc phát triển phần mềm thần tốc và clean, thiết kế thực dụng Được xây dựng bởi nhiều lập trình viên kinh nghiệm, Django tập trung lớn những vấn đề phát triển Web Đặc biệt nó miễn phí và là open source sản phẩm, tất cả đều hoạt động liền mạch với nhau.(ii) Đa năng: Django có thể được dùng để xây dựng hầu hết các loại website, từ hệ thống quản lý nội dung, cho đến các trang mạng xã hội hay web tin tức Nó có thể làm việc với framework client-side, và chuyển nội dung hầu hết các loại format (HTML, RESS, JSON, XML, v.v.) (iii) Bảo mật: Django giúp các developer trang các lỗi bảo mật thông thường bằng cách cung cấp framework rằng có những kĩ thuật “phải làm như vậy” để bảo vệ website Ví dụ: Django cung cấp bảo mật quản lý tên tài khoản và mật khẩu, tránh các lỗi cơ bản như để thông tin session lên cookie, mã hóa mật khẩu thay vì lưu thẳng (iv) Dễ Scale: Django sử dụng kiến trúc shared-nothing dựa vào component (mỗi phần của kiến trúc sẽ độc lập với nhau, và có thể thay thế hoặc sửa đổi nếu cần thiết) Có sự chia tách rõ ràng giữa các phần nghĩa là nó có thể scale cho việc gia tăng traffic bằng cách thêm phần cứng ở mỗi cấp độ: caching, servers, database servers, hoặc application servers Nhiều web về kinh doanh đã thành công khi Django được scale đáp ứng yêu cầu của họ (v) Dễ maintain: code Django được viết theo nguyên tắc thiết kế và pattern có thể khuyến khích ý tưởng bảo trì và tái sử dụng code Trên thực tế, nó sự theo khái niệm Don’t Repeat Yourself làm cho không có sự lặp lại không cần thiết, giảm một lượng code (vi) Tính linh động: Django được viết bằng Python, nó có thể chạy đa nền tảng Nó có nghĩa rằng bạn không ràng buộc một platform server cụ thể Django được hỗ trợ tốt ở nhiều nhà cung cấp hosting, họ sẽ cung cấp hạ tầng và tài liệu cụ thể cho hosting web Django

Thiết kế kiến trúc

Lựa chọn kiến trúc phần mềm

Phát triển và triển khai ứng dụng

Hệ thống hoạt động theo kiến trúc của Django frameword, nên đây cũng coi như kiến trúc chính của hệ thống Bản chất ở đây vẫn là mô hình MVC

Model: Thành phần trung tâm của ứng dụng Nó là cấu trúc dữ liệu động của ứng dụng, độc lập với giao diện người dùng Nó trực tiếp quản lý dữ liệu, logic và các quy tắc của ứng dụng

View: Phần dữ liệu hiển thị, trả ra cho người dùng Trong đồ án này, 2 dạng dữ liệu trả lại là

Controller: Hỗ trợ định tuyến, tiếp nhận đầu vảo và chuyển đổi nó thành các lệnh để View hoặc Model xử lý

Hình 4-2 Thiết kế tổng quan

Tổng quan, chương trình sẽ bao gồm các gói như ở hình trên Ở tầng thấp nhất, ta có gói models chứa thông tin các thực thể trong db Ở tầng giữa, ta có các gói module sẽ dùng để xử lý phần kịch bản; gói tandan_nlp sẽ dùng để xử lý bài toán xử lý ý định và xử lý thực thể; gói template thì dùng để xử lý phần giao diện hiển thị ra ngoài Ở tầng trên cùng, ta có gói api dùng để trả thông tin api dạng json; gói chat_bot thì dùng để hiển thị giao diện cho người dùng

Thiết kế chi tiết gói

Trong phần này, tôi sẽ trình bày 2 gói chính, yêu cầu nhiều xử lý trong đó, lần lượt là gói tandan_nlp và gói module

Thiết kế chi tiết gói tandan_nlp

Hình 4-3 Thiết kế chi tiết gói tandan_nlp

Trong gói này, tôi có chia thành 3 gói nhỏ hơn (i) Gói classification dùng để xử lý phần phân loại văn bản (xử lý ý định); (ii) Gói ner dùng để giải quyết bài toán xử lý thực thể; (iii) gói utils cung cấp các chức năng chung như chọn model, kiểm tra ngày tháng

Thiết kế chi tiết gói module

Hình 4-4 Thiết kế chi tiết gói module

Gói này xử lý bài toán kịch bản Trong gói có 3 lớp (i) module_card xử lý về các thẻ; (ii) module_variable xử lý về các biến; (iii) module_qa xử lý phần hỏi đáp của người dùng.

Thiết kế chi tiết

Hệ thống đang được dựng dưới hình thức một website dành cho quản trị nên các phần phải có là một menu hiển thị đầy đủ chức năng để người sử dụng dễ dàng sử dụng Hiện tại, tôi đang thiết kế để mỗi một chức năng thêm, sửa, xóa ở một menu

Ngoài ra, để tiện cho quá trình huấn luyện, kiểm tra và chat Tôi đã thiết kế các nút chức năng với màu bắt mắt mà ở trang nào cũng có thể nhìn thấy được Giả sử như khi thêm vài câu mẫu, chúng ta muốn huấn luyện lại mô hình và kiểm tra, thay vì phải nhìn vào menu, ta có thể nhấn ngay vào các nút ở thanh tiêu đề, điều này sẽ mang lại trải nghiệm tốt hơn hẳn cho người dùng

Tiếp theo là việc quy định một số chuẩn về chữ viết, màu sắc Đồ án sử dụng template metronic – là một template html có gần 100.000 lượt mua Việc sử dụng template như vậy giúp cho các chuẩn nói trên không còn là vấn đề Trong quá trình sử dụng, ta chỉ cần lấy các phần tử có trong template ra và sử dụng Việc chuẩn hóa đã có template giải quyết

Cuối cùng là vấn đề responsive Giao diện sử dụng bootstrap để chia bố cục, đảm bảo được tính responsive, trang web sẽ đáp ứng được nhiều loại màn hình khác nhau: màn hình máy tính, màn hình ipad, màn hình điện thoại, v.v

Trong phần này, tôi sẽ trình bày về một lớp chính trong phần xử lý kịch bản là module_qa, một lớp chính trong phần xử lý ý định câu là preprocessor (Lớp này sẽ xử lý phần tiền xử lý), một lớp chính trong phần xử lý thực thể là feature_extractor (Lớp này phụ trách việc sẽ chuyển dữ liệu văn bản thành những đặc trưng gì)

Thiết kế chi tiết lớp preprocessor

Lớp này thuộc gói classification (Gói này đã được trình bày ở mục 5.1.3) và không có thuộc tính riêng

Bảng 4-1 Các phương thức lớp preprocessor Phương thức Tham số đầu vào Kiểu trả về Mô tả

_remove_html text: string string Loại bỏ các ký tự

_normalize text: string string Biến tất cả chữ trong câu thành chữ thường

_sentence_segment text: string string[] Tách đoạn văn thành mảng các câu văn

_remove_special text: string string Loại bỏ ký tự đặc biệt trong câu

_get_stop_words path: string (Đường dẫn của file chứa các từ nối stop word) string[] Lấy danh sách các từ nối từ file có sẵn

_remove_stop_words sentence: string stop_word_path: string string Loại bỏ các từ nối trong câu qua từ điển có sẵn

_word_segment sent: string string[] Tách từ câu thành mảng các từ pre_processing text: string string Trả về câu đã qua tiền xử lý

Thiết kế chi tiết lớp feature_extractor Đây là lớp thuộc gói ner (Đã trình bày trong mục 4.1.3) và không có thuộc tính

Bảng 4-2 Các phương thức lớp feature_extractor Phương thức Tham số đầu vào Kiểu trả về Mô tả word2features sent: string i: int features (Một đối tượng chứa các đặc trưng từ)

Chuyển từ thành các đặc trưng từ sent2features sent: string features[] Chuyển câu thành sent2label sent: string string[] Chuyển câu thành mảng các nhãn của từ sent2token sent: string string[] Chuyển câu thành mảng các từ trong câu

Thiết kế chi tiết lớp module_qa

Lớp này thuộc gói module (Đã trình bày trong 4.1.3) và không có thuộc tính

Bảng 4-3 Các phương thức lớp module_qa

Phương thức Tham số đầu vào

Kiểu trả về Mô tả get_answer_card step_id: int user_id: int u: int

Card[] Trả về mảng các thẻ theo thứ tự sau khi nhận được step_id get_answer cards: card[] step_id: int user_id: int

{ ‘step_id’ : step_id, ‘answers’: config[]

Trả về thông tin bước và các config để client hiển thị classification_text text: string string Trả về ý định của câu predict_entity sentence: string Entity[] Trả về danh sách thực thể trong câu

Thiết kế cơ sở dữ liệu

Hình 4-6 Sơ đồ thực thể - liên kết Bảng 4-4 Thông tin thực thể User User: bảng lưu thông tin người dùng Vì mục tiêu có thể triển khai rộng khắp, nên cần bảng này để lưu thông tin về giấy phép người dùng sau này username String Tài khoản người sử dụng password String Mật khẩu email String Email

Bảng 4-5 Thông tin thực thể Bot

Bot: Một người dùng có thể sở hữu nhiều Bot, như là Chatbot dùng để bán sách, Chatbot dùng để bán quần áo, v.v Bảng này chủ yếu để lưu thông tin cơ bản về Bot và User sở hữu chúng

Tên trường Kiểu dữ liệu Ghi chú id Int Mã định danh, khóa chính user_id Int Khóa ngoài đến bảng User, người sở hữu Bot name String Tên bot description String Mô tả

Bảng 4-6 Thông tin thực thể Intent Intent: Bảng này lưu các danh sách ý định

Tên trường Kiểu dữ liệu Ghi chú id Int Mã định danh, khóa chính bot_id Int Khóa ngoài đến bảng Bot,

Intent thuộc Bot nào intent String Tên ý định description String Mô tả

Bảng 4-7 Thông tin thực thể Sentence

Sentence: Bảng này để lưu thông tin các câu mẫu Chúng ta sẽ thêm rất nhiều các câu khác nhau và gán nhãn ý định cho các câu này, sau đó, qua quá trình training, bot sẽ chỉ ra ý định từ các câu nói của khách hàng

Tên trường Kiểu dữ liệu Ghi chú id Int Mã định danh, khóa chính intent_id Int Khóa ngoài đến bảng Intent, xem câu này có ý định là gì sentence String Nội dung câu mẫu

Bảng 4-8 Thông tin thực thể Entity

Entity: Bảng này để lưu các loại thực thể Ví dụ: tên sách, năm xuất bản, v.v

Tên trường Kiểu dữ liệu Ghi chú id Int Mã định danh, khóa chính bot_id Int Khóa ngoài đến bảng Bot, xem loại thực thể này thuộc Bot nào entity String Tên loại thực thể description String Mô tả

Bảng 4-9 Thông tin thực thể Keyword

Keyword: Bảng này dùng để lưu các từ khóa và nhãn của chúng là các loại thực thể Dùng để bắt các từ khóa trong câu Ví dụ: Từ khóa “Nam Định” có loại thực thể là

Xây dựng ứng dụng

Thư viện và công cụ sử dụng

Bảng 4-19 Các thư viện và công cụ sử dụng

Mục đích Công cụ Địa chỉ URL

IDE lập trình Visual studio Code https://code.visualstudio.com/

IDE lập trình Pycharm https://www.jetbrains.com/pycharm/

Công cụ làm việc với

SQL Server Management Studio https://docs.microsoft.com/en- us/sql/ssms/sql-server-management- studio-ssms?view=sql-server-ver15

HTML Template Metronic https://keenthemes.com/metronic/

Framework dùng để lập trình website

Django https://www.djangoproject.com/

Thư viện dùng để tách từ, pos-tagging

Pyvi https://pypi.org/project/pyvi/

Thư viện hỗ trợ học máy

Scikit-learn https://scikit-learn.org/stable/

Thư viện hỗ trợ chuyển đổi kiểu dữ liệu

Sản phẩm thu được là một hệ thống giúp người dùng tạo ra chatbot và chat thử ở trên đó Ngoài ra, chương trình còn cung cấp các api hỗ trợ tích hợp với dịch vụ bên ngoài Một phần nữa cần đề cập đến là hệ thống đã xây dựng được hai mô đun: một mô đun giúp xử lý các bài toán ngôn ngữ tự nhiên (trong đồ án là hai bài toán xử lý ý định và xử lý thực thể), mô đun còn lại giúp xử lý kịch bản và xử lý trò chuyện

Dưới đây là một số thông số của dự án:

Bảng 4-20 Các thông số của dự án

Dung lượng thực tế khi chạy 500 MB

Dung lượng các thư viện đã cài đặt 294 MB

Dung lượng các file static 111 MB

Số lượng dòng code back-end (chỉ tính các file có đuôi py, bao gồm cả thư viện)

Số lượng dòng code front-end (Tính cả các file static, gồm đuôi html, css, js)

Số lượng bảng trong CSDL 15

Số lượng đường dẫn cho API 32

Minh họa các chức năng chính

Chức năng kiểm tra NLP

Hình 4-7 Chức năng kiểm tra NLP (Bắt đầu) Đây là màn hình khi bắt đầu chức năng này Tiếp đó, người dùng sẽ nhập một câu mẫu vào, sau đó chọn nút “Kiểm tra” Hệ thông chạy chức năng xử lý ngôn ngữ tự nhiên và cho ra kết quả như sau:

Hình 4-8 Chức tra kiểm tra NLP (Thực hiện)

Kết quả trả về chức năng này sẽ là các thực thể mà hệ thống nhận diện được ở bên trên Ở bên dưới là danh sách các ý định mà hệ thống dự đoán với độ chính xác giảm dần

Trường hợp thứ nhất: Khi bot không nhận diện được câu hỏi từ khách hàng

Hình 4-9 Chatbot không nhận diện được ý định câu hỏi

Ví dụ về một giao dịch chuyển khoản

Hình 4-10 Kịch bản chuyển khoản (1)

Hình 4-11 Kịch bản chuyển khoản (2) Ở đây, người dùng sau khi nhập: “Chuyển khoản” thì hệ thống đã xác định được ý định người dùng là “chuyen_khoan” Và bắt đầu trả lời theo bước có ý định là “chuyen_khoan” Ở đây, tôi đã thiết lập các bước theo trình tự như sau:

Bước 1: Thẻ văn bản “Tác vụ yêu cầu nhập số tài khoản và số tiền muốn chuyển”

Bước 2: Thẻ hỏi lại với 2 biến: “số tài khoản” và “số tiền muốn chuyển” Khi người dùng bắt đầu chat câu đầu tiên, hệ thống sẽ chạy phần xử lý thực thể để xem có thể bắt được thực thể nào hay không Nếu không thì sẽ thiết lập hỏi lại cả 2 biến đó

Bước 3: Sau khi hỏi lại và lấy được giá trị các biến yêu cầu ở bước 2, hệ thống mới chuyển sang bước 3 Ở đây, tôi thiết lập một thẻ văn bản có mẫu câu đi kèm: “Số tài khoản muốn chuyển là {{số tài khoản muốn chuyển}}, số tiền muốn chuyển là {{số tiền muốn chuyển}}”

Hệ thống sẽ lấy giá trị các biến thu thập được trước đó thay vào giá trị các cặp ngoặc {{}} Ngoài trả về văn bản, thẻ này sẽ trả về thêm các button “Xác nhận” và “Hủy”.

Triển khai

Như đã trình bày kiến trúc tổng quan ở trên, ứng dụng được xây dựng bằng ngôn ngữ python và hệ quản trị cơ sở dữ liệu sử dụng là SQL Server Cả webserver và cơ sở dữ liệu đã được triển khai trên cùng một máy chủ Window server

Việc triển khai không gặp nhiều khó khăn khi chỉ cần cài đặt SQL Server và Python Việc còn lại là cài đặt các thư viện đi kèm và chạy chương trình Cả phần xử lý front-end và back- end đều được xử lý trên cùng web server nói trên

Tên miền cho phần triển khai đồ án là: https://chatbot.hanhchinhcong.net

Sau khi xây dựng và triển khai thành công sản phẩm, trong phần này, tôi sẽ trình bày những điểu mình cảm thấy tâm đắc nhất trong quá trình thực hiện

Hoàn thành bài toán xử lý ý định Đây là bài toán đầu tiên tôi xử lý trong lĩnh vực xử lý ngôn ngữ tự nhiên Để xử lý bài toán này, tôi đã phải tìm hiểu khá nhiều các định nghĩa về ngôn ngữ tự nhiên (Trình bày ở phần 1.5), cũng như là các cách xử lý chúng (Phần 3.1.1)

Vì là bài toán đầu tiên, nên quá trình tìm hiểu sẽ chậm một chút Ban đầu, để hiểu hơn về các phương pháp học máy, tôi đã thử lập trình mà chưa dùng tới các thư viện hỗ trợ trực tiếp nên quá trình để ra được mô hình học máy đầu tiên tốn không ít công sức, nhưng nhờ đó mà tôi có thể hiểu kỹ hơn về bản chất của chúng, giúp ích cho việc phát triển các bài toán khác sau này

Về phần trích xuất thông tin, trải qua quá trình tìm hiểu, tôi đã tìm hiểu được nhiều phương pháp trích xuất thông tin khác nhau Qua quá trình tổng hợp thông tin, so sánh thì tôi cũng đã rút ra được các ưu, nhược điểm của từng phương pháp, qua đó lựa chọn cho đồ án một phương pháp phù hợp

Phần lựa chọn mô hình học cho bài toán này cũng rất thú vị Cuối cùng, mô hình được lựa chọn để chạy ở thời điểm hiện tại lại là Nạve bayes – mơ hình mà ban đầu cĩ độ chính xác thấp nhất ở trên tập huấn luyện có nhiều dữ liệu

Hoàn thành bài toán xử lý thực thể Đây cũng lại là một bài toán khó khác, để hoàn thành bài toán này cần nhiều thời gian nghiên cứu, xử lý Điều đặc biệt của đồ án là ở bài toán này là ở phần gán nhãn Thông thường, ở bài toán này, người huấn luyện sẽ phải tự đánh nhãn cho từng câu Phần này đã được thiết kế để phù hợp

Các giải pháp và đóng góp nổi bật nhãn sẽ được thực hiện tự động bởi hệ thống Vừa đảm bảo tính chính xác cao hơn, vừa giúp tiết kiệm thời gian cho người tạo bot

Phần lựa chọn thuật toán học máy để sử dụng thì sau khi tham khảo trên các diễn đàn và một số bài viết Các ý tưởng đều tựu trung lại là sử dụng mô hình Conditional random field Mô hình này đã đáp ứng được phần nào yêu cầu của bài toán Với mô hình này, có rất nhiều ứng dụng như gán nhãn, nhận biết thực thể và trích chọn thông tin Đây là vấn đề nhỏ nhưng lại góp phần to lớn trong việc xây dựng những bài toán lớn hơn

Bài toán xử lý kịch bản Đây cũng là một bài toán đòi hỏi nhiều phần xử lý Như đã đề cập từ trước thì đây không chỉ là phần giúp định hướng câu trả lời từ khách hàng, mà nó còn là phần khỏa lấp được thiếu sót của 2 bài toán học máy ở trên vì vấn đề thiếu dữ liệu Đầu tiên xét bài toán xử lý thực thể Đây là bài toán nhận diện khó hơn so với bài toán xác định ý định Để có thể khắc phục sự thiếu sót khi nhận dạng thực thể, tôi đã thêm vào thẻ hỏi lại, kèm với đó là định nghĩa kiểu dữ liệu trả về, giúp quá trình nhận dạng khi không thực hiện được ở pha trên, sẽ có pha dưới hỗ trợ

Tiếp đến phải kể đến phần bảng chọn Dù đã tích hợp xử lý ngôn ngữ tự nhiên, nhưng một số trường hợp đưa ra các menu sẵn lại phù hợp hơn để cho người dùng tự hỏi Ví dụ, như trong trường hợp người dùng lần đầu ghé thăm cửa hàng Họ muốn được giới thiệu sản phẩm mới mà không biết sản phẩm đó cần mô tả như nào, có những loại nào Đây là lúc các lựa chọn phát huy sức mạnh, nó sẽ mô tả được đang có những loại sản phẩm nào và dần định hướng người dùng chọn vào những sản phẩm họ thực sự muốn

Phần thẻ Json API, đây là phần giúp tích hợp với các dịch vụ khác được Quá trình xử lý chuỗi để gọi chính xác api, cũng như xử lý kết quả trả về từ api là khá phức tạp Tuy nhiên, sau nhiều lần hiệu chỉnh định dạng, phần này cũng đã hoàn thành

Ngoài ra, một số thẻ khác đã được giới thiệu ở chương 3, cũng đều giúp tạo dựng kịch bản đơn giản hơn và tối ưu hóa trải nghiệm của người dùng

Trong phần này, tôi sẽ nêu lại một số khó khăn trong khi thực hiện đồ án, cuối cùng, tôi sẽ tổng kết lại bài toán và nêu hướng phát triển cho bài toán trong tương lai.

Khó khăn

Là một hệ thống liên quan nhiều đến học máy, nên vấn đề chưa có nhiều dữ liệu để training thật sự là một vấn đề lớn, ảnh hưởng nhiều đến độ chính xác khi dự đoán Ban đầu, tôi đã gặp nhiều khó khăn ở đây, nhưng nhờ được thầy tư vấn cùng với việc tìm hiểu thêm các tài liệu, giải pháp sử dụng kịch bản đã phần nào hóa giải được vấn đề khó khăn này

Tiếp theo, thì vì đây là một bài toán về ngôn ngữ tự nhiên, nên nó gặp tất cả các vấn đề của ngôn ngữ tự nhiên như: người dùng nhập sai chính tả, một số tiếng lóng, từ địa phương, viết không dấu, v.v Phần này đã được đáp ứng một phần qua giải pháp sử dụng từ điển, chuyển các từ viết sai, không đúng, không chuẩn về dạng hay gặp nhất của nó Song giải pháp vẫn chưa phải triệt để, phát triển vấn đề này cần một bài toán riêng và cần quá trình nghiên cứu, tìm hiểu giải pháp kĩ càng

Khó khăn cuối cùng mà tôi muốn đề cập là về mặt thời gian Đồ án sử dụng nhiều bài toán học máy tốn khá nhiều thời gian để nghiên cứu Song song với đó, đây lại không phải đồ án thuần về nghiên cứu, quá trình dựng web, lên ý tưởng chức năng để thể hiện được ra ngoài những ý tưởng cũng tốn không ít thời gian Do đó, trong đồ án lần này, đồ án chưa thực hiện được hoàn chỉnh toàn bộ những thứ đã chỉ ra trong thiết kế Những phần đã hoàn thành, các đóng góp nổi bật sẽ được trình bày trong mục 5.2, những thứ còn chưa kịp hoàn thành và các ý tưởng mới nữa sẽ được đề cập trong mục 5.4.

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

HÌNH ẢNH LIÊN QUAN

Hình 1-3 Cây quyết định mua quần áo - Hệ thống chatbot phục vụ đa lĩnh vực
Hình 1 3 Cây quyết định mua quần áo (Trang 19)
Hình 2-1 Biểu đồ use case tổng quan - Hệ thống chatbot phục vụ đa lĩnh vực
Hình 2 1 Biểu đồ use case tổng quan (Trang 25)
Hình 2-2 Biểu đồ phân rã use case “Quản lý dữ liệu NLP” - Hệ thống chatbot phục vụ đa lĩnh vực
Hình 2 2 Biểu đồ phân rã use case “Quản lý dữ liệu NLP” (Trang 26)
Hình 2-3 Biểu đồ phân rã use case “Quản lý câu mẫu” - Hệ thống chatbot phục vụ đa lĩnh vực
Hình 2 3 Biểu đồ phân rã use case “Quản lý câu mẫu” (Trang 27)
Hình 2-4 Biểu đồ phân rã use case “Quản lý ý định” - Hệ thống chatbot phục vụ đa lĩnh vực
Hình 2 4 Biểu đồ phân rã use case “Quản lý ý định” (Trang 27)
Hình 2-5 Biểu đồ phân rã use case “Quản lý loại thực thể” - Hệ thống chatbot phục vụ đa lĩnh vực
Hình 2 5 Biểu đồ phân rã use case “Quản lý loại thực thể” (Trang 28)
Hình 2-6 Biểu đồ phân rã use case “Quản lý từ khóa” - Hệ thống chatbot phục vụ đa lĩnh vực
Hình 2 6 Biểu đồ phân rã use case “Quản lý từ khóa” (Trang 29)
Hình 2-7 Biểu đồ phân rã use case “Quản lý kịch bản” - Hệ thống chatbot phục vụ đa lĩnh vực
Hình 2 7 Biểu đồ phân rã use case “Quản lý kịch bản” (Trang 30)
Hình 2-8 Biểu đồ phân rã use case “Quản lý lịch sử trò chuyện” - Hệ thống chatbot phục vụ đa lĩnh vực
Hình 2 8 Biểu đồ phân rã use case “Quản lý lịch sử trò chuyện” (Trang 31)
Bảng 2-4 Đặc tả use case “Quản lý từ khóa” - Hệ thống chatbot phục vụ đa lĩnh vực
Bảng 2 4 Đặc tả use case “Quản lý từ khóa” (Trang 38)
Bảng 2-6 Đặc tả use case “Quản lý kịch bản” - Hệ thống chatbot phục vụ đa lĩnh vực
Bảng 2 6 Đặc tả use case “Quản lý kịch bản” (Trang 42)
Bảng 2-7 Đặc tả use case “Kiểm tra NLP” - Hệ thống chatbot phục vụ đa lĩnh vực
Bảng 2 7 Đặc tả use case “Kiểm tra NLP” (Trang 44)
Hình 3-1 Pha huấn luyện - Hệ thống chatbot phục vụ đa lĩnh vực
Hình 3 1 Pha huấn luyện (Trang 47)
Hình 3-2 Pha dự báo - Hệ thống chatbot phục vụ đa lĩnh vực
Hình 3 2 Pha dự báo (Trang 48)
Hình 3-3 Các bước tiền xử lý dữ liệu - Hệ thống chatbot phục vụ đa lĩnh vực
Hình 3 3 Các bước tiền xử lý dữ liệu (Trang 49)
w