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

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. Các hướng dẫn này sẽ cho bạn biết cách sử dụng Trình phân loại văn bản bằng Python.

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ạ cho web. Để 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 Python để 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.

Nếu bạn đang triển khai Text Classifier (Trình phân loại văn bản) cho Rassberry Pi, hãy tham khảo ứng dụng ví dụ về Rspberry Pi.

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 để 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 cho Python.

Gói

Trình phân loại văn bản sử dụng gói pip mediapipe. Bạn có thể cài đặt các phần phụ thuộc này bằng các phần phụ thuộc sau:

$ python -m pip install mediapipe

Nhập

Nhập các lớp sau để truy cập vào các hàm tác vụ của Trình phân loại văn bản:

from mediapipe.tasks import python
from mediapipe.tasks.python import text

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 rồi lưu trữ trong thư mục cục bộ:

model_path = '/absolute/path/to/text_classifier.tflite'

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

base_options = BaseOptions(model_asset_path=model_path)

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

Tác vụ của Trình phân loại văn bản MediaPipe sử dụng hàm create_from_options để thiết lập tác vụ đó. Hàm create_from_options chấp nhận các giá trị cho các tuỳ chọn cấu hình để đặt các tuỳ chọn thuật toán phân loại. Bạn cũng có thể khởi tạo tác vụ bằng cách sử dụng hàm nhà máy create_from_model_path. Hàm create_from_model_path chấp nhận đường dẫn tương đối hoặc tuyệt đối đến tệp mô hình được huấn luyện. Để biết thêm thông tin về các lựa chọn cấu hình, 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.

base_options = python.BaseOptions(model_asset_path=model_path)
options = text.TextClassifierOptions(base_options=base_options)

with python.text.TextClassifier.create_from_options(options) as classifier:
  classification_result = classifier.classify(text)

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 cho ứng dụng Android:

Tên lựa chọn Nội dung mô tả Khoảng giá trị Giá trị mặc định
display_names_locale Đặ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
max_results Đặ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
score_threshold Đặ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
category_allowlist Đặ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 category_denylist và việc sử dụng cả hai sẽ dẫn đến lỗi. Chuỗi bất kỳ Không đặt
category_denylist Đặ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 category_allowlist 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 (str). Tác vụ này sẽ xử lý tiền xử lý đầu vào dữ liệu, 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.

input_text = '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ụ.

with python.text.TextClassifier.create_from_options(options) as classifier:
  classification_result = classifier.classify(text)

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 đối tượng 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 mà bạn sử dụng. Vì vậy, nếu bạn muốn có nhiều danh mục, 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".