Bối cảnh và vấn đề nghiên cứu

Trong đời sống hiện đại, việc sắp xếp và quản trị thời gian biểu cá nhân đóng vai trò then chốt đối với năng suất làm việc của mỗi cá nhân. Nhóm tác giả chỉ ra rằng phương thức quản lý công việc hiện nay chủ yếu rơi vào ba nhóm: sử dụng các phần mềm lập lịch truyền thống trên máy tính (như Microsoft Outlook thuộc bộ ứng dụng văn phòng), ghi chép thủ công bằng sổ tay hoặc lịch để bàn, và phụ thuộc hoàn toàn vào trí nhớ cá nhân theo các chu kỳ lặp lại. Việc thiếu một công cụ hỗ trợ tự động và thông minh dẫn đến tình trạng quá tải, quên lịch hẹn hoặc sắp xếp các công việc bị trùng lặp, gây áp lực tâm lý và giảm hiệu quả lao động.

Mặc dù thị trường đã có nhiều ứng dụng quản lý tác vụ, phần lớn các giải pháp này vẫn đòi hỏi người dùng phải tính toán, nhập liệu và điều chỉnh thủ công qua bàn phím. Xuất phát từ thực tiễn đó, đồ án tốt nghiệp "Building a Voice-Powered Reminder Mobile Application" (Xây dựng ứng dụng nhắc nhở di động kích hoạt bằng giọng nói) được thực hiện nhằm tận dụng trí tuệ nhân tạo (AI) và xử lý ngôn ngữ tự nhiên (NLP) để tối ưu hóa quy trình lên lịch nhắc nhở.

Nhiệm vụ nghiên cứu của đồ án được xác định cụ thể qua bốn mục tiêu chính:

  1. Cho phép ghi âm giọng nói, chuyển đổi giọng nói thành văn bản, sau đó trích xuất thành các tác vụ và sắp xếp lịch trình một cách tối ưu nhằm tiết kiệm thời gian nhập liệu.
  2. Quản lý hồ sơ người dùng, thông tin cá nhân, đo lường hiệu suất thực hiện công việc và gửi thông báo nhắc nhở các công việc bị trễ hạn.
  3. Quản lý và đề xuất lịch trình phù hợp, giúp người dùng linh hoạt lựa chọn và thích ứng với ứng dụng.
  4. Dự đoán và gửi cảnh báo ngay lập tức đối với các khung giờ bị trùng lặp hoặc mốc thời gian không hợp lý, hỗ trợ người dùng nhận diện các tác vụ không cần thiết.

Đối tượng nghiên cứu của đề tài bao gồm hai nhóm người tham gia khảo sát: nhóm có nền tảng kiến thức công nghệ và nhóm không có kiến thức công nghệ. Phạm vi kỹ thuật của đồ án bao gồm môi trường lập trình Android (Android Studio), framework Flutter, hệ quản trị cơ sở dữ liệu PostgreSQL, framework Spring Boot, framework Flask, thư viện học sâu TensorFlow/PyTorch cùng các công cụ xử lý ngôn ngữ tự nhiên. Đề tài được triển khai thực hiện từ ngày 11/09/2023 đến ngày 25/12/2023 tại Trường Đại học Sư phạm Kỹ thuật Thành phố Hồ Chí Minh.

Cơ sở lý thuyết và phương pháp

Cơ sở lý thuyết của đồ án dựa trên các mô hình và kỹ thuật xử lý ngôn ngữ tự nhiên hiện đại kết hợp với kiến trúc phát triển phần mềm di động và dịch vụ web:

  • Kỹ thuật nhúng từ (Word Embedding): Chuyển đổi từ ngữ thành các vector dày đặc trong không gian liên tục (như Word2Vec, GloVe, FastText), phản ánh quan hệ ngữ nghĩa và ngữ cảnh giữa các từ để khắc phục nhược điểm của các biểu diễn vector thưa truyền thống.
  • Kiến trúc Transformer: Mô hình học sâu dựa trên cơ chế tự chú ý (Self-Attention) với cấu trúc bộ mã hóa - giải mã (Encoder-Decoder) nhiều lớp và mạng nơ-ron truyền thẳng theo vị trí (Position-wise Feed-Forward Network), cho phép xử lý dữ liệu chuỗi song song và nắm bắt mối phụ thuộc xa giữa các từ.
  • Mô hình GPT (Generative Pre-trained Transformer): Kiến trúc tiền huấn luyện biểu diễn ngôn ngữ tổng quát phục vụ cho việc hiểu và tạo sinh văn bản theo ngữ cảnh.
  • Thư viện phân tích thời gian parsedatetime: Công cụ kết hợp thuật toán dựa trên luật (Rule-based) và gán nhãn từ loại (POS tagging) để trích xuất mốc thời gian từ ngôn ngữ tự nhiên (như "tomorrow", "next Monday", "in two weeks") kèm khả năng xử lý ngữ cảnh địa phương hóa (Localization).

