API NLClassifier của Thư viện tác vụ phân loại văn bản đầu vào thành nhiều danh mục và là một API linh hoạt, có thể định cấu hình để 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 NLClassifier API
Nhận một chuỗi duy nhất làm đầu vào, thực hiện phân loại bằng chuỗi và xuất các cặp <label, score=""> dưới dạng kết quả phân loại.</label,>
Có thể sử dụng tính năng Phân tách mã thông báo bằng biểu thức chính quy cho văn bản đầu vào.
Có thể định cấu hình để điều chỉnh 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ẽ tương thích với API NLClassifier.
Các mô hình có quy cách
average_word_vecdo TensorFlow Lite Model Maker tạo để phân loại văn bản.Các mô hình tuỳ chỉnh đáp ứng yêu cầu về khả năng tương thích của mô hình.
Chạy suy luận bằng Java
Hãy 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 một ứ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 tài sả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 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);
Hãy xem mã nguồn để biết thêm các lựa chọn định cấu hình NLClassifier.
Chạy suy luận trong Swift
Bước 1: Nhập CocoaPods
Thêm nhóm TensorFlowLiteTaskText vào Podfile
target 'MySwiftAppWithTaskAPI' do
use_frameworks!
pod 'TensorFlowLiteTaskText', '~> 0.4.4'
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)
Hãy xem mã nguồn để biết thêm chi tiết.
Chạy suy luận bằng 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);
Hãy xem mã nguồn để 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)
Hãy xem mã nguồn để biết thêm các lựa chọn định cấu hình NLClassifier.
Kết quả mẫu
Sau đây là ví dụ về kết quả phân loại của mô hình đánh giá phim.
Đầu vào: "Thật lãng phí thời gian của tôi."
Kết quả:
category[0]: 'Negative' : '0.81313'
category[1]: 'Positive' : '0.18687'
Hãy dùng thử công cụ minh hoạ CLI đơn giản cho NLClassifier với mô hình và dữ liệu kiểm thử của riêng bạn.
Yêu cầu về khả năng tương thích của mô hình
Tuỳ thuộc vào trường hợp sử dụng, API NLClassifier có thể tải một 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 trình phân loại ngôn ngữ tự nhiên bằng API Trình ghi siêu dữ liệu TensorFlow Lite.
Các mô hình tương thích phải đáp ứng những yêu cầu sau:
Tensor đầu vào: (kTfLiteString/kTfLiteInt32)
- Đầu vào của mô hình phải là một chuỗi đầu vào thô của tensor kTfLiteString hoặc một tensor kTfLiteInt32 cho các chỉ mục được mã hoá bằng biểu thức chính quy của chuỗi đầu vào thô.
- Nếu loại đầu vào là kTfLiteString, thì mô hình không cần Siêu dữ liệu.
- Nếu loại đầu vào là kTfLiteInt32, thì bạn cần thiết lập một
RegexTokenizertrong Siêu dữ liệu của tensor đầu vào.
Tensor điểm đầu ra: (kTfLiteUInt8/kTfLiteInt8/kTfLiteInt16/kTfLiteFloat32/kTfLiteFloat64)
Tensor đầu ra bắt buộc cho điểm số của từng danh mục được phân loại.
Nếu loại là một trong các loại Int, hãy khử lượng tử hoá loại đó 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 không bắt buộc trong Siêu dữ liệu tương ứng của tensor đầu ra cho nhãn danh mục, tệp này phải là một tệp văn bản thuần tuý có một nhãn trên mỗi dòng và số lượng nhãn phải khớp với số lượng danh mục mà mô hình xuất ra. Xem tệp nhãn mẫu.
Tensor nhãn đầu ra: (kTfLiteString/kTfLiteInt32)
Tensor đầu ra không bắt buộc cho nhãn của từng danh mục, phải có cùng độ dài với tensor điểm đầu ra. Nếu không có tensor này, API sẽ sử dụng chỉ mục điểm số 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.