Mô hình ứng dụng

Một phần của tài liệu Xây dựng hệ thống hỏi đáp (Trang 65 - 66)

8 Tổng kết

7.6 Mô hình ứng dụng

7.4.2 Mô hình ứng dụng:

Hình 7.6 mô tả toàn bộ hệ thống mà nhóm phát triển ứng dụng, hệ thống được chia làm 2 phần nhằm giúp cho việc deploy và phát triển trở nên dễ dàng hơn, tách biệt phần giao diện và phần xử lí logic cho ứng dụng. Sau khi cân nhắc về các lợi ích trên cùng với kinh phí có thể bỏ ra, nhóm quyết định dùng 2 server cung cấp bởi Amazon Web Service để deploy ứng dụng. Đối với FrontEnd, nhóm dùng một webserver Nginx để cung cấp giao diện ứng dụng cho người dùng bao gồm các tệp tĩnh html, js và css. Đối với BackEnd nhóm dùng uWSGI server tích hợp Flask app, đây sẽ là nguồn cung cấp api cho giao diện ứng dụng (trả lời câu hỏi, tạo mẩu dữ liệu).

Để có thể tích hợp 2 mô hình tiếng Anh và tiếng Việt, nhóm tải lên server 2 tệp mô hình đã huấn luyện và đặt vào một thư mục cố định. Ngoài ra nhóm cũng làm tương tự đối với các tệp có dung lượng cao khác như các tệp chứa Word Embedding, Character Embedding, Dataset SquAD, và các phiên bản khác của mô hình tiếng Anh và tiếng Việt. Làm như vậy sẽ giúp cho Flask trở nên độc lập không bị phụ thuộc vào các phiên bản của mô hình mà nhóm muốn sử dụng, từ Flask chỉ cần trỏ tới đúng vị trí thư mục của mô hình mà nhóm muốn sử dụng chứ không cần thiết phải chạy lại app.

Để tổ chức và lưu mẩu dữ liệu mà người dùng tạo ra, nhóm dùng một cơ sở dữ liệu MongoDB được lưu trữ trên cùng server với Flask app, cấu trúc của dữ liệu được lưu vào MongoDB giống với cấu trúc tập dữ liệu SquAD, việc làm này nhằm tối ưu công đoạn tiền xử lí dữ liệu khi cần sử dụng tập dữ liệu này. Ngoài sử dụng cở sở dữ liệu, nhóm còn triển khai caching bằng redis nhằm lưu một số dữ liệu cần thiết cho giao diện như: số lượng mẩu dữ liệu trong cơ sở dữ liệu, các điểm dữ liệu mẫu đề xuất cho người dùng ( đoạn văn mẫu, câu hỏi mẫu). Việc sử dụng redis là cần thiết, để tránh việc đọc ghi tệp tin tĩnh quá nhiều chỉ để lấy các điểm dữ liệu làm mẫu. Ngoài ra, vì nhóm đã tổ chức cơ sở dữ liệu theo cấu trúc của SquAD đó là ứng với 1 đoạn văn sẽ có nhiều câu hỏi (tỉ lệ1 :m), ứng với mỗi câu hỏi lại có thể có nhiều câu trả lời (tỉ lệ1 :n), nhưng số lượng điểm dữ liệu lại chứa tỉ lệđoạn văn:câu hỏi:câu trả lờilà1 : 1 : 1, do đó nếu

THÍ NGHIỆM VÀ KẾT QUẢ đếm số điểm dữ liệu bằng cách query sẽ gây mất thời gian trong khi hiển thị số điểm dữ liệu lên giao diện chỉ là tính năng phụ và không cần phải hiển thị chính xác tuyệt đối. Để giải quyết, nhóm cũng đã dùng redis để cache giá trị đại diện cho số lượng điểm dữ liệu, và cập nhật lại khi cần.

Sau khi đã xác định rõ số lượng và vai trò của mỗi thành phần trong hệ thống, việc còn lại là deploy và kết nối các thành phần của hệ thống. Nhóm chọn cách đóng gói các thành phần bằng Docker để chạy các container ứng với mỗi thành phần trên cùng server, sau đó cấu hình mạng để các container này có thể giao tiếp với nhau.

7.4.3 Giao diện tính năng trả lời câu hỏi:

Hình 7.7 là giao diện tính năng trả lời câu hỏi. Tại đây, dưới tên form có hai nút bấm để cho người dùng chọn mô hình tiếng Anh hoặc tiếng Việt. Tiếp theo là: ô nhập đoạn văn ngữ cảnh, cho phép người dùng tự nhập hoặc chọn một số đoạn mẫu được phân loại theo ngôn ngữ; một ô nhập câu hỏi; một nút gửi yêu cầu. Sau khi người dùng điền đầy đủ và gửi yêu cầu cho hệ thống, câu trả lời nhận được sẽ được hiển thị phía dưới form.

Một phần của tài liệu Xây dựng hệ thống hỏi đáp (Trang 65 - 66)

Tải bản đầy đủ (PDF)

(71 trang)