Phương pháp nghiên cứu thực tế của nhóm bao gồm:

  • Phương pháp phân tích và tổng hợp lý thuyết: Hệ thống hóa các nghiên cứu liên quan về mô hình học chuỗi thời gian, đánh giá tự động ca kiểm thử NLP và thuật toán phân bổ thích ứng.
  • Phương pháp thu thập và xây dựng hệ thống: Thiết lập kiến trúc phần mềm tích hợp đa nền tảng, kết nối giữa ứng dụng di động, máy chủ API và mô hình trí tuệ nhân tạo.
  • Phương pháp tạo sinh và thống kê dữ liệu: Xây dựng tập dữ liệu gồm khoảng 2.000 tác vụ cơ sở thuộc các lĩnh vực sinh hoạt thường nhật. Từ đó, nhóm áp dụng kỹ thuật kết hợp mẫu câu (tiền tố danh từ, động từ, giới từ, liên từ và mốc thời gian) để tạo ra tập dữ liệu huấn luyện hơn 18.000 cặp câu đầu vào - nhãn đầu ra, phân chia theo tỷ lệ 90% cho tập huấn luyện (train) và 10% cho tập kiểm thử (test).

Thiết kế và triển khai

Hệ thống được thiết kế theo mô hình phân tầng, phân tách rõ ràng giữa giao diện người dùng trên thiết bị di động, hệ thống backend xử lý nghiệp vụ và module máy chủ trí tuệ nhân tạo phục vụ việc phân tích ngôn ngữ tự nhiên.

Thành phần Công nghệ / Thư viện Phiên bản Vai trò chức năng trong hệ thống
Front-end (Mobile) Flutter / Dart - Nền tảng xây dựng giao diện đa nền tảng, hỗ trợ cơ chế Hot Reload
speech_to_text 6.0 Thu âm giọng nói và chuyển đổi trực tiếp thành văn bản
syncfusion_flutter_calendar 23.40 Hiển thị giao diện lịch làm việc đa dạng và tương tác
curved_navigation_bar 1.3 Thanh điều hướng tùy biến hiệu ứng đường cong
flutter_svg 2.7 Kết xuất và hiển thị đồ họa vector SVG trên giao diện
size_config 2.3 Tính toán hằng số kích thước phù hợp với độ phân giải màn hình
cupertino_icons 1.2 Cung cấp hệ thống biểu tượng chuẩn giao diện iOS
http 1.0 Gửi yêu cầu HTTP kết nối API backend
Back-end & AI Flask 2.2 Micro-framework Python xây dựng RESTful API xử lý NLP
Spring Boot - Framework Java phát triển hệ thống backend độc lập, quản lý nghiệp vụ
PostgreSQL - Hệ quản trị cơ sở dữ liệu quan hệ đối tượng lưu trữ thông tin tác vụ
TensorFlow / PyTorch 2.0 Xây dựng, huấn luyện và phục vụ mô hình học sâu
transformers 4.2 Tích hợp các mô hình Transformer phục vụ xử lý tác vụ
scikit-learn 1.1 Khai phá dữ liệu, tiền xử lý và phân tích thống kê
spaCy 3.3 Gán nhãn từ loại (POS), trích xuất thực thể tên (NER) và phân tích cú pháp
parsedatetime 2.6 Phân tích cú pháp chuỗi ngày/tháng/năm đọc được từ văn bản
python_dateutil 2.14 Thư viện mở rộng hỗ trợ định dạng và thao tác thời gian
pandas / numpy 2.2 / 1.3 Xử lý dữ liệu bảng và tính toán ma trận mảng đa chiều
Gunicorn - Máy chủ WSGI HTTP phục vụ ứng dụng Python với đa tiến trình
Postman - Công cụ kiểm thử, tạo mock server và tài liệu hóa các endpoint API

