ไลบรารีงาน BertNLClassifier
API นั้นคล้ายกับ NLClassifier
ที่จัดประเภทข้อความอินพุตเป็นหมวดหมู่ต่างๆ ยกเว้นว่า API นี้ได้รับการปรับแต่งเป็นพิเศษสำหรับโมเดลที่เกี่ยวข้องกับ Bert ที่ต้องใช้โทเค็น Wordpiece และ Sentencepiece นอกโมเดล TFLite
คุณสมบัติหลักของ BertNLClassifier API
รับสตริงเดียวเป็นอินพุต ทำการจำแนกประเภทด้วยสตริงและเอาต์พุต
ดำเนินการ โทเค็น Wordpiece หรือ Sentencepiece ที่ไม่อยู่ในกราฟบนข้อความที่ป้อน
รุ่นที่รองรับ BertNLClassifier
รุ่นต่อไปนี้เข้ากันได้กับ BertNLClassifier
API
Bert Models ที่สร้างโดย TensorFlow Lite Model Maker สำหรับ text Classfication
โมเดลแบบกำหนดเองที่ตรงตาม ข้อกำหนดความเข้ากันได้ ของโมเดล
เรียกใช้การอนุมานใน Java
ขั้นตอนที่ 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 Text Library dependency (NNAPI is included)
implementation 'org.tensorflow:tensorflow-lite-task-text:0.3.0'
}
ขั้นตอนที่ 2: เรียกใช้การอนุมานโดยใช้ 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);
ดู ซอร์สโค้ด สำหรับรายละเอียดเพิ่มเติม
เรียกใช้การอนุมานใน Swift
ขั้นตอนที่ 1: นำเข้า CocoaPods
เพิ่มพ็อด TensorFlowLiteTaskText ใน Podfile
target 'MySwiftAppWithTaskAPI' do
use_frameworks!
pod 'TensorFlowLiteTaskText', '~> 0.2.0'
end
ขั้นตอนที่ 2: เรียกใช้การอนุมานโดยใช้ API
// Initialization
let bertNLClassifier = TFLBertNLClassifier.bertNLClassifier(
modelPath: bertModelPath)
// Run inference
let categories = bertNLClassifier.classify(text: input)
ดู ซอร์สโค้ด สำหรับรายละเอียดเพิ่มเติม
เรียกใช้การอนุมานใน 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);
ดู ซอร์สโค้ด สำหรับรายละเอียดเพิ่มเติม
เรียกใช้การอนุมานใน Python
ขั้นตอนที่ 1: ติดตั้งแพ็คเกจ pip
pip install tflite-support
ขั้นตอนที่ 2: การใช้โมเดล
# Imports
from tflite_support.task import text
# Initialization
classifier = text.BertNLClassifier.create_from_file(model_path)
# Run inference
text_classification_result = classifier.classify(text)
ดู ซอร์สโค้ด สำหรับตัวเลือกเพิ่มเติมในการกำหนดค่า BertNLClassifier
ตัวอย่างผลลัพธ์
นี่คือตัวอย่างผลการจัดหมวดหมู่บทวิจารณ์ภาพยนตร์โดยใช้โมเดล MobileBert จาก Model Maker
ข้อมูลป้อน: "เป็นการเดินทางที่มีเสน่ห์และมักส่งผลกระทบต่อ"
เอาท์พุท:
category[0]: 'negative' : '0.00006'
category[1]: 'positive' : '0.99994'
ลองใช้ เครื่องมือสาธิต CLI อย่างง่ายสำหรับ BertNLClassifier ด้วยแบบจำลองและข้อมูลทดสอบของคุณเอง
ข้อกำหนดความเข้ากันได้ของรุ่น
BetNLClassifier
API คาดหวังโมเดล TFLite ที่มีข้อมูลเมตาของ โมเดล TFLite บังคับ
ข้อมูลเมตาควรเป็นไปตามข้อกำหนดต่อไปนี้:
input_process_units สำหรับ Wordpiece/Sentencepiece Tokenizer
3 เทนเซอร์อินพุตที่มีชื่อ "ids", "mask" และ "segment_ids" สำหรับเอาต์พุตของ tokenizer
1 เทนเซอร์เอาต์พุตประเภท float32 พร้อมไฟล์ป้ายกำกับที่แนบมาด้วย หากแนบไฟล์ป้ายกำกับ ไฟล์ควรเป็นไฟล์ข้อความธรรมดาที่มีหนึ่งป้ายกำกับต่อบรรทัด และจำนวนป้ายกำกับควรตรงกับจำนวนหมวดหมู่ตามที่โมเดลส่งออก