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

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

תכונות מרכזיות בממשק ה-API של NLClassifier

  • מקבל מחרוזת יחידה כקלט, מבצע סיווג באמצעות המחרוזת, פלט <label, Score=""> צמדים כתוצאות סיווג.</label,>

  • אסימון אופציונלי של ביטוי רגולרי (regex) זמין לטקסט קלט.

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

מודלים נתמכים של NLClassifier

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

הרצת ההסקה ב-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.

תוצאות לדוגמה

הנה דוגמה לתוצאות הסיווג של הביקורת על הסרט מודל טרנספורמר.

קלט: "What a spend of my time" (איזה בזבוז זמן).

פלט:

category[0]: 'Negative' : '0.81313'
category[1]: 'Positive' : '0.18687'

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

דרישות התאימות של המודלים

בהתאם לתרחיש לדוגמה, ה-API NLClassifier יכול לטעון מודל TFLite עם או ללא מטא-נתונים של מודל TFLite. הצגת דוגמאות של יצירת מטא-נתונים לסיווגי שפה טבעית (NLP) באמצעות טכנולוגיית TensorFlow Lite" כותב מטא-נתונים API.

הדגמים התואמים צריכים לעמוד בדרישות הבאות:

  • לך יזור קלט: (kTfLiteString/kTfLiteInt32)

    • הקלט של המודל צריך להיות קלט גולמי של kTfLiteString מחרוזת או tf.LiteInt32 tensor לאינדקסים של קלט גולמי, שעברו תהליך ליצירת אסימונים רגולריים String.
    • אם סוג הקלט הוא kTfLiteString, לא נדרשים מטא-נתונים עבור המודל.
    • אם סוג הקלט הוא kTfLiteInt32, צריך להגדיר RegexTokenizer של img_tensor מטא-נתונים.
  • טנזור ציון הפלט: (kTfLiteUInt8/kTfLiteInt8/kTfLiteInt16/kTfLiteFloat32/kTfLiteFloat64)

    • מפריד פלט חובה לציון של כל קטגוריה מסווגת.

    • אם הסוג הוא אחד מסוגי Int, צריך לבטל את הכמות שלו כדי להכפיל או לצוף אל הפלטפורמות המתאימות

    • יכול להיות משויך קובץ אופציונלי במשתנה הפלט המטא-נתונים התואמים של הקטגוריה תוויות, הקובץ צריך להיות קובץ טקסט פשוט עם תווית אחת בכל שורה, ומספר התוויות צריך להתאים למספר הקטגוריות של המודל. להצגת התווית לדוגמה .

  • טנזור תווית הפלט: (kTfLiteString/kTfLiteInt32)

    • img_tensor [מנף פלט אופציונלי] לתווית של כל קטגוריה, צריך להיות זהה לאורך של t e n s o r f l o w. אם הטנזור הזה לא קיים, ה-API משתמש באינדקסי ציונים כשמות מחלקות.

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