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 (2.88 MB, 29 trang )
<span class="text_page_counter">Trang 2</span><div class="page_container" data-page="2">
<b>Chương I Giới thiệu tổng quan...3</b>
<b>1.1Giới thiệu về đề tài...4</b>
<b>1.2Mụ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</b>
<b>1.3Các nội dung dự kiến thực hiện...4</b>
<b>Chương II Cơ sở lý thuyết...4</b>
<b>2.1 Giới thiệu về thuật toán...4</b>
<b>2.2 Ưu nhược điểm của thuật toán...5</b>
<b>2.3 Ứng dụng trong thực tế của các thuật tốn...6</b>
<b>2.4 Hình ảnh, biểu tượng, đồ thị, bảng của các thuật toán...6</b>
<b>Chương III Dữ liệu huấn luyện...8</b>
<b>a)Mô tả dữ liệu...8</b>
<b>b) Định nghĩa nhãn dữ liệu...8</b>
<b>c)Định nghĩa chi tiết...8</b>
<b>d) Phân tích dữ liệu...10</b>
<b>Chương IV Lưu đồ thuật tốn để huấn luyện mơ hình...11</b>
<b>Chương V Code chương trình huấn luyện...13</b>
<b>Chương VI Phân tích đánh giá kết quả mơ hình đạt được...26</b>
<b>a) Model SVC...26</b>
<b>b) Model Multinamial NB...26</b>
<b>c) Model Logistic Regression...27</b>
<b>Chương VII : Kết luận...27</b>
<b>a)Những điểm đạt được...28</b>
<b>b) Những điểm hạn chế...28</b>
<b>c)Hướng phát triển...28</b>
</div><span class="text_page_counter">Trang 3</span><div class="page_container" data-page="3"><b>Hình II.-1: Kết quả của ví dụ về model Logistic Regression...8</b>
<b>Hình III.-2: Data của mơ hình được gán nhãn...10</b>
<b>Hình III.-3: Số điểm dữ liệu của mỗi nhãn...11</b>
<b>Hình IV.-4: Lưu đồ thuật tốn...12</b>
<b>Hình VI.-5: Kết quả của model SVC...26</b>
<b>Hình VI.-6: Kết quả của model MNB...27</b>
Hình VI -7: Kết quả của model Logistic Regression<b>....Error! Bookmark not defined.</b>
<b>Bảng II.-2: Ví dụ về Logistic Regression...7</b>
<b>Chương IGiới thiệu tổng quan</b>
<b>1.1Giới thiệu về đề tài</b>
Đề 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ọ.
<b>1.2Mụ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</b>
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.
<b>1.3 Các nội dung dự kiến thực hiện</b>
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ười dù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ợ doanh nghiệ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ượng sản phẩm dựa trên phản hồi của người dùng.
<b>Chương IICơ sở lý thuyết2.1 Giới thiệu về thuật toána) Support Vector Classifier (SVC)</b>
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ặc phi 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>b) Multinomial Naive Bayes (MNB)</b>
</div><span class="text_page_counter">Trang 5</span><div class="page_container" data-page="5">MNB 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.
<b>c) Logistic Regression</b>
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ộc vào một lớp cụ thể.
<b>2.2 Ưu nhược điểm của thuật toána) Support Vector Classifier (SVC)</b>
<b>Ưu điểm</b>
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 tố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ỏ.
<b>Nhược điểm</b>
Đò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>b) Multinomial Naive Bayes (MNB)Ưu điểm</b>
Huấn luyện và dự đố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.
<b>Nhược điểm</b>
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.
</div><span class="text_page_counter">Trang 6</span><div class="page_container" data-page="6">Yê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 độ lớn của chúng.
<b>2.3 Ứng dụng trong thực tế của các thuật toána) Ứng dụng của SVC</b>
Hệ thống đánh giá sản phẩm trực tuyến: SVC có thể được sử dụng để phân loại và đánh giá chất lượng sản phẩm dựa trên phản hồi của người dùng. Ví dụ: dự đoán xếp hạng sản phẩm (từ 1 đến 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>b) Ứng dụng của MNB</b>
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ăn bả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.
<b>c) Ứng dụng của Logistic Regression</b>
Dự đoán khách hàng chuyển đổi: Logistic Regression có thể được sử dụng để dự đốn xác suất khá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àng như 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ại cá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.
<b>2.4 Hình ảnh, biểu tượng, đồ thị, bảng của các thuật toána) Multinomial Naive Bayes</b>
</div><span class="text_page_counter">Trang 7</span><div class="page_container" data-page="7"><b>b) Logistic Regression </b>
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ời gian ô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>Bảng II.-2: Ví dụ về Logistic Regression</b>
Mặc dù có một chút <i>bất cơng</i> 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 tố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ày cũng khơng <i>linearly separable</i> (đ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 <i>linearly seperable</i> 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:
</div><span class="text_page_counter">Trang 8</span><div class="page_container" data-page="8"><b>Chương III Dữ liệu huấn luyệna) Mô tả dữ liệu</b>
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ới tính, q qn. 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àng ngà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>b) Định nghĩa nhãn dữ liệu</b>
Bài tố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
<b>c)Định nghĩa chi tiết</b>
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ụ:
</div><span class="text_page_counter">Trang 9</span><div class="page_container" data-page="9">Sả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 1660 ram 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ình luậ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ơng liên quan tới chất lượng sản phẩm.
• Thu thập các đánh giá, nhận xét, phản hồi của khách hàng từ website bán hàng trực tuyến Thế Giới Di Động và Điện Máy Xanh sao cho sau quá trình gán nhãn sẽ thu được bộ dữ liệu cân bằng.
• 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ãn khơ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.
</div><span class="text_page_counter">Trang 10</span><div class="page_container" data-page="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án nhã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án nhãn và chuẩn bị cho bước huấn luyện mơ hình tiếp theo.
<b>d) Phân tích dữ liệu</b>
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ụ:
<b>Hình III.-2: Data của mơ hình được gán nhãn</b>
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(trung tí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.
</div><span class="text_page_counter">Trang 11</span><div class="page_container" data-page="11">Tuy 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ều lỗ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
<b>Chương IVLưu đồ thuật toán để huấn luyện mơ hình</b>
</div><span class="text_page_counter">Trang 12</span><div class="page_container" data-page="12">Thu 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. Q 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. Q 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ộc tí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ực hiệ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ác nhã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ện bằ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ất lượng và độ chính xác của q trình gán nhãn. Điều này có thể bao gồm việc kiểm tra sự chính xá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ột loạ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ình gá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ãn hoạt động tốt trên dữ liệu mới.
</div><span class="text_page_counter">Trang 13</span><div class="page_container" data-page="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à đánh giá, 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ặc phân tích dữ liệu. Q 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ác tệ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.
<b>Chương V Code chương trình huấn luyện</b>
##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') data.head()
##Truy cập thơng tin từ kích thước của dữ liệu data.shape
##sử dụng thư viện seaborn để trực quan hóa dữ liệu và thực hiện việc chuẩn bị dữ liệu cho việc huấn luyện mơ hình. Nó hiển thị biểu đồ cột đếm số lượng mẫu trong mỗi nhãn, và tạo ra hai biến X_data và Y_data để sử dụng trong quá trình huấn luyện mơ hình.
import seaborn snsas
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
</div><span class="text_page_counter">Trang 14</span><div class="page_container" data-page="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'):
Stopwords là những từ xuất hiện rất nhiều trong các bài viết, các đoạn text nhưng lại khơng hề liên quan gì đến nội dung và ý nghĩa của bài viết, gây mơ hồ, làm quá trình máy học, phân loại giảm đi độ chính xác. file vietnamese-stopwords-dash.txt chứa một list những từ stopwords Tiếng Việt của tác giả Lê Văn Duyệt và chúng em có tinh chỉnh lại file cho phù hợp với đồ án lần này.
</div>