Quy trình hoạt động bắt đầu khi người dùng nhập tác vụ bằng giọng nói qua thư viện speech_to_text. Chuỗi văn bản sau khi chuyển đổi sẽ được gửi đến module xử lý ngôn ngữ tự nhiên thông qua API HTTP. Mô hình ngôn ngữ tiến hành phân tích cú pháp, trích xuất cấu trúc nhãn chứa thông tin tác vụ (tên, mức độ ưu tiên, thời lượng ước tính, ngày, giờ, tần suất lặp lại) và trả dữ liệu về hệ thống quản lý cơ sở dữ liệu để tự động xếp lịch trên giao diện lịch syncfusion_flutter_calendar.

Nội dung chính theo từng chương

Chương 1: Giới thiệu (Introduction)

Chương 1 trình bày tính cấp thiết của việc tự động hóa quản lý lịch biểu trong bối cảnh công việc hiện đại đòi hỏi cường độ tập trung cao. Tác giả chỉ ra các hạn chế của phương pháp thủ công và đưa ra lý do lựa chọn đề tài xây dựng ứng dụng nhắc nhở bằng giọng nói tích hợp AI. Chương này xác định rõ mục tiêu tạo phần mềm quản lý tác vụ nhanh chóng, hỗ trợ 4 tính năng trọng tâm (nhận diện giọng nói, đo lường hiệu suất công việc, gợi ý lịch trình, cảnh báo trùng lịch), đồng thời xác định phạm vi nghiên cứu bao gồm hai nhóm người dùng cùng hệ thống công nghệ liên quan.

Chương 2: Các nghiên cứu liên quan (Related Work)

Chương 2 tổng hợp ba công trình nghiên cứu tiền đề làm cơ sở tham khảo:

  1. Discord Reminder Bot with the NVIDIA Jetson Nano (Achyut Ghosh và cộng sự): Khảo cứu việc sử dụng mạng nơ-ron hồi quy LSTM để dự đoán chuỗi thời gian, chứng minh rằng tập dữ liệu huấn luyện lớn giúp giảm sai số dự báo theo thời gian.
  2. AEON: A Method for Automatic Evaluation of NLP Test Cases: Nghiên cứu phương pháp tự động đánh giá ca kiểm thử NLP dựa trên độ tương đồng ngữ nghĩa và độ tự nhiên ngôn ngữ. Kết quả thực nghiệm cho thấy AEON đạt độ chính xác trung bình cao hơn mô hình cơ sở 10% trong việc phát hiện ca kiểm thử không nhất quán về ngữ nghĩa và vượt trội hơn 15% trong việc phát hiện ca kiểm thử không tự nhiên.
  3. Increasing Students' Engagement to Reminder Emails Through Multi-Armed Bandits: Ứng dụng thuật toán Multi-Armed Bandits (như Thompson Sampling) để cân bằng giữa khám phá (exploration) và khai thác (exploitation) trong các thử nghiệm nhắc nhở thích ứng.

Chương 3: Cơ sở lý thuyết nền tảng (Theory Fundamental)

Chương 3 định nghĩa, phân tích đặc điểm kiến trúc và lý do lựa chọn các công nghệ cốt lõi trong hệ thống. Nội dung bao gồm việc phân loại và liệt kê chi tiết các thư viện Front-end (Flutter, syncfusion_flutter_calendar, speech_to_text...) và Back-end (scikit-learn, transformers, torch, spacy, parsedatetime...). Đồng thời, chương này đi sâu vào kiến trúc vi dịch vụ và ưu điểm của Flask (gọn nhẹ, định tuyến linh hoạt), TensorFlow (đồ đồ toán học, vi phân tự động), Spring Boot (cấu hình tự động, nhúng máy chủ Tomcat/Jetty), PostgreSQL (tuân thủ ACID, hỗ trợ JSONB, tìm kiếm toàn văn) và Postman (tự động hóa kiểm thử API).

Chương 4: Chuẩn bị dữ liệu (Data Preparation)

