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

Thương mại điện tử đang trải qua giai đoạn phát triển nhanh chóng, đặc biệt dưới tác động của các yếu tố xã hội và sự chuyển dịch hành vi tiêu dùng từ trực tiếp sang trực tuyến. Dữ liệu từ Vietnambiz ghi nhận doanh thu của sàn thương mại điện tử Shopee trong quý I năm 2020 tăng trưởng 111% so với cùng kỳ năm trước, phản ánh xu thế mua sắm trực tuyến ngày càng chiếm ưu thế đối với đa dạng danh mục hàng hóa từ tiêu dùng thiết yếu đến đồ gia dụng và thiết bị công nghệ.

Tuy nhiên, môi trường mua sắm trực tuyến đặt ra nhiều thách thức đối với người tiêu dùng khi họ không thể trực tiếp trải nghiệm sản phẩm trước khi mua:

  • Rủi ro an ninh mạng và bảo mật thông tin cá nhân.
  • Rủi ro về chất lượng và linh kiện đối với các mặt hàng có giá trị cao (như điện thoại, máy tính xách tay).
  • Sự phụ thuộc vào chất lượng dịch vụ của các đơn vị vận chuyển trung gian.
  • Nguy cơ mua phải sản phẩm kém chất lượng hoặc không phù hợp với nhu cầu thực tế.

Để giảm thiểu rủi ro, người tiêu dùng phụ thuộc lớn vào hệ thống đánh giá trực tuyến. Mặc dù vậy, các sàn thương mại điện tử hiện nay bộc lộ một số hạn chế:

  • Tình trạng quá tải thông tin: Một sản phẩm có thể có hàng nghìn bình luận, gây khó khăn cho người mua trong việc chắt lọc nội dung cốt lõi.
  • Nhiễu dữ liệu: Tồn tại nhiều đánh giá rác, đánh giá spam nhằm mục đích nhận ưu đãi/xu tích lũy hoặc đánh giá ảo từ phía người bán.
  • Hạn chế của công cụ so sánh hiện hữu: Các hệ thống so sánh sản phẩm (như trên FPT Shop hay eBay) chủ yếu so sánh thông số kỹ thuật và cấu hình phần cứng, thiếu khả năng so sánh dựa trên mức độ hài lòng và phản hồi thực tế của người dùng.

Khóa luận tốt nghiệp của sinh viên Phạm Trung Kiên (Mã sinh viên: B17DCCN359, Lớp: D17CNPM5, Khóa học: 2017–2022, Khoa Công nghệ Thông tin – Học viện Công nghệ Bưu chính Viễn thông, dưới sự hướng dẫn của PGS.TS Nguyễn Mạnh Hùng, hoàn thành năm 2021 tại Hà Nội) tập trung giải quyết bài toán trên thông qua các nhiệm vụ nghiên cứu:

  1. Nghiên cứu thực trạng, lịch sử phát triển và tác động của phản hồi trực tuyến đến quyết định mua sắm của người tiêu dùng.
  2. Nghiên cứu lý thuyết tối ưu hóa và thuật toán Suy giảm độ dốc ngẫu nhiên (Stochastic Gradient Descent - SGD) ứng dụng trong bài toán phân loại văn bản.
  3. Thu thập, làm sạch và xây dựng bộ dữ liệu đánh giá tiếng Việt từ sàn thương mại điện tử Shopee; thực nghiệm so sánh mô hình SGD với Naive Bayes và Support Vector Machine (SVM).
  4. Thiết kế và phát triển ứng dụng web tích hợp dịch vụ phân tích đánh giá tự động, trích xuất đặc tính và hỗ trợ so sánh sản phẩm dựa trên phản hồi của người dùng.

Đối tượng nghiên cứu là các văn bản đánh giá tiếng Việt của người tiêu dùng trên nền tảng thương mại điện tử. Phạm vi dữ liệu tập trung vào các mặt hàng điện tử và gia dụng trên Shopee tại thời điểm năm 2021.

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

Khóa luận xây dựng dựa trên cơ sở lý thuyết về tối ưu hóa trong học máy và xử lý ngôn ngữ tự nhiên:

Khung lý thuyết và mô hình toán học

