ช่วยปกป้อง Great Barrier Reef กับ TensorFlow บน Kaggle เข้าร่วมท้าทาย

ผสานรวมตัวแยกประเภทภาษาธรรมชาติของ BERT

งานห้องสมุด BertNLClassifier API เป็นคล้ายกับ NLClassifier ว่าข้อความจัดประเภทใส่ลงในประเภทที่แตกต่างกันยกเว้นว่า API นี้จะเหมาะเป็นพิเศษสำหรับรุ่นเบิร์ตที่เกี่ยวข้องที่ต้อง Wordpiece และ Sentencepiece tokenizations นอกรุ่น TFLite

คุณสมบัติหลักของ BertNLClassifier API

  • รับสตริงเดียวเป็นอินพุต ทำการจำแนกประเภทด้วยสตริงและเอาต์พุต คู่เป็นผลการจัดหมวดหมู่

  • ดำเนินการออกจากกราฟ Wordpiece หรือ Sentencepiece tokenizations ในการป้อนข้อความ

รุ่นที่รองรับ BertNLClassifier

รุ่นต่อไปนี้เข้ากันได้กับ BertNLClassifier API

เรียกใช้การอนุมานใน 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 (NNAPI is included)
    implementation 'org.tensorflow:tensorflow-lite-task-text:0.3.0'
}

ขั้นตอนที่ 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.2.0'
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_file);
std::unique_ptr<BertNLClassifier> classifier = BertNLClassifier::CreateFromOptions(options).value();

// Run inference
std::vector<core::Category> categories = classifier->Classify(kInput);

ดู รหัสที่มา สำหรับรายละเอียดเพิ่มเติม

ตัวอย่างผลลัพธ์

นี่คือตัวอย่างของผลการจัดหมวดหมู่ของบทวิจารณ์ภาพยนตร์โดยใช้ที่ MobileBert รุ่นจากรุ่นชง

ข้อมูล: "เป็นการเดินทางที่มีเสน่ห์และมักส่งผลกระทบ"

เอาท์พุท:

category[0]: 'negative' : '0.00006'
category[1]: 'positive' : '0.99994'

ลองใช้ง่าย เครื่องมือ CLI สาธิต BertNLClassifier กับตัวเองและรูปแบบการทดสอบข้อมูลของคุณ

ข้อกำหนดความเข้ากันได้ของรุ่น

BetNLClassifier API คาดว่ารูปแบบการ TFLite กับบังคับ TFLite รุ่นเมตาดาต้า

ข้อมูลเมตาควรเป็นไปตามข้อกำหนดต่อไปนี้:

  • input_process_units สำหรับ Wordpiece/Sentencepiece Tokenizer

  • 3 เทนเซอร์อินพุตที่มีชื่อ "id", "mask" และ "segment_ids" สำหรับเอาต์พุตของ tokenizer

  • 1 เทนเซอร์เอาต์พุตประเภท float32 พร้อมไฟล์เลเบลที่เป็นตัวเลือก หากแนบไฟล์ป้ายกำกับ ไฟล์ควรเป็นไฟล์ข้อความธรรมดาที่มีหนึ่งป้ายกำกับต่อบรรทัด และจำนวนป้ายกำกับควรตรงกับจำนวนหมวดหมู่ตามเอาต์พุตของโมเดล