Tích hợp thuật toán phân loại ngôn ngữ tự nhiên

API NLClassifier của Thư viện tác vụ sẽ phân loại văn bản đầu vào thành các và là một API linh hoạt cũng như có thể định cấu hình, có thể xử lý hầu hết văn bản các mô hình phân loại.

Các tính năng chính của NLClassifier API

  • Lấy một chuỗi đơn làm dữ liệu đầu vào, thực hiện phân loại bằng chuỗi và cho ra <label, score=""> làm kết quả phân loại.</label,>

  • Mã hoá Regex không bắt buộc có sẵn cho văn bản nhập.

  • Có thể định cấu hình để điều chỉnh nhiều mô hình phân loại.

Các mô hình NLClassifier được hỗ trợ

Các mô hình sau đây được đảm bảo tương thích với NLClassifier API.

Chạy dự đoán trong Java

Xem tài liệu tham khảo về Phân loại văn bản ứng dụng ví dụ về cách sử dụng NLClassifier trong ứng dụng Android.

Bước 1: Nhập phần phụ thuộc Gradle và các chế độ cài đặt khác

Sao chép tệp mô hình .tflite vào thư mục thành phần của mô-đun Android nơi mô hình sẽ chạy. Chỉ định rằng tệp không được nén và thêm thư viện TensorFlow Lite vào tệp build.gradle của mô-đun:

android {
    // Other settings

    // Specify tflite file should not be compressed for the app apk
    aaptOptions {
        noCompress "tflite"
    }

}

dependencies {
    // Other dependencies

    // Import the Task Vision Library dependency
    implementation 'org.tensorflow:tensorflow-lite-task-text:0.4.4'
    // Import the GPU delegate plugin Library for GPU inference
    implementation 'org.tensorflow:tensorflow-lite-gpu-delegate-plugin:0.4.4'
}

Bước 2: Chạy dự đoán bằng API

// Initialization, use NLClassifierOptions to configure input and output tensors
NLClassifierOptions options =
    NLClassifierOptions.builder()
        .setBaseOptions(BaseOptions.builder().useGpu().build())
        .setInputTensorName(INPUT_TENSOR_NAME)
        .setOutputScoreTensorName(OUTPUT_SCORE_TENSOR_NAME)
        .build();
NLClassifier classifier =
    NLClassifier.createFromFileAndOptions(context, modelFile, options);

// Run inference
List<Category> results = classifier.classify(input);

Xem nguồn mã để có thêm lựa chọn để định cấu hình NLClassifier.

Chạy dự đoán trong Swift

Bước 1: Nhập CocoaPods

Thêm nhóm TensorFlowLiteTaskText trong Podfile

target 'MySwiftAppWithTaskAPI' do
  use_frameworks!
  pod 'TensorFlowLiteTaskText', '~> 0.4.4'
end

Bước 2: Chạy dự đoán bằng API

// Initialization
var modelOptions:TFLNLClassifierOptions = TFLNLClassifierOptions()
modelOptions.inputTensorName = inputTensorName
modelOptions.outputScoreTensorName = outputScoreTensorName
let nlClassifier = TFLNLClassifier.nlClassifier(
      modelPath: modelPath,
      options: modelOptions)

// Run inference
let categories = nlClassifier.classify(text: input)

Xem nguồn mã để biết thêm chi tiết.

Chạy dự đoán trong C++

// Initialization
NLClassifierOptions options;
options.mutable_base_options()->mutable_model_file()->set_file_name(model_path);
std::unique_ptr<NLClassifier> classifier = NLClassifier::CreateFromOptions(options).value();

// Run inference with your input, `input_text`.
std::vector<core::Category> categories = classifier->Classify(input_text);

Xem nguồn mã để biết thêm chi tiết.

Chạy suy luận trong Python

Bước 1: Cài đặt gói pip

pip install tflite-support

Bước 2: Sử dụng mô hình

# Imports
from tflite_support.task import text

# Initialization
classifier = text.NLClassifier.create_from_file(model_path)

# Run inference
text_classification_result = classifier.classify(text)

Xem nguồn mã để có thêm lựa chọn để định cấu hình NLClassifier.

Kết quả mẫu

Đây là một ví dụ về kết quả phân loại của bài đánh giá phim mô hình.

Thông tin đầu vào: "Thật lãng phí thời gian".

Kết quả:

category[0]: 'Negative' : '0.81313'
category[1]: 'Positive' : '0.18687'

Hãy thử công cụ minh hoạ CLI đơn giản cho NLClassifier thông qua mô hình và dữ liệu thử nghiệm của riêng bạn.

Yêu cầu về khả năng tương thích với mô hình

Tuỳ thuộc vào trường hợp sử dụng, API NLClassifier có thể tải mô hình TFLite bằng hoặc không có TFLite Model Metadata. Xem ví dụ về việc tạo siêu dữ liệu cho thuật toán phân loại ngôn ngữ tự nhiên bằng TensorFlow Lite Người viết siêu dữ liệu .

Mô hình tương thích phải đáp ứng các yêu cầu sau:

  • Tensor đầu vào: (kTfLiteString/kTfLiteInt32)

    • Đầu vào của mô hình phải là đầu vào thô của tensor kTfLiteString chuỗi hoặc một tensor kTfLiteInt32 cho các chỉ mục được mã hoá theo biểu thức chính quy của dữ liệu đầu vào thô .
    • Nếu loại dữ liệu đầu vào là kTfLiteString, không Mô hình này cần có siêu dữ liệu.
    • Nếu loại đầu vào là kTfLiteInt32, bạn cần thiết lập RegexTokenizer trong tensor đầu vào Siêu dữ liệu.
  • Tensor điểm đầu ra: (kTfLiteUInt8/kTfLiteInt8/kTfLiteInt16/kTfLiteFloat32/kTfLiteFloat64)

    • Tensor đầu ra bắt buộc đối với điểm của mỗi danh mục đã phân loại.

    • Nếu kiểu là một trong các kiểu Int, hãy loại bỏ lượng tử của kiểu dữ liệu đó thành gấp đôi/nổi thành nền tảng tương ứng

    • Có thể có một tệp liên kết không bắt buộc trong tensor đầu ra Siêu dữ liệu tương ứng cho danh mục nhãn, tệp phải là tệp văn bản thuần tuý có một nhãn mỗi dòng, và số lượng nhãn phải khớp với số lượng danh mục khi đầu ra của mô hình. Xem nhãn ví dụ tệp.

  • Tensor nhãn đầu ra: (kTfLiteString/kTfLiteInt32)

    • Tensor đầu ra tuỳ chọn cho nhãn của từng danh mục phải là cùng độ dài như tensor điểm đầu ra. Nếu không có tensor này, API sử dụng các chỉ mục điểm số làm tên lớp.

    • Sẽ bị bỏ qua nếu tệp nhãn liên kết xuất hiện trong điểm số đầu ra Siêu dữ liệu của tensor.