Khóa luận phân tích các phương pháp tối ưu hóa dựa trên gradient nhằm giải quyết bài toán tìm cực tiểu hàm mất mát $J(\theta)$:

  • Thuật toán Suy giảm độ dốc (Gradient Descent - GD): Cập nhật tham số theo hướng ngược dấu với đạo hàm: $$\theta_{t+1} = \theta_t - \eta \nabla_\theta f(\theta_t)$$ Trong đó $\eta$ là tốc độ học (learning rate). Hạn chế của GD là chi phí tính toán lớn trên tập dữ liệu lớn và dễ mắc kẹt tại điểm cực tiểu cục bộ.
  • Thuật toán Momentum: Khắc phục hạn chế của GD bằng cách bổ sung quán tính từ bước cập nhật trước: $$v_t = \gamma v_{t-1} + \eta \nabla_\theta J(\theta)$$ $$\theta = \theta - v_t$$ Với tham số quán tính $\gamma$ thường được chọn xấp xỉ 0.9.
  • Nesterov Accelerated Gradient (NAG): Cải tiến Momentum bằng cách tính gradient tại vị trí ước tính tiếp theo $(\theta - \gamma v_{t-1})$, giúp thuật toán hội tụ nhanh hơn và giảm dao động zic-zắc: $$v_t = \gamma v_{t-1} + \eta \nabla_\theta J(\theta - \gamma v_{t-1})$$ $$\theta = \theta - v_t$$
  • Suy giảm độ dốc ngẫu nhiên (SGD): Cập nhật tham số mô hình ngay trên từng điểm dữ liệu $(x_i, y_i)$ thay vì toàn bộ tập dữ liệu: $$\theta = \theta - \eta \nabla_\theta J(\theta; x_i; y_i)$$ Đối với bài toán hồi quy tuyến tính với hàm mất mát $J(w; x_i, y_i) = \frac{1}{2}(x_i w - y_i)^2$, gradient tương ứng là $\nabla_w J(w; x_i, y_i) = x_i^T(x_i w - y_i)$. Thuật toán này phù hợp với học trực tuyến (online learning) và tập dữ liệu quy mô lớn.

Phương pháp xử lý ngôn ngữ tự nhiên và thực nghiệm

  • Tiền xử lý văn bản: Chuẩn hóa chữ thường, lọc URL thành nhãn link_spam, loại bỏ ký tự đặc biệt bằng biểu thức chính quy (regex), chuẩn hóa từ viết tắt và tiếng lóng tiếng Việt (ví dụ: k, ko, k0 thành không; đc thành được; mk thành mình), tách từ tiếng Việt sử dụng thư viện underthesea (word_tokenizer).
  • Trích xuất đặc trưng: Biến đổi văn bản thành ma trận đặc trưng số học thông qua TfidfVectorizer từ thư viện scikit-learn.
  • Gán nhãn từ loại (POS Tagging): Sử dụng underthesea để xác định cấu trúc ngữ pháp (Danh từ + Tính từ) phục vụ việc trích xuất đặc tính sản phẩm (ví dụ: "kích cỡ nhỏ", "sản phẩm không bền").
  • Phương pháp đánh giá: Chia tập dữ liệu ngẫu nhiên theo tỷ lệ huấn luyện/kiểm thử là 7:3 (10.000 mẫu huấn luyện / 3.000 mẫu kiểm thử cho mỗi nhãn), lặp lại 10 lần để lấy kết quả trung bình các chỉ số Precision, Recall và F1-score.

Thiết kế và triển khai

Hệ thống được thiết kế theo kiến trúc phân tán 4 tầng nhằm tối ưu hiệu năng và khả năng mở rộng:

+-------------------------------------------------------------------+
|                        Client (Web Browser)                       |
+---------------------------------+---------------------------------+
                                  |
                                  v
+-------------------------------------------------------------------+
|               Server chính (Java Spring Boot Framework)           |
|  - Controller (Thymeleaf / REST)                                  |
|  - Service (Xử lý nghiệp vụ, tích hợp RestTemplate)               |
|  - Repository (Spring Data JPA / Hibernate)                       |
+-------------------+-----------------------------+-----------------+
                    |                             |
                    v                             v