Chương 4 mô tả chi tiết quy trình thu thập và xây dựng tập dữ liệu huấn luyện:

  • Nhóm nghiên cứu lập danh mục 2.000 tác vụ sinh hoạt thường ngày, tự đánh giá mức độ quan trọng theo thang điểm từ 1 đến 5 và ước tính thời gian hoàn thành (tính theo phút) cho từng tác vụ.
  • Thiết lập danh sách các mẫu tiền tố câu (gắn với danh từ và động từ), kết hợp với giới từ, liên từ và trạng từ chỉ thời gian để tạo ra nhiều cách diễn đạt khác nhau cho cùng một ý định lập lịch (ví dụ: lên lịch cuộc họp, đặt lịch hẹn bác sĩ, thêm sự kiện vào lịch).
  • Xây dựng hệ thống 15 nhãn đầu ra cho mỗi phát ngôn:
    • summarize (tên tác vụ)
    • imp (mức độ quan trọng: 1-5)
    • freq (tần suất: single, daily, weekly)
    • exp_min (thời gian hoàn thành ước tính)
    • day, month, dow (ngày, tháng, ngày trong tuần)
    • specific_time (thời gian cụ thể)
    • no_weeks, no_months, no_days (số tuần, số tháng, số ngày)
    • categories (loại tác vụ)
    • totd (thời điểm trong ngày)
    • daily, weekly (tần suất lặp lại trong ngày hoặc trong tuần)
  • Cấu trúc dữ liệu đầu ra được chuẩn hóa dưới dạng các thẻ đánh dấu XML, ví dụ: <task><sum>Go to school <cate>edu-activities<imp>3<freq>daily<exp_min>160<totd>night<daily>19:00:00</task>. Nếu thông tin nào không xuất hiện trong câu, giá trị tương ứng sẽ được gán là "None".
  • Tổng cộng tập dữ liệu đạt hơn 18.000 cặp câu đầu vào - nhãn đầu ra, được phân chia theo tỷ lệ 90% cho tập huấn luyện và 10% cho tập kiểm thử.

Chương 5: Phương pháp luận (Methodology)

Chương 5 phân tích các kỹ thuật xử lý ngôn ngữ tự nhiên được tích hợp vào hệ thống:

  • Cơ chế phân tích cú pháp chuỗi thời gian của thư viện parsedatetime, bao gồm các bước: tách từ (tokenization), gán nhãn từ loại (POS tagging), khớp mẫu chuỗi (pattern matching), giải quyết nhập nhằng theo ngữ cảnh (contextual resolution), bản địa hóa ngôn ngữ và cơ chế dự phòng (fallback mechanism).
  • Kỹ thuật nhúng từ (Word Embedding) trong không gian liên tục giúp máy tính biểu diễn mối liên hệ ngữ nghĩa giữa các từ ngữ tương đồng (ví dụ: "king" - "queen").
  • Kiến trúc mạng Transformer với cơ chế Self-Attention đa tầng, cho phép xử lý song song và nắm bắt mối liên kết dài trong văn bản.
  • Ứng dụng mô hình tiền huấn luyện GPT trong việc sinh và xử lý văn bản có cấu trúc.

Chương 7: Thiết kế giao diện (GUI Design)

Chương 7 trình bày thiết kế giao diện ứng dụng di động, bao gồm việc xây dựng sơ đồ Use-case cho người dùng và hệ thống, thiết kế bố cục trực quan (Visual Design and Layout), cùng các màn hình chức năng cụ thể như nút xác nhận thêm tác vụ ("Confirm to add task") và hộp thoại lựa chọn thời gian ("Select time").

Kết quả và đóng góp

Đồ án đã đạt được các kết quả kỹ thuật và đóng góp thực tiễn sau:

  • Xây dựng thành công bộ dữ liệu chuẩn hóa gồm hơn 18.000 cặp câu lệnh lập lịch và nhãn trích xuất đa thuộc tính, bao phủ khoảng 2.000 loại tác vụ thực tế trong đời sống thường nhật.
  • Thiết lập quy trình trích xuất thông tin tự động gồm 15 trường dữ liệu ngữ nghĩa từ câu nói tự nhiên thông qua việc kết hợp các mô hình học sâu NLP và thư viện phân tích thời gian parsedatetime.
  • Thiết kế và hoàn thiện ứng dụng di động hoàn chỉnh trên nền tảng Flutter, tích hợp khả năng nhận diện giọng nói qua speech_to_text, hiển thị lịch trình qua syncfusion_flutter_calendar và kết nối hệ thống backend (Flask, Spring Boot, PostgreSQL) phục vụ việc tự động sắp xếp lịch biểu và phát hiện trùng lặp thời gian.

Hạn chế và hướng nghiên cứu tiếp

Nhóm tác giả thẳng thắn chỉ ra các điểm hạn chế trong quá trình thực hiện đồ án:

  • Do không thu thập dữ liệu cá nhân hóa trực tiếp từ người dùng thực tế, các chỉ số về mức độ quan trọng (thang điểm 1-5) và thời gian ước tính hoàn thành tác vụ (exp_min) trong tập dữ liệu đều do nhóm nghiên cứu tự đánh giá chủ quan.
  • Dữ liệu câu lệnh mẫu chủ yếu được xây dựng và kiểm thử dựa trên cấu trúc tiếng Anh thông qua các mẫu câu sinh tự động.

