Tìm kiếm tương đồng ngữ nghĩa

Một phần của tài liệu Xây dựng hệ quản trị đào tạo tích hợp mạng xã hội (Trang 143)

5 Phân tích và thiết kế hệ thống

6.6 Tìm kiếm tương đồng ngữ nghĩa

Nhóm làm đề tài sử dụng tập dữ liệu Quora Question Pairs để thử nghiệm tìm kiếm giải thuật và mô hình phù hợp để hiện thực tính năng tìm kiếm về tương đồng ngữ nghĩa. Tập dữ liệu này bao gồm các cặp câu hỏi được lấy từ dữ liệu trên website Quora với nhãn là 0 hoặc 1 tương ứng với trùng hoặc không trùng.

Hình 48: Miêu tả tập dữ liệu Quora Question Pairs.

Nhóm làm đề tài thực hiện tiền xử lý các câu hỏi trong tập dữ liệu để phù hợp với nhiều mô hình và giải thuật khác nhau. Các bước tiền xử lý bao gồm: chuyển đổi dạng viết tắt tiếng anh, chuyển đổi một vài từ đồng nghĩa (như e-mail thành email). Sau đó, nhóm làm đề tài thực hiện kiểm thử với ba giải thuật và mô hình sau:

1. Mô hình Sentence Transformer dựa trên biến thể của BERT có tên là RoBERTa (pre- trained)

2. Bộ vector hóa TF-IDF Vectorizer của thư viện sklearn.

3. Sử dụng mô hình Universal Sentence Encoder của Google (pre-trained).

Nhóm làm đề tài thực hiện đánh các mô hình trên bằng cách đưa từng cặp câu hỏi vào từng mô, tính ra embedding và lấy hàm cosine similarity của chúng. Nếu giá trị này lớn hơn 0.5 thì mô hình đó tiên đoán hai câu văn này trùng nhau, ngược lại là không trùng nhau. Từ đó, thu được các ma trận confusion như sau:

Hình 49: Ma trận confusion của mô hình BERT (với hàng là nhãn, cột là giá trị dự đoán).

Hình 51: Ma trận confusion của Universal Sentence Encoder. Từ đó ta thu được các metric đánh giá ở bảng sau:

Mô hình Precision Recall F-score

Bert 0.51 0.99 0.67

TF-IDF 0.56 0.42 0.48

USE 0.57 0.02 0.04

Bảng 101: Kết quả kiểm thử một vài mô hình thường dùng cho đánh giá tương đồng ngữ nghĩa

Từ kết quả trên, nhóm làm đề tài quyết định sử dụng mô hình pretrained RoBERTa của thư viện Sentence-Transformer.

Ngoài ra, nhóm cũng thực hiện kiểm thử hai chiến lược xây dựng mô hình chỉ sử dụng mô hình Bi-Encoder và kết hợp cả Bi-Encoder và Cross-Encoder (được mô tả ở phần Cơ sở lý thuyết). Nhóm làm đề tài thử nghiệm trên cùng tập dữ liệu là Quora, sử dụng thư viện đánh giá BEIR (một thư viện chuyên đánh giá cho các mô hình thuộc tìm kiếm ngữ cảnh), thu được kết quả như sau:

Mô hình NDCG@1 NDCG@3 NDCG@5 NDCG@10

Bi-Encoder 0.727 0.76882 0.7865 0.80529

Bi-Encoder +

Cross-Encoder 0.722 0.76724 0.78778 0.80402

Mô hình MAP@1 MAP@3 MAP@5 MAP@10

Bi-Encoder 0.62954 0.73068 0.74782 0.75966

Bi-Encoder +

Cross-Encoder 0.62351 0.72751 0.74716 0.75769

Bảng 103: Đánh giá theo MAP

Có thể thấy, việc thêm Cross-encoder vào hệ thống không làm tăng chất lượng của mô hình trong việc tìm kiếm theo ngữ cảnh như nhận định ban đầu. Nhóm làm đề tài quyết định chỉ sử dụng một Bi-encoder để hiện thực tính năng tìm kiếm theo tương đồng ngữ cảnh.

6.6.2 Tích hợp vào hệ thống

Hệ thống tận dụng công nghệ ElasticSearch để lưu trữ dữ liệu câu hỏi đã được chuyển thành dạng embedding dưới kiểu dữ liệu dense vector. Khi truy vấn, chúng ta sử dụng hàm cosine similarity làm score để sắp xếp kết quả (thay vì sử dụng BM25 như tìm kiếm truyền thống).

Hình 52: Truy vấn tìm kiếm theo hàm sắp xếp custom là cosine similarity (còn có tên là angular).

6.7.1 Giao diện đăng nhập, đăng ký

