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
Alexandra Klepper
Alexandra Klepper

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

Bài đánh giá tích cực và tiêu cực đều có thể ảnh hưởng đến quyết định mua hàng của người mua.

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 các đánh giá tiêu cực trước khi mua hàng. Những bài đánh giá tiêu cực này rất hữu ích cho khách hàng và doanh nghiệp, vì sự xuất hiện của 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ừ phản cảm cũng như những nhận xét không hữu ích khác để bài đánh giá của họ giúp những người dùng khác đưa ra quyết định mua hàng sáng suốt nhất.
    • Tiêu cực: Chiếc túi này tệ và tôi ghét nó.
    • Phản hồi tiêu cực nhưng hữu ích Khoá 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 dùng trong bài đánh giá.
  • Xác định xem bài đánh giá đó là tiêu cực hay tích cực.
Ảnh chụp màn hình ví dụ về bài đánh giá 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à được xếp hạng 5 sao.

Cuối cùng, người dùng sẽ có quyền quyết định cuối cùng 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 có kiến thức về 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ủ với các giải pháp (chẳng hạn như Gemini API hoặc OpenAI API) 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 ta sẽ 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, nhằm cải thiện trải nghiệm cho người dùng web bằng cách loại bỏ các chuyến khứ hồi của máy chủ.

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

Chúng tôi 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 nguồn mở về công nghệ học máy để suy luận và huấn luyện trên web.
  • transformers.js để phân tích tình cảm. Transformers.js là một thư viện AI trên web của Hugging Face.
  • Gemma 2B để xếp hạng sao. Gemma là một nhóm các mô hình mở, gọn nhẹ được xây dựng dựa trên nghiên cứu và công nghệ mà Google đã dùng để tạo ra các mô hình Gemini. Để chạy Gemma trong trình duyệt, chúng tôi sử dụng Gemma với API suy luận LLM thử nghiệm của MediaPipe.

Những điểm 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ểm cần cân nhắc để đảm bảo trải nghiệm người dùng và độ an toàn 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 sẽ có quyền quyết định 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à tự động.
  • Cho phép người dùng đăng bài đánh giá được phân loại là nội dung độc hại, nhưng chạy quy trình kiểm tra thứ hai trên máy chủ. Điều này giúp ngăn chặn tình trạng đá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ả), gây khó chịu cho người dùng. Điều này cũng bao gồm 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 rất hữu ích, nhưng có thể bị bỏ qua. Đảm bảo bạn cũng chạy một 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 một bài đánh giá người dùng bằng TensorFlow.js.

  1. Cài đặtnhập thư viện TensorFlow.js và mô hình độc hại.
  2. Đặt độ tin cậy tối thiểu của dự đoán. 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 những dự đoán vượt quá ngưỡng 0,9 cho mọi danh mục.

Mô hình này có thể phân loại nội dung độc hại theo các danh mục như tấn công danh tính, xúc phạ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 pipeline 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. Kể từ đó, quá trình phân tích tình cảm sẽ diễn ra 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 LLM Inference API, bạn có thể chạy các mô hình ngôn ngữ lớn (LLM) hoàn toàn trong trình duyệt.

Khả năng mới này đặc biệt mang tính đột phá khi xét đến nhu cầu về bộ nhớ và điện toán của các mô hình ngôn ngữ lớn (LLM), lớn hơn gấp hàng trăm lần so với các mô hình phía máy khách. Các hoạt động tối ưu hoá trên ngăn xếp web giúp điều này trở nên khả thi, bao gồm các hoạt động 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 của MediaPipe.
  2. Tải mô hình xuống. Ở đây, chúng ta sẽ sử dụng Gemma 2B, được tải xuống từ Kaggle. Gemma 2B là mô hình có trọng số 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ó một 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 một câu lệnh 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 để tìm điểm xếp hạng: Trích xuất điểm xếp hạng theo sao từ câu trả lờ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);

Ví dụ về câu lệnh

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 chuyên môn về AI/học máy. Việc thiết kế câu lệnh cần có các lần lặp lại, nhưng phần còn lại của mã là quá trình phát triển web tiêu chuẩn.

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

Tuy nhiên, bạn cần phải nỗ lực để thiết kế câu lệnh cho Gemma 2B. Vì Gemma 2B là một LLM nhỏ, nên nó cần một câu lệnh chi tiết để tạo ra kết quả thoả mãn – cụ thể là chi tiết hơn so với những gì cần thiết với Gemini API.

Suy luận có thể diễn ra cực kỳ nhanh chóng. Nếu chạy các đoạn mã từ 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, thậm chí nhanh hơn các chuyến khứ hồi 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 đáng kể. Bạn cần tiến hành đo điểm chuẩn kỹ lưỡng trên các thiết bị mục tiêu. Chúng tôi hy vọng suy luận của trình duyệt sẽ tiếp tục nhanh hơn nhờ WebGPU, WebAssembly và các bản cập nhật thư viện. Ví dụ: Transformers.js bổ sung hỗ trợ GPU trên web trong phiên bản 3, có thể tăng tốc suy luận trên thiết bị gấp nhiều lần.

Kích thước tải xuống có thể rất lớn. Suy luận trong trình duyệt diễn ra nhanh chóng, nhưng việc tải các 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, điều này 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 Tensorflow (một 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 tình cảm 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 đến 1,3 GB. Điều này vượt quá kích thước trang web trung bình2, 2 MB, vốn đã lớn hơn nhiều so với kích thước được đề xuất để đạt hiệu suất tốt nhất. AI tạo sinh phía máy khách có thể hoạt động 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 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 dùng thử sớm để kiểm thử tính năng này.