Sử dụng AI đánh giá sản phẩm trên Lazada(Tiki) dựa trên comment

Tram Ho

Ý tưởng

Hiện nay việc mua bán hàng online đang là xu hướng tất yếu của cuộc sống. Nhưng khi chúng ta mua hàng trên Lazada hay Tiki thì liệu chúng ta có an tâm về sản phẩm đó có đúng chất lượng như họ đã quảng cáo không ? Chúng ta không thể đọc hết tất cả bình luận để đánh giá sản phẩm được. Từ ý tưởng đó , mình tạo ra 1 hệ thống sử dụng AI ( trí tuệ nhân tạo ) để đánh giá sản phẩm trên Lazada , Tiki dựa trên bình luận.Từ đó sẽ đưa ra gợi ý cho người dùng có nên mua sản phẩm đó hay không ? , thống kê các bình luận tiêu cực,….

👍Trong hệ thống này sẽ sử dụng các kĩ thuật sau đây :

  • Kĩ thuật craw comment trên Lazada (Tiki ) sử dụng BeautifulSoup, Selenium
  • Kĩ thuật xử lí dữ liệu
  • Model BERT
  • Train model
  • Predict

Kĩ thuật craw comment trên Lazada( Tiki) sử dụng BeautifulSoup, Selenium:

1. Use BeautifulSoup :

Thư viện BeautifulSoup là một thư viện của Python cho phép chúng ta lấy dữ liệu từ HTML đơn giản và hiệu quả. Mình sẽ dùng Python 3 và BeautifulSoup 4 để thực hiện việc crawling đơn giản. Trang web được sử dụng là Lazada, việc craw dữ liệu đòi hỏi chúng ta phải biết cấu trúc html của trang web đó.

Tuy nhiên việc sử dụng BeautifulSoup chỉ craw được các trang web tĩnh, không thao tác được trên trang web đó. Ví dụ: ta chỉ craw được các comment trên url của trang đó thôi mà không thể next sang bình luận của trang khác ( hay comment của Youtobe chỉ load khi cuộn xuống nên không áp dụng được BeautifulSoup). Để khắc phục hạn chế đó ta sẽ sử dụng Selenium.

2. Use Selenium:

Thư viện selenium là 1 thư viện của python cho phép ta mở 1 trình duyệt (chromedriver) và thao tác trên đó luôn. Ở đây mình sẽ craw comment trên Lazada và Tiki.

Kĩ thuật xử lí dữ liệu

1. Thu thập dữ liệu comment trên Lazada hoặc Tiki

Chúng ta sẽ sử dụng các kĩ thuật craw comment như đã trình bày ở trên để thu thập data. Sau đó gán nhãn cho chúng, ví dụ ở đây chỉ có 2 trạng thái comment : tốt-tích cực- trung gian :0, xấu- không tốt- tiêu cực : 1 ( nếu có nhiều hơn 2 trạng thái thì gán 0,1,2 ,3 ,..).
Ở đây mình có chuẩn bị 1 file data gồm 132 comment đã gán nhãn . data.csv

2. Chuẩn hóa data

Chuẩn hóa data ở đây rất đơn giản : xóa đi các dấu câu như ( . ,? * “, …), xóa đi khoảng trống 2 đầu của comment. Sử dụng regex(Regular Expression)

2. Word tokenizer

Work tokenizer chuyển 1 câu thành các word có nghĩa ( bao gồm cả từ đơn và từ ghép ). Ví dụ

Model BERT

1. Kiến trúc model BERT


BERT là model hoạt động dựa trên cơ chế attention (chú trọng các đặc trưng ) nó sẽ khắc phục hoàn toàn các nhược điểm của các model như RNN, LSTM,.. ( bị giới hạn bộ nhớ ).
Các bạn có thể đọc tài liệu dưới đây để hiểu rõ về cấu trúc, cách thức hoạt động của model:

  1. https://phamdinhkhanh.github.io/2020/05/23/BERTModel.html
  2. https://towardsdatascience.com/bert-explained-state-of-the-art-language-model-for-nlp-f8b21a9b6270
  3. https://papers.nips.cc/paper/2017/file/3f5ee243547dee91fbd053c1c4a845aa-Paper.pdf

Ở series sau mình sẽ ra bài hiểu sâu về kiến trúc model RNN, LSTM, Transformers , BERT,.. so sánh ưu điểm, nhược điểm của mỗi model với nhau.

2. Load data

Import các thư viện cần thiết :

Load data

3. Load pretrain model BERT

4. Fine-tuning model và save model

Fine-tuning có nghĩa là huấn luyện tiếp trọng số (weights, bias ) của model. Kết quả thu được lưu vào file save_model.pkl

Predict

1 . Nhập đường dẫn url đến của sản phẩm cần đánh giá

Thay đổi url tới sản phẩm cần đánh giá :

2. Tiền xử lí, word tokenizer

  • Chuẩn hóa data, tokenizer:

  • Processing data:

3. Đưa các comment vào model để predict

  • Đưa các comment sau khi được xử lí vào model:

  • Predict:

4. Kết quả


Qua kết quả trên ta thấy có 45 comments tốt về sản phẩm, 1 comment xấu. Nên chúng ta có thể mua nó👍

Kết luận

Toàn bộ code : https://github.com/trungtruc123/Review_Product_Lazada
Chúng ta có thể sử dụng các model khác như SVM, logistic Regression thay cho BERT. Nhưng độ chính xác của model SVC ~ 0.84, còn model BERT ~ 0.91 ( tại sao lại vậy ? đơn giản vì model BERT kiến trúc phức tạp hơn và sử dụng nhiều trick như attention ,…)

Thông qua project nhỏ này, chúng ta nắm rõ 1 số phương pháp kĩ thuật cơ bản trong xử lí ngôn ngữ tự nhiên, cũng như cách craw dữ liệu trên web, sử dụng model BERT,…. Bên cạnh đó chúng ta có thể áp dụng nhiều hơn 2 trạng thái comment như : bùn, vui, giận dữ, khó chịu , thỏa mãn, thất vọng ,… và viết thành 1 project hoàn chỉnh để làm đề tài tốt nghiệp, luận văn tốt nghiệp,..
Bài viết này còn sơ xài do mình hơi bận, nếu các bạn thấy hay để lại comment mình sẽ ra series 2 hướng dẫn viết hệ thống này một cách hoàn chỉnh.

Cảm ơn các bạn đã tới đây ! Hẹn các bạn trong series 2

Tài liệu tham khảo

  1. https://github.com/hoangducsn00/Da-poet
  2. https://huggingface.co/
  3. https://phamdinhkhanh.github.io/2020/05/23/BERTModel.html
  4. https://www.miai.vn/2020/05/04/nlp-series-1-thu-lam-he-thong-danh-gia-san-pham-lazada/
Chia sẻ bài viết ngay

Nguồn bài viết : Viblo