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à 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 làm đầu vào, thực hiện phân loại với chuỗi và kết quả đầu ra
Mã thông báo 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
.
Mô hình phân loại tình cảm đánh giá phim .
Các mô hình có thông số
average_word_vec
được tạo bởi TensorFlow Lite Model Maker để phân loại văn bản .Các mô hình tùy chỉnh đáp ứng các yêu cầu về khả năng tương thích của mô hình .
Chạy suy luận trong Java
Xem ứng dụng tham khảo 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 tệp sẽ 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 (NNAPI is included)
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);
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.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)
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.
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 mã nguồn để biết thêm tùy chọn cấu hình NLClassifier
.
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 đánh giá phim .
Đầu vào: "Thật 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 tương thích 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 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 các yêu cầu sau:
Tenxơ đầu vào: (kTfLiteString/kTfLiteInt32)
- Đầu vào của mô hình phải là chuỗi đầu vào thô tensor kTfLiteString hoặc tensor kTfLiteInt32 cho các chỉ mục được mã hóa 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ì không cần Siêu dữ liệu cho mô hình.
- Nếu loại đầu vào là kTfLiteInt32 thì
RegexTokenizer
cần được thiết lập trong Metadata của tensor đầu vào.
Tenor điểm đầu ra: (kTfLiteUInt8/kTfLiteInt8/kTfLiteInt16/kTfLiteFloat32/kTfLiteFloat64)
Tenor đầu ra bắt buộc cho điểm 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 giảm số lượng của nó thành gấp đôi/thả nổi lên các nền tảng tương ứng
Có thể có tệp liên kết tùy chọn trong Siêu dữ liệu tương ứng của tenxơ đầu ra cho nhãn danh mục, tệp phải là tệp văn bản thuần túy có một nhãn trên mỗi dòng và số nhãn phải khớp với số danh mục mà mô hình xuất ra. Xem tệp nhãn mẫu .
Tenor nhãn đầu ra: (kTfLiteString/kTfLiteInt32)
Tenxor đầu ra tùy chọn cho nhãn cho từng danh mục phải có cùng độ dài với tensor điểm đầu ra. Nếu không có tenxơ này thì API sẽ sử dụng chỉ số điểm làm tên lớp.
Sẽ bị bỏ qua nếu tệp nhãn liên quan có trong Siêu dữ liệu của tensor điểm đầu ra.