NLClassifier API ของคลังงานจะจัดประเภทข้อความอินพุตเป็นหมวดหมู่ต่างๆ
และเป็น API ที่หลากหลายและกำหนดค่าได้ซึ่งสามารถจัดการโมเดลการจัดประเภทข้อความส่วนใหญ่ได้
ฟีเจอร์หลักของ NLClassifier API
รับสตริงเดียวเป็นอินพุต ทำการจัดประเภทด้วยสตริง และ แสดงผลคู่ <label, score=""> เป็นผลลัพธ์การจัดประเภท</label,>
การแยกโทเค็น Regex ที่ไม่บังคับพร้อมใช้งานสำหรับข้อความอินพุต
กำหนดค่าได้เพื่อปรับให้เข้ากับโมเดลการจัดประเภทต่างๆ
โมเดล NLClassifier ที่รองรับ
เรารับประกันว่ารุ่นต่อไปนี้จะใช้ได้กับ NLClassifier
API
โมเดลที่มี
average_word_vecข้อมูลจำเพาะที่สร้างโดย TensorFlow Lite Model Maker สำหรับการจัดประเภทข้อความโมเดลที่กำหนดเองซึ่งเป็นไปตามข้อกำหนดด้านความเข้ากันได้ของโมเดล
เรียกใช้การอนุมานใน Java
ดูตัวอย่างวิธีใช้ NLClassifier ในแอป Android ได้ที่ข้อมูลอ้างอิงการจัดประเภทข้อความ
แอป
ขั้นตอนที่ 1: นำเข้าการอ้างอิง Gradle และการตั้งค่าอื่นๆ
คัดลอก.tfliteไฟล์โมเดลไปยังไดเรกทอรีชิ้นงานของโมดูล Android
ที่จะเรียกใช้โมเดล ระบุว่าไม่ควรบีบอัดไฟล์ และ
เพิ่มไลบรารี TensorFlow Lite ลงในไฟล์ build.gradle ของโมดูล
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'
}
ขั้นตอนที่ 2: เรียกใช้การอนุมานโดยใช้ 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);
ดูตัวเลือกเพิ่มเติมในการกำหนดค่า NLClassifier ได้ในซอร์สโค้ด
เรียกใช้การอนุมานใน Swift
ขั้นตอนที่ 1: นำเข้า CocoaPods
เพิ่มพ็อด TensorFlowLiteTaskText ใน Podfile
target 'MySwiftAppWithTaskAPI' do
use_frameworks!
pod 'TensorFlowLiteTaskText', '~> 0.4.4'
end
ขั้นตอนที่ 2: เรียกใช้การอนุมานโดยใช้ 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)
ดูรายละเอียดเพิ่มเติมได้ในซอร์สโค้ด
เรียกใช้การอนุมานใน 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);
ดูรายละเอียดเพิ่มเติมได้ในซอร์สโค้ด
เรียกใช้การอนุมานใน Python
ขั้นตอนที่ 1: ติดตั้งแพ็กเกจ pip
pip install tflite-support
ขั้นตอนที่ 2: การใช้โมเดล
# Imports
from tflite_support.task import text
# Initialization
classifier = text.NLClassifier.create_from_file(model_path)
# Run inference
text_classification_result = classifier.classify(text)
ดูตัวเลือกเพิ่มเติมในการกำหนดค่า NLClassifier ได้ในซอร์สโค้ด
ตัวอย่างผลการแข่ง
นี่คือตัวอย่างผลการจัดประเภทของโมเดลรีวิวภาพยนตร์
อินพุต: "เสียเวลาชะมัด"
เอาต์พุต:
category[0]: 'Negative' : '0.81313'
category[1]: 'Positive' : '0.18687'
ลองใช้เครื่องมือสาธิต CLI แบบง่ายสำหรับ NLClassifier กับโมเดลและข้อมูลทดสอบของคุณเอง
ข้อกำหนดความเข้ากันได้ของโมเดล
NLClassifier API สามารถโหลดโมเดล TFLite ที่มีหรือไม่มีข้อมูลเมตาของโมเดล TFLite ทั้งนี้ขึ้นอยู่กับกรณีการใช้งาน ดู
ตัวอย่างการสร้างข้อมูลเมตาสำหรับตัวแยกประเภทภาษาธรรมชาติโดยใช้
TensorFlow Lite Metadata Writer
API
รุ่นที่รองรับควรเป็นไปตามข้อกำหนดต่อไปนี้
Tensor อินพุต: (kTfLiteString/kTfLiteInt32)
- อินพุตของโมเดลควรเป็นอินพุตดิบของเทนเซอร์ kTfLiteString สตริง หรือเทนเซอร์ kTfLiteInt32 สำหรับดัชนีที่โทเค็นด้วยนิพจน์ทั่วไปของอินพุตดิบ สตริง
- หากประเภทอินพุตเป็น kTfLiteString คุณไม่จำเป็นต้องใช้Metadata สำหรับโมเดล
- หากประเภทอินพุตเป็น kTfLiteInt32 จะต้องตั้งค่า
RegexTokenizerใน ข้อมูลเมตาของ เทนเซอร์อินพุต
Tensor คะแนนเอาต์พุต: (kTfLiteUInt8/kTfLiteInt8/kTfLiteInt16/kTfLiteFloat32/kTfLiteFloat64)
Tensor เอาต์พุตที่จำเป็นสำหรับคะแนนของแต่ละหมวดหมู่ที่จัดประเภท
หากประเภทเป็นประเภท Int ให้ยกเลิกการหาปริมาณเป็น double/float เพื่อ แพลตฟอร์มที่เกี่ยวข้อง
อาจมีไฟล์ที่เชื่อมโยงซึ่งไม่บังคับในข้อมูลเมตาที่เกี่ยวข้องของเทนเซอร์เอาต์พุตสำหรับป้ายกำกับหมวดหมู่ ไฟล์ควรเป็นไฟล์ข้อความธรรมดาที่มีป้ายกำกับ 1 รายการต่อบรรทัด และจำนวนป้ายกำกับควรตรงกับจำนวนหมวดหมู่ตามที่โมเดลเอาต์พุต ดูไฟล์ป้ายกำกับตัวอย่าง
Tensor ป้ายกำกับเอาต์พุต: (kTfLiteString/kTfLiteInt32)
Tensor เอาต์พุตที่ไม่บังคับสำหรับป้ายกำกับของแต่ละหมวดหมู่ ควรมีความยาวเท่ากับ Tensor คะแนนเอาต์พุต หากไม่มีเทนเซอร์นี้ API จะใช้ดัชนีคะแนนเป็นชื่อคลาส
จะถูกละเว้นหากมีไฟล์ป้ายกำกับที่เชื่อมโยงอยู่ในข้อมูลเมตาของเทนเซอร์คะแนนเอาต์พุต