שלב מסווג שפה טבעית

ה- NLClassifier API של ספריית המשימות מסווג טקסט קלט לקטגוריות שונות, והוא API רב תכליתי וניתן להגדרה שיכול להתמודד עם רוב דגמי סיווג הטקסט.

תכונות עיקריות של ה-API של NLClassifier

  • לוקח מחרוזת בודדת כקלט, מבצע סיווג עם המחרוזת והפלטים זוגות כתוצאות סיווג.

  • אופציונלי אסימון Regex זמין עבור קלט טקסט.

  • ניתן להגדרה כדי להתאים דגמי סיווג שונים.

דגמי NLClassifier נתמכים

מובטח שהדגמים הבאים יהיו תואמים ל- NLClassifier API.

הפעל הסקה ב-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 משתמש במדדי ניקוד כשמות כיתות.

    • תתעלם אם קובץ התווית המשויך קיים במטא-נתונים של טנסור של ציון פלט.