Hình 53: Giao diện Đăng ký.

Hình 54: Giao diện Đăng nhập.

Hình 55: Giao diện trang Dashboard.

6.7.3 Giao diện trang Khóa học

Hình 57: Giao diện trang Khóa học, tab Đang dạy.

Hình 58: Giao diện trang Khóa học, tab Gợi ý.

Hình 59: Giao diện trang Tổng quan của một Khóa học.

Hình 61: Giao diện trang Thành viên của một Khóa học.

Hình 63: Giao diện trang Bảng xếp hạng của một Khóa học.

Hình 64: Giao diện trang Thành tích của một Khóa học.

Hình 65: Giao diện trang Tổng quan khi học một bài học trong Khóa học.

Hình 67: Giao diện trang Ghi chú khi học một bài học trong Khóa học.

Hình 69: Giao diện Chỉnh sửa ghi chú khi học một bài học trong Khóa học.

Hình 71: Giao diện Tạo một câu hỏi mới khi học một bài học trong Khóa học, có tích hợp tính năng tìm kiếm những câu hỏi có thể bị trùng.

Hình 72: Giao diện Chi tiết một câu hỏi khi học một bài học trong Khóa học.

Hình 73: Giao diện tab Phân tích tổng quan trong Bảng điều khiển của một Khóa học (Người điều hành hệ thống).

Hình 74: Giao diện tab Phân tích học tập trong Bảng điều khiển của một Khóa học (Người điều hành hệ thống).

Hình 75: Giao diện tab Thông tin trong Bảng điều khiển của một Khóa học (Người điều hành hệ thống).

Hình 76: Giao diện tab Tổng quan trong Bảng điều khiển của một Khóa học (Người điều hành hệ thống).

Hình 77: Giao diện tab Nhóm trong Bảng điều khiển của một Khóa học (Người điều hành hệ thống).

Hình 78: Giao diện Thêm Nhóm liên kết trong Bảng điều khiển của Khóa học (Người điều hành hệ thống).

Hình 79: Giao diện tab Thành viên trong Bảng điều khiển của một Khóa học (Người điều hành hệ thống).

Hình 80: Giao diện Thêm người dùng vào Khóa học trong Bảng điều khiển (Người điều hành hệ thống).

Hình 81: Giao diện tab Yêu cầu trong Bảng điều khiển của một Khóa học (Người điều hành hệ thống).

Hình 82: Giao diện tab Thành tích trong Bảng điều khiển của một Khóa học (Người điều hành hệ thống).

Hình 83: Giao diện Thêm thành tích vào Khóa học trong Bảng điều khiển (Người điều hành hệ thống).

Hình 85: Giao diện Thêm phần học mới trong Bảng điều khiển của Khóa học (Giảng viên).

Hình 87: Giao diện Chỉnh sửa Video của bài học loại Video trong Bảng điều khiển của Khóa học (Giảng viên).

Hình 88: Giao diện Chỉnh sửa mô tả của bài học trong Bảng điều khiển của Khóa học (Giảng viên).

Hình 89: Giao diện Chỉnh sửa tập tin đính kèm của bài học trong Bảng điều khiển của Khóa học (Giảng viên).

Hình 90: Giao diện Chọn và tải lên tập tin đính kèmcủa bài học trong Bảng điều khiển của Khóa học (Giảng viên).

Hình 91: Giao diệntrang Nhóm.

Hình 92: Giao diện Tạo nhóm mới.

Hình 93: Giao diện trang Bài viết trong một Nhóm.

Hình 95: Giao diện trang Hỏi & Đáp trong một Nhóm.

Hình 96: Giao diện trang Thành viên của một Nhóm.

Hình 97: Giao diện tab Phân tích độ phát triển của Bảng điều khiển trong Nhóm (Quản trị viên Nhóm).

Hình 98: Giao diện tab Phân tích họat động của Bảng điều khiển trong Nhóm (Quản trị viên Nhóm).

Hình 99: Giao diện tab Thông tin của Bảng điều khiển trong Nhóm (Quản trị viên Nhóm).

Hình 101: Giao diện Tạo luật lệ mới của Bảng điều khiển trong Nhóm (Quản trị viên Nhóm).

Hình 102: Giao diện Chỉnh sửa luật lệ của Bảng điều khiển trong Nhóm (Quản trị viên Nhóm).

Hình 103: Giao diện tab Thành viên của Bảng điều khiển trong Nhóm (Quản trị viên Nhóm).

Hình 104: Giao diện tab Yêu cầu của Bảng điều khiển trong Nhóm (Quản trị viên Nhóm).

Hình 105: Giao diện tab Tổng quan của người dùng.

Hình 107: Giao diện tab Nhóm của người dùng.

