ה- NLClassifier
API של ספריית המשימות מסווג טקסט קלט לקטגוריות שונות, והוא API רב תכליתי וניתן להגדרה שיכול להתמודד עם רוב דגמי סיווג הטקסט.
תכונות עיקריות של ה-API של NLClassifier
לוקח מחרוזת בודדת כקלט, מבצע סיווג עם המחרוזת והפלטים
אופציונלי אסימון Regex זמין עבור קלט טקסט.
ניתן להגדרה כדי להתאים דגמי סיווג שונים.
דגמי NLClassifier נתמכים
מובטח שהדגמים הבאים יהיו תואמים ל- NLClassifier
API.
מודלים עם מפרט
average_word_vec
שנוצר על ידי TensorFlow Lite Model Maker עבור סיווג טקסט .דגמים מותאמים אישית העומדים בדרישות תאימות המודל .
הפעל הסקה ב-Java
עיין באפליקציית ההפניה לסיווג טקסט לקבלת דוגמה לשימוש NLClassifier
באפליקציית Android.
שלב 1: ייבא תלות Gradle והגדרות אחרות
העתק את קובץ מודל ה- .tflite
לספריית הנכסים של מודול האנדרואיד שבו המודל יופעל. ציין שאין לדחוס את הקובץ, והוסף את ספריית 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 (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'
}
שלב 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
.
הפעל מסקנות בסוויפט
שלב 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 עם מודל ונתוני בדיקה משלך.
דרישות תאימות לדגם
בהתאם למקרה השימוש, ה-API של NLClassifier
יכול לטעון מודל TFLite עם או בלי Metadata של מודל TFLite . ראה דוגמאות ליצירת מטא נתונים עבור מסווגים של שפות טבעיות באמצעות TensorFlow Lite Metadata Writer API .
הדגמים התואמים צריכים לעמוד בדרישות הבאות:
טנסור קלט: (kTfLiteString/kTfLiteInt32)
- הקלט של המודל צריך להיות מחרוזת קלט גולמית של טנסור kTfLiteString או טנסור kTfLiteInt32 עבור אינדקסים אסימון רגיל של מחרוזת קלט גולמית.
- אם סוג הקלט הוא kTfLiteString, אין צורך במטא נתונים עבור המודל.
- אם סוג הקלט הוא kTfLiteInt32, יש להגדיר
RegexTokenizer
במטא -נתונים של טנסור הקלט.
טנסור ציון פלט: (kTfLiteUInt8/kTfLiteInt8/kTfLiteInt16/kTfLiteFloat32/kTfLiteFloat64)
טנסור פלט חובה עבור הציון של כל קטגוריה מסווגת.
אם הטיפוס הוא אחד מסוגי ה-Int, נטרל אותו כדי להכפיל/לרחף לפלטפורמות מתאימות
יכול להיות קובץ משויך אופציונלי במטא -נתונים התואמים של טנסור הפלט עבור תוויות קטגוריות, הקובץ צריך להיות קובץ טקסט רגיל עם תווית אחת בכל שורה, ומספר התוויות צריך להתאים למספר הקטגוריות כמו פלטי המודל. עיין בקובץ התוויות לדוגמה .
טנסור תווית פלט: (kTfLiteString/kTfLiteInt32)
טנסור פלט אופציונלי עבור התווית עבור כל קטגוריה, צריך להיות באורך זהה לטנזור ניקוד הפלט. אם טנזור זה אינו קיים, ה-API משתמש במדדי ניקוד כשמות כיתות.
תתעלם אם קובץ התווית המשויך קיים במטא-נתונים של טנסור של ציון פלט.