+-----------------------------------+   +---------------------------+
|    Cơ sở dữ liệu (MySQL Database)  |   | ML API (Django Framework) |
|  - Users, Products, Categories    |   |  - Model SGD (.pkl)       |
|  - Comments, Extracted Aspects    |   |  - underthesea POS Tag    |
+-----------------------------------+   +---------------------------+

Thành phần kiến trúc và công nghệ

  1. Client: Giao diện web hiển thị thông tin sản phẩm, tỷ lệ đánh giá tích cực/tiêu cực, các đặc tính nổi bật, giao diện so sánh đa sản phẩm và trang quản trị hệ thống.
  2. Server chính (Backend): Xây dựng bằng Java Spring Boot theo mô hình MVC:
    • Controller: Điều phối yêu cầu và trả về giao diện HTML thông qua template engine Thymeleaf.
    • Service: Thực hiện logic nghiệp vụ, tính toán dữ liệu và gọi API phân tích văn bản thông qua module RestTemplate.
    • Repository & Database: Sử dụng Spring Data JPA (Hibernate) để ánh xạ đối tượng và thao tác với hệ quản trị cơ sở dữ liệu MySQL.
  3. Ứng dụng phân tích đánh giá (Comment Analysis API - CAA): Xây dựng bằng Python Django, chạy độc lập để giảm tải cho server chính. Dịch vụ này nhận chuỗi bình luận dạng JSON, thực hiện tiền xử lý, chạy mô hình phân loại SGD đã được đóng gói bằng thư viện pickle, đồng thời áp dụng POS Tagging để trích xuất các cặp thuộc tính mô tả.

Quy trình hoạt động của hệ thống

  • Xem sản phẩm: Người dùng gửi yêu cầu xem chi tiết sản phẩm $\rightarrow$ Server truy vấn MySQL để lấy thông tin, danh sách đánh giá và các đặc tính đã được trích xuất $\rightarrow$ Phân loại và tổng hợp hiển thị cho người dùng.
  • Gửi đánh giá mới: Người dùng gửi bình luận $\rightarrow$ Server lưu vào cơ sở dữ liệu và gọi API Django qua RestTemplate $\rightarrow$ API phân tích phân loại nhãn và trích xuất đặc tính $\rightarrow$ Kết quả được cập nhật lại vào MySQL và hiển thị tức thời lên giao diện.

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

Chương 1: Đánh giá trực tuyến

Chương 1 phân tích bức tranh tổng thể về thương mại điện tử và vai trò của phản hồi người dùng:

  • Lịch sử đánh giá trực tuyến: Khởi đầu từ năm 1999 với eBay, Epinions, RateItAll, Deja; năm 2001 với Yellow Pages và City Search; năm 2002 Google mua lại công nghệ Usenet của Deja (đổi tên thành groups.com); năm 2003 DealTime tiếp quản Epinions (eBay mua lại năm 2005); năm 2007 xuất hiện widget đánh giá tích cực; năm 2009 Yelp bổ sung tính năng phản hồi của doanh nghiệp; sự hình thành của "bộ năm quyền lực" (Yelp, Amazon, Google, Facebook, TripAdvisor).
  • Tác động đến hành vi tiêu dùng: Đánh giá trực tuyến ảnh hưởng đến 90% quyết định đưa sản phẩm vào giỏ hàng; người tiêu dùng thường đọc 3–4 đánh giá trước khi mua sắm nhằm giảm thiểu rủi ro mua hàng.
  • Khảo sát hệ thống đánh giá hiện tại: Phân tích giao diện và phương thức xếp hạng sao kèm hình ảnh/video trên Shopee, Tiki, Lazada; chức năng đánh dấu bình luận hữu ích và phản hồi của người bán.
  • Hạn chế thực tế: Phân tích tình trạng bình luận không mang thông tin, bình luận spam chuỗi ký tự để lấy xu trên Shopee, cùng sự thiếu hụt chức năng so sánh dựa trên đánh giá người dùng tại các hệ thống như FPT Shop hay eBay.
  • Đề xuất giải pháp: Xác lập yêu cầu và mục tiêu xây dựng hệ thống web hỗ trợ người dùng nhận biết nhanh chất lượng sản phẩm qua tổng hợp ý kiến cộng đồng.

