Khuyến khích các bài đánh giá sản phẩm hữu ích bằng AI trên web phía máy khách

Maud Nalpas
Maud Nalpas
Kenji Baheux
Kenji Baheux

Ngày xuất bản: 16 tháng 5 năm 2024

Bài đánh giá tích cực và tiêu cực có thể giúp người mua đưa ra quyết định mua hàng.

Theo nghiên cứu bên ngoài, 82% người mua sắm trực tuyến chủ động tìm kiếm bài đánh giá tiêu cực trước khi mua hàng. Những bài đánh giá tiêu cực này hữu ích cho cả khách hàng và doanh nghiệp, vì việc có các bài đánh giá tiêu cực có thể giúp giảm tỷ lệ trả lại hàng và giúp nhà sản xuất cải thiện sản phẩm của họ.

Sau đây là một số cách bạn có thể cải thiện chất lượng bài đánh giá:

  • Kiểm tra từng bài đánh giá để đảm bảo không có nội dung độc hại trước khi gửi. Chúng tôi có thể khuyến khích người dùng xoá ngôn từ xúc phạm cũng như các nhận xét không hữu ích khác để bài đánh giá của họ giúp người dùng khác đưa ra quyết định mua hàng sáng suốt hơn.
    • Tiêu cực: Túi này thật tệ và tôi ghét nó.
    • Tiêu cực kèm theo ý kiến phản hồi hữu ích Dây kéo rất cứng và chất liệu có vẻ rẻ tiền. Tôi đã trả lại chiếc túi này.
  • Tự động tạo điểm xếp hạng dựa trên ngôn ngữ được sử dụng trong bài đánh giá.
  • Xác định xem bài đánh giá đó là tích cực hay tiêu cực.
Ảnh chụp màn hình của bài đánh giá mẫu có cảm xúc và điểm xếp hạng theo sao.
Trong ví dụ này, bình luận của người đánh giá có cảm xúc tích cực và điểm xếp hạng 5 sao.

Cuối cùng, người dùng phải có tiếng nói quyết định về điểm xếp hạng sản phẩm.

Lớp học lập trình sau đây cung cấp các giải pháp phía máy khách, trên thiết bị và trong trình duyệt. Không cần kiến thức phát triển AI, máy chủ hoặc khoá API.

Điều kiện tiên quyết

Mặc dù AI phía máy chủ có các giải pháp (chẳng hạn như API Gemini hoặc API OpenAI) cung cấp các giải pháp mạnh mẽ cho nhiều ứng dụng, nhưng trong hướng dẫn này, chúng tôi tập trung vào AI web phía máy khách. Suy luận AI phía máy khách diễn ra trong trình duyệt để cải thiện trải nghiệm cho người dùng web bằng cách loại bỏ các lượt truy cập qua lại máy chủ.

Trong lớp học lập trình này, chúng tôi sử dụng kết hợp nhiều kỹ thuật để cho bạn thấy những gì có trong hộp công cụ của bạn cho AI phía máy khách.

Chúng ta sử dụng các thư viện và mô hình sau:

  • TensforFlow.js để phân tích nội dung độc hại. TensorFlow.js là một thư viện máy học nguồn mở dành cho cả suy luận và huấn luyện trên web.
  • transformers.js để phân tích cảm xúc. Transformers.js là một thư viện AI trên web của Hugging Face.
  • Gemma 2B cho điểm xếp hạng theo sao. Gemma là một bộ mô hình mở, nhẹ được xây dựng từ nghiên cứu và công nghệ mà Google đã sử dụng để tạo ra các mô hình Gemini. Để chạy Gemma trong trình duyệt, chúng ta sử dụng Gemma với API suy luận LLM thử nghiệm của MediaPipe.

Những điều cần cân nhắc về trải nghiệm người dùng và sự an toàn

