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

ה-API של ספריית המשימות BertNLClassifier דומה מאוד ל- NLClassifier שמסווג טקסט קלט לקטגוריות שונות, פרט לכך שה-API הזה מותאם במיוחד עבור מודלים הקשורים ל-Bert הדורשים אסימונים של Wordpiece ו-Senencepiece מחוץ למודל TFLite.

תכונות מפתח של BertNLClassifier API

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

  • מבצע אסימוני Wordpiece או Sentencepiece מחוץ לגרף בטקסט קלט.

דגמי BertNLClassifier נתמכים

הדגמים הבאים תואמים ל- BertNLClassifier API.

הפעל הסקה ב-Java

שלב 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 Text Library dependency (NNAPI is included)
    implementation 'org.tensorflow:tensorflow-lite-task-text:0.4.4'
}

שלב 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);

עיין בקוד המקור לפרטים נוספים.

הפעל מסקנות בסוויפט

שלב 1: ייבוא ​​CocoaPods

הוסף את הפוד TensorFlowLiteTaskText ב-Podfile

target 'MySwiftAppWithTaskAPI' do
  use_frameworks!
  pod 'TensorFlowLiteTaskText', '~> 0.4.4'
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 עם מודל ונתוני בדיקה משלך.

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

ה-API BetNLClassifier מצפה למודל TFLite עם מטא נתונים חובה של מודל TFLite .

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

  • input_process_units עבור Wordpiece/Sentencepiece Tokenizer

  • 3 טנסור קלט עם שמות "ID", "mask" ו-"segment_ids" לפלט של הטוקנייזר

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