Chương 2: Thuật toán suy giảm độ dốc ngẫu nhiên SGD

Chương 2 trình bày cơ sở toán học của các thuật toán tối ưu hóa trong học máy:

  • Khái niệm và trực giác: Minh họa ý tưởng tìm đường xuống núi trong sương mù dày đặc bằng cách đo độ dốc bề mặt lỗi.
  • Gradient Descent cho hàm một biến và nhiều biến: Thiết lập quy tắc cập nhật tham số ngược dấu gradient $\theta = \theta - \eta \nabla_\theta f(\theta)$, phân tích ảnh hưởng của điểm khởi tạo và tốc độ học đến khả năng hội tụ.
  • Các biến thể nâng cao: Trình bày chi tiết thuật toán Momentum (bổ sung đại lượng vận tốc $v_t$) và Nesterov Accelerated Gradient (tính toán bước đón đầu trước khi cập nhật), giúp khắc phục điểm cực tiểu cục bộ và giảm thiểu dao động.
  • Phân tích thuật toán SGD: Giải thích cơ chế cập nhật trọng số sau từng điểm dữ liệu đơn lẻ, sự cần thiết của việc xáo trộn dữ liệu sau mỗi epoch, khả năng thích ứng với học trực tuyến (online learning) và ưu thế xử lý dữ liệu lớn so với Batch Gradient Descent.

Chương 3: Thử nghiệm và đánh giá

Chương 3 trình bày toàn bộ quy trình thực nghiệm từ thu thập dữ liệu đến đánh giá mô hình:

  • Thu thập dữ liệu: Thu thập dữ liệu từ Shopee trên các nhóm sản phẩm (máy tính bảng, tivi, điều hòa, tai nghe...), lấy 60 sản phẩm có doanh thu cao nhất ở mỗi nhóm. Gán nhãn tự động dựa trên số sao: 5 sao gán nhãn Tích cực (1), 1 sao gán nhãn Tiêu cực (-1).
  • Thống kê dữ liệu: Tổng hợp được 34.059 đánh giá (11.107 đánh giá tích cực và 23.952 đánh giá tiêu cực). Độ dài trung bình là 81 ký tự, đánh giá dài nhất là 305 ký tự, đánh giá ngắn nhất là 2 ký tự ("Tệ").
  • Tiền xử lý: Loại bỏ bình luận chứa từ khóa rác ("lấy xu", "đánh giá bị ẩn"), làm sạch bằng regex, chuẩn hóa từ viết tắt tiếng Việt, tách từ bằng underthesea.word_tokenizer.
  • Kịch bản kiểm thử: Xây dựng ma trận TF-IDF, chia tập dữ liệu 10.000 mẫu huấn luyện và 3.000 mẫu kiểm thử cho mỗi nhãn, thực hiện kiểm thử chéo 10 lần ngẫu nhiên trên 3 mô hình: Naive Bayes (NLTK), SVM (Scikit-learn), và SGD (Scikit-learn).
  • Kết quả: SGD đạt độ chính xác F1-score cao nhất (khoảng 94,23%), mô hình sau đó được lưu dưới định dạng pickle.

Chương 4: Phát triển ứng dụng

Chương 4 mô tả chi tiết quá trình hiện thực hóa giải pháp phần mềm:

  • Thiết kế kiến trúc: Tách biệt ứng dụng web máy chủ (Spring Boot) và dịch vụ máy học (Django).
  • Cơ chế giao tiếp: Ứng dụng RestTemplate để thực thi HTTP Request/Response, tự động chuyển đổi giữa JSON và đối tượng Java.
  • Module trích xuất thuộc tính: Ứng dụng thuật toán gán nhãn từ loại (POS Tagging) của underthesea trên chuỗi đầu vào để bóc tách các cặp thuộc tính miêu tả (Danh từ đi kèm Tính từ).
  • Triển khai giao diện: Xây dựng các trang chức năng gồm trang chi tiết sản phẩm hiển thị tỷ lệ phản hồi, biểu đồ cảm xúc, nhãn đặc tính trích xuất, giao diện so sánh song song hai sản phẩm dựa trên phản hồi của người dùng và bảng điều khiển quản trị (quản lý người dùng, sản phẩm, danh mục, đánh giá).

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

