Giúp bảo vệ Great Barrier Reef với TensorFlow trên Kaggle Tham Challenge

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

Task Thư viện của NLClassifier phân loại API nhập văn bản vào các mục khác nhau, và là một linh hoạt và API 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 đây chắc chắn sẽ rất phù hợp với NLClassifier API.

Chạy suy luận trong Java

Xem bản ứng dụng tài liệu tham khảo Phân loại cho một ví dụ về cách sử dụng NLClassifier trong một ứ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 .tflite tập mô hình để các tài sản thư mục của module Android nơi mô hình sẽ được chạy. Xác định rằng các tập tin không nên nén, và thêm thư viện TensorFlow Lite để của mô-đun build.gradle file:

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 cho các tùy chọn hơ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_file);
std::unique_ptr<NLClassifier> classifier = NLClassifier::CreateFromOptions(options).value();

// Run inference
std::vector<core::Category> categories = classifier->Classify(kInput);

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 mô hình xem xét bộ 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 thử đơn giản công cụ CLI demo cho NLClassifier với mô hình và thử nghiệm riêng dữ liệu của bạn.

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

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

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 Metadata là cần thiết cho mô hình.
    • Nếu loại đầu vào là kTfLiteInt32, một RegexTokenizer cần phải được thiết lập trong tensor đầu vào của siêu dữ liệu .
  • Đ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 tin đi kèm tùy chọn trong đầu ra tensor của tương ứng Metadata cho nhãn mục, tập tin phải là một tập tin văn bản đơn giản với một nhãn trên mỗi dòng, và số lượng nhãn phải phù hợp với số chủng loại như mô hình đầu ra. Xem các tập tin nhãn exmaple .

  • 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.