Tải bản đầy đủ (.pdf) (26 trang)

Xác định bài viết chứa ý định người dùng trên diễn đàn (tt)

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.05 MB, 26 trang )

HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG
---------------------------------------

ĐỖ THỊ THU HÀ

XÁC ĐỊNH BÀI VIẾT CHỨA Ý ĐỊNH
NGƯỜI DÙNG TRÊN DIỄN ĐÀN

Chuyên ngành: Khoa học máy tính
Mã số: 60.48.01.01

TÓM TẮT LUẬN VĂN THẠC SĨ

HÀ NỘI - 2016


Luận văn được hoàn thành tại:
HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG

Người hướng dẫn khoa học: Tiến sĩ Ngô Xuân Bách

Phản biện 1: ……………………………………………………………………………
Phản biện 2: …………………………………………………………………………..

Luận văn sẽ được bảo vệ trước Hội đồng chấm luận văn thạc sĩ tại Học viện Công nghệ Bưu
chính Viễn thông
Vào lúc:

....... giờ ....... ngày ....... tháng ....... .. năm ...............

Có thể tìm hiểu luận văn tại:


- Thư viện của Học viện Công nghệ Bưu chính Viễn thông


1

MỞ ĐẦU
Trong thời gian gần đây, mạng internet ngày càng phát triển mạnh mẽ và rộng rãi, tại
diễn đàn mua bán hay thảo luận, ta vẫn bắt gặp những bài viết như “Tôi đang tìm mua một
TV plasma 40 inch” hay “Có ai biết chỗ bán quyển sách này không?”. Như vậy trong trường
hợp đó, ta thấy rằng người dùng hiện đang có ý định muốn mua một chiếc TV hay một
quyển sách. Từ ý định này, có thể dễ dàng đưa ra quảng cáo dựa trên ý định của người dùng
về sản phẩm mà họ đang quan tâm.
Đã có một số đề tài trước đây nghiên cứu về chủ đề phân tích ý định người dùng như
“Online commercial intention identification” việc xác định ý định người dùng được dựa trên
lịch sử người dùng tìm kiếm trên mạng xã hội hay những website tìm kiếm. Hoặc trong đề
tài phân tích quan điểm người dùng “Natural Language Processing” dựa trên ý định người
dùng mong muốn, nhận xét về sản phẩm. Như vậy trong những đề tài trước, việc phân tích
quan điểm hay ý định người dùng chủ yếu dựa vào hành vi của người dùng.
Trong luận văn sẽ trình bày một hướng xác định khác của bài toán là việc phát hiện
phân tích ý định của người dùng cần được dựa vào chính những nội dung, dữ liệu mà người
dùng đưa ra. Ví dụ như trong tình huống người dùng nhập “Tôi thấy iPhone nên có màn
hình lớn hơn” sẽ có ý nghĩa khác so với câu “Tôi muốn mua một chiếc iPhone 5S”.
Luận văn sẽ làm rõ cách giải quyết các vấn đề dưới đây:
-

Xác định bài viết có chứa ý định giữa nhiều bài viết không có ý định.

-

Trong một văn bản chứa rất nhiều dữ liệu không liên quan tới chủ đề, tuy

nhiên việc xử lý tập dữ liệu cần tìm ra được đâu là dữ liệu nhiễu không liên
quan tới ý định người dùng để trích xuất ra được kết quả phân lớp chính xác
nhất.

-

Khi thực hiện xác định ý định người dùng trên 1 chủ đề mới mà chưa có dữ
liệu thực để làm dữ liệu học máy. Việc áp dụng bài toán xác định ý định
người dùng chéo miền là rất quan trọng. Như vậy luận văn sẽ làm rõ được
phương pháp xác định ý định người dùng trong 2 trường hợp: dữ liệu cùng
miền và dữ liệu chéo miền.

Để xây dựng chương trình xác định ý định người dùng, luận văn đưa ra các phương
pháp xác định ý định người dùng đã có trước đây như thuật toán EM, thuật toán FS-EM và


2
đề xuất thuật toán Co-Class áp dụng trong trường hợp xác định ý định với dữ liệu trái miền
giúp cải thiện được kết quả thu được.
Luận văn được chia làm 3 phần:
Chương 1: Luận văn giới thiệu chung về lĩnh vực xử lý ngôn ngữ tự nhiên, các bài
toán ứng dụng của lĩnh vực xử lý ngôn ngữ tự nhiên như phân loại văn bản, phân loại quan
điểm v.v. Giới thiệu về bài toán phát hiện ý định người dùng trên diễn đàn.
Chương 2: Luận văn trình bày về các phương pháp phát hiện ý định sử dụng phương
pháp học máy: phương pháp phân lớp dữ liệu, phương pháp biểu diễn đặc trưng cho văn
bản, thuật toán học máy sử dụng trong đề tài. Phát biểu bài toán mở rộng của đề tài là khi áp
dụng cho 2 trường hợp dữ liệu cùng miền và chéo miền, đưa ra giải pháp và so sánh về độ
phức tạp giữa các thuật toán
Chương 3: Luận văn trình bày về kết quả thực nghiệm thuật toán để cuối cùng đưa
ra kết quả so sánh trong quá trình cài đặt thực tế, phân tích, đánh giá kết quả thu được và

đưa ra kết luận.


3

CHƯƠNG 1:

TỔNG QUAN BÀI TOÁN PHÁT HIỆN Ý ĐỊNH
NGƯỜI DÙNG