Kết quả định lượng

Bộ dữ liệu đánh giá tiếng Việt thu thập từ Shopee có các thuộc tính cụ thể như sau:

Thuộc tính tập dữ liệu Giá trị thực tế
Tổng số lượng đánh giá 34.059 đánh giá
Số lượng đánh giá tích cực (Nhãn 1 - 5 sao) 11.107 đánh giá
Số lượng đánh giá tiêu cực (Nhãn -1 - 1 sao) 23.952 đánh giá
Độ dài trung bình mỗi đánh giá 81 ký tự
Độ dài đánh giá lớn nhất 305 ký tự
Độ dài đánh giá nhỏ nhất 2 ký tự

Kết quả thử nghiệm trung bình qua 10 lần lặp trên tập dữ liệu kiểm thử giữa 3 thuật toán:

Thuật toán Precision Recall F1-score
Naive Bayes (NLTK) (Ghi nhận trong báo cáo) (Ghi nhận trong báo cáo) Thấp hơn SGD
Support Vector Machine - SVM (Scikit-learn) (Ghi nhận trong báo cáo) (Ghi nhận trong báo cáo) Thấp hơn SGD
Stochastic Gradient Descent - SGD (Scikit-learn) 93,23% (Ghi nhận trong báo cáo) 94,23%

Đóng góp thực tiễn của đề tài

  • Xây dựng quy trình tiền xử lý văn bản tiếng Việt phù hợp với đặc thù ngôn ngữ phi chuẩn trên các sàn thương mại điện tử (xử lý từ viết tắt, tiếng lóng, tiếng kéo dài lấy xu).
  • Chứng minh tính hiệu quả và tốc độ hội tụ của thuật toán SGD trên bài toán phân loại cảm xúc văn bản tiếng Việt quy mô vừa và lớn.
  • Phát triển thành công hệ thống phần mềm hoàn chỉnh kết hợp giữa Java Spring Boot và Python Django, cung cấp chức năng phân tích cảm xúc và trích xuất đặc tính sản phẩm tự động, hỗ trợ người dùng so sánh sản phẩm trực quan dựa trên phản hồi thực tế.

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

Khóa luận ghi nhận một số hạn chế gắn liền với phạm vi nghiên cứu:

  • Dữ liệu đánh giá mới chỉ được thu thập trên một nền tảng duy nhất là Shopee, chưa mở rộng ra các sàn thương mại điện tử khác như Tiki, Lazada hay mạng xã hội.
  • Mô hình chỉ tập trung vào phân loại nhị phân 2 lớp (Tích cực: 5 sao, Tiêu cực: 1 sao), chưa xử lý các đánh giá trung tính hoặc đánh giá có sắc thái phức tạp (2, 3, 4 sao).
  • Thuật toán trích xuất đặc tính sản phẩm dựa trên quy tắc ghép nhãn từ loại (POS Tagging) Danh từ + Tính từ cơ bản, có thể bỏ sót các cấu trúc câu phức hoặc cách diễn đạt phủ định nhiều tầng.
  • Thuật toán tối ưu SGD vẫn phụ thuộc vào việc lựa chọn tốc độ học và điểm khởi tạo tham số ban đầu.

Giá trị tham khảo

Khóa luận là tài liệu tham khảo hữu ích cho:

  • Sinh viên ngành Công nghệ thông tin, Kỹ thuật phần mềm, Khoa học dữ liệu: Tham khảo phương pháp xây dựng hệ thống phân tán tích hợp mô hình học máy (Python Django) vào ứng dụng doanh nghiệp (Java Spring Boot).
  • Người nghiên cứu xử lý ngôn ngữ tự nhiên (NLP) tiếng Việt: Tham khảo quy trình làm sạch dữ liệu văn bản mạng xã hội, phương pháp chuẩn hóa từ viết tắt và ma trận TF-IDF áp dụng cho phân loại cảm xúc (Sentiment Analysis).
  • Phần đáng tham khảo nhất: Chương 2 (phân tích chi tiết cơ sở toán học của các biến thể Gradient Descent) và Chương 4 (mô hình kết nối dịch vụ giữa Spring Boot RestTemplate và Django API).

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