Có một số điều cần cân nhắc để đảm bảo trải nghiệm người dùng và sự an toàn ở mức tối ưu:

  • Cho phép người dùng chỉnh sửa điểm xếp hạng. Cuối cùng, người dùng phải có tiếng nói cuối cùng về điểm xếp hạng sản phẩm.
  • Cho người dùng biết rõ rằng điểm xếp hạng và bài đánh giá là do hệ thống tự động tạo.
  • Cho phép người dùng đăng một bài đánh giá được phân loại là độc hại, nhưng hãy chạy một lần kiểm tra thứ hai trên máy chủ. Điều này giúp tránh tình trạng người dùng cảm thấy khó chịu khi một bài đánh giá không độc hại bị phân loại nhầm là độc hại (lỗi dương tính giả). Điều này cũng áp dụng cho các trường hợp người dùng độc hại tìm cách bỏ qua quy trình kiểm tra phía máy khách.
  • Việc kiểm tra nội dung độc hại phía máy khách là hữu ích nhưng có thể bị bỏ qua. Hãy đảm bảo bạn cũng chạy quy trình kiểm tra phía máy chủ.

Phân tích nội dung độc hại bằng TensorFlow.js

Bạn có thể nhanh chóng bắt đầu phân tích mức độ độc hại của bài đánh giá của người dùng bằng TensorFlow.js.

  1. Cài đặtimport thư viện TensorFlow.js và mô hình độc hại.
  2. Đặt độ tin cậy dự đoán tối thiểu. Giá trị mặc định là 0,85 và trong ví dụ này, chúng ta đã đặt giá trị này thành 0,9.
  3. Tải mô hình không đồng bộ.
  4. Phân loại bài đánh giá theo cách không đồng bộ. Mã của chúng tôi xác định các dự đoán vượt quá ngưỡng 0,9 cho bất kỳ danh mục nào.

Mô hình này có thể phân loại nội dung độc hại theo các loại như tấn công danh tính, lăng mạ, tục tĩu, v.v.

Ví dụ:

import * as toxicity from '@tensorflow-models/toxicity';

// Minimum prediction confidence allowed
const TOXICITY_COMMENT_THRESHOLD = 0.9;

const toxicityModel = await toxicity.load(TOXICITY_COMMENT_THRESHOLD);
const toxicityPredictions = await toxicityModel.classify([review]);
// `predictions` is an array with the raw toxicity probabilities
const isToxic = toxicityPredictions.some(
    (prediction) => prediction.results[0].match
);

Xác định cảm xúc bằng Transformers.js

  1. Cài đặt và nhập thư viện Transformers.js.

  2. Thiết lập tác vụ phân tích cảm xúc bằng một quy trình chuyên dụng. Khi một quy trình được sử dụng lần đầu tiên, mô hình sẽ được tải xuống và lưu vào bộ nhớ đệm. Từ đó trở đi, quá trình phân tích cảm xúc sẽ nhanh hơn nhiều.

  3. Phân loại bài đánh giá theo cách không đồng bộ. Sử dụng ngưỡng tuỳ chỉnh để đặt mức độ tin cậy mà bạn cho là có thể sử dụng cho ứng dụng của mình.

Ví dụ:

import { pipeline } from '@xenova/transformers';

const SENTIMENT_THRESHOLD = 0.9;
// Create a pipeline (don't block rendering on this function)
const transformersjsClassifierSentiment = await pipeline(
  'sentiment-analysis'
);

// When the user finishes typing
const sentimentResult = await transformersjsClassifierSentiment(review);
const { label, score } = sentimentResult[0];
if (score > SENTIMENT_THRESHOLD) {
  // The sentiment is `label`
} else {
  // Classification is not conclusive
}

Đề xuất điểm xếp hạng theo sao bằng Gemma và MediaPipe

Với API suy luận LLM, bạn có thể chạy hoàn toàn các mô hình ngôn ngữ lớn (LLM) trong trình duyệt.

