Tích hợp trình phân loại ngôn ngữ tự nhiên

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

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

  • Lấy một chuỗi duy nhất làm đầu vào, thực hiện phân loại với chuỗi và kết quả đầu ra các cặp như kết quả phân loại.

  • Mã hóa Regex tùy chọn có sẵn cho văn bản đầu vào.

  • Có thể cấu hình để thích ứng với các mô hình phân loại khác nhau.

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

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

Chạy suy luận trong Java

Xem ứng dụng tham chiếu Phân loại văn bản để biết 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 cài đặt khác

Sao chép tệp mô hình .tflite vào thư mục nội dung của mô-đun Android nơi mô hình sẽ được chạy. Chỉ định rằng không nên nén tệp 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 (NNAPI is included)
    implementation 'org.tensorflow:tensorflow-lite-task-text:0.3.0'
    // Import the GPU delegate plugin Library for GPU inference
    implementation 'org.tensorflow:tensorflow-lite-gpu-delegate-plugin:0.3.0'
}

Bước 2: Chạy suy luậ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 mã nguồn để biết thêm tùy chọn để cấu hình NLClassifier .

Chạy suy luận trong Swift

Bước 1: Nhập CocoaPods

Thêm nhóm TensorFlowLiteTaskText trong Podfile

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

Bước 2: Chạy suy luậ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 mã nguồn để biết thêm chi tiết.

Chạy suy luậ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 mã nguồn để biết thêm chi tiết.

Kết quả ví dụ

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

Đầu vào: "Thật là lãng phí thời gian của tôi."

Đầu ra:

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

Hãy dùng thử công cụ demo CLI đơn giản cho NLClassifier với 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 của mô hình

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

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

  • Bộ căng đầu vào: (kTfLiteString / kTfLiteInt32)

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

    • Bộ căng đầu ra bắt buộc cho điểm của từng loại được phân loại.

    • Nếu kiểu là một trong các kiểu Int, hãy biến nó thành double / float cho các nền tảng tương ứng

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

  • Bộ căng nhãn đầu ra: (kTfLiteString / kTfLiteInt32)

    • Bộ căng đầu ra tùy chọn cho nhãn cho từng danh mục, phải có cùng độ dài với bộ căng điểm đầu ra. Nếu tensor này không xuất hiện, API sử dụng chỉ số điểm làm tên lớp.

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