1. Dữ liệu thực nghiệm của khóa luận được thu thập từ nguồn nào và quy mô ra sao?

Dữ liệu được thu thập từ sàn thương mại điện tử Shopee tại thị trường Việt Nam, lấy từ 60 sản phẩm có doanh thu cao nhất theo từng ngành hàng (điều hòa, tivi, máy tính bảng, tai nghe...). Tổng số mẫu thu được là 34.059 đánh giá, gồm 11.107 mẫu tích cực (từ đánh giá 5 sao) và 23.952 mẫu tiêu cực (từ đánh giá 1 sao).

2. Quy trình tiền xử lý văn bản tiếng Việt trong đề tài gồm những bước nào?

Quy trình tiền xử lý bao gồm: chuẩn hóa về chữ thường, thay thế toàn bộ liên kết URL bằng nhãn link_spam, dùng regex loại bỏ dấu câu và ký tự đặc biệt, chuẩn hóa các từ viết tắt phổ biến (như ko $\rightarrow$ không, đc $\rightarrow$ được), loại bỏ bình luận rác (chứa từ khóa "lấy xu", "đánh giá bị ẩn") và thực hiện tách từ bằng thư viện underthesea.word_tokenizer.

3. Vì sao thuật toán SGD được lựa chọn để triển khai vào hệ thống thực tế?

Trong các thử nghiệm so sánh qua 10 lần lặp với tỷ lệ phân chia 7:3, thuật toán SGD (với đặc trưng TF-IDF) đạt chỉ số F1-score cao nhất (xấp xỉ 94,23%), vượt qua Naive Bayes và SVM. Ngoài ra, SGD có tốc độ tính toán nhanh, yêu cầu số lượng epoch nhỏ và hỗ trợ tốt cho việc cập nhật trọng số trong bài toán học trực tuyến (online learning).

4. Kiến trúc phần mềm của hệ thống được tổ chức như thế nào?

Hệ thống sử dụng kiến trúc tách biệt 4 phần: Client tương tác qua giao diện web; Server chính viết bằng Java Spring Boot (Spring Data JPA, Hibernate, Thymeleaf) kết nối cơ sở dữ liệu MySQL; Dịch vụ phân tích đánh giá (Comment Analysis API) xây dựng độc lập bằng Python Django để tải mô hình SGD (pickle) và xử lý ngôn ngữ. Hai hệ thống giao tiếp với nhau qua giao thức HTTP RESTful bằng RestTemplate.

5. Hệ thống trích xuất các đặc tính sản phẩm từ bình luận bằng cách nào?

Hệ thống sử dụng kỹ thuật gán nhãn từ loại (POS Tagging) của thư viện underthesea. Dựa vào vị trí ngữ pháp, hệ thống trích xuất các cụm gồm Danh từ đi liền trước Tính từ (ví dụ: trong câu "kích cỡ nhỏ, sản phẩm không bền", hệ thống bóc tách được hai đặc tính là "kích cỡ nhỏ" và "sản phẩm không bền") để hiển thị tóm tắt lên giao diện người dùng.

Kết luận

Khóa luận tốt nghiệp của sinh viên Phạm Trung Kiên đã giải quyết bài toán hỗ trợ người tiêu dùng lựa chọn sản phẩm trực tuyến thông qua việc phân tích phản hồi người dùng bằng kỹ thuật học máy. Đề tài đã xây dựng cơ sở toán học vững chắc về các thuật toán tối ưu hóa gradient, kiểm chứng thực nghiệm mô hình SGD đạt F1-score 94,23% trên 34.059 đánh giá từ Shopee, và đóng gói thành công hệ thống phần mềm hoàn chỉnh kết hợp giữa Java Spring Boot và Python Django. Kết quả nghiên cứu đáp ứng đầy đủ các yêu cầu đặt ra, mang lại giá trị ứng dụng thực tiễn trong lĩnh vực thương mại điện tử và xử lý ngôn ngữ tự nhiên tiếng Việt.