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 tập hợp các 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 bạn sử dụng cũng như 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 ứng dụng web và JavaScript.

Bạn có thể xem công việc này trong thực tế 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à các tuỳ chọn cấu hình của tác vụ này, xem Tổng quan.

Ví dụ về mã

Mã ví dụ cho Trình phân loại văn bản cung cấp cách triển khai hoàn chỉnh 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 bạn. Bạn có thể xem, chạy và chỉnh sửa mã ví dụ về 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à lập trình các dự án cụ thể để sử dụng Text Classifier (Phân loại văn bản). Để biết thông tin chung về thiết lập môi trường phát triển để sử dụng MediaPipe Tasks, bao gồm 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ã Phân loại văn bản có sẵn thông qua @mediapipe/tasks-text . Bạn có thể tìm và tải các thư viện này xuống từ các liên kết được cung cấp trong nền tảng Hướng dẫn thiết lập.

Bạn có thể cài đặt các gói cần thiết bằng mã sau để thử nghiệm cục bộ bằng lệnh sau:

npm install @mediapipe/tasks-text

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

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

Mẫu

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

Chọn và tải mô hình xuống rồi lưu trữ mô hình đó trong thư mục dự án:

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

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

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

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

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 các dự đoán. Bạn có thể dùng createFromModelPath() có đường dẫn tương đối hoặc tuyệt đối đến tệp mô hình đã huấn luyện. Đoạn mã ví dụ bên dưới minh hoạ cách sử dụng 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 Tuỳ 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 cho Web và JavaScript ứng dụng:

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

Chuẩn bị dữ liệu

Trình phân loại văn bản hoạt động với dữ liệu (String) của văn bản. Tác vụ sẽ xử lý xử lý trước dữ liệu đầu vào, bao gồm cả mã hoá và xử lý trước tensor.

Mọi quy trình xử lý trước đều được xử lý trong hàm classify(). Không cần để xử lý trước thêm văn bản đầu vào.

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 suy luận. Đối với văn bản thì tức 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 tác vụ mô hình.

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

Xử lý và hiện kết quả

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

Sau đây là ví dụ về dữ liệu đầu ra của tác 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 nhận được bằng cách chạy trình phân loại BERT trên văn bản đầu vào: "an imperfect but overall entertaining mystery".