Hướng dẫn phân loại văn bản cho web

Nhiệm vụ của Trình phân loại văn bản MediaPipe cho phép bạn phân loại văn bản thành một nhóm danh mục xác định, chẳng hạn như cảm xúc tích cực hoặc tiêu cực. Các danh mục được xác định là mô hình mà bạn sử dụng và cách mô hình đó được huấn luyện. Những hướng dẫn này chỉ cho bạn cách sử dụng Trình phân loại văn bản cho các ứng dụng web và JavaScript.

Bạn có thể xem cách hoạt động của công việc này bằng cách xem bản minh hoạ. Để biết thêm thông tin về các tính năng, mô hình và lựa chọn cấu hình của tác vụ này, hãy xem phần Tổng quan.

Ví dụ về mã

Mã mẫu cho Trình phân loại văn bản cung cấp cách triển khai đầy đủ tác vụ này trong JavaScript để bạn tham khảo. Mã này giúp bạn kiểm thử tác vụ này và bắt đầu xây dựng ứng dụng phân loại văn bản của riêng mình. Bạn có thể xem, chạy và chỉnh sửa mã ví dụ của Trình phân loại văn bản chỉ bằng trình duyệt web.

Thiết lập

Phần này mô tả các bước chính để thiết lập môi trường phát triển và các dự án mã dành riêng cho việc sử dụng Công cụ phân loại văn bản. Để biết thông tin chung về cách thiết lập môi trường phát triển nhằm sử dụng MediaPipe Tasks, bao gồm cả các yêu cầu về phiên bản nền tảng, hãy xem Hướng dẫn thiết lập dành cho web.

Gói JavaScript

Mã của Trình phân loại văn bản có trong gói @mediapipe/tasks-text. Bạn có thể tìm và tải các thư viện này xuống qua các đường liên kết trong Hướng dẫn thiết lập của nền tảng.

Bạn có thể cài đặt các gói bắt buộc có mã sau đây để thử nghiệm cục bộ bằng cách dùng lệnh sau:

npm install @mediapipe/tasks-text

Nếu muốn triển khai cho một máy chủ, bạn có thể sử dụng dịch vụ của mạng phân phối nội dung (CDN), chẳng hạn như jsDelivr để thêm mã trực tiếp vào trang HTML của mình, như sau:

<head>
  <script src="https://cdn.jsdelivr.net/npm/@mediapipe/tasks-text@0.1/text-bundle.js"
    crossorigin="anonymous"></script>
</head>

Mẫu

Tác vụ Trình phân loại văn bản MediaPipe cần có một mô hình đã qua huấn luyện tương thích với tác vụ này. Để biết thêm thông tin về các mô hình được huấn luyện hiện có cho Công cụ phân loại văn bản, hãy xem phần Mô hình tổng quan về tác vụ.

Chọn và tải một mô hình xuống, sau đó lưu trữ trong thư mục dự án của bạn:

<dev-project-root>/assets/bert_text_classifier.tflite

Chỉ định đường dẫn của mô hình bằng tham số modelAssetPath của đối tượng baseOptions như sau:

baseOptions: {
        modelAssetPath: `/assets/bert_text_classifier.tflite`
      }

Tạo việc cần làm

Sử dụng một trong các hàm TextClassifier.createFrom...() của Trình phân loại văn bản để chuẩn bị tác vụ chạy thông tin suy luận. Bạn có thể sử dụng hàm createFromModelPath() với đường dẫn tương đối hoặc tuyệt đối đến tệp mô hình đã huấn luyện. Ví dụ về mã bên dưới minh hoạ cách sử dụng hàm TextClassifier.createFromOptions(). Để biết thêm thông tin về các lựa chọn cấu hình hiện có, hãy xem phần Lựa chọn cấu hình.

Mã sau đây minh hoạ cách tạo và định cấu hình tác vụ này:

async function createClassifier() {
  const textFiles = await FilesetResolver.forTextTasks("https://cdn.jsdelivr.net/npm/@mediapipe/tasks-text@latest/wasm/");
  textClassifier = await TextClassifier.createFromOptions(
    textFiles,
    {
      baseOptions: {
        modelAssetPath: `https://storage.googleapis.com/mediapipe-tasks/text_classifier/bert_text_classifier.tflite`
      },
      maxResults: 5
    }
  );
}
createClassifier();