Khả năng mới này đặc biệt mang tính biến đổi khi xem xét nhu cầu về bộ nhớ và tính toán của LLM, lớn hơn hàng trăm lần so với các mô hình phía máy khách. Bạn có thể thực hiện việc này nhờ các tính năng tối ưu hoá trên ngăn xếp web, bao gồm các thao tác mới, lượng tử hoá, lưu vào bộ nhớ đệm và chia sẻ trọng số. Nguồn: "Mô hình ngôn ngữ lớn trên thiết bị bằng MediaPipe và TensorFlow Lite".

  1. Cài đặt và nhập API suy luận LLM MediaPipe.
  2. Tải mô hình xuống. Ở đây, chúng ta sử dụng Gemma 2B, được tải xuống từ Kaggle. Gemma 2B là mô hình có trọng lượng mở nhỏ nhất của Google.
  3. Chỉ mã đến các tệp mô hình phù hợp bằng FilesetResolver. Điều này rất quan trọng vì các mô hình AI tạo sinh có thể có cấu trúc thư mục cụ thể cho các thành phần của chúng.
  4. Tải và định cấu hình mô hình bằng giao diện LLM của MediaPipe. Chuẩn bị mô hình để sử dụng: chỉ định vị trí mô hình, độ dài câu trả lời ưu tiên và mức độ sáng tạo ưu tiên bằng nhiệt độ.
  5. Đưa ra lời nhắc cho mô hình (xem ví dụ).
  6. Chờ phản hồi của mô hình.
  7. Phân tích cú pháp để biết điểm xếp hạng: Trích xuất điểm xếp hạng theo số sao từ phản hồi của mô hình.
import { FilesetResolver, LlmInference } from '@mediapipe/tasks-genai';

const mediaPipeGenAi = await FilesetResolver.forGenAiTasks();
const llmInference = await LlmInference.createFromOptions(mediaPipeGenAi, {
    baseOptions: {
        modelAssetPath: '/gemma-2b-it-gpu-int4.bin',
    },
    maxTokens: 1000,
    topK: 40,
    temperature: 0.5,
    randomSeed: 101,
});

const prompt = 
const output = await llmInference.generateResponse(prompt);

const int = /\d/;
const ratingAsString = output.match(int)[0];
rating = parseInt(ratingAsString);

Câu lệnh mẫu

const prompt = `Analyze a product review, and then based on your analysis give me the
corresponding rating (integer). The rating should be an integer between 1 and 5.
1 is the worst rating, and 5 is the best rating. A strongly dissatisfied review
that only mentions issues should have a rating of 1 (worst). A strongly
satisfied review that only mentions positives and upsides should have a rating
of 5 (best). Be opinionated. Use the full range of possible ratings (1 to 5). \n\n
  \n\n
  Here are some examples of reviews and their corresponding analyses and ratings:
  \n\n
  Review: 'Stylish and functional. Not sure how it'll handle rugged outdoor use,
  but it's perfect for urban exploring.'
  Analysis: The reviewer appreciates the product's style and basic
  functionality. They express some uncertainty about its ruggedness but overall
  find it suitable for their intended use, resulting in a positive, but not
  top-tier rating.
  Rating (integer): 4
  \n\n
  Review: 'It's a solid backpack at a decent price. Does the job, but nothing
  particularly amazing about it.'
  Analysis: This reflects an average opinion. The backpack is functional and
  fulfills its essential purpose. However, the reviewer finds it unremarkable
  and lacking any standout features deserving of higher praise.
  Rating (integer): 3
  \n\n
  Review: 'The waist belt broke on my first trip! Customer service was
  unresponsive too. Would not recommend.'
  Analysis: A serious product defect and poor customer service experience
  naturally warrants the lowest possible rating. The reviewer is extremely
  unsatisfied with both the product and the company.
  Rating (integer): 1
  \n\n
  Review: 'Love how many pockets and compartments it has. Keeps everything
  organized on long trips. Durable too!'
  Analysis: The enthusiastic review highlights specific features the user loves
  (organization and durability), indicating great satisfaction with the product.
  This justifies the highest rating.
  Rating (integer): 5
  \n\n
  Review: 'The straps are a bit flimsy, and they started digging into my
  shoulders under heavy loads.'
  Analysis: While not a totally negative review, a significant comfort issue
  leads the reviewer to rate the product poorly. The straps are a key component
  of a backpack, and their failure to perform well under load is a major flaw.
  Rating (integer): 1
  \n\n
  Now, here is the review you need to assess:
  \n
  Review: "${review}" \n`;

