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

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

תכונות עיקריות של BertNLClassifier API

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

  • מבצע יצירת מילים ללא תמונה או קטע טקסט יצירת אסימונים בטקסט הקלט.

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

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

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

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

הרצת ההסקה ב-Swift

שלב 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 עבור רכיב של טקסט מעוצב/אסימונים במשפט

  • 3 רכיבי קלט עם השמות 'ids', 'mask' ו-segment_id את הפלט של כלי ההמרה לאסימונים

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