Chương IGiới thiệu tổng quan1.1Giới thiệu về đề tàiĐề tài "Phân Loại Chất Lượng Sản Phẩm Dựa Vào Phản Hồi Của Người Sử Dụng" tập trung vào việc áp dụng các thuật toán máy học và khai thá
Trang 2MỤC LỤC
Chương I Giới thiệu tổng quan 3
1.1 Giới thiệu về đề tài 4
1.2 Mục tiêu và tầm quan trọng của công việc phân loại chất lượng sản phẩm dựa trên sự phản hồi của người dùng 4
1.3 Các nội dung dự kiến thực hiện 4
Chương II Cơ sở lý thuyết 4
2.1 Giới thiệu về thuật toán 4
2.2 Ưu nhược điểm của thuật toán 5
2.3 Ứng dụng trong thực tế của các thuật toán 6
2.4 Hình ảnh, biểu tượng, đồ thị, bảng của các thuật toán 6
Chương III Dữ liệu huấn luyện 8
a) Mô tả dữ liệu 8
b) Định nghĩa nhãn dữ liệu 8
c) Định nghĩa chi tiết 8
d) Phân tích dữ liệu 10
Chương IV Lưu đồ thuật toán để huấn luyện mô hình 11
Chương V Code chương trình huấn luyện 13
Chương VI Phân tích đánh giá kết quả mô hình đạt được 26
a) Model SVC 26
b) Model Multinamial NB 26
c) Model Logistic Regression 27
Chương VII : Kết luận 27
a) Những điểm đạt được 28
b) Những điểm hạn chế 28
c) Hướng phát triển 28
Trang 3DANH MỤC HÌNH
Hình II.-1: Kết quả của ví dụ về model Logistic Regression 8
Hình III.-2: Data của mô hình được gán nhãn 10
Hình III.-3: Số điểm dữ liệu của mỗi nhãn 11
Hình IV.-4: Lưu đồ thuật toán 12
Hình VI.-5: Kết quả của model SVC 26
Hình VI.-6: Kết quả của model MNB 27
Hình VI -7: Kết quả của model Logistic Regression .Error! Bookmark not defined. DANH MỤC BẢNG Bảng II.-1: Phân phối xác xuất qua từ điển bằng MNB 7
Bảng II.-2: Ví dụ về Logistic Regression 7
DANH MỤC CHỮ VIẾT TẮT
Trang 4Chương I Giới thiệu tổng quan
1.1 Giới thiệu về đề tài
Đề tài "Phân Loại Chất Lượng Sản Phẩm Dựa Vào Phản Hồi Của Người Sử Dụng" tập trung vào việc áp dụng các thuật toán máy học và khai thác dữ liệu để phân loại chất lượng sản phẩm dựa trên phản hồi của người dùng Trong thời đại số hóa hiện nay, người dùng có khả năng tương tác và chia sẻ phản hồi của mình về sản phẩm trực tuyến thông qua đánh giá, bình luận, xếp hạng và các hình thức phản hồi khác Việc sử dụng thông tin phản hồi này có thể cung cấp cho người tiêu dùng thông tin đáng tin cậy và hữu ích để lựa chọn sản phẩm chất lượng và đáp ứng nhu cầu của họ
1.2 Mục tiêu và tầm quan trọng của công việc phân loại chất lượng sản phẩm dựa trên sự phản hồi của người dùng
Mục tiêu chính của đề tài này là phát triển một mô hình phân loại chất lượng sản phẩm dựa trên
sự phản hồi của người dùng Điều này giúp cung cấp cho người tiêu dùng một công cụ hữu ích
để đánh giá chất lượng sản phẩm một cách nhanh chóng và dễ dàng Thông qua việc phân loại,người dùng có thể nhận biết sản phẩm tốt nhất và tránh những sản phẩm có chất lượng kém
1.3 Các nội dung dự kiến thực hiện
Việc phân loại chất lượng sản phẩm dựa trên phản hồi của người dùng cũng có tầm quan trọng
về mặt kinh tế và xã hội Đối với doanh nghiệp, việc hiểu được ý kiến và phản hồi của ngườidùng giúp cải thiện chất lượng sản phẩm, tăng độ tin cậy và niềm tin từ khách hàng Đồng thời,người dùng cũng được hưởng lợi từ việc có thông tin chính xác và phản hồi từ cộng đồng, giúp
họ đưa ra quyết định mua hàng thông minh và tối ưu hóa trải nghiệm mua sắm của mình.Tóm lại, việc phân loại chất lượng sản phẩm dựa trên phản hồi của người dùng đóng vai tròquan trọng trong việc cung cấp thông tin đáng tin cậy cho người tiêu dùng và hỗ trợ doanhnghiệp cải thiện chất lượng sản phẩm Đề tài này tập trung vào nghiên cứu và phát triển mô hình
để thực hiện nhiệm vụ này, đóng góp vào sự phát triển của lĩnh vực phân tích loại chất lượngsản phẩm dựa trên phản hồi của người dùng
Chương II Cơ sở lý thuyết
2.1 Giới thiệu về thuật toán
a) Support Vector Classifier (SVC)
SVC là một thuật toán phân loại dựa trên ý tưởng tạo ra một siêu mặt phân chia tuyến tính (hoặcphi tuyến) tốt nhất giữa các điểm dữ liệu thuộc vào các nhóm khác nhau
b) Multinomial Naive Bayes (MNB)
Trang 5MNB là một thuật toán phân loại dựa trên giả định naive Bayes và phân phối xác suất đa thức
Nó được sử dụng phổ biến trong các bài toán phân loại văn bản
c) Logistic Regression
Logistic Regression là một thuật toán phân loại dựa trên hàm sigmoid để dự đoán xác suất thuộcvào một lớp cụ thể
2.2 Ưu nhược điểm của thuật toán
a) Support Vector Classifier (SVC)
Ưu điểm
Hiệu suất tốt trong các tập dữ liệu có số lượng đặc trưng lớn
Được chứng minh lý thuyết mạnh mẽ và có tính toán hiệu quả
Có khả năng xử lý tốt với các tập dữ liệu có số lượng mẫu nhỏ
Nhược điểm
Đòi hỏi tập dữ liệu huấn luyện phải được tiêu chuẩn hóa hoặc chuẩn hóa trước khi áp dụng.Nhạy cảm với nhiễu và các giá trị ngoại lai trong dữ liệu
Thời gian huấn luyện và dự đoán có thể tăng lên đáng kể với các tập dữ liệu lớn
b) Multinomial Naive Bayes (MNB)
Ưu điểm
Huấn luyện và dự đoán nhanh chóng vì tính đơn giản của giả định naive Bayes
Hiệu suất tốt trong các bài toán phân loại văn bản và các tác vụ liên quan đến đếm từ.Tích hợp tốt với các công cụ xử lý ngôn ngữ tự nhiên (NLP)
Đơn giản và dễ hiểu
Hiệu suất tốt trong các bài toán phân loại nhị phân
Cung cấp xác suất dự đoán và giúp thực hiện giải thích mô hình
Nhược điểm
Dễ bị ảnh hưởng bởi các giá trị ngoại lai
Khả năng phân loại đa lớp hạn chế, thường cần sử dụng kỹ thuật one-vs-rest hoặc softmax để
mở rộng cho các bài toán phân loại nhiều lớp
Trang 6Yêu cầu các biến đầu vào phải được chuẩn hóa hoặc tiêu chuẩn hóa để tránh ảnh hưởng bởi
5 sao) dựa trên các đặc trưng của phản hồi của người dùng
Hệ thống gợi ý sản phẩm: SVC có thể được sử dụng để gợi ý sản phẩm tương tự dựa trên sựtương đồng của các đặc trưng hoặc các đánh giá của người dùng
b) Ứng dụng của MNB
Phân loại văn bản: MNB là một thuật toán phổ biến được sử dụng trong bài toán phân loại vănbản, ví dụ như phân loại email là spam hay không spam Nó có thể dựa trên các đặc trưng từvăn bản như từ xuất hiện và tần suất xuất hiện để phân loại văn bản vào các nhãn khác nhau.Tách từ và xử lý ngôn ngữ tự nhiên: MNB cũng được sử dụng trong các tác vụ xử lý ngôn ngữ
tự nhiên như tách từ, phân loại từ loại, và phân tích ý kiến
c) Ứng dụng của Logistic Regression
Dự đoán khách hàng chuyển đổi: Logistic Regression có thể được sử dụng để dự đoán xác suấtkhách hàng chuyển đổi từ dạng miễn phí sang trả phí, dựa trên các đặc trưng của khách hàngnhư tuổi, giới tính, hoạt động trên ứng dụng, và thời gian sử dụng
Hệ thống xác định gian lận: Logistic Regression có thể được áp dụng để phát hiện và phân loạicác hành vi gian lận trong các giao dịch tài chính hoặc các hệ thống an ninh mạng
2.4 Hình ảnh, biểu tượng, đồ thị, bảng của các thuật toán
a) Multinomial Naive Bayes
Trang 7b) Logistic Regression
Ví dụ: Một nhóm 20 sinh viên dành thời gian trong khoảng từ 0 đến 6 giờ cho việc ôn thi Thờigian ôn thi này ảnh hưởng đến xác suất sinh viên vượt qua kỳ thi như thế nào?
Kết quả thu được
Bảng II.-2: Ví dụ về Logistic Regression
Mặc dù có một chút bất công khi học 3.5 giờ thì trượt, còn học 1.75 giờ thì lại đỗ, nhìn chung,học càng nhiều thì khả năng đỗ càng cao PLA không thể áp dụng được cho bài toán này vìkhông thể nói một người học bao nhiêu giờ thì 100% trượt hay đỗ, và thực tế là dữ liệu nàycũng không linearly separable (điệu kiện để PLA có thể làm việc) Chú ý rằng các điểm màu
đỏ và xanh được vẽ ở hai tung độ khác nhau để tiện cho việc minh họa Các điểm này được vẽdùng cả dữ liệu đầu vào x và đầu ra (y) Khi ta nói linearly seperable là khi ta chỉ dùng dữ liệuđầu vào x
Chúng ta biểu diễn các điểm này trên đồ thị để thấy rõ hơn:
Trang 8Chương III Dữ liệu huấn luyện
a) Mô tả dữ liệu
Bộ dữ liệu của chúng tôi bao gồm 1999 điểm dữ liệu được thu thập trên trang bán hàng trực tuyến Thế giới di động và Điện máy xanh Do đó, đối tượng người dùng đa dạng về độ tuổi, giớitính, quê quán Vì thế, bộ dữ liệu đảm bảo được tính khách quan và chân thực với đời sống hàngngày
Những phản hồi này bao gồm các trải nghiệm những lời khen, chê, đánh giá ưu nhược điểm và những câu hỏi thắc của người dùng
Ví dụ: “Cam chụp đẹp, mọi tác vụ rất mượt Nhưng pin chỉ Được lúc đầu sau 2 tháng pin kém dãman” hay “cho e hỏi e dùng con c340 này , chỉ mở 2 file word lên và dùng chưa đến 10 tab chrome mà CPU của máy đã nhảy không ổn định như trong hình thì có sao không ạ , phần tản nhiệt của máy nóng lắm ạ”
b) Định nghĩa nhãn dữ liệu
Bài toán tập trung vào việc phân loại phản hồi tích cực, tiêu cực hay trung tính
Mức độ tiêu cực của bình luận:
[1] Tích cực
[0] Trung tính
[-1] Tiêu cực
c) Định nghĩa chi tiết
Phản hồi tích cực là những bình luận mang tính chất đánh giá sản phẩm sử dụng tốt hoặc những trải nghiệm của cá nhân xoay quanh vấn đề về sản phẩm có chất lượng tốt
Ví dụ:
Trang 9Sản phẩm rất tốt chất lượng Nhân viên lịch sự nhiệt tình và dễ thương.
Mua được 3 ngày máy đẹp di chuyển thường xuyên khá là lý tưởng
Phản hồi tiêu cực là những bình luận mang tính chê bai, nói lên những nhược điểm và điều khách hàng chưa hài lòng đối với sản phẩm
Ví dụ:
-Sp khong phù hợp cho đồ họa kỹ thuật với 29 triệu mua mấy con gaming hoặc workstation ví
dụ như p51 full option hoac dell 7520 vs ligion Y540 sử dung toàn i7 9750h vga 1650 vs 1660ram 16gb ssd nvme
Phản hồi trung tính là những bình luận không chứa nội dung đánh giá sản phẩm mà chỉ bìnhluận các nội dung mang tính chất hỏi đáp, thăm dò ý kiến, góp ý; những nội dung khác khôngliên quan tới chất lượng sản phẩm
• Thu thập dữ liệu dựa trên đặc tính chung của 1 website, các class chứa các element Vì vậy quátrình crawl diễn ra như sau:
- Xác định class chứa comment
- Dùng đoạn code Javascript sau (sử dụng cửa sổ Inspect Element) để crawl
let listItem = '';
for(item of document.getElementsByClassName("<class name>")){
listItem = listItem + item.innerText + '\n';
}
• Xây dựng quy định chung và viết tài liệu hướng dẫn gán nhãn
• Khi đã có đủ 2 thành phần: bộ dữ liệu và quy tắc gán nhãn thì thực hiện gán nhãn bằng tay để
có bộ dữ liệu đúng đắn nhất
• Chúng tôi đánh giá chéo kết quả gán nhãn lẫn nhau Nếu phát hiện điểm dữ liệu đã gán nhãnkhông hợp lý thì quay lại chỉnh sửa tài liệu hướng dẫn gán nhãn và gán lại nhãn cho điểm dữ liệuấy
Trang 10• Kiểm tra chất lượng gán nhãn định kỳ hàng tuần, tìm hiểu nguyên nhân dẫn đến các lỗi gánnhãn và cách khắc phục.
• Tiến hành gán nhãn bằng tay, quy định gán nhãn dựa trên định nghĩa gán nhãn
• Cập nhật lại những điểm dữ liệu bị gán nhãn sai Tổng hợp lại toàn bộ bộ dữ liệu đã được gánnhãn và chuẩn bị cho bước huấn luyện mô hình tiếp theo
d) Phân tích dữ liệu
Dữ liệu sau khi được thu thập và gán nhãn xong sẽ có 1999 dòng và 2 cột: Feedback và Label
Ví dụ:
Hình III.-2: Data của mô hình được gán nhãn
Trong đó, bộ dữ liệu có 696 điểm dữ liệu nhãn -1(tiêu cực), 615 điểm dữ liệu nhãn 0(trungtính) và 688 dòng dữ liệu nhãn 1(tích cực) Do đó, bộ dữ liệu sau khi thu thập và xử lý khácân bằng
Trang 11Tuy nhiên, bởi vì bộ dữ liệu được thu thập từ những phản hồi của người dùng nên có rất nhiềulỗi như sau:
• Sai dấu câu
• Thừa khoảng trắng
• Sai chính tả
• Các từ bị dính liền nhau
• Sai cấu trúc và ngữ nghĩa của câu
Chương IV Lưu đồ thuật toán để huấn luyện mô hình
Trang 12Thu thập dữ liệu: Bước đầu tiên là thu thập dữ liệu từ các nguồn khác nhau Quá trình này cóthể bao gồm việc tìm kiếm, thu thập và trích xuất dữ liệu từ các nguồn dữ liệu khác nhau,chẳng hạn như cơ sở dữ liệu, tệp tin hoặc web.
Bộ dữ liệu: Sau khi thu thập dữ liệu, chúng ta cần xử lý và tổ chức dữ liệu thành một bộ dữ liệu
có cấu trúc Quá trình này có thể bao gồm việc làm sạch dữ liệu, loại bỏ dữ liệu không hợp lệhoặc trùng lặp, chuyển đổi dữ liệu thành định dạng phù hợp và tổ chức dữ liệu theo các thuộctính và mẫu dữ liệu
Gán nhãn bằng tay: Tiếp theo, chúng ta gán nhãn cho dữ liệu Quá trình này thường được thựchiện bằng cách xem xét từng mẫu dữ liệu và gán nhãn cho chúng dựa trên một tập hợp cácnhãn có sẵn hoặc theo yêu cầu cụ thể của vấn đề cụ thể Việc gán nhãn có thể được thực hiệnbằng cách đánh dấu trực tiếp trên dữ liệu hoặc thông qua các công cụ và giao diện gửi nhãn.Đánh giá kết quả gán nhãn dữ liệu: Sau khi đã gán nhãn cho dữ liệu, chúng ta cần đánh giá chấtlượng và độ chính xác của quá trình gán nhãn Điều này có thể bao gồm việc kiểm tra sự chínhxác của nhãn so với mẫu dữ liệu thực tế, tính nhất quán giữa các nhãn được gán cho cùng mộtloại dữ liệu, hoặc đánh giá sự đồng nhất giữa các nhãn được gán bởi các nhân viên khác nhau.Kiểm tra kết quả gán nhãn: Quá trình này nhằm kiểm tra sự chính xác và hiệu suất của mô hìnhgán nhãn dữ liệu Có thể sử dụng các phương pháp đánh giá như đánh giá chéo (cross-validation) hoặc kiểm tra trên tập dữ liệu kiểm tra độc lập để đảm bảo rằng mô hình gán nhãnhoạt động tốt trên dữ liệu mới
Trang 13Đóng gói và chuyển giao dữ liệu: Cuối cùng, sau khi đã hoàn thành quá trình gán nhãn và đánhgiá, dữ liệu được đóng gói và chuyển giao cho các bước tiếp theo trong quy trình xử lý hoặcphân tích dữ liệu Quá trình này có thể bao gồm việc lưu trữ dữ liệu vào cơ sở dữ liệu, tạo cáctệp tin xuất ra hoặc chuyển giao dữ liệu cho các bộ phận khác trong hệ thống.
Lưu đồ thuật toán trên giúp trực quan hóa và diễn giải các bước trong quy trình gán nhãn dữliệu và chuyển giao dữ liệu một cách dễ hiểu và logic
Chương V Code chương trình huấn luyện
##Downlolad thư viện underthesea
!pip install underthesea
##Download các thư viện cần thiết cho dự án
import pandas pdas
import numpy npas
import re
import underthesea
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score
from sklearn.metrics import f1_score
from sklearn.svm import SVC
from sklearn.pipeline import Pipeline
from sklearn.feature_extraction.text import TfidfVectorizer
##Đọc dữ liệu từ file sử dụng thư viện pandas
data = pd.read_csv('/content/drive/MyDrive/project_ML/ML_final.csv')
sns.countplot(x="Label", data=data)
X_data = data['Feedback']
Y_data = data['Label']
print(X_data)
## Tiềền x lý d li uử ữ ệ
#Đưa về kiểu chữ thường
Trang 14
re.sub: 1 phương thức có tác dụng so khớp và thay thế chuỗi so khớp được
Với: r’\d’ tương ứng với bất kỳ chữ số thập phân Unicode nào [0-9]
-> Thay thế các chữ số tìm được bằng ''
#Loại bỏ các con số
def remove_number(text):
result = re.sub(r'\d+' '', , text)
return result
Dùng hàm replace có sẵn trong python để thay thế các dấu câu tìm được bằng “ ”
#Loại bỏ các dấu câu
def remove_punctuation(text):
text = text.replace( , "," " ").replace("." " ", ) \
#Loại bỏ khoảng trắng thừa
def remove_whitespace(text):
return " ".join(text.split())
# Bỏ bớt các chữ cái giống nhau liên tiếp( Vd: quaaa -> qua)
def remove_similarletter(text):
text = re.sub(r'([A-Z])\1+', lambda m: m.group( ).upper(), text, 1
flags=re.IGNORECASE)
return text
#Tách từ tiếng Việt sử dụng thư viện underthesea có sẵn
def VN_Tokenize(text,format='text'):
Trang 15def remove_VN_stopwords(text):
#Chuẩn hóa dữ liệu
def Util(text):
replace_list = {
':v' 'hihi': , '<3' 'yêu': , '♥ ':'yêu' ' ',❤ 'yêu' 'a' 'anh' 'ac': , : , :'anh
chị' 'ace', :'anh chị em','ad':'quản lý',
'ae':'anh em','ah' 'à' 'ak' 'à' 'amin': , : , :'quản
lý' 'androir' 'android' 'app', : , :'ứng dụng','auto ':'tự động',
'ây' 'vậy': ,'b nào':'bạn
nào' 'bằg' 'bằng' 'băng' 'bằng' 'băp' 'bắp' 'băt' 'bắt' 'battery' 'pin' ', : , : , : , : , : ,
bể' 'vỡ': ,
'been' 'bên' 'best' 'nhất' 'best': , : , :'tốt
nhất','bgqafy ':'ngày' 'bh', :'bao giờ','bh':'bây giờ','bhx':'bảo hành',
'bi' 'bị' 'big' 'lớn' 'bik' 'biết' 'bin' 'pin' 'bit' 'biết' 'bít' 'biết': , : , : , : , : , : ,
'bn' 'bạn': ,'bông tróc':'bong tróc', : 'k' 'không' 'ok' 'được', : ,
'bro':'anh em','bt':'bình thường','bt' 'biết' 'bth': , :'bình
thường' 'bthg', :'bình thường','bua' 'bữa' 'bùn' 'buồn': , : ,
'buonc' 'buồn' 'bx' 'hộp' 'bye': , : , :'tạm
biệt' 'c' 'chị' 'cac' 'các' 'cam', : , : , :'máy ảnh','card' 'thẻ' 'châu' 'khỏe': , : ,
'chiệu' 'triệu' 'chíp' 'chip' 'chội' 'trội' 'chs' 'chơi' 'chửa' 'chữa' 'c: , : , : , : , : ,
hug ':'chung' 'chup' 'chụp' 'chuq' 'chung', : , : ,
'clip':'đoạn phim','cmt':'bình
luận' 'co' 'có' 'cở' 'cỡ' 'cọc' 'cột' 'cpu', : , : , : , :'chíp xử lý','cty':'công ty',
'dè' 'rè' 'dể' 'dễ' 'delay' 'trễ' 'dêm' 'đêm' 'đén' 'đến': , : , : , : , : ,'deplay ':'chậm
' 'deu' 'đều' 'diem' 'điểm' 'dien' 'diện', : , : , : ,