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ì sự hiện diện của 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à tiêu cực hay tích cực.
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 xảy 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 trọn vòng của 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 bộ công cụ AI phía máy khách có thể sử dụng.
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ở 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 tập hợp 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 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 sẽ có tiếng nói cuối cùng về điểm xếp hạng sản phẩm.
- Giúp người dùng hiểu rõ rằng điểm xếp hạng và bài đánh giá là hệ thống tự động.
- 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 gây ra trải nghiệm khó chịu trong đó 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 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 rằng bạn cũng chạy 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 tính độc hại của 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 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.
- Tải mô hình không đồng bộ.
- 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 sự độc hại trên hành vi tấn công vào danh tính, nội dung 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 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.
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à 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 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 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. Các hoạt động tối ưu hoá trên ngăn xếp web giúp bạn làm được điều này, bao gồm cả 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".
- Cài đặt và nhập API suy luận LLM MediaPipe.
- 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.
- 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. - 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 độ.
- Đưa ra câu lệnh cho mô hình (xem ví dụ).
- Hãy chờ phản hồi của mô hình.
- Phân tích cú pháp điểm xếp hạng: Trích xuất điểm xếp hạng theo 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 kiến thức chuyên môn về AI/ML. 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 đối với 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ã từ tài liệu này, bạn sẽ thấy rằng suy luận có thể nhanh và có thể nhanh hơn so với các chuyến đi 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 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 hy vọng quá trình suy luận trình duyệt sẽ tiếp tục nhanh hơn nhờ các bản cập nhật WebGPU, WebAssembly và thư viện. Ví dụ: Transformers.js thêm Hỗ trợ GPU web trong phiên bản 3, giúp tăng tốc độ suy luận trên thiết bị.
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ể sử dụng được trong một số trường hợp.
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 dùng thử sớm để dùng thử.