Các lựa chọn về cấu hình

Tác vụ này có các lựa chọn cấu hình sau đây dành cho ứng dụng Web và JavaScript:

Tên lựa chọn Nội dung mô tả Khoảng giá trị Giá trị mặc định
displayNamesLocale Đặt ngôn ngữ của nhãn để sử dụng cho tên hiển thị được cung cấp trong siêu dữ liệu của mô hình của tác vụ, nếu có. Giá trị mặc định là en đối với tiếng Anh. Bạn có thể thêm nhãn đã bản địa hoá vào siêu dữ liệu của mô hình tuỳ chỉnh bằng cách sử dụng API Trình viết siêu dữ liệu TensorFlow Lite Mã ngôn ngữ vi
maxResults Đặt số lượng kết quả phân loại được tính điểm cao nhất (không bắt buộc) để trả về. Nếu < 0, hàm sẽ trả về tất cả kết quả hiện có. Số dương bất kỳ -1
scoreThreshold Đặt ngưỡng điểm dự đoán để ghi đè ngưỡng được cung cấp trong siêu dữ liệu mô hình (nếu có). Những kết quả bên dưới giá trị này sẽ bị từ chối. Số thực bất kỳ Không đặt
categoryAllowlist Đặt danh sách các tên danh mục được phép (không bắt buộc). Nếu không để trống, kết quả phân loại có tên danh mục không có tên trong tập hợp này sẽ bị lọc ra. Tên danh mục trùng lặp hoặc không xác định sẽ bị bỏ qua. Tuỳ chọn này loại trừ lẫn nhau với categoryDenylist và việc sử dụng cả hai sẽ dẫn đến lỗi. Chuỗi bất kỳ Không đặt
categoryDenylist Đặt danh sách các tên danh mục không được phép (không bắt buộc). Nếu không để trống, kết quả phân loại có tên danh mục nằm trong tập hợp này sẽ bị lọc ra. Tên danh mục trùng lặp hoặc không xác định sẽ bị bỏ qua. Tuỳ chọn này loại trừ lẫn nhau với categoryAllowlist và việc sử dụng cả hai sẽ gây ra lỗi. Chuỗi bất kỳ Không đặt

Chuẩn bị dữ liệu

Tính năng Phân loại văn bản hoạt động với dữ liệu văn bản (String). Tác vụ này sẽ xử lý tiền xử lý dữ liệu đầu vào, bao gồm cả việc mã hoá và tiền xử lý tensor.

Mọi quá trình xử lý trước đều được xử lý trong hàm classify(). Bạn không cần phải xử lý thêm văn bản nhập trước.

const inputText = "The input text to be classified.";

Chạy tác vụ

Trình phân loại văn bản sử dụng hàm classify() để kích hoạt thông tin dự đoán. Để phân loại văn bản, phương thức này nghĩa là trả về các danh mục có thể có cho văn bản đầu vào.

Mã sau đây minh hoạ cách thực thi quá trình xử lý bằng mô hình tác vụ.

// Wait to run the function until inner text is set
const result: TextClassifierResult = await textClassifier.classify(
  inputText
);

Xử lý và hiển thị kết quả

Trình phân loại văn bản sẽ xuất ra một TextClassifierResult chứa danh sách các danh mục có thể có đối với văn bản đầu vào. Các danh mục được xác định theo mô hình bạn sử dụng. Vì vậy, nếu bạn muốn có các danh mục khác nhau, hãy chọn một mô hình khác hoặc đào tạo lại mô hình hiện có.

Sau đây là ví dụ về dữ liệu đầu ra của nhiệm vụ này:

TextClassificationResult:
  Classification #0 (single classification head):
    ClassificationEntry #0:
      Category #0:
        category name: "positive"
        score: 0.8904
        index: 0
      Category #1:
        category name: "negative"
        score: 0.1096
        index: 1

Kết quả này đã thu được bằng cách chạy trình phân loại BERT trên văn bản nhập: "an imperfect but overall entertaining mystery".