Hình 109: Giao diện tab Thành tích của người dùng.

6.7.11 Giao diện trang Cài đặt tài khoản của người dùng

Hình 110: Giao diện tab Thông tin cá nhân của trang Cài đặt tài khoản của người dùng.

Hình 111: Giao diện trang Nhắn tin.

6.7.13 Giao diện của tính năng Thông báo

Hình 112: Giao diện của tính năng Thông báo.

Hình 113: Giao diện của tính năng Tìm kiếm nâng cao với từ khóa thông thường.

Hình 114: Giao diện của tính năng Tìm kiếm nâng cao với khả năng tự động gợi ý dựa trên query tag from.

Hình 115: Giao diện của tính năng Tìm kiếm nâng cao với từ khóa có chứa query tag.

7 Triển khai

Hệ thống được triển khai trên các nền tảng đám mây Amazon và Netlify, được khái quát thông qua sơ đồ sau:

Hình 116: Sơ đồ triển khai.

Nhóm làm đề tài sử dụng nền tảng đám mây của Amazon AWS để triển khai phần back- end của hệ thống, bao gồm application server, các cơ sở dữ liệu và các hệ thống bên ngoài khác. Các thành phần này được triển khai sử dụng tài nguyên là máy ảo Amazon EC2 với hệ điều hành là Ubuntu. Ưu điểm của việc sử dụng nền tảng Amazon và máy ảo EC2 để triển khai có thể kể đến:

 Linh hoạt trong việc thay đổi cấu hình của máy chủ: địa chỉ IP tĩnh, cấu hình hiệu năng RAM và CPU, mở port, v.v..

 Linh hoạt trong việc cài đặt vì máy ảo EC2 hoàn toàn tương đồng với một máy vật lý truyền thống. Do đó, nhóm làm đề tài có thể toàn quyền phân bổ tài nguyên vào các máy ảo này để tối đa hiệu năng và tiết kiệm chi phí. Ở sơ đồ, các khối với các kích thước khác nhau thể hiện cấu hình hiệu năng to nhỏ khác nhau cho từng cụm tài nguyên. Ví dụ với ElasticSearch thì do đây là một công nghệ chiếm khá nhiều tài nguyên, nhóm làm đề tài phân bổ một máy chủ có RAM 8GB và 2CPU để triển khai.  Giao diện tương đối thân thiện và dễ dàng sử dụng.

Hình 117: Giao diện cấu hình một máy chủ EC2.

Nhược điểm duy nhất của AWS đó chính là chi phí vận hành. Mặc dù AWS có hỗ trợ miễn phí gói dùng thử, gói này chỉ hỗ trợ một vài tài nguyên có cấu hình thấp, không đủ để triển khai toàn bộ hệ thống.

Đối với phần front-end, nhóm làm đề tài sử dụng nền tảng đám mây Netlify. Đây là một nền tảng triển khai phần mềm khá mới mẻ và cung cấp khá nhiều lợi ích khi triển khai như: hỗ trợ Gzip, hỗ trợ miễn phí tên miền và HTTPS. Vì triển khai front-end về bản chất chỉ là lưu trữ mã nguồn đã được build chứa HTML, CSS và Javascript, gói miễn phí của Netlify đáp ứng đủ mục đích sử dụng cho hệ thống.

Hình 118: Bảng điều khiển của Netilfy.

Như trên hình, Netlify miễn phí và rất tiện lợi nhưng có những giới hạn:

 Bandwidth giới hạn: là băng thông giới hạn mỗi khi có người truy cập vào trang web.  Thời gian build project tự động bị giới hạn: build tự động thông qua CI/CD của GitHub

là một tính năng quan trọng khiến cho Netlify trở nên nổi tiếng với độ dễ sử dụng của mình.

 Chỉ cho phép build một project duy nhất trong một thời điểm.

Do đó, để tiết kiệm dữ liệu, nhóm làm đề tài không sử dụng tính năng CI/CD của Netlify kết hợp với GitHub mà sẽ tự build và deploy trực tiếp bằng Netlify CLI.

8 Tổng kết

8.1 Tổng kết về luận văn tốt nghiệp

Sau đề tài luận văn này, nhóm làm đề tài đã đạt được những thành tựu đáng kể sau: 1. Đối với nhiệm vụ luận văn:

– Nhóm làm đề tài đã xác định được trọng tâm chính của hệ thống để tập trung hiện thực. Bởi lẽ LMS là một hệ thống khá rộng lớn, với ngữ cảnh nhóm làm đề tài chỉ gồm hai thành viên, việc xác định mục tiêu phù hợp phần nào giúp nhóm giảm bớt thời gian hiện thực.

2. Đối với yêu cầu tìm hiểu và phân tích:

– Nhóm làm đề tài đã khảo sát ưu và nhược điểm của các hệ thống LMS trên thị trường để từ đó đưa ra giới hạn nghiệp vụ của đề tài. Đồng thời trong quá trình phân tích nghiệp vụ, nhóm làm đề tài cũng đã xác định được những khó khăn cả về hiện tại lẫn tương lai gần để từ đó đưa ra những giải pháp tháo gỡ chúng. 3. Đối với cơ sở lý thuyết và công nghệ:

– Nhóm làm đề tài đã đề ra được kiến trúc phát triển hệ thống: dựa trên mô hình

MVC và áp dụng REST API để hiện thực khả năng tương tác giữa tầng Front-end

và tầng Back-end.

– Nhóm làm đề tài cũng đã giới thiệu sơ lược về các công nghệ mà nhóm sẽ sử dụng để hiện thực chi tiết đề tài: VueJS, NestJS, PostgreSQL, ElasticSearch, ActionML, v.v.. và khái quát được phần lý thuyết căn bản cần nắm vững để hiện thực được hệ thống.

4. Đối với thiết kế và hiện thực.

– Nhóm làm đề tài đã hoạch được các yêu cầu chức năng cơ bản và nâng cao của đề tài và tổ chức chúng dưới dạng sơ đồ use-case. Nhóm cũng đã mô tả chi tiết một vài use-case trong sơ đồ dưới dạng các bảng đặc tả đề cung cấp một cái nhìn tổng thể về chức năng của hệ thống.

– Nhóm làm đề tài cũng đã thiết kế lược đồ ERD mô tả tổng quan các thực thể trong cơ sở dữ liệu của hệ thống cũng như các mối quan hệ của chúng.

– Nhóm làm đề tài cũng đã đề xuất được mô hình kiến trúc áp dụng các mẫu kiến trúc, triển khai phổ biến thông dụng hiện nay. Trong đó, kiến trúc module hóa hệ thống đã giúp cho việc hiện thực đề tài dễ dàng và hiệu quả hơn.

– Nhóm làm đề tài cũng đã mô tả các phương pháp sử dụng để giải quyết các bài toán phát sinh trong quá trình hiện thực.

5. Đối với triển khai và đánh giá

– Nhóm làm đề tài đã đưa ra sơ đồ mô tả hệ thống trong ngữ cảnh triển khai, và đã thành công trong việc triển khai hệ thống lên nền tảng đám mây AWS phục vụ mục đích demo.

– Nhóm làm đề tài cũng đánh giá hiệu năng hệ thống sử dụng Google Lighthouse. – Đối với các module áp dụng Machine Learning trong hệ thống, nhóm làm đề tài

luôn có bước kiểm thử và đánh giá trên tập dữ liệu có liên quan.

8.2 Hạn chế và cải tiến trong tương lai

Trong quá trình phân tích và hiện thực thiết kế hệ thống, nhóm làm đề tài vẫn còn một vài hạn chế cần phải khắc phục như sau:

 Quá trình tích hợp giữa mạng xã hội và hệ thống quản lý học tập vẫn còn lỏng lẻo và chưa sâu. Nhóm làm đề tài cần dành thời gian thêm để xây dựng được các tính năng mạng xã hội hướng đến Social Learning trong hệ thống quản lý học tập.

 Mặc dù đề tài đã có xác định trọng tâm, song trong quá trình hiện thực, nhóm làm đề tài vẫn gặp khó khăn trong việc phân bổ thời gian. Do đó, hệ thống không tránh khỏi việc có một số tính năng chưa được sâu và có độ tích hợp cao.

Tài liệu tham khảo

[1] Web Architecture

Đường dẫn: https://en.ryte.com/wiki/Web_Architecture

Lần truy cập cuối: 16/07/2021. [2] Front-end & Back-end

Đường dẫn: https://en.wikipedia.org/wiki/Front_end_and_back_end

Lần truy cập cuối: 16/07/2021. [3] Representational state transfer

Đường dẫn: https://en.wikipedia.org/wiki/Representational_state_transfer Lần truy cập cuối: 16/07/2021. [4] Redis Đường dẫn: https://redis.io/ Lần truy cập cuối: 16/07/2021. [5] ElasticSearch Đường dẫn: https://www.elastic.co/ Lần truy cập cuối: 16/07/2021. [6] PostgreSQL Đường dẫn: https://www.postgresql.org/ Lần truy cập cuối: 16/07/2021. [7] VueJS Đường dẫn: https://v3.vuejs.org/ Lần truy cập cuối: 16/07/2021.

Một phần của tài liệu Xây dựng hệ quản trị đào tạo tích hợp mạng xã hội (Trang 143)

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

(185 trang)