# Script thuyết trình (18.04.2025)
**Đề tài: NLP-Based Movie and Entertainment Reviews Aggregator**
:::info
A **movie and entertainment review scrapper** that collects reviews from **IMDb**, **Rotten Tomatoes**, **Metacritic**, performing **aspect-based sentiment analysis**.
:::
---
# Nội dung thuyết trình
## I. Giới thiệu chung ==(HOÀN THÀNH)==
### 1. Bối cảnh các vấn đề cần giải quyết
Ngày nay, khi ngành giải trí màn ảnh rộng ngày càng phát triển với những bước tiến vượt trội không chỉ về mặt hình ảnh, âm thanh, hay các kỹ xảo tiên tiến gây ấn tượng mạnh mẽ, sâu sắc với người xem mà còn về mặt nội dung sâu lắng, nhân văn làm nao nức, gây thương nhớ khán giả, họ ngày càng có nhiều sự lựa chọn đa dạng về các tác phẩm màn ảnh rộng nhờ số lượng phim khổng lồ, mới mẻ, ra mắt liên tục và trải dài trên nhiều nền tảng kỹ thuật số như Netflix, Amazon Prime, Disney+, VieOn, ... điều mà làm cho các khán giả tiếp cận hình thức giải trí này một cách dễ dàng chưa từng thấy.
Cùng với đó, từ bước tiến trên, số lượng đánh giá, bình luận của khán giả và các nhà phê bình phim không chỉ về mặt cốt truyện phim mà còn về các yếu tố ngoại lai khác như hình ảnh nhân vật, bối cảnh, kỹ xảo ngày càng được gia tăng với số lượng chóng mặt, lan toả trên đa kênh (IMDb, Rotten Tomatoes, Metacritic, blog cá nhân, mạng xã hội…).
Vấn đề đặt ra là làm thế nào để khán giả có thể lựa chọn phim ảnh một cách chính xác không chỉ phù hợp với từng nhu cầu giải trí cá nhân mà còn phải phù hợp về mặt độ tuổi, đạo đức, lối sống ? Hiện nay, rất nhiều khán giả thường chỉ dựa vào số sao (rating) để đánh giá xem phim tốt hay xấu về mọi phương diện, đáng xem hay phù hợp với nhu cầu bản thân hay không, hoặc nếu khán giả đó có nhiều thời gian rảnh hơn thì họ lại cố gắng tìm kiếm các bình luận phim từ những người dùng khác để phân tích cũng như đưa ra quyết định rằng nên thưởng thức bộ phim đó hay không.
Một vấn đề mới lại được nảy sinh rằng việc chỉ dựa vào số sao (rating) để đánh giá toàn bộ bộ phim trên mọi phương diện có hợp lý hay không (1) ? Bởi lẽ, mỗi bộ phim đều có ưu điểm và khuyết điểm riêng dựa trên từng phương diện của bộ phim. Đối với những nhà phê bình phim cũng như nhà sản xuất, vấn đề trên cũng được nhìn nhận một cách khách quan. Họ cũng phải bỏ nhiều công sức để thu thập, rút trích từng khía cạnh ngữ nghĩa, đánh giá, và báo cáo tổng kết từ các bình luận của người dùng để đưa ra những nhận định chính xác nhất về từng khía cạnh của bộ phim. Từ đó, họ có cơ sở, tiền đề để cải thiện phim của họ ngày càng tốt hơn về mặt hiệu suất thương mại, về mặt giá trị nhân đạo, cũng như giúp các nhà hoạch định ngành giải trí điện ảnh xác định được thị hiếu giải trí của nhiều người dùng thường quan tâm đến khía cạnh nào của phim.
Tuy nhiên, việc tổng hợp thủ công ấy lại tốn quá nhiều công sức, tiền bạc, và thời gian để thu thập dữ liệu trên một số lượng người dùng từ đa nền tảng kỹ thuật số rồi từ đó rút trích toàn bộ khía cạnh, từ đó cuối cùng mới cho ra kết quả đánh giá. Đồng thời, về mặt hiệu suất chính xác của nó cũng khá mập mờ và phụ thuộc nhiều về mặt cảm xúc trực quan của con người (2).
Đó chính là những vấn đề nhức nhối và khó có một lời giải thỏa đáng để khắc phục những điều trên.
### 2. Lý do chọn đề tài
Thông qua những vấn đề trên, chúng ta sẽ đưa ra hướng giải quyết cụ thể thông qua đề tài này như sau:
* Đề xuất mô hình phân tích cảm xúc dựa trên khía cạnh (ABSA) giúp người dùng và các nhà sản xuất nắm được ưu điểm cũng như khuyết điểm của phim trên từng mặt riêng biệt (giải quyết vấn đề (1)). Mô hình này sẽ giúp tự động hóa trích xuất thông tin aspect cũng như tự động đánh giá dựa theo 3 tiêu chí như sau: tích cực (positive), tiêu cực (negative), và bình thường (neutral).
* Tổng hợp tự động các reviews từ nhiều nền tảng đa phương tiện (vd: IMDb, Rotten Tomatoes, Metacritic, blog cá nhân, mạng xã hội, ...) về từng bộ phim cụ thể $\to$ tiết kiệm thời gian, nguồn lực, chi phí một cách hiệu quả trong việc xem xét các reviews + cung cấp nhiều góc nhìn khác nhau $\to$ cải thiện tính toàn diện trong đánh giá sản phẩm của người dùng về bộ phim đó (giải quyết vấn đề (2)).
Đó cũng là những động lực giúp nhóm chúng em thực hiện đồ án này nhằm cung cấp một giải pháp hiệu quả cho những vấn đề cấp thiết trên.
### 3. Mô tả đề tài
:::info
A **movie and entertainment review scrapper** that collects reviews from **IMDb**, **Rotten Tomatoes**, **Metacritic**, performing **aspect-based sentiment analysis**.
:::
* ==Tên ứng dụng:== **Movie Reviews based on ABSA**
* ==Platform:== Website
* ==Chức năng cốt lõi:==
1. Thu thập tự động các đánh giá từ **IMDb, Rotten Tomatoes, Metacritic**.
2. Tiền xử lý dữ liệu (làm sạch, loại bỏ trùng lặp...).
3. Phân tích khía cạnh (Aspect-Based Sentiment Analysis):
- Xác định khía cạnh trong review (kịch bản, diễn viên, nhạc phim...).
- Xác định thái độ tích cực/tiêu cực/ trung tính cho mỗi khía cạnh.
4. Tổng hợp và hiển thị kết quả phân tích khía cạnh dưới dạng thống kê cơ bản.
### 4. Đánh giá nguồn lực
#### a. Tài nguyên sẵn có
Trong đồ án này, nhóm chúng em đã có các nguồn tài nguyên sẵn có như sau:
* Dữ liệu công khai và API có sẵn để tự động thu thập dữ liệu từ các web **IMDb**, **Rotten Tomatoes**, và **Metacritic**.
* Tools và Framework phát triển để có thể tự động thu thập và xử lý dữ liệu.
* Thư viện web scrapping: BeautifulSoup, Selenium, Scrapy
* Sử dụng các framework có sẵn: Hugging-Face Transformers, PyABSA, InstructABSA, ...
* Có sẵn các mô hình pre-trained như mô hình T5, BERT, ...
#### b. Khó khăn và thử thách
* Dữ liệu và cấu trúc không đồng nhất giữa các nền tảng.
* Khó khăn đánh giá dữ liệu do trong các bình luận chứa nhiều ngôn ngữ địa phương, từ lóng, viết tắt, sai chính tả $\to$ gây khó trong việc xử lý và chuẩn hóa dữ liệu đầu vào.
* Theo như khảo sát về các bộ dữ liệu có sẵn áp dụng cho mô hình ABSA, hiện nay, có các bộ dữ liệu có sẵn như sau:
* **SemEval-2014 Task 4:** dữ liệu về các đánh giá, bình luận nhà hàng được đánh nhãn theo các khía cạnh sẵn, mỗi khía cạnh được phân tích cảm xúc tương ứng như tiêu cực, tích cực, hoặc trung lập.
* **SemEval-2015 Task 12:** dữ liệu này đánh giá trên nhiều lĩnh vực khác nhau. Nó cũng được cung cấp nhãn cho từng khía cạnh của sản phẩm/dịch vụ kèm theo phân loại cảm xúc tương ứng.
* **SemEval-2016 Task 5:** tập dữ liệu này lại khá tập trung rất nhiều lĩnh vực chuyên môn về dịch vụ nhà hàng theo mức độ chi tiết khá cao về từng khía cạnh và cảm xúc.
* **MAMS (Multi-Aspect Multi-Sentiment):** dữ liệu đa khía cạnh về nhiều bối cảnh khác nhau.
* Bộ dữ liệu **Laptop14**, **Restaurant14**, **Restaurant15**, **Restaurant16**, ...
$\Longrightarrow$ Điểm chung là những bộ dữ liệu này đều không phải là bộ dữ liệu chuyên biệt có sẵn cho bài toán ABSA dành cho phân tích đánh giá, bình luận phim.
Từ vấn đề trên, để huấn luyện mô hình ABSA chính xác, thì chúng ta cần thu thập nhiều dữ liệu có nhãn về các khía cạnh và cảm xúc. Tuy nhiên, dữ liệu chất lượng với ghi nhãn chi tiết có thể không có sẵn $\to$ tăng công sức đánh nhãn. Đồng thời, hiện nay chưa có tools nào để có thể đánh nhãn tự động một cách hiệu quả cả, thường làm bằng thủ công hoặc nhờ framework AI nhưng độ chính xác trong dữ liệu vẫn là một vấn đề nan giải.
* Các bộ dữ liệu từ trang web **IMDb**, **Rotten Tomatoes**, và **Metacritic** toàn bằng tiếng Anh. Các bộ dữ liệu hiện nay cũng thường hạn chế về đa ngôn ngữ.
* Hạn chế về các tài nguyên GPU $\to$ thường huấn luyện trên Kaggle, Google Colab hoặc thuê GPU.
* Hiện tại, có rất nhiều ứng dụng để scrapper dữ liệu tự động các trang web khác nhau, nhưng chưa có ứng dụng nào có thể thực hiện bài toán ABSA một cách hiệu quả trên bài toán phân tích đánh giá, bình luận phim.
## II. Tổng quan hệ thống ứng dụng
### 1. Chức năng
Trong ứng dụng này, nhóm chúng em chỉ thực hiện các chức năng cho vai trò người dùng cuối, còn về các vai trò admin hay các chức năng quản lý ứng dụng thì đó sẽ là một hướng đi tiếp theo trong tương lai của nhóm với mục tiêu nhằm hoàn thiện ứng dụng tốt nhất có thể.
#### a. Chức năng cơ bản
Người dùng sẽ thực hiện các chức năng như sau:
* Lựa chọn các trang web như **IMDb, Rotten Tomatoes, Metacritic** để xem reviews của các người xem khác
* Lựa chọn các bộ phim có trong từng trang web trên
* Nếu người dùng không tìm được các bộ phim mà mình thích trên ứng dụng, họ có thể tự do nhập một đường link có sẵn trên các web **IMDb**, **Rotten Tomatoes**, hay **Metacritic** tương ứng với từng web trên ứng dụng ban đầu. Sau đó, hệ thống sẽ tự động thu thập dữ liệu về các bình luận của bộ phim đó sẵn có trên các trang web trên.
* Ngoài ra, người dùng có thể tự động nhập bình luận của mình trên trang web **Movie Reviews ABSA Scrapper** để ứng dụng có thể phân tích cảm xúc trên từng khía cạnh dựa trên bộ phim mà người dùng đã chọn.
* Người dùng sẽ có thể xem các dữ liệu bình luận của các người dùng khác trong từng bộ phim và kết quả phân tích cảm xúc theo từng khía cạnh của từng câu bình luận.
* Người dùng cũng có thể xem các báo cáo tổng kết, các biểu đồ thống kể của từng bộ phim về từng khía cạnh như thế nào, ...
* Người dùng cũng có thể xuất file tổng kết, in ấn bảng kết quả, ... (một hướng cải tiến trong tương lai)
#### b. Chức năng kết hợp AI
Hệ thống sẽ thực hiện các chức năng kết hợp các mô hình AI như sau:
* Phân tích các khía cạnh cảm xúc của từng câu bình luận trong từng bộ phim trên từng web được thu thập dữ liệu.
* Báo cáo tổng kết, thống kê tự động từng khía cạnh của từng bộ phim trên từng web site.
* Hỗ trợ đa ngôn ngữ thông qua các mô hình dịch thuật có sẵn, ...
### 2. Sơ đồ hệ thống

## III. Tổng quan dữ liệu ==(HOÀN THÀNH)==
### 1. Giới thiệu
* Khảo sát các web dữ liệu có sẵn
* **Rotten Tomatoes**: Tập trung vào Tomatometer & Audience Score (điểm số tổng thể).
* **Metacritic**: Tổng hợp đánh giá từ giới phê bình, cho ra “Metascore.”
* **IMDb**: Có user review, forum thảo luận nhưng cũng chủ yếu dựa vào điểm và review text chung chung.
* **Điểm hạn chế chung:** Đa số chưa triển khai “aspect-based” (chi tiết từng khía cạnh) và chưa tích hợp dữ liệu từ nhiều nguồn vào một nơi.
* Sơ đồ xử lý và quản lý dữ liệu

### 2. Chuẩn bị dữ liệu (Data Preparation)
#### a. Data Ingestion (Thu thập dữ liệu)
Tập dữ liệu tổng hợp các reviews từ các trang web như IMDB, Metacritic hay Rotten Tomatoes đã có sẵn. Nhưng mà các tập dữ liệu có sẵn đó không dùng cho mục đích ABSA mà nó dùng để huấn luyện cho tác vụ đơn giản hơn đó là đánh giá tổng quan cả 1 review đó là positive, negative hay là neutral. Do vậy mà nhãn dữ liệu của từng reivew chỉ là positive, negative hoặc neutral. Nhưng với yêu cầu bài toán của ta thì thứ ta cần phân tích là aspect sentiment analysis, vì vậy mà ta cần phải gán nhãn thủ công cho các dữ liệu trong tập dataset này. Phương án ban đầu đưa ra: sẽ defind sẵn những khía cạnh mà người dùng thường sẽ đánh vào để phân tích, và dựa trên những khía cạnh ta đã define trước thì ta sẽ gán nhãn cho những reivew có trong tập dữ liệu (Ở đây thì để tiết kiệm thời gian, nhóm đã dùng chatGPT + grok3 để thực hiện công việc này và sau đó thì nhóm chỉ cần đi kiểm tra lại và sửa những lỗi sai cần thiết).
#### b. Data Splitting (Chia bộ dữ liệu)
Sau khi đã có dữ liệu và đã gán nhãn dữ liệu xong, thì sẽ tiến thành chia tập dữ liệu thành 80% cho việc huấn luyện mô hình ABSA, và 20% dữ liệu còn lại sẽ dành cho việc đánh giá mô hình sau khi đã huấn luyện.
### 3. Data Prepocessing
#### a. Data Cleaning
##### Missing Values
Vì dữ liệu đã được kiểm tra và gán nhãn thủ công nên có thể đảm bảo được việc là không có missing values ở trong tập dữ liệu.
##### Feature Engineering
* **Chuyển đổi toàn bộ văn bản về dạng chữ thường**
Việc chuẩn hóa văn bản về dạng chữ thường giúp giảm sự khác biệt giữa các từ viết hoa và viết thường, ví dụ: "Apple" và "apple" sẽ được coi là cùng một từ. Điều này đảm bảo tính nhất quán trong dữ liệu và tránh việc mô hình xử lý chúng như hai từ khác nhau.
* **Loại bỏ các thẻ HTML (HTML tags) khỏi văn bản.**
Văn bản thu thập từ website thường chứa các thẻ HTML như p, div, b, v.v. Các thẻ này không mang ý nghĩa ngữ nghĩa đối với nội dung văn bản và có thể làm nhiễu dữ liệu khi phân tích.
* **Loại bỏ ký hiệu "RT" (Retweet) ở đầu văn bản, thường xuất hiện trong dữ liệu từ Twitter.**
Trong dữ liệu thu thập từ các website thì "RT" thường được thêm vào đầu bài đăng khi người dùng retweet (chia sẻ lại) một bài viết. Ký hiệu này không mang ý nghĩa ngữ nghĩa đối với nội dung chính của bài đăng và có thể gây nhiễu khi phân tích.
* **Loại bỏ thẻ HTML br (dấu xuống dòng) khỏi văn bản.**
Thẻ br thường được sử dụng trong HTML để xuống dòng. Tuy nhiên, trong quá trình phân tích văn bản, thẻ này không cần thiết và có thể gây nhiễu dữ liệu.
* **Loại bỏ ký tự dấu nháy đơn (') khỏi văn bản**
Dấu nháy đơn có thể xuất hiện trong văn bản (ví dụ: trong từ viết tắt như "don't" hoặc trong các đoạn mã HTML không được xử lý hoàn toàn). Việc loại bỏ dấu nháy đơn giúp chuẩn hóa văn bản và tránh các vấn đề khi xử lý (ví dụ: lỗi cú pháp nếu văn bản được đưa vào một hàm hoặc mô hình yêu cầu định dạng cụ thể).
* **Tại sao các mô hình như DeBERTa RoBERTa thường không sử dụng word stemming**
* **Sử dụng Subword Tokenization (WordPiece):**
* *Xử lý từ mới hoặc hiếm:* Ngay cả khi từ chưa từng xuất hiện trong dữ liệu huấn luyện, mô hình vẫn có thể biểu diễn nó thông qua các subword.
* *Bảo toàn ngữ nghĩa:* Các subword vẫn giữ được thông tin ngữ nghĩa, nên việc stemming (rút gọn từ) không cần thiết.
* **Contextual Embeddings**
* VD: có một động từ trong tiếng anh có thể được chia theo từng ngữ cảnh khác nhau: run/runs/running
Thì nhờ cơ chế này, các từ này sẽ có các vector embeddings để biểu diễn cho mỗi từ là khác nhau. Giúp cho mô hình có thể hiểu được đúng ngữ nghĩa trong từng ngữ cảnh.
#### b. Data Transformations
##### Encoding
Tokenizer của mô hình transformer mã hóa văn bản thành token số (ID) với độ dài tối đa 128. Nhãn cảm xúc được mã hóa thành số (Positive: 2, Negative: 0, Neutral: 1) và có thể ánh xạ ngược để diễn giải.
##### Extraction
Trích xuất khía cạnh từ review bằng SpaCy và từ điển ASPECT_LEXICON (predefine các aspect), chuẩn hóa khía cạnh (ví dụ: "Movie" thành "Overall") và trả về tập hợp các khía cạnh được đề cập.
#### c. Tokenizers
Tokenization được thực hiện ở hai mức: TextPreprocessor sử dụng word_tokenize (NLTK) để phân tách từ, sau đó ghép lại thành chuỗi; ABSAProcessor sử dụng tokenizer của mô hình transformer để mã hóa văn bản thành token số, đảm bảo độ dài tối đa 128 cho mô hình ABSA.
## IV. Tổng quan mô hình nghiên cứu
### 1. Model Survey (Nghiên cứu mô hình)
#### a. Giai đoạn Rule-Based và Lexicon (Trước 2014)
Vào những năm đầu của nghiên cứu về sentiment analysis, phương pháp này chủ yếu dựa vào các từ điển cảm xúc (sentiment lexicons) và các quy tắc được xây dựng thủ công nhằm trích xuất từ chỉ khía cạnh (ATE) và phân loại cảm xúc cho từng khía cạnh (ASC). Hệ thống từ điển chứa các từ được gán nhãn cảm xúc $\to$ xác định cảm xúc tổng quát của văn bản. Các quy tắc rule-based systems được xây dựng dựa trên ngữ cảnh đơn giản và cấu trúc câu
* **Ưu điểm:** đơn giản, dễ cài đặt
* **Nhược điểm:**
* Gặp nhiều khó khăn trong việc xử lý các ngữ cảnh phức tạp và sự đa dạng của ngôn ngữ tự nhiên.
* Chưa giải quyết được bài toán phân tích cảm xúc trên từng khía cạnh mà chỉ giúp phân tích cảm xúc tổng quan dựa trên câu từ có sẵn.
#### b. Giai đoạn tiếp cận Machine Learning (2014-2016)
Các thuật toán ML truyền thống như Logistic Regression, Support Vector Machine (SVM), Decision Tree / RandomForest Classifier, Naive Bayes, hay Conditional Random Fields (CRF) được sử dụng cho các tác vụ ATE (Aspect Sentiment Classification), ASC (Aspect Sentiment Classification), và ACSA (Category-based Sentiment Analysis). Tập trung trích xuất đặc trưng khía cạnh thủ công từ văn bản thông qua N-grams, POS-tags, đặc trưng ngữ cảnh, ....nhằm huấn luyện mô hình.
* **Ưu điểm:** Cho kết quả khả quan tối ưu hơn so với các cách tiếp cận rule-based.
* **Nhược điểm:**
* Phụ thuộc rất nhiều vào chất lượng các đặc trưng đầu vào được xây dựng một cách thủ công.
* Khả năng mở rộng đặc trưng hạn chế khi dữ liệu quá lớn hay quá phức tạp để mô hình có thể học một cách tự động hóa.
#### c. Giai đoạn tiếp cận Deep Learning
Khi các phương pháp deep learning phát triển ngày một lớn mạnh trong NLP, nhờ các mô hình RNN, LSTM, hay BiLSTM áp dụng để thực hiện các tác vụ như ATE (trích xuất thuật ngữ chỉ khía cạnh), ATSC (gán nhãn cảm xúc cho từng khía cạnh) nhằm giúp mô hình có khả năng tự học các đặc trưng tự động từ dữ liệu đầu vào mà không cần phải tự rút trích đặc trưng thủ công.
* **Ưu điểm:** Các mô hình này có khả năng tự động học được nhiều đặc trưng từ dữ liệu mà không cần phải rút trích thủ công, cũng như giúp nắm bắt thông tin một cách tuần tự trong câu.
* **Nhược điểm:** RNN có hạn chế về khả năng xử lý các mối quan hệ dài hạn trong văn bản và tính song song trong quá trình huấn luyện.
#### d. Giai đoạn tiếp cận dựa trên Transformers và các Pre-trained Models (2018 - 2020)
Nhiều mô hình pre-trained như BERT, RoBERTa, DeBERTa được làm mô hình cơ sở để fine-tune lại trên các bộ dữ liệu benchmarks cho bài toán ABSA.
* **Ưu điểm:**
* Mô hình có khả năng nắm bắt thông tin ngữ cảnh toàn cục của văn bản, giúp cải thiện đáng kể việc trích xuất các khía cạnh và dán nhãn cảm xúc.Nhược điểm:
* **Nhược điểm:**
* Kiến trúc pipeline -> rắc rối, tốn thời gian
* Khó quản lý khía cạnh và cảm xúc có tính tương đồng nhau -> dễ bị biased
#### e. Giai đoạn Joint Learning & Graph-based Approaches (2020 - 2022)
* Thay vì người ta tách từng tác vụ của mô hình ABSA theo một pipeline tuần tự, chúng ta hợp nhất các tác vụ trong một mô hình duy nhất kết hợp đa nhiệm (multi-task learning) thông qua kỹ thuật joint learning, kỹ thuật huấn luyện mô hình đa tác vụ.
* Các mô hình tiêu biểu như: RACL-BERT, Dual‑MRC Framework, SPAN‑based Joint Models, ...
* Dùng các phương pháp tích hợp kiến trúc đồ thị tri thức, bởi lẽ các nghiên cứu nhận thấy rằng cây phụ thuộc cú pháp (dependency parse tree) chứa thông tin quan trọng về mối liên hệ ngữ pháp giữa từ và khía cạnh, giúp mô hình tập trung vào những từ có liên quan gần nhất đến khía cạnh và giảm thiểu các từ không quan trọng.
* Các mô hình tiêu biểu: Graph Attention Network with Memory Fusion, Syntactic Graph Attention Network (Syntactic‑GAT), Relational Graph Convolutional Networks (R‑GCN), ...
* Tích hợp cả multi-task learning và graph neural networks $\to$ mô hình học cùng lúc ATE, ASC, và tận dụng cấu trúc phụ thuộc.
* Các mô hình tiêu biểu: Interactive Multi‑Task GAT, Alternating Training Schema, ...
* **Ưu điểm:** giảm hiện tượng lỗi do phân tách riêng lẻ các tác vụ + tăng cường sự liên kết giữa trích xuất các khía cạnh cảm xúc
* **Nhược điểm:** Mô hình chưa thể trích xuất đặc trưng đầu vào một cách đúng đẵn, và tốn nhiều chi phí thời gian để huấn luyện để tìm đặc trưng khía cạnh.
#### f. Giai đoạn tiếp cận Prompt-based (2022 - now)
* ==**Instruction Tuning**== (2022 - 2023)
* Phương pháp đưa trực tiếp các prompts có cấu trúc vào đầu vào của mô hình.
* Một prompt bao gồm: định nghĩa nhiệm vụ (task description) và các ví dụ mẫu (demonstrations) (thường gồm 2-3 câu input-output minh họa cho từng nhãn).
* Dùng các mô hình pre-trained (Flan-T5), fine-tune lại giúp mô hình học lại cách đọc prompt và sinh ra đầu vào theo đúng định dạng yêu cầu cho bài toán ABSA.
* Các mô hình tiêu biểu hiện tại: FLAN-T5-based ABSA (2022), InstructABSA (2023), ...
* ==**Retrieval-based Prompt Tuning**==
* Phương pháp cải tiến instruction tuning bằng cách chọn lọc động các ví dụ mẫu (demonstrations) phù hợp với mỗi input thông qua một thành phần retriever thay vì dùng một tập ví dụ cố định cho mọi trường hợp.
* Phương pháp này gồm hai giai đoạn luân phiên nhau:
* **Phase 1: Fine‑tune LM với prompt động**
* Input: Với mỗi sample review x, retriever (bi-encoder: Query Encoder (mã hóa nội dung review) và Passage Encoder (mã hóa các candidate examples) thành vector embeddings -> tính độ tương đồng dựa trên cosine similarity hoặc dot product) sẽ xếp hạng toàn bộ tập ví dụ huấn luyện và chọn ra top‑k ví dụ demo phù hợp nhất (d₁, d₂, …, d_k).
* Prompt: Gồm task description + d₁, …, d_k + x.
* Tính Generative Loss: LM (Flan‑T5) được fine‑tune để sinh ra chuỗi đầu ra y (các khía cạnh + nhãn cảm xúc) đúng như mong đợi.
* **Phase 2: Huấn luyện Retriever với Contrastive Learning**
* Dùng LM đã fine‑tune để tính log‑likelihood s(x, d) của mỗi demo candidate d khi ghép vào prompt với input x. Demo có likelihood cao tức “phù hợp” với ngữ cảnh.
* Lấy một cặp positive demo (đã chọn) và negative demo (không liên quan hoặc ít liên quan), tối ưu retriever sao cho loss constrastive nhỏ nhất.
* Sau mỗi epoch, hoàn thành Phase 2 xong thì ta lại lấy cái retriever được cập nhật lại và lặp cho đến khi cả hai hội tụ.
* ==**Multi-View Prompt Tuning**==
* Multi‑view prompting là một kỹ thuật trong prompt engineering, cho phép khai thác nhiều “view” (cách biểu đạt) khác nhau cho cùng một tác vụ, sau đó tổng hợp kết quả từ các view này để nâng cao độ chính xác và khả năng khái quát chung.
* Mỗi view gồm:
* **Format đầu ra:** sử dụng các “element order prompts” khác nhau để thay đổi thứ tự xuất hiện của aspect, opinion, sentiment trong một lời nhắc.
* **Task Definition:** Có thể viết “Extract aspect–opinion–sentiment tuples” hoặc “Identify (aspect, sentiment, opinion) from the sentence” để tập trung vào khía cạnh khác nhau của ABSA
* **Bộ ví dụ mẫu:** Mỗi view có thể kèm theo một bộ few‑shot examples khác nhau, ví dụ tiếng Anh vs. tiếng Việt, hoặc các ví dụ từ domain khác nhau
* Mỗi tuple được mô hình sinh ra sẽ được xem là một “phiếu” từ một view. MvP tổng hợp các phiếu này và chọn ra các tuple được nhiều view nhất ủng hộ, nhờ đó giảm thiểu tác động tiêu cực của view yếu kém và nâng cao độ chính xác chung.
* **Ưu điểm:**
* Giúp mô hình hiểu rõ nhiệm vụ ban đầu thông qua các prompts cụ thể.
* Các mô hình nhỏ (khoảng 200 triệu tham số) có thể đạt được hiệu năng tương đương hoặc vượt trội so với các mô hình lớn hơn (ví dụ 1.5 tỷ tham số).
* Tùy biến dễ linh hoạt
* **Nhược điểm:**
* Độ phức tạp cao trong cài đặt cũng như dữ liệu đầu vào
* Chi phí tính toán, tài nguyên lớn.
### 2. Model Selection (Lựa chọn mô hình)
Trong đồ án này, nhóm chúng em sẽ chọn mô hình **IT-RER-ABSA** được công bố lần đầu vào tháng 5 năm 2024 trong bài báo **"Instruction Tuning with Retrieval-based Examples Ranking for Aspect-based Sentiment Analysis"** của các tác giả Guangmin Zheng, Jin Wang, Liang-Chih Yu, và Xuejie Zhang [1].
#### a. Lý do chọn mô hình
* Muốn mô hình hiểu rõ nhiệm vụ từ ban đầu trích xuất khía cạnh và gán nhãn cảm xúc thông qua định nghĩa prompt và các ví dụ mẫu.
* Cải thiện hiệu năng khi dữ liệu huấn luyện còn hạn chế (few-shot learning) vì trong các thử nghiệm, chỉ cần ~20-50% data so với fine-tune truyền thống vẫn đạt được hiệu năng tương đương nhờ prompt tự động.
* Mô hình này giải quyết mọi subtasks của ABSA bằng câu prompt, loại bỏ việc xây dựng pipeline phức tạp với nhiều bước phức tạp riêng biệt.
* Cho phép mô hình thể hiện hiệu quả tương đương hoặc vượt trội so với các mô hình lớn hơn, điển hình là mô hình Flan-T5 (~220 M tham số) đạt hiệu suất bằng hoặc hơn các mô hình hơn 1B tham số.
* Chỉ cần fine‑tune retriever với data review phim để chọn demo phù hợp, prompt tự động thích nghi với ngữ cảnh giải trí.
#### b. Kiến trúc IT-RER-ABSA

(1) Retriever (Sentence-T5) là mô hình bi-encoder, sử dụng kiến trúc của T5 để sinh ra embeddings cho câu, trong đó:
* *Query encoder* mã hóa review (input) -> vector embeddings cho câu review ban đầu.
* *Passage encoder* mã hóa candidate demo -> vector embeddings tương ứng.
=> Tác dụng: tìm ra các examples phù hợp nhất để làm ví dụ mẫu hình thành nên cấu trúc instruction.
(2) LM là mô hình T5 với cấu trúc encoder-decoder và được instruction-tuned => mô hình Flan-T5 (thay vì chỉ fine-tune mô hình T5 trên các cặp input-output truyền thống, mô hình Flan-T5 được huấn luyện thêm các prompt và ví dụ mẫu).
=> Tác dụng: tính toán điểm số -> đánh giá các examples chọn bởi retriever và generates kết quả cuối cùng.
### 3. Model Training (Huấn luyện mô hình)
#### a. Quá trình huấn luyện
Quá trình huấn luyện gồm hai giai đoạn:
* Phase 01: Example Retrieval
* Retriever được dùng để chọn một vài candiates cho sample đầu vào được cho trước.
* Sau đó inference LM được dùng để đo xác suất likelihood để xếp hạng target và candidate.
* Để huấn luyện retriever, ta sẽ chọn ra top-k candidates gồm positives samples và còn lại thì là negatives samples.
* Sau đó ta tính độ loss constrastive learning (Lcl) rồi sau đó backpropagate gradients và cập nhật lại trọng số cho retriever.
* Phase 02: Task Inference
* Retriever sẽ trả về những ví dụ phù hợp nhất (top-k) và xây dựng instructions đầu vào theo một template được định nghĩa sẵn trước (\*).
* Sau đó các negative log-likelihood sẽ được trả về LM để huẩn luyện tiếp mô hình LM.
* Đối với mỗi $y_s$, mô hình (LM Flat-T5) được dùng như một công cụ tính toán để ước tính xác suất log-likelihood của đầu ra $\tilde{y}_s$ dựa vào giá trị target đầu vào và một tập candidate ( C ).
**(\*) Template of instruction prompts**

Đây là instruction prompt template bao gồm
* Task Definition: <DEF> có sẵn cho mỗi subtasks khác nhau của bài toán ABSA.
* Input text: <$x_s$>
* Examples: đối với một input <$x_s$>, có k examples <ID> với input examples là <x_i> và output examples là <y_i>.

Đây là ví dụ cho mỗi tác vụ.

#### b. Training hyperparameter
Mô hình LM được dùng ban đầu là flan-t5-base,
* Áp dụng AdamW để tối ưu hóa mô hình
* Learning rate ban đầu là 5e-5.
* Training batch size là 2.
* Gradient accumulation steps là 2.
* Số lượng epochs cho retriever là 4 và cho LM là 2.
* Chiều dài câu tối đa là 128 từ.
* Data ratio r cho quá trình huấn luyện retriever là 0.1
#### c. Chiến lược huấn luyện
Áp dụng thư viện PEFT được phát triển bởi Hugging Face chứa các phương pháp huấn luyện như LoR/adapter vì phương án này giúp tiết kiệm tài nguyên huấn luyện, khi mô hình và dữ liệu đủ lớn thì nhóm em sẽ nâng cấp lên QLoRA.
### 4. Model Tracking (Theo dõi mô hình)
Tech: Git, DVC, MLFlow
* Dùng Git để quản lý code
* Dùng DVC tích hợp với Git để version dữ liệu, weights, và artifacts lớn ngoài repo (AWS S3, GCS…) thông qua liên kết (dvc add, dvc push).
* Dùng MLFlow để theo dõi các experiment về hyperparameters, metrics, artifacts và cũng như có thể register model thành các version khác nhau trong Model Registry, bởi lẽ nó chứa nhiều tính năng, miễn phí, là tools sử dụng rộng rãi nhất và được dùng bởi Microsoft, Facebookm Databricks, ...
### 5. Model Tuning (Tinh chỉnh mô hình)
Trong đồ án này, nhóm chúng em sẽ đẩy mạnh thực hiện kết hợp hai phương pháp tuning sau.
#### a. Data-Centric Tuning
Lọc và làm sạch (Filtering & Cleaning)
Cân bằng dữ liệu (Resampling)
Tăng cường dữ liệu (Augmentation)
#### b. Model - Centric Tuning
Áp dụng LoRA (thêm hai ma trận low-rank vào mỗi layer nhằm giảm thiểu số tham số cần huấn luyện) và Adapters (chèn thêm các module "bottleneck" giữa các sub-layer nhằm điều khiển, thêm bớt các tasks mà ko ảnh hưởng đến weights gốc trong các model).
### 6. Model Evaluation (Đánh giá mô hình)
#### a. Dữ liệu
Theo mô hình gốc, các lần thí nghiệm đều được thực hiện trên Semeval-2014, 2015, và 2016, bao gồm hai domain chính là: latops (Lap14) và nhà hàng (Rest14, Rest15, Rest16) với độ chia tập train/test là 80/20.
Tuy nhiên, trong đồ án này nhóm chúng em sẽ dùng bộ dữ liệu riêng của nhóm thu thập và đánh nhãn để huấn luyện cũng như đánh giá mô hình với tỷ lệ như vậy.
#### b. Các độ đo metrics sử dụng
Tùy theo từng subtasks thì nhóm chúng em sẽ dùng các độ đo khác nhau:
* dùng F1 scores cho ATE và ASPE tasks
* dùng accuracy cho ASTC tasks.



### 7. Model Serving (Lưu trữ mô hình)
Vì máy tính với thiết bị GPU RTX 3050 4GB VRAM
* Dùng vLLM kết hợp quantization FP16.
* Dùng NVIDIA Triton làm inference server để tận dụng auto‑batching và quản lý dễ dàng trong Docker.
* Dùng FAISS để lưu index embeddings của các review và example, trả tác vụ retrieval-based ranking trong IT‑RER‑ABSA nhanh hơn (~ms) so với tính toán on‑the‑fly.
## V. Thành công và Thử thách
#### a. Dữ liệu
* Các điểm đã đạt được:
* Đã thu thập được dữ liệu
* Đã có phương pháp xử lý, gán nhãn dữ liệu.
* Các điểm chưa đạt được:
* Chưa thu thập dữ liệu đủ lớn.
* Cần có những phương án quản lý dữ liệu tốt hơn.
#### b. Mô hình
* Các điểm đạt được:
* Đã lựa chọn được kiến trúc SOTA cho ABSA là IT-RER_ABSA
* Đã lựa chọn được các chiến lược huấn luyện, fine-tune, đánh giá, ...
* Đã set up được kiến trúc mô hình
* Các điểm chưa đạt được:
* Chưa fine-tune huấn luyện mô hình với tập dữ liệu review phim.
#### c. Hệ thống
* Các điểm đạt được:
* Đã xây dựng được pipeline hệ thống
* Set up được các module hệ thống
* Thiết kế hệ thống về UI/UX, Database, Use-case
* Các điểm chưa đạt được:
* Chưa liên kết được các phần backend, frontend, model với nhau.
## VII. Tổng Kết
### 1. Kết luận chung
Thông qua đồ án này, chúng ta biết được:
* Mô hình ABSA được hình thành và xây dựng như nào ?
* Quá trình tự động thu thập và xử lý dữ liệu ?
* Hiểu được tầm quan trọng và tính cấp thiết của hệ thống trong đời sống.
### 2. Hướng phát triển
Nhóm sẽ định phát triển thêm các tính năng về quản lý ứng dụng, thêm các mô hình hỗ trợ đa ngôn ngữ cho ứng dụng, các mô hình tự động báo cáo, tổng kết, ....
## VII. Tài liệu tham khảo
[1] Guangmin Zheng, Jin Wang, Liang‑Chih Yu & Xuejie Zhang. *Instruction Tuning with Retrieval-based Examples Ranking for Aspect-based Sentiment Analysis*. arXiv:2405.18035 (2024). [https://arxiv.org/abs/2405.18035](https://arxiv.org/abs/2405.18035)