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

API BertNLClassifier Thư viện Tác vụ rất giống với NLClassifier phân loại văn bản đầu vào thành các danh mục khác nhau, ngoại trừ API này được điều chỉnh đặc biệt cho các mô hình liên quan đến Bert yêu cầu mã hóa Wordpiece và Câu văn ngoài mô hình TFLite.

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

  • 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à đầu ra các cặp như kết quả phân loại.

  • Thực hiện mã hóa Wordpiece hoặc Câu văn ngoài biểu đồ trên văn bản đầu vào.

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

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

Chạy suy luận trong Java

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 Text Library dependency (NNAPI is included)
    implementation 'org.tensorflow:tensorflow-lite-task-text:0.3.0'
}

Bước 2: Chạy suy luận bằng API

// Initialization
BertNLClassifierOptions options =
    BertNLClassifierOptions.builder()
        .setBaseOptions(BaseOptions.builder().setNumThreads(4).build())
        .build();
BertNLClassifier classifier =
    BertNLClassifier.createFromFileAndOptions(context, modelFile, options);

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

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

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
let bertNLClassifier = TFLBertNLClassifier.bertNLClassifier(
      modelPath: bertModelPath)

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

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

Chạy suy luận trong C ++

// Initialization
BertNLClassifierOptions options;
options.mutable_base_options()->mutable_model_file()->set_file_name(model_path);
std::unique_ptr<BertNLClassifier> classifier = BertNLClassifier::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ụ

Dưới đây là một ví dụ về kết quả phân loại của các bài đánh giá phim bằng mô hình MobileBert từ Model Maker.

Đầu vào: "đó là một hành trình quyến rũ và thường ảnh hưởng đến"

Đầu ra:

category[0]: 'negative' : '0.00006'
category[1]: 'positive' : '0.99994'

Hãy dùng thử công cụ demo CLI đơn giản cho BertNLClassifier với mô hình và dữ liệu thử nghiệm của riêng bạn.

Yêu cầu về tính tương thích của mô hình

API BetNLClassifier mong đợi một mô hình TFLite với Siêu dữ liệu mô hình TFLite bắt buộc.

Siêu dữ liệu phải đáp ứng các yêu cầu sau:

  • input_process_units for Wordpiece / Câu văn Tokenizer

  • 3 bộ căng đầu vào có tên "id", "mask" và "segment_ids" cho đầu ra của tokenizer

  • 1 tensor đầu ra của loại float32, với một tệp nhãn đính kèm tùy chọn. Nếu tệp nhãn được đính kèm, 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.