Hướng mở rộng nghiên cứu tiếp theo bao gồm việc thu thập dữ liệu hành vi thực tế của người dùng để cá nhân hóa việc dự đoán độ ưu tiên và thời lượng tác vụ, mở rộng tập ngữ liệu sang nhiều ngôn ngữ khác nhau và nâng cao độ chính xác của mô hình học sâu khi xử lý các câu lệnh có ngữ cảnh phức tạp hoặc chứa nhiều mâu thuẫn thời gian.

Giá trị tham khảo

Đồ án là tài liệu tham khảo hữu ích cho sinh viên các ngành Công nghệ Thông tin, Kỹ thuật Phần mềm và Khoa học Dữ liệu khi thực hiện các đề tài ứng dụng xử lý ngôn ngữ tự nhiên vào sản phẩm phần mềm thực tế. Đặc biệt, phương pháp thiết kế cấu trúc nhãn trích xuất 15 thuộc tính dạng thẻ XML và quy trình kết hợp kiến trúc microservice (Flutter - Spring Boot - Flask - PostgreSQL) là tài liệu tham khảo có giá trị kỹ thuật cao cho các bài toán tương tự.

Câu hỏi thường gặp

1. Bộ dữ liệu của đồ án được xây dựng với quy mô như thế nào và phân chia ra sao?
Bộ dữ liệu ban đầu gồm 2.000 tác vụ cơ sở do nhóm tác giả tự tổng hợp và gán nhãn độ quan trọng cùng thời gian ước tính. Sau khi kết hợp với các mẫu câu và từ loại, tập dữ liệu đạt hơn 18.000 cặp câu đầu vào - nhãn đầu ra, trong đó 90% được phân bổ cho tập huấn luyện (training) và 10% dành cho tập kiểm thử (testing).

2. Mô hình NLP trong đồ án trích xuất những trường thông tin cụ thể nào từ câu nói của người dùng?
Hệ thống trích xuất 15 nhãn thông tin bao gồm: tên tác vụ (summarize), mức độ quan trọng (imp), tần suất (freq), thời gian hoàn thành ước tính (exp_min), ngày (day), tháng (month), giờ cụ thể (specific_time), thứ trong tuần (dow), số tuần (no_weeks), số tháng (no_months), số ngày (no_days), loại tác vụ (categories), thời điểm trong ngày (totd), tần suất lặp trong ngày (daily) và tần suất lặp trong tuần (weekly).

3. Kiến trúc công nghệ của đồ án kết hợp những framework nào giữa Front-end và Back-end?
Phía Front-end sử dụng framework Flutter (ngôn ngữ Dart) kết hợp các thư viện như speech_to_text và syncfusion_flutter_calendar. Phía Back-end sử dụng song song Python Flask (kết nối TensorFlow/PyTorch để xử lý NLP) và Java Spring Boot, lưu trữ dữ liệu trên hệ quản trị cơ sở dữ liệu quan hệ PostgreSQL.

4. Thư viện parsedatetime hoạt động như thế nào trong quy trình xử lý thời gian của đồ án?
Thư viện parsedatetime sử dụng kết hợp giữa NLP và các thuật toán dựa trên luật: tách câu thành token, gán nhãn từ loại (POS tagging), khớp các mẫu biểu thức thời gian thông dụng (như "tomorrow", "in two weeks"), phân tích ngữ cảnh để giải quyết xung đột ý nghĩa, hỗ trợ bản địa hóa và kích hoạt cơ chế dự phòng khi gặp dữ liệu không chắc chắn.

Kết luận

Đồ án tốt nghiệp "Building a Voice-Powered Reminder Mobile Application" của nhóm sinh viên Trường Đại học Sư phạm Kỹ thuật TP.HCM đã giải quyết bài toán quản lý thời gian cá nhân bằng cách tích hợp trí tuệ nhân tạo và nhận diện giọng nói vào ứng dụng di động. Hệ thống kết hợp đồng bộ giữa giao diện Flutter, hệ thống dịch vụ Spring Boot/Flask và các mô hình xử lý ngôn ngữ tự nhiên hiện đại để tự động trích xuất thông tin tác vụ từ phát ngôn của người dùng. Công trình cung cấp giải pháp kỹ thuật hoàn chỉnh từ khâu chuẩn bị dữ liệu, xây dựng mô hình trích xuất nhãn đến triển khai ứng dụng thực tế trên thiết bị di động.