Cướp lại bóng

Không cần có chuyên môn về AI/học máy. Bạn cần lặp lại để thiết kế lời nhắc, nhưng phần còn lại của mã là quy trình phát triển web tiêu chuẩn.

Các mô hình phía máy khách khá chính xác. Nếu chạy các đoạn mã trong tài liệu này, bạn sẽ thấy cả kết quả phân tích độc tính và cảm xúc đều chính xác. Điểm xếp hạng của Gemma, trong hầu hết các trường hợp, khớp với điểm xếp hạng của mô hình Gemini cho một số bài đánh giá tham khảo đã kiểm thử. Để xác thực độ chính xác đó, bạn cần kiểm thử thêm.

Tuy nhiên, việc thiết kế câu lệnh cho Gemma 2B sẽ mất nhiều công sức. Vì Gemma 2B là một LLM nhỏ, nên cần có câu lệnh chi tiết để tạo ra kết quả thoả đáng, đáng chú ý là chi tiết hơn so với yêu cầu của API Gemini.

Quá trình suy luận có thể diễn ra nhanh như chớp. Nếu chạy các đoạn mã trong tài liệu này, bạn sẽ thấy rằng quá trình suy luận có thể diễn ra nhanh chóng, có thể nhanh hơn cả quá trình đi và về của máy chủ trên một số thiết bị. Tuy nhiên, tốc độ suy luận có thể khác nhau rất nhiều. Cần đo điểm chuẩn kỹ lưỡng trên các thiết bị mục tiêu. Chúng tôi dự kiến tính năng suy luận của trình duyệt sẽ ngày càng nhanh hơn nhờ các bản cập nhật WebGPU, WebAssembly và thư viện. Ví dụ: Transformers.js thêm tính năng hỗ trợ GPU web trong phiên bản 3, có thể tăng tốc độ suy luận trên thiết bị nhiều lần.

Kích thước tệp tải xuống có thể rất lớn. Quá trình suy luận trong trình duyệt diễn ra nhanh chóng, nhưng việc tải mô hình AI có thể là một thách thức. Để thực hiện AI trong trình duyệt, bạn thường cần cả thư viện và mô hình. Các thành phần này sẽ làm tăng kích thước tải xuống của ứng dụng web.

Mặc dù mô hình độc hại của Tensorflow (mô hình xử lý ngôn ngữ tự nhiên cổ điển) chỉ có vài kilobyte, nhưng các mô hình AI tạo sinh như mô hình phân tích cảm xúc mặc định của Transformers.js đạt đến 60 MB. Các mô hình ngôn ngữ lớn như Gemma có thể có dung lượng lên tới 1,3 GB. Kích thước này vượt quá trung bình 2, 2 MB cho trang web, vốn đã lớn hơn nhiều so với kích thước đề xuất để đạt được hiệu suất tốt nhất. AI tạo sinh phía máy khách có thể hoạt động hiệu quả trong một số trường hợp cụ thể.

Lĩnh vực AI tạo sinh trên web đang phát triển nhanh chóng! Các mô hình nhỏ hơn, được tối ưu hoá cho web sẽ dự kiến sẽ xuất hiện trong tương lai.

Các bước tiếp theo

Chrome đang thử nghiệm một cách khác để chạy AI tạo sinh trong trình duyệt. Bạn có thể đăng ký tham gia chương trình xem trước sớm để thử nghiệm tính năng này.