Bài đánh giá tích cực và tiêu cực có thể cung cấp thông tin để người mua quyết định mua hàng.
Theo một 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 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 khách hàng và doanh nghiệp, vì việc xuất hiện trong 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ọ.
Dưới đây là một số cách bạn có thể cải thiện chất lượng bài đánh giá:
- Hãy kiểm tra từng bài đánh giá để xem có tính độc hại hay không trước khi gửi. Chúng tôi có thể khuyến khích người dùng xoá ngôn từ gây phản cảm cũng như các nhận xét không hữu ích khác để bài đánh giá của họ có thể giúp những người dùng khác đưa ra quyết định mua hàng sáng suốt hơn.
- Tiêu cực: Chiếc túi này thật tệ, và tôi ghét nó.
- Tiêu cực với phản hồi hữu ích: Khoá kéo rất cứng và chất liệu rẻ. 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ữ 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ề bài đánh giá mẫu kèm theo cảm xúc và điểm xếp hạng theo sao.](https://developer.chrome.com/static/docs/ai/images/leave-a-review.png?authuser=5&hl=vi)
Cuối cùng, người dùng phải là người đưa ra kết quả cuối cùng trên điểm xếp hạng sản phẩm.
Lớp học lập trình sau đây đưa ra các giải pháp trên thiết bị, 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ủ có các giải pháp (chẳng hạn như APIGemini 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 tôi sẽ tập trung vào AI web trên thiết bị. AI web trên thiết bị là khi các mô hình AI chạy trong trình duyệt, để cải thiện trải nghiệm cho người dùng web mà không cần trả về máy chủ.
Trong lớp học lập trình này, chúng tôi kết hợp nhiều kỹ thuật để cho bạn thấy bộ công cụ dành cho AI trên thiết bị.
Chúng tôi sử dụng các thư viện và mô hình sau:
- TensforFlow.js để phân tích tính độc hại. TensorFlow.js là một thư viện học máy nguồn mở cho cả việc dự đoán và huấn luyện trên web.
- transformers.js để phân tích quan điểm. 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 dòng mô hình mở, gọn 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 tôi sử dụng Gemma với API dự đoá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 tối ưu và sự an toàn cho người dùng:
- 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 là người đưa ra từ cuối cùng về điểm xếp hạng sản phẩm.
- Thông báo rõ ràng cho người dùng rằng việc xếp hạng và đánh giá là tự động.
- Cho phép người dùng đăng bài đánh giá được phân loại là độc hại, nhưng hãy chạy quy trình kiểm tra thứ hai trên máy chủ. Điều này giúp tránh trải nghiệm khó chịu khi bài đánh giá không độc hại bị phân loại nhầm là độc hại (dương tính giả). Điều này cũng áp dụng cho các trường hợp mà người dùng độc hại tìm cách bỏ qua bước kiểm tra phía máy khách.
- Việc kiểm tra độc tính phía máy khách rất hữu ích, nhưng có thể 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 tính độc hại bằng TensorFlow.js
Nhanh chóng bắt đầu phân tích tính độc hại trong bài đánh giá của người dùng bằng TensorFlow.js.
- Cài đặt và import thư viện TensorFlow.js và mô hình độc hại.
- Đặt độ tin cậy tối thiểu cho cụm từ gợi ý. Giá trị mặc định là 0,85 và trong ví dụ, chúng tôi đã đặt là 0,9.
- Tải mô hình không đồng bộ.
- Phân loại bài đánh giá một 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 sự độc hại theo mức độ tấn công danh tính, xúc phạm, nội dung 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
Cài đặt và nhập thư viện Transformers.js.
Thiết lập nhiệm vụ phân tích cảm xúc bằng một quy trình chuyên biệt. Trong lần đầu sử dụng quy trình, mô hình sẽ được tải xuống và lưu vào bộ nhớ đệm. Từ đó về sau, việc phân tích quan điểm sẽ nhanh chóng hơn nhiều.
Phân loại bài đánh giá một 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à hữu 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 xếp hạng theo sao với 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.
Chức năng mới này đặc biệt có tính biến đổi khi xem xét nhu cầu về bộ nhớ và tính toán của các LLM lớn hơn hàng trăm lần so với các mô hình truyền thống trên thiết bị. Việc tối ưu hoá ngăn xếp trên thiết bị sẽ mang lại khả năng này, bao gồm cả việc vận hành mới, lượng tử hoá, lưu vào bộ nhớ đệm và chia sẻ trọng lượng. Nguồn: "Các mô hình ngôn ngữ lớn trên thiết bị với MediaPipe và TensorFlow Lite".
- Cài đặt và nhập API dự đoán LLM của MediaPipe.
- Tải mô hình xuống. Ở đây, chúng tôi sử dụng Gemma 2B, được tải xuống từ Kaggle. Gemma 2B là mô hình nhỏ nhất trong số các mô hình trọng lượng mở của Google.
- Trỏ mã đến đúng tệp mô hình, 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 tài sản. - 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, thời lượng phản hồi ưu tiên và mức độ sáng tạo mong muốn đối với nhiệt độ.
- Đưa ra lời nhắc cho mô hình (xem ví dụ).
- Chờ phản hồi của mô hình.
- 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 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);
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 kiến thức chuyên môn về trí tuệ nhân tạo/học máy. Việc thiết kế lời nhắc cần phải lặp lại, 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 trên thiết bị khá chính xác. Nếu chạy các đoạn trích trong tài liệu này, bạn sẽ thấy rằng cả bản phân tích sự độc hại và cảm tính đều đưa ra kết quả 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 theo mô hình Gemini cho một số bài đánh giá tham khảo được kiểm tra. Để xác thực tính 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 mất nhiều công sức. Vì Gemma 2B là một LLM nhỏ, nên Gemma 2B cần có lời nhắc chi tiết để tạo ra kết quả thoả mãn, đáng chú ý là chi tiết hơn so với những yêu cầu đối với API Gemini.
Khả năng suy luận có thể 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 hoạt động dự đoán có thể nhanh và có thể nhanh hơn so với 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ể. Cần đo điểm chuẩn kỹ trên các thiết bị mục tiêu. Chúng tôi hy vọng dự đoán trên thiết bị sẽ ngày càng nhanh hơn nhờ các bản cập nhật GPU Web, WebAssembly và thư viện. Ví dụ: Transformers.js thêm Hỗ trợ GPU trên web trong phiên bản 3, giúp tăng tốc độ dự đoán trên thiết bị lên nhiều lần.
Kích thước của tệp tải xuống có thể rất lớn. Khả năng suy luận trong trình duyệt rất nhanh, 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, thông thường, bạn cần có cả thư viện và mô hình để thêm vào 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á kích thước trang web 2, 2 mb trung bình, vốn đã lớn hơn nhiều so với mức đề xuất để mang lại hiệu suất tốt nhất từ trước đến nay. AI tạo sinh trên thiết bị có thể hoạt động trong các tình huống 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 xem trước sớm để kiểm thử.