Trong chương này, luận văn trình bày chung về lĩnh vực xử lý ngôn ngữ tự nhiên,
các bài toán ứng dụng của lĩnh vực xử lý ngôn ngữ tự nhiên như phân loại văn bản, phân
loại quan điểm v.v Hướng tiếp cận, lý do chọn đề tài và giới thiệu bài toán phát hiện ý định
người dùng trên diễn đàn
1.1. Xử lý ngôn ngữ tự nhiên
Xử lý ngôn ngữ tự nhiên (natural language processing – NLP) là một nhánh của trí
tuệ nhân tạo, tập trung vào các ứng dụng xử lý trên ngôn ngữ của con người. Trong trí tuệ
nhân tạo thì xử lý ngôn ngữ tự nhiên là một trong những phần khó nhất vì xử lý ngôn ngữ tự
nhiên liên quan đến việc xây dựng các hệ thống máy tính hiểu được tư duy và ý nghĩa của
ngôn ngữ con người, từ đó có thể tiến hành xử lý chúng.
Xử lý ngôn ngữ tự nhiên là lĩnh vực đã được nghiên cứu từ nhiều năm nay và đạt
được nhiều bước tiến quan trọng trong những năm gần đây, đặc biệt trong việc xây dựng các
ứng dụng như dịch máy, tìm kiếm thông tin, trích chọn thông tin, tóm tắt văn bản, trả lời tự
động và khai phá quan điểm [1] [2] v.v.
1.2. Khái niệm phân loại văn bản
Phân loại văn bản là xử lý nhóm các tài liệu thành các lớp khác nhau. Việc phân lớp
tài liệu liên quan đến xử lý ra quyết định. Với mỗi xử lý phân loại, đầu vào là một văn bản,
cần phải có một quyết định đưa ra xem văn bản đó có thuộc lớp nào hay không. Nếu tài liệu
thuộc một lớp nào đó thì sau đó cần chỉ ra lớp mà tài liệu đó thuộc vào. Ví dụ đưa ra một
văn bản bất kỳ như “Apple vừa cho ra mắt sản phẩm Iphone 7”, như vậy cần chỉ được văn

bản trên thuộc lớp công nghệ di động, chứ không phải thuộc lớp thể thao, giải trí, xã hội…

Hình 1.1: Bài toán phân lớp văn bản


4
1.2.1. Bài toán phân loại văn bản
Phân loại văn bản có nhiều bài toán biến thể như:
-

Phân cụm văn bản: Đưa các văn bản có nội dung giống nhau vào các nhóm
[8]

-

Tóm tắt văn bản: Tóm tắt nội dung của một văn bản cho trước

-

Xác định quan điểm văn bản

Tuy nhiên, trong nội dung luận văn sẽ tập trung vào 2 dạng biến thể của bài toán
phân loại văn bản là:
-

Bài toán phân lớp dữ liệu

-

Bài toán ra quyết định, xác định quan điểm của văn bản


1.3. Bài toán phát hiện ý định người dùng trên diễn đàn
Ý tưởng của luận văn là sẽ đi sâu vào giải quyết bài toán xác định ý định người dùng,
giả sử trong tình huống ta thu thập một tập các văn bản trên diễn đàn về một chủ đề bất kỳ,
dựa vào nội dung của văn bản đó, ta cần xác định và đưa ra kết luận rằng người dùng có
thực sự quan tâm, hay có nhu cầu muốn mua sản phẩm đó hay không.
Tuy nhiên, không phải tất cả các bài viết của người dùng đều thể hiện ý định rõ ràng
là cần mua, bán sản phẩm nào đó như “Đã có ai đọc quyển sách này chưa”, bài viết chỉ
muốn hỏi về nội dung của quyển sách mà không có nhu cầu mua. Hay các bài viết chứa một
lượng dữ liệu lớn, nhưng chỉ có một phần nhỏ trong đó thể hiện ra ý định của người dùng,
còn phần còn lại chỉ là dữ liệu nhiễu gây khó khăn trong quá trình phát hiện ý định của
người dùng như “Năm kia tôi mua chiếc máy tính để bàn này với giá 10 triệu đồng, máy sử
dụng 2 năm vẫn mới và chạy tốt. Tôi đang muốn nhượng lại máy tính để đổi máy tính xách
tay. Nhân tiện, tôi muốn mua máy tính xách tay với giá 15 triệu trở xuống. Có ai bán
không?”.
Như vậy việc xác định ý định văn bản của người dùng không chỉ dừng lại ở việc
phân biệt bài viết có thể hiện rõ ràng ý định của người dùng hay không, mà ta còn cần phải
xác định được ý định của người dùng trên một tập dữ liệu nhiễu không liên quan, để trích
xuất ra được kết quả chính xác.
Trên thực tế, ta không thể thu thập được dữ liệu đầy đủ cho tất cả các miền, như vậy
việc áp dụng dữ liệu của miền này để xác định ý định cho dữ liệu của miền dữ liệu khác mà
đạt được kết quả chính xác cao là rất quan trọng [3].


5
Luận văn gặp một số khó khăn khi xây dựng phương pháp giải quyết bài toán xác
định ý định người dùng như sau:
-

Xác định những bài viết có chứa ý định rõ ràng


-

Giữa những thông tin gây nhiễu, xác định chính xác ý định của bài viết thể
hiện

-

Nghiên cứu áp dụng bài toán xác định ý định người dùng trong 2 trường hợp:
dữ liệu cùng miền và dữ liệu chéo miền.

1.4. Các nghiên cứu liên quan
Trong đề tài “Online commercial intention (OCI) identification [4]” việc xác định ý
định người dùng được dựa trên lịch sử người dùng tìm kiếm trên mạng xã hội hay những
website tìm kiếm. Hoặc trong đề tài “Natural Language Processing” [7] việc xử lý ngôn ngữ
tự nhiên được dựa trên quan điểm người dùng cần hoặc muốn.
Như vậy điểm khác biệt của luận văn ở đây là việc phát hiện phân tích ý định của
người dùng được dựa vào chính những nội dung, dữ liệu mà người dùng đưa ra.
Như chương 1 đã trình bày, trong phần này đề tài trình bày rõ hơn về phương pháp
xác định ý định của người dùng trên diễn đàn. Phương pháp áp dụng xác định ý định của
người dùng sẽ làm rõ được những vấn đề sau:
-

Xác định những bài viết có chứa ý định và bài viết không có ý định

-

Việc xử lý tập dữ liệu để trích xuất ra được đâu là dữ liệu nhiễu không liên
quan tới ý định người dùng để trích xuất ra được kết quả chính xác.


-

Nghiên cứu áp dụng bài toán xác định ý định người dùng trong 2 trường hợp:
dữ liệu cùng miền và dữ liệu chéo miền.

1.5. Kết chương
Chương 1 đã trình bày khái quát về lĩnh vực xử lý ngôn ngữ tự nhiên, giới thiệu về
bài toán phân loại văn bản. Sau đó đề xuất bài toán xác định ý định người dùng và các
nghiên cứu liên quan tới đề tài xác định ý định người dùng, từ đó đưa ra những vấn đề cần
làm rõ và giải quyết trong luận văn.
Trong Chương 2, luận văn sẽ trình bày về hướng giải quyết cho bài toán xác định ý
định người dùng, và đi sâu hơn trình bày về các phương pháp sẽ áp dụng để giải quyết bài
toán.


6

CHƯƠNG 2:

CÁC PHƯƠNG PHÁP PHÁT HIỆN Ý ĐỊNH NGƯỜI
DÙNG DỰA TRÊN HỌC MÁY

Trong chương này, luận văn trình bày chi tiết về các phương pháp được áp dụng
trong bài toán phát hiện ý định người dùng. Chương 2 gồm 3 phần:
-

Trình bày về phương pháp giải quyết bài toán phát hiện ý định người dùng đã
có, đưa ra hướng phát triển thuật toán để cải thiện kết quả xử lý trong 2
trường hợp dữ liệu cùng miền và chéo miền.


-

Trình bày về các phương pháp biểu diễu đặc trưng cho văn bản được áp dụng
trong bài toán phát hiện ý định người dùng: N-Gram, TF-IDF.

-

Trình bày về các phương pháp học máy, xây dựng mô hình phân lớp dữ liệu
cho bài toán phát hiện ý định người dùng: Naïve Bayes, Support Vector
Machine (SVM)

2.1. Phương pháp giải quyết bài toán
Các bước thực hiện để xây dựng phương pháp giải quyết cho bài toán xác định ý
định người dùng được mô tả như trong hình vẽ dưới đây:

Hình 2.1: Phương pháp xây dựng chương trình cho bài toán

Để giải quyết bài toán xác định ý định của người dùng trên diễn đàn, ta sẽ thực hiện
xác định qua 2 giai đoạn chính như sau:
 Giai đoạn Huấn luyện: sẽ thu thập dữ liệu mẫu, thực hiện tiền xử lý (loại bỏ các ký tự
đặc biệt, ký tự thừa, các từ stopwords không ảnh hưởng tới ý nghĩa của văn bản).
Xây dựng 2 bộ dữ liệu học đã gán nhãn và bộ dữ liệu thực nghiệm chưa gán nhãn.
Trong đề tài giai đoạn huấn luyện sẽ sử dụng 2 thuật toán là TF-IDF, và N-Gram với
n=1,2,3…
 Giai đoạn Phân loại: sử dụng kết quả ở giai đoạn Tiền xử lý làm dữ liệu đầu vào cho
các thuật toán trích chọn đặc trưng và phân lớp, từ đó đưa ra kết luận về nhãn của bộ


7
dữ liệu chưa gán nhãn. Giai đoạn phân loại trong đề tài sẽ sử dụng 2 thuật toán là

SVM và thuật toán Naïve Bayes để tiến hành phân lớp cho dữ liệu.
Các phần tiếp theo của chương 2 sẽ trình bày chi tiết hơn về các thuật toán được lựa
chọn và áp dụng vào việc xác định ý định của văn bản.
2.2. Các phương pháp biểu diễn đặc trưng của văn bản
2.2.1. Phương pháp TF-IDF
a. Giới thiệu phương pháp
Trong phương pháp tiếp cận truyền thống cũng là một trong những phương pháp
được sử dụng nhiều nhất đó là phương pháp tần suất thuật ngữ “term frequency” (TF) hay
tần suất thuật ngữ - nghịch đảo tần suất văn bản “term frequency-inverse document
frequency” (viết tắt là TF-IDF) được sử dụng trong việc phân loại văn bản
Phương pháp này chỉ ra tầm quan trọng của một từ với văn bản trong hàng loạt các
văn bản như thế nào. Trong TF-IDF, tầm quan trọng của một từ với văn bản lớn hơn khi nó
được sử dụng ở trong một văn bản, và nó sẽ thấp hơn khi một từ xuất hiện nhiều trong nhiều
bộ văn bản.
2.2.2. Phương pháp N-Gram
a. Giới thiệu phương pháp
Mô hình ngôn ngữ thống kê cho phép gán (ước lượng) xác suất cho một chuỗi m
phần tử (thường là từ) P(w1w2…wm) tức là cho phép dự đoán khả năng một chuỗi từ xuất hiện
trong ngôn ngữ đó. Theo công thức Bayes:

P(AB) = P(B|A) * P(A)

(2.1)

Thì ta dễ dàng suy ra được:

P(w1w2…wm) = P(w1) * P(w2|w1) * P(w3|w1w2) *…* P(wm|w1w2…wm-1).

(2.2)


Theo công thức này thì bài toán tính xác suất của mỗi chuỗi từ quy về bài toán tính
xác suất của một từ với điều kiện biết các từ trước nó (có thể hiểu P(w1)=P(w1|start) là xác suất
để w1 đứng đầu chuỗi hay nói cách khác người ta có thể đưa thêm ký hiệu đầu dòng start
vào mỗi chuỗi).
Theo công thức Bayes, mô hình ngôn ngữ cần phải có một lượng bộ nhớ vô cùng lớn
để có thể lưu hết xác suất của tất cả các chuỗi độ dài nhỏ hơn m. Rõ ràng, điều này là không
thể khi m là độ dài của các văn bản ngôn ngữ tự nhiên (m có thể tiến tới vô cùng). Để có thể


8
tính được xác suất của văn bản với lượng bộ nhớ chấp nhận được, ta sử dụng xấp xỉ Markov
bậc n:

P (wm|w1, w2,…, wm-1) = P(wm|wm-n,wn-m+1, …,wm-1)

(2.3)

2.3. Các phương pháp học máy xây dựng mô hình phân lớp dữ liệu
2.3.1. Phương pháp Naïve Bayes
a. Định lý Bayes
Định lý Bayes cho phép tính xác suất xảy ra của một sự kiện ngẫu nhiên A khi biết
sự kiện liên quan B. Xác suất này được kí hiệu là P(A|B), và đọc là “xác suất của A nếu có
B”. Theo định lý Bayes, xác suất xảy ra A khi biết B sẽ phụ thuộc vào 3 yếu tố:
-

Xác suất xảy ra A của riêng nó, không quan tâm đến B. Kí hiệu P(A)

-

Xác suất xảy ra B của riêng nó, không quan tâm đến A. Kí hiệu P(B)


-

Xác suất xảy ra B khi biết A xảy ra. Kí hiệu P(B|A)

Công thức Naïve Bayes được tính như sau
𝑃(𝐴𝑖 |𝐵) =

𝑃(𝐵 |𝐴𝑖 )𝑃(𝐴𝑖 )
∑𝑛𝑖=1 𝑃(𝐵|𝐴𝑖 )(𝑃(𝐴𝑖 )

(2.4)

b. Mạng Bayes (Bayesian Network)
Mạng Bayes là một đồ thị biểu diễn phân phối xác suất trên một tập biến. Nó thường
dùng để mã hóa các tri thức của chuyên gia và ý niệm của họ về một lĩnh vực nào đó. Do đó
mạng Bayes còn được gọi là mạng ý niệm (Belief Network) hoặc mạng nhân quả (Causal
Network).
c. Phân lớp Naive Bayes
Naive Bayes Classifier (NBC) [9] là một thuật ngữ trong xử lý số liệu thống kê
Bayes với một phân lớp xác suất dựa trên các ứng dụng định lý Bayes với giả định độc lập
bền vững. Một thuật ngữ mô tả chi tiết cho những mô hình xác suất sẽ là “mô hình đặc
trưng không phụ thuộc”.


9
2.3.2. Phương pháp SVM (Support Vector Machine)
a. Giới thiệu phương pháp
Trong những năm gần đây, phương pháp phân lớp sử dụng tập phân lớp vector hỗ trợ
(máy vector hỗ trợ - Support Vector Machine – SVM) [5] được quan tâm và sử dụng nhiều

trong lĩnh vực nhận dạng và phân lớp. SVM là một họ các phương pháp dựa trên cơ sở các
hàm nhân (kernel) để tối thiểu hoá rủi ro ước lượng. Xét với các phương pháp phân lớp
khác, khả năng phân lớp của SVM là tương đối tốt và hiệu quả.
b. Huấn luyện SVM
Huấn luyện SVM là việc giải bài toán quy hoạch toàn phương SVM. Các phương
pháp số giải bài toán quy hoạch này yêu cầu phải lưu trữ một ma trận có kích thước bằng
bình phương của số lượng mẫu huấn luyện.
2.4. Xây dựng chương trình giải quyết bài toán
Luận văn sẽ trình bày một số phương pháp xây dựng chương trình để giải quyết bài
toán xác định ý định người dùng trên diễn đàn trong các phần dưới đây.
2.4.1. Thuật toán EM
Việc xác định ý định người dùng đầu tiên được lấy ý tưởng dựa trên thuật toán EM
(Expectation Maximiation).
Thuật toán EM (Expectation - Maximization) nhằm tìm ra sự ước lượng về khả năng
lớn nhất của các tham số trong mô hình xác suất (các mô hình phụ thuộc vào các biến tiềm
ẩn chưa được quan sát).
Thuật toán gồm 2 bước xử lý:
-

Đánh giá dữ liệu chưa được gán nhãn (bước E)

-

Đánh giá các tham số của mô hình, khả năng lớn nhất có thể xảy ra (bước M).

Từ bước (E) ta có thể xác định, đánh giá dữ liệu, và bước (M) sẽ tính toán lại các
tham số để đưa ra kết quả tốt nhất.
Trong một tình huống là các đặc trưng trích chọn ra từ dữ liệu đã gán nhãn có thể
không phù hợp với dữ liệu chưa có nhãn, vì thực tế phần dữ liệu cần gán nhãn chưa có nhãn
để sử dụng trích chọn đặc trưng, mà các đặc trưng của tập dữ liệu lại rất quan trọng trong

việc phân loại dữ liệu.


10
Để giải quyết vấn đề của thuật toán EM trong quá trình xử lý là cần tìm ra cách trích
chọn đặc trưng của tập dữ liệu chưa được gán nhãn. Luận văn đề xuất ra 2 phương pháp
thay thế phương pháp EM: FS-EM (Feature Selection EM) và Co-Class (Co-classifiation).
2.4.2. Thuật toán FS-EM
Ở thuật toán EM, việc trích chọn đặc trưng trích ra từ tập dữ liệu được gán nhãn và
không thay đổi. Tuy nhiên, những đặc trưng này chỉ phù hợp với tập dữ liệu đã gán nhãn
nhưng không hẳn phù hợp với dữ liệu chưa được gán nhãn. Vì vậy, ta đề xuất thêm một
bước chọn đặc trưng trong quá trình lặp để đánh giá nhãn cần gán, ví dụ như sau mỗi vòng
lặp, ta chọn lại đặc trưng cho tập dữ liệu. Như vậy, sau mỗi vòng lặp ta sẽ có một tập đặc
trưng mới ứng với dữ liệu chưa được gán nhãn.
Thuật toán FS-EM được trình bày chi tiết như sau:
Input: Tập dữ liệu được gán nhãn DL và chưa gán nhãn DU
1. Chọn tập đặc trưng  của tập dữ liệu được gán nhãn DL
2. Dựng bộ phân lớp h từ DL dựa trên đặc trưng 
3. Lặp:
4.
for: Với mỗi văn bản d trong tập dữ liệu DU
5.
c = h(di) // gán nhãn cho d sử dụng bộ phân lớp h
6.
7.

end.
Đặt DP là tập dữ liệu đã được gán nhãn của DU

8.


Chọn tập đặc trưng mới  dựa trên DP

9.

Dựng bộ phân lớp h từ DP và dựa trên tập đặc trưng mới 

10. Dừng vòng lặp khi nhãn tập dữ liệu DP không thay đổi
11. Trả về bộ phân lớp h của lần lặp cuối cùng

Điểm yếu của thuật toán FS-EM là việc xây dựng bộ phân lớp dữ liệu h trong vòng
lặp chỉ sử dụng dựa trên bộ dữ liệu chưa được gán nhãn, mà không sử dụng đến dữ liệu đã
gán nhãn ban đầu. Trong khi đó dữ liệu đã được gán nhãn lại chứa các hông tin có ích và
chính xác hơn cho việc phân lớp. Vì vậy, ta đề xuất thêm thuật toán tiếp theo là Co-Class để
giải quyết được vấn đề này.


11
2.4.3. Thuật toán Co-Class
Thuật toán Co-Class là thuật toán kết hợp giữa cả dữ liệu đã được gán nhãn và dữ
liệu chưa được gán nhãn khi chạy qua bộ phân lớp h (DP). Co-Class giúp giải quyết được
điểm yếu của thuật toán FS-EM là tận dụng được bộ phân lớp được xây dựng từ dữ liệu đã
được gán nhãn và điểm mạnh của Co-Training là sử dụng một lúc 2 bộ phân lớp từ với 2 bộ
dữ liệu khác nhau.
Nhưng thay vì việc xây dựng bộ phân lớp dựa trên đặc trưng của thuật toán CoTraining được thực hiện trên 2 tập dữ liệu khác nhau, để tạo ra 2 bộ phân lớp khác nhau. Thì
Co-Class sẽ chỉ sử dụng một bộ đặc trưng duy nhất để xây dựng ra 2 bộ phân lớp.
Chi tiết của thuật toán Co-Class được trình bày như sau:
Input: Tập dữ liệu được gán nhãn DL và chưa gán nhãn DU
1. Chọn tập đặc trưng  của tập dữ liệu được gán nhãn DL
2. Dựng bộ phân lớp h từ DL dựa trên đặc trưng 

3. for: Với mỗi văn bản d trong tập dữ liệu DU
4.
c = h(di) // gán nhãn cho d sử dụng bộ phân lớp h
5. end.
6. Đặt DP là tập dữ liệu đã được gán nhãn của DU
7. Lặp:
8.

Chọn bộ đặc trưng  mới từ tập dữ liệu DP

9.

Dựng bộ phân lớp hL sử dụng đặc trưng  và tập dữ liệu DL

10.

Dựng bộ phân lớp hP sử dụng đặc trưng  và tập dữ liệu DP

11.

for: Với mỗi văn bản d trong tập dữ liệu DU

12.

c = (hL(di), hP(di)); // kết hợp 2 bộ phân lớp hL, hP

13.
end.
14.
Đặt DP là tập dữ liệu đã được gán nhãn của DU

15. Dừng vòng lặp khi nhãn tập dữ liệu DP không thay đổi
16. Trả về bộ phân lớp h của lần lặp cuối cùng
Ở bước 11-13, kết quả phân lớp bộ dữ liệu chưa gán nhãn được thay thế bằng kết quả
kết hợp giữa 2 bộ phân lớp. Việc kết hợp sẽ theo quy tắc như sau:
 (hL (di), hP (di)) = {

+


ℎ𝐿 ( 𝑑 𝑖 ) = ℎ𝑃 ( 𝑑 𝑖 ) = +
𝑇𝑟ườ𝑛𝑔 ℎợ𝑝 𝑐ò𝑛 𝑙ạ𝑖


12
2.5. Kết chương
Chương 2 đã trình bày về quá trình tìm hiểu và áp dụng thuật toán TF-IDF, N-Grams
để trích xuất đặc trưng và thuật toán Naïve Bayes, SVM để phân lớp dữ liệu.
Để phân tích quan điểm người dùng, luận văn đã đề xuất và áp dụng 2 thuật toán FSEM, và Co-Class để cải thiện kết quả khi xây dựng thực nghiệm.
Chương 3 sẽ tiến hành thử nghiệm ứng dụng đã xây dựng trên các kịch bản khác
nhau, sau đó sẽ đánh giá độ chính xác của ứng dụng dựa trên các kết quả thu được.


13

CHƯƠNG 3:

THỰC NGHIỆM VÀ ĐÁNH GIÁ

Sau khi trình bày chi tiết các thuật toán được áp dụng cho bài toán xác định ý định ở
chương 2, trong chương này luận văn sẽ xây dựng thực nghiệm ứng với các kịch bản thực

nghiệm khác nhau, sau đó tiến hành đánh giá độ chính xác dựa trên kết quả thu được và đưa
ra kết luận
3.1. Dữ liệu thực nghiệm
Dữ liệu thực nghiệm được thu thập từ 4 forums khác nhau tương ứng với 4 miền dữ
liệu khác nhau:
Bảng 3.1: Danh sách trang web thu thập dữ liệu

Forums

Chủ đề

/>
Điện thoại

/>
Điện tử

/>
Camera

/>
TV

Với mỗi forums ta sẽ thu thập và gán nhãn bằng tay gần 1000 bài viết với độ dài mỗi
bài viết giới hạn không nhỏ hơn 50 từ. Ta quy định bài viết có chiều hướng có hứng thú
muốn mua sản phẩm là bài viết có chứa ý định sẽ được gán nhãn là 1, và còn lại sẽ được gán
nhãn 0.
Dữ liệu sau khi thu thập được thống kê lại như trong bảng dưới đây:
Bảng 3.2: Danh sách tập dữ liệu thu được và nhãn dữ liệu


Tập dữ liệu

Không có ý định

Có ý định

Tổng số bài đăng

Điện thoại

811

184

995

Điện tử

711

278

989

TV

717

280


997

Camera

811

184

995


14

3.2. Thiết lập thực nghiệm
Ở mục này, luận văn sẽ trình bày 3 kịch bản thực nghiệm cho các trường hợp xác
định ý định người dùng. Mỗi kịch bản sẽ bao gồm dữ liệu đầu vào là dữ liệu đã được gán
nhãn và dữ liệu cần phân lớp là tập dữ liệu chưa được gán nhãn.
Ta cần thực nghiệm các thuật toán EM, FS-EM và so sánh với kết quả của thuật toán
Co-Class để so sánh được hiệu quả của từng thuật toán khi áp dụng để xác định ý định
người dùng.
Quá trình thực nghiệm thuật toán gồm 2 phần chính:
-

Trích chọn đặc trưng: Sử dụng 2 thuật toán TF-IDF, N-Grams với n lần lượt
chọn các giá trị 1,2,3

-

Xây dựng bộ phân lớp dữ liệu: Sử dụng 2 thuật toán Naïve Bayes và SVM
(trong đó thuật toán SVM sử dụng hàm Kernel tuyến tính (Joachims, 1998;

Yang and Liu, 1999)).

3.3. Công cụ thực nghiệm
Môi trường thực nghiệm:
-

Phần cứng (Thiết bị thực nghiệm): Macbook Air 2013, CPU Intel Core i5
1.3Ghz, 4GB RAM

-

Phần mềm: Weka 3.8. Công cụ tích hợp hỗ trợ các thuật toán học máy.

Khi xây dựng thực nghiệm, ta sử dụng kết hợp 2 thuật toán trích chọn đặc trưng TFIDF, N-Grams (n=1,2,3) với 2 thuật toán phân lớp dữ liệu Naïve Bayes, SVM và lấy ra 3
tham số Precision, Recall và F-Measure.
Từ kết quả thu được sau thực nghiệm, ta sẽ kết luận được mô hình gán nhãn cho dữ
liệu nào là phù hợp cho đề tài xác định ý định của văn bản.
3.3.1. Thực nghiệm trên 1 miền dữ liệu
Ta sẽ đưa ra kịch bản thực nghiệm trên 1 miền dữ liệu, dữ liệu gán nhãn và dữ liệu
chưa gán nhãn được lấy trên 1 forum và thảo luận về cùng 1 chủ đề. Với lần lượt từng chủ
đề, trên gần 1000 mẫu dữ liệu, ta chia dữ liệu thành 10 phần ngẫu nhiên, với tỉ lệ nhãn 0 và
1 là tương đương nhau, ta lấy ngẫu nhiên 1 phần dữ liệu để làm dữ liệu chưa gán nhãn để
kiểm tra, và 9 phần còn lại để làm dữ liệu học.


15
Như vậy ta cần thực hiện thực nghiệm 10 lần với từng chủ đề và trên 4 chủ đề ta sẽ
có 40 bản dữ liệu cần thực nghiệm.
Việc thực nghiệm được thực hiện lần lượt với các thuật toán trích chọn đặc trưng và
phân lớp đã nêu ra trước đó, sau khi chạy thực nghiệm xong sẽ tính giá trị trung bình của

các tham số Precission, Recall, Fscore để đưa ra nhận xét thuật toán nào phù hợp nhất với
bài toán xác định ý định người dùng cho dữ liệu cùng miền
3.3.2. Thực nghiệm trên 2 miền dữ liệu
Ta sẽ đưa ra kịch bản thực nghiệm trên 2 miền dữ liệu, dữ liệu gán nhãn và dữ liệu
chưa gán nhãn được lấy trên 2 forum khác nhau và thảo luận về 2 chủ đề khác nhau.
a. Kịch bản 1
Áp dụng theo phương pháp 3TR-1TE: sử dụng dữ liệu lấy trên 3 forum đã được gán
nhãn tương ứng với 3 miền dữ liệu làm dữ liệu học và dữ liệu trên miền còn lại làm dữ liệu
kiểm tra.
Việc thực nghiệm được thực hiện lần lượt với các thuật toán trích chọn đặc trưng và
phân lớp đã nêu ra trong phần trên, sau khi chạy thực nghiệm xong sẽ tính giá trị trung bình
của các tham số Precission, Recall, Fscore và đưa ra đánh giá kết quả thực nghiệm
b. Kịch bản 2
Sử dụng dữ liệu đã gán nhãn của 1 miền dữ liệu được lấy trên 1 forum và thảo luận
về 1 chủ đề làm dữ liệu học và dữ liệu trên 1 forum khác và thảo luận về chủ đề khác làm
dữ liệu kiểm tra.
Việc thực nghiệm được thực hiện lần lượt với các thuật toán trích chọn đặc trưng và
phân lớp đã nêu ra trong phần trên, sau khi chạy thực nghiệm xong sẽ tính giá trị trung bình
của các tham số Precission, Recall, Fscore và đưa ra đánh giá kết quả thực nghiệm
3.4. Kết quả thực nghiệm
3.4.1. Thực nghiệm trên 1 miền dữ liệu
Sau khi thực hiện thực nghiệm trên 1 miền dữ liệu ta thu được kết quả gán nhãn khá
chính xác và được thống kê lại trong bảng dưới đây:


16
Bảng 3.3: Độ chính xác trung bình khi thực nghiệm dữ liệu cùng miền
NAÏVE BAYES

SVM


Chủ đề

Điện thoại
Điện tử
TV
Camera

TFIDF

N1Gram

N2Gram

N3Gram

TFIDF

N1Gram

N2Gram

N3Gram

67.8

68.7

72.1


69.9

70.1

63.7

65.5

66.4

64.3

66.5

68.1

68.5

68.8

66.5

63.5

66.6

69.1

66.7


68.3

66.4

67.3

67.8

65.6

69.6

67.8

68.5

70.3

70.2

69.6

65.9

69.9

65.4

Khi thực nghiệm với 1 miền dữ liệu, với kết quả thu được trong bảng, ta nhận thấy:
-


Độ chính xác khi áp dụng các thuật toán gán nhãn dữ liệu rơi vào khoảng 6372%, ở mức tương đối chính xác đối với cả 4 miền dữ liệu.

-

Trong đó với chủ đề “Điện tử” thuật toán có độ chính xác trung bình là thấp
nhất, và chủ đề “TV” có độ chính xác là cao nhất.

-

Dựa vào bảng dữ liệu thu được, ta nhận thấy khi sử dụng thuật toán SVM để
phân lớp dữ liệu sẽ đưa ra kết quả kém chính xác hơn so với thuật toán phân
lớp và trong đó, thuật toán trích chọn đặc trưng N2-Gram kết hợp với thuật
toán Naïve Bayes là đưa lại kết quả chính xác cao nhất.

3.4.2. Thực nghiệm trên 2 miền dữ liệu
a. Kịch bản 1
Sau khi thực hiện thực nghiệm trên 2 miền dữ liệu với kịch bản 1, lấy dữ liệu của 3
miền làm dữ liệu học và dữ liệu của miền còn lại làm dữ liệu chưa gán nhãn ta thu được kết
quả được thống kê lại trong bảng dưới đây:
Bảng 3.4: Độ chính xác khi thực nghiệm dữ liệu khác miền kịch bản 1
NAÏVE BAYES
Chủ đề

SVM

TFIDF

N1Gram


N2Gram

N3Gram

TFIDF

N1Gram

N2Gram

N3Gram

Điện thoại

64.32

69.95

71.94

68.33

65.36

72.24

71.51

72.54


Điện tử

64.23

65.24

64.68

65.82

67.17

66.32

66.52

69.02

TV

66.04

68.83

70.75

70.75

65.98


67.74

65.23

74.73

Camera

68.66

69.48

67.52

67.74

70.49

70.59

68.90

75.73


17
Khi thực nghiệm với 2 miền dữ liệu với kịch bản 1 đã nêu ở phần trước, với kết quả
thu được trong bảng, ta nhận thấy:
-


Độ chính xác khi áp dụng các thuật toán gán nhãn dữ liệu rơi vào khoảng 6176%, vẫn ở mức tương đối chính xác.

-

Trong đó, khi thực nghiệm dữ liệu học từ các chủ đề “Điện thoại”, “TV”,
“Camera” để áp dụng cho dữ liệu kiểm tra là chủ đề “Điện tử” là đem lại kết
quả chính xác thấp nhất.
Kết quả thực nghiệm với thuật toán phân lớp SVM đưa ra độ chính xác trung

-

bình cao hơn so với thuật toán Naïve Bayes, và khi áp dụng thuật toán trích
chọn đặc trưng N3-Gram kết hợp với thuật toán phân lớp SVM có kết quả
chính xác là cao nhất.
b. Kịch bản 2
Sau khi thực hiện thực nghiệm trên 2 miền dữ liệu với kịch bản 2, lấy dữ liệu của 1
miền làm dữ liệu học và dữ liệu của miền còn lại làm dữ liệu chưa gán nhãn ta thu được kết
quả được thống kê lại trong bảng dưới đây:
Bảng 3.5: Độ chính xác khi thực nghiệm chủ đề “Điện thoại”, “Điện tử”
Dữ liệu kiểm thử
Dữ liệu học

NAÏVE
BAYES

SVM

ĐIỆN THOẠI

ĐIỆN TỬ


Điện tử

Camera

TV

Điện thoại

Camera

TV

TFIDF

67.36

71.63

70.06

63.84

64.36

61.65

N1Gram

65.27


70.54

65.86

62.64

64.07

62.67

N2Gram

70.43

69.14

67.59

63.86

62.98

64.38

N3Gram

66.94

69.22


68.83

62.57

63.70

64.19

TFIDF

71.41

71.26

66.15

62.48

63.76

61.72

N1Gram

70.73

66.18

69.48


64.74

62.43

64.99

N2Gram

69.68

66.99

65.69

64.52

64.95

62.40

N3Gram

72.39

73.02

68.30

64.19


64.27

65.20


18
Bảng 3.6: Độ chính xác khi thực nghiệm chủ đề “Camera”, “TV”
Dữ liệu kiểm thử

CAMERA

TV

Dữ liệu học

Điện tử

Điện thoại

TV

Điện thoại

Camera

Điện tử

TFIDF


71.65

69.34

67.02

69.54

68.03

70.35

N1Gram

71.95

66.96

70.15

70.05

70.24

66.28

N2Gram

71.58


71.74

65.87

71.96

70.45

69.32

N3Gram

70.61

67.03

71.88

65.47

68.16

66.03

TFIDF

68.83

69.18


71.99

65.31

68.97

67.27

N1Gram

66.19

68.21

69.02

65.66

70.28

65.44

N2Gram

66.82

71.98

66.04


69.08

66.42

68.86

N3Gram

70.14

67.24

71.35

70.99

69.83

72.43

NAÏVE
BAYES

SVM

Khi thực nghiệm với 2 miền dữ liệu với kịch bản 2 đã nêu ở phần trước, với kết quả
thu được trong bảng, ta nhận thấy:
-

Độ chính xác khi áp dụng các thuật toán gán nhãn dữ liệu rơi vào khoảng 5971%, ở mức khá chính xác.


-

Trong đó khi áp dụng lần lượt từng chủ đề trong 3 chủ đề “Điện thoại”,
“TV”, “Camera” làm dữ liệu học, và sử dụng dữ liệu chủ đề “Điện tử” làm dữ
liệu kiểm thử, thì độ chính xác khi áp dụng với chủ đề “Điện tử” là đem lại
kết quả chính xác thấp nhất.

-

Thuật toán phân lớp dữ liệu SVM vẫn đem lại độ chính xác gán nhãn cao hơn
so với thuật toán Naïve Bayes khi áp dụng với kịch bản dữ liệu chéo miền.

-

Khi áp dụng thực nghiệm trên 2 miền dữ liệu khác nhau, với các thuật toán
trích chọn đặc trưng thì thuật toán N3-Gram kết hợp với thuật toán phân lớp
văn bản SVM đưa lại kết quả gán nhãn cao nhất.

3.4.3. So sánh kết quả thực nghiệm Co-Class với các thuật toán khác
Thực nghiệm dữ liệu cùng miền
Khi thực nghiệm so sánh 3 kịch bản phân loại trên với lần lượt các thuật toán EM,
FS-EM và Co-Class ta thu được đồ thị phân loại dưới đây:


19

So sánh 3 thuật toán trường hợp dữ liệu cùng miền
71.0
70.0


69.7

69.0

68.9

68.0 67.8
67.0 67.3
66.5
66.0

67.6
66.9

68.7

68.9

66.4

67.4
66.6

67.9

65.0
64.0

64.2


64.3

69.3

67.1
67.0
66.0
65.5

66.1
65.8

64.5

64.8

63.0

EM
FS-EM
Co-Class

62.0
61.0

Hình 3.1: So sánh độ chính xác khi thực nghiệm cùng miền 3 thuật toán

Ta nhận thấy, khi thực nghiệm trên cùng 1 miền dữ liệu, kết quả xác định ý định của
văn bản không chênh lệch nhiều khi áp dụng 3 thuật toán EM, FS-EM, Co-Class, thuật toán

Co-Class chưa hẳn vượt trội hơn về độ chính xác so với 2 thuật toán trước đó.
Ngay trong một số trường hợp thực nghiệm áp dụng thì thuật toán FS-EM đưa ra kết
quả chính xác hơn so với Co-Class.
Thực nghiệm dữ liệu chéo miền
Tiếp theo, ta thực nghiệm với dữ liệu trái miền, lần lượt với 2 kịch bản, ta thu được
kết quả như dồ thị dưới đây


20

So sánh 3 thuật toán trường hợp dữ liệu chéo miền kịch bản
1
80.0
70.0
66.1
60.0 62.8
50.0
46.5
40.0
30.0
20.0
10.0
0.0

66.1
64.9
48.2

70.7
62.2


66.4
65.2

67.4
64.8

66.8
65.1

68.5
63.6

72.6
66.0

42.4

44.4

42.5

44.4

44.6

44.0

EM
FS-EM

Co-Class

Hình 3.2: So sánh độ chính xác khi thực nghiệm chéo miền 3 thuật toán

So sánh 3 thuật toán trong trường hợp dữ liệu chéo miền
kịch bản 2
80.0
70.0

67.9
59.4

60.0
50.0

41.6

67.2

68.2

56.3
49.2

57.1
45.1

67.0
63.0


67.3
64.1

48.2

48.2

66.9
65.4

66.9

69.6
67.7

55.6
45.7

45.7

44.9

40.0

30.0

EM

20.0


FS-EM

10.0
0.0

Co-Class

Hình 3.3: So sánh độ chính xác khi thực nghiệm chéo miền 3 thuật toán

Nhận thấy, khi thực nghiệm trên 2 miền dữ liệu khác nhau, kết quả xác định ý định
của văn bản đã cho thấy sự chênh lệch rõ ràng hơn khi áp dụng 3 thuật toán EM, FS-EM,
Co-Class. Thuật toán Co-Class đã thể hiện được điểm mạnh khi áp dụng trong trường hợp
dữ liệu chéo miền. Trong đó
-

Thuật toán EM thể hiện được khả năng phân loại yếu nhất trong 3 thuật toán.
Độ chính xác của thuật toán thấp, khoảng 39-54%


21
-

Thuật toán FS-EM có độ chính xác ở mức tương đối chính xác 53-66%

-

Và Thuật toán Co-Class đưa lại kết quả gán nhãn hiệu quả nhất trong thực
nghiệm xác định ý định văn bản, trong trường hợp áp dụng kết hợp thuật toán
trích chọn đặc trưng N3-Gram và thuật toán phân lớp SVM, thuật toán CoClass đưa được kết quả phân loại chính xác đến 71%


3.5. Nhận xét thực nghiệm và kết luận
Khi áp dụng thuật toán Co-Class vào trong bài toán xác định ý định người dùng, ta
nhận thấy:
-

Khi áp dụng gán nhãn trên 1 chủ đề nhất định, thì thuật toán phân lớp Naïve
Bayes đem lại kết quả cao hơn so với thuật toán SVM. Có thể nói, thuật toán
Naïve Bayes phù hợp với bài toán phân loại dữ liệu trên cùng miền hơn so
với thuật toán SVM. Và ngược lại, thuật toán SVM đem lại kết quả cao hơn
khi áp dụng thử nghiệm với trường hợp dữ liệu chéo miền.

-

Thuật toán SVM đưa ra kết quả chính xác với các văn bản ngắn 50-70 từ, khi
xác định với văn bản dài lớn hơn 150 từ và bị ảnh hưởng bởi dữ liệu nhiễu
dẫn đến thuật toán SVM xác định thiếu chính xác.

-

Khi thực nghiệm xác định trên 1 tập dữ liệu, với thuật toán EM, cho kết quả
xác định ý định kém chính xác hơn so với 2 thuật toán còn lại là thuật toán
FS-EM và thuật toán Co-Class

-

Khi thực nghiệm trên 2 miền dữ liệu khác nhau, thuật toán EM đưa kết quả
chính xác thấp, và thuật toán FS-EM đưa ra kết quả kém chính xác hơn so với
Co-Class. Việc để xác định được ý định của người dùng khi ta chưa thể thu
thập được dữ liệu tập học của riêng chủ đề đó là vấn đề rất hay xảy ra, và
thuật toán Co-Class đã thể hiện được ưu điểm trong tình huống dữ liệu để học

máy không thuộc một chủ đề nhất định hay áp dụng dữ liệu học máy là của
một chủ đề khác, không liên quan với chủ đề kiểm tra

-

Kết quả thực nghiệm của Co-Class với dữ liệu trái miền đem lại kết quả cao
và xấp xỉ bằng với kết quả khi xác định ý định văn bản trên dữ liệu cùng
miền.

Như vậy, từ kết quả thực nghiệm thu được cho thấy Co-Class giúp cho việc xác định
ý định văn bản đạt độ chính xác khá cao và sẽ không gặp khó khăn lớn khi áp dụng trên bất
kỳ chủ đề nào và việc chưa có dữ liệu học máy của chính chủ đề đó cũng sẽ không còn là
trở ngại lớn khi xác định ý định người dùng.


22

KẾT LUẬN VÀ KIẾN NGHỊ
Luận văn tập trung nghiên cứu phát hiện chính xác ý định của người viết trên diễn
đàn thảo luận. Trong luận văn đã tập trung nghiên cứu sâu các phương pháp biểu diễn đặc
trưng của văn bản (N-grams, TF-IDF), các phương pháp học máy để xây dựng mô hình
phân lớp dữ liệu (Naïve Bayes, SVM) và đưa ra bài toán phát hiện ý định người dùng khi áp
dụng trên 2 miền dữ liệu cùng miền và chéo miền. Cụ thể, luận văn đã đạt được một số kết
quả sau:
-

Nghiên cứu các mô hình biểu diễn đặc trưng của văn bản, mô hình phân lớp
dữ liệu áp dụng bài toán xác định ý định của người viết

-


Đề xuất một số cải tiến nhằm nâng cao độ chính xác của việc phát hiện ý định
người dùng thông qua bài viết

-

Áp dụng thuật toán nâng cao độ chính xác, thực nghiệm và đánh giá kết quả

Trong tương lai, Luận văn có thể được phát triển theo các hướng:
-

Nghiên cứu các phương pháp nâng cao độ chính xác và cải thiện tốc độ xử lý
đối với việc phát hiện văn bản chứa ý định người dùng.

-

Nghiên cứu các phương pháp thu thập dữ liệu tự động, từ đó kết hợp với các
hệ thống tư vấn, quảng cáo để đưa ra quảng cáo phù hợp, với lượng người
quan tâm cao.


23

PHỤ LỤC
Xây dựng ứng dụng
Ứng dụng hỗ trợ người dùng sẽ được xây dựng bằng ngôn ngữ Java sử dụng trên môi
trường máy tính, yêu cầu cấu hình máy tính cài đặt môi trường: Java JDK 7.
Chức năng của ứng dụng bao gồm:
-


Dựa vào văn bản người dùng đưa ra, ứng dụng xử lý và đưa ra ý định của văn
bản là có muốn mua sản phẩm hay không.

-

Ứng dụng xử lý dữ liệu và đưa ra chủ đề và sản phẩm mà người dùng muốn
mua hoặc muốn tìm hiểu thêm. Từ đó tích hợp với các hệ thống quảng cáo để
đưa ra quảng cáo phù hợp với văn bản.

Giao diện ứng dụng như sau:

Hình 2: Mô tả ứng dụng


×