เพิ่มการจัดประเภทข้อความในอุปกรณ์ให้กับแอปของคุณด้วย TensorFlow Lite และ Firebase - Android Codelab

1. ภาพรวม

การจำแนกข้อความ-result.png

ยินดีต้อนรับสู่การจัดประเภทข้อความด้วย TensorFlow Lite และ Codelab ของ Firebase ใน Codelab นี้ คุณจะได้เรียนรู้วิธีใช้ TensorFlow Lite และ Firebase เพื่อฝึกและปรับใช้โมเดลการจัดหมวดหมู่ข้อความกับแอปของคุณ Codelab นี้อิงตาม ตัวอย่าง TensorFlow Lite นี้

การจัดหมวดหมู่ข้อความเป็นกระบวนการกำหนดแท็กหรือหมวดหมู่ให้กับข้อความตามเนื้อหา นี่เป็นหนึ่งในงานพื้นฐานในการประมวลผลภาษาธรรมชาติ (NLP) ที่มีการนำไปใช้งานในวงกว้าง เช่น การวิเคราะห์ความรู้สึก การติดป้ายกำกับหัวข้อ การตรวจจับสแปม และการตรวจจับเจตนา

การวิเคราะห์ความรู้สึกคือการตีความและการจำแนกอารมณ์ (บวก ลบ และเป็นกลาง) ภายในข้อมูลข้อความโดยใช้เทคนิคการวิเคราะห์ข้อความ การวิเคราะห์ความรู้สึกช่วยให้ธุรกิจสามารถระบุความรู้สึกของลูกค้าต่อผลิตภัณฑ์ แบรนด์ หรือบริการในการสนทนาและคำติชมออนไลน์

บทช่วยสอนนี้แสดงวิธีสร้างแบบจำลองแมชชีนเลิร์นนิงสำหรับการวิเคราะห์ความรู้สึก โดยเฉพาะอย่างยิ่งการจัดประเภทข้อความเป็นบวกหรือลบ นี่คือตัวอย่างของการจำแนกประเภทไบนารีหรือสองชั้น ซึ่งเป็นปัญหาการเรียนรู้ของเครื่องที่สำคัญและนำไปใช้อย่างกว้างขวาง

สิ่งที่คุณจะได้เรียนรู้

  • ฝึกฝนโมเดลการวิเคราะห์ความรู้สึกของ TF Lite ด้วย TF Lite Model Maker
  • ปรับใช้โมเดล TF Lite กับ Firebase ML และเข้าถึงได้จากแอปของคุณ
  • ผสานรวมโมเดลการวิเคราะห์ความรู้สึกของ TF Lite เข้ากับแอปของคุณโดยใช้ไลบรารีงาน TF Lite

สิ่งที่คุณต้องการ

  • เวอร์ชัน Android Studio ล่าสุด
  • รหัสตัวอย่าง
  • อุปกรณ์ทดสอบที่ใช้ Android 5.0 ขึ้นไปและบริการ Google Play 9.8 ขึ้นไป หรือโปรแกรมจำลองพร้อมบริการ Google Play 9.8 ขึ้นไป
  • หากใช้อุปกรณ์ให้ใช้สายเชื่อมต่อ

คุณจะใช้บทช่วยสอนนี้อย่างไร?

อ่านผ่านๆ เท่านั้น อ่านแล้วทำแบบฝึกหัดให้สมบูรณ์

คุณจะให้คะแนนประสบการณ์ของคุณในการสร้างแอป Android อย่างไร

สามเณร ระดับกลาง เชี่ยวชาญ

2. รับโค้ดตัวอย่าง

โคลนพื้นที่เก็บข้อมูล GitHub จากบรรทัดคำสั่ง

$ git clone https://github.com/FirebaseExtended/codelab-textclassification-android.git

หากคุณไม่ได้ติดตั้ง git คุณสามารถดาวน์โหลดโปรเจ็กต์ตัวอย่างได้จากหน้า GitHub หรือคลิก ลิงก์นี้

3. นำเข้าแอปเริ่มต้น

จาก Android Studio ให้เลือกไดเร็กทอรี codelab-textclassification-android-master ( android_studio_folder.png ) จากการดาวน์โหลดโค้ดตัวอย่าง ( File > Open > .../codelab-textclassification-android-master/start)

ตอนนี้คุณควรเปิดโปรเจ็กต์เริ่มต้นใน Android Studio แล้ว

4. เรียกใช้แอปเริ่มต้น

เมื่อคุณนำเข้าโปรเจ็กต์ลงใน Android Studio แล้ว คุณก็พร้อมที่จะรันแอปเป็นครั้งแรก เชื่อมต่ออุปกรณ์ Android ของคุณแล้วคลิก เรียกใช้ ( ดำเนินการ.png ) ในแถบเครื่องมือ Android Studio

แอปควรเปิดบนอุปกรณ์ของคุณ มีเพียง UI ธรรมดาที่ทำให้ง่ายต่อการรวมและทดสอบโมเดลการจัดหมวดหมู่ข้อความในขั้นตอนถัดไป ณ จุดนี้ หากคุณพยายามทำนายความรู้สึก แอปจะส่งกลับผลลัพธ์จำลองเพียงบางส่วนเท่านั้น

2fb4e69fafb2e3ed.png

5. สร้างโครงการคอนโซล Firebase

เพิ่ม Firebase ให้กับโปรเจ็กต์

  1. ไปที่ คอนโซล Firebase
  2. เลือก เพิ่มโครงการ
  3. เลือกหรือป้อนชื่อโครงการ
  4. ทำตามขั้นตอนการตั้งค่าที่เหลือในคอนโซล Firebase จากนั้นคลิกสร้างโปรเจ็กต์ (หรือเพิ่ม Firebase หากคุณใช้โปรเจ็กต์ Google ที่มีอยู่)

6. เพิ่ม Firebase ให้กับแอป

  1. จากหน้าจอภาพรวมของโปรเจ็กต์ใหม่ของคุณ ให้คลิกไอคอน Android เพื่อเปิดเวิร์กโฟลว์การตั้งค่า
  2. ป้อนชื่อแพ็กเกจของ Codelab: org.tensorflow.lite.codelabs.textclassification

เพิ่มไฟล์ google-services.json ลงในแอปของคุณ

หลังจากเพิ่มชื่อแพ็กเกจและเลือก Register** แล้ว คลิกดาวน์โหลด google-services.json** เพื่อรับไฟล์กำหนดค่า Firebase Android ของคุณ จากนั้นคัดลอกไฟล์ google-services.json ลงในไดเร็กทอรี * app * ในโปรเจ็กต์ของคุณ

เพิ่มปลั๊กอิน Google-Services ลงในแอปของคุณ

ทำตามคำแนะนำบนคอนโซล Firebase ที่อัปเดตไฟล์ build.gradle.kts เพื่อเพิ่ม Firebase ลงในแอปของคุณ

ปลั๊กอิน google-services ใช้ไฟล์ google-services.json เพื่อกำหนดค่าแอปพลิเคชันของคุณให้ใช้ Firebase

ซิงค์โครงการของคุณกับไฟล์ gradle

เพื่อให้แน่ใจว่าแอปของคุณมีการอ้างอิงทั้งหมด คุณควรซิงค์โปรเจ็กต์ของคุณกับไฟล์ gradle ณ จุดนี้ เลือก ไฟล์ > ซิงค์โปรเจ็กต์ด้วยไฟล์ Gradle จากแถบเครื่องมือ Android Studio

7. เรียกใช้แอปด้วย Firebase

เมื่อคุณกำหนดค่าปลั๊กอิน google-services ด้วยไฟล์ JSON แล้ว คุณก็พร้อมที่จะเรียกใช้แอปด้วย Firebase แล้ว เชื่อมต่ออุปกรณ์ Android ของคุณแล้วคลิก เรียกใช้ ( ดำเนินการ.png ) ในแถบเครื่องมือ Android Studio

แอปควรเปิดบนอุปกรณ์ของคุณ ณ จุดนี้ แอปของคุณควรยังคงสร้างได้สำเร็จ

8. ฝึกอบรมแบบจำลองการวิเคราะห์ความรู้สึก

เราจะใช้ TensorFlow Lite Model Maker เพื่อฝึกโมเดลการจัดหมวดหมู่ข้อความเพื่อทำนายความรู้สึกของข้อความที่กำหนด

ขั้นตอนนี้จะแสดงเป็นสมุดบันทึก Python ที่คุณสามารถเปิดใน Google Colab ได้ คุณสามารถเลือก รันไทม์ > รันทั้งหมด เพื่อรันโน้ตบุ๊กทั้งหมดในคราวเดียว

เปิดใน Colab

หลังจากเสร็จสิ้นขั้นตอนนี้ คุณจะมีโมเดลการวิเคราะห์ความรู้สึกของ TensorFlow Lite ที่พร้อมสำหรับการปรับใช้กับแอปบนมือถือ

9. ปรับใช้โมเดลกับ Firebase ML

การปรับใช้โมเดลกับ Firebase ML มีประโยชน์ด้วยเหตุผลสองประการ:

  1. เราสามารถทำให้ขนาดการติดตั้งแอปมีขนาดเล็ก และดาวน์โหลดโมเดลเฉพาะเมื่อจำเป็นเท่านั้น
  2. โมเดลสามารถอัปเดตได้เป็นประจำและมีรอบการเผยแพร่ที่แตกต่างจากทั้งแอป

โมเดลสามารถติดตั้งใช้งานได้ผ่านคอนโซลหรือโดยทางโปรแกรมโดยใช้ Firebase Admin SDK ในขั้นตอนนี้ เราจะปรับใช้ผ่านคอนโซล

ขั้นแรก เปิด คอนโซล Firebase แล้วคลิก Machine Learning ในแผงการนำทางด้านซ้าย คลิก 'เริ่มต้น' หากคุณเปิดเป็นครั้งแรก จากนั้นไปที่ "กำหนดเอง" และคลิกที่ปุ่ม "เพิ่มโมเดล"

เมื่อได้รับแจ้ง ให้ตั้งชื่อโมเดล sentiment_analysis และอัปโหลดไฟล์ที่คุณดาวน์โหลดจาก Colab ในขั้นตอนก่อนหน้า

3c3c50e6ef12b3b.png

10. ดาวน์โหลดโมเดลจาก Firebase ML

การเลือกเวลาที่จะดาวน์โหลดโมเดลระยะไกลจาก Firebase ลงในแอปของคุณอาจเป็นเรื่องยุ่งยาก เนื่องจากโมเดล TFLite สามารถขยายได้ค่อนข้างใหญ่ ตามหลักการแล้ว เราต้องการหลีกเลี่ยงการโหลดโมเดลทันทีเมื่อแอปเปิดตัว เนื่องจากหากโมเดลของเราใช้สำหรับฟีเจอร์เดียวเท่านั้น และผู้ใช้ไม่เคยใช้ฟีเจอร์นั้น เราจะดาวน์โหลดข้อมูลจำนวนมากโดยไม่มีเหตุผล นอกจากนี้เรายังสามารถตั้งค่าตัวเลือกการดาวน์โหลด เช่น การดึงข้อมูลเฉพาะรุ่นเมื่อเชื่อมต่อกับ wifi หากคุณต้องการให้แน่ใจว่าโมเดลดังกล่าวพร้อมใช้งานแม้ว่าจะไม่ได้เชื่อมต่อเครือข่ายก็ตาม สิ่งสำคัญคือต้องรวมกลุ่มโมเดลดังกล่าวโดยไม่มีแอปเป็นตัวสำรองด้วย

เพื่อความเรียบง่าย เราจะลบโมเดลรวมเริ่มต้นและดาวน์โหลดโมเดลจาก Firebase เสมอเมื่อแอปเริ่มทำงานเป็นครั้งแรก ด้วยวิธีนี้ เมื่อเรียกใช้การวิเคราะห์ความคิดเห็น คุณสามารถมั่นใจได้ว่าการอนุมานกำลังทำงานกับโมเดลที่ได้รับจาก Firebase

ในไฟล์ app/build.gradle.kts ให้เพิ่มการพึ่งพา Firebase Machine Learning

แอป/build.gradle.kts

ค้นหาความคิดเห็นนี้:

// TODO 1: Add Firebase ML dependency

จากนั้นเพิ่ม:

implementation(platform("com.google.firebase:firebase-bom:32.0.0"))
implementation("com.google.firebase:firebase-ml-modeldownloader:24.1.2")

เมื่อ Android Studio ขอให้ซิงค์โปรเจ็กต์ของคุณ ให้เลือก ซิงค์ทันที

จากนั้นมาเพิ่มโค้ดเพื่อดาวน์โหลดโมเดลจาก Firebase

MainActivity.java

ค้นหาความคิดเห็นนี้:

// TODO 2: Implement a method to download TFLite model from Firebase

จากนั้นเพิ่ม:

  /** Download model from Firebase ML. */
  private synchronized void downloadModel(String modelName) {
      CustomModelDownloadConditions conditions = new CustomModelDownloadConditions.Builder()
            .requireWifi()
            .build();
      FirebaseModelDownloader.getInstance()
              .getModel("sentiment_analysis", DownloadType.LOCAL_MODEL, conditions)
              .addOnSuccessListener(model -> {
                  try {
                      // TODO 6: Initialize a TextClassifier with the downloaded model

                      predictButton.setEnabled(true);
                  } catch (IOException e) {
                      Log.e(TAG, "Failed to initialize the model. ", e);
                      Toast.makeText(
                              MainActivity.this,
                              "Model initialization failed.",
                              Toast.LENGTH_LONG)
                              .show();
                      predictButton.setEnabled(false);
                  }
              })
              .addOnFailureListener(e -> {
                      Log.e(TAG, "Failed to download the model. ", e);
                      Toast.makeText(
                              MainActivity.this,
                              "Model download failed, please check your connection.",
                              Toast.LENGTH_LONG)
                              .show();

                      }
              );

}

จากนั้น เรียกเมธอด downloadModel ในเมธอด onCreate ของกิจกรรม

MainActivity.java

ค้นหาความคิดเห็นนี้:

// TODO 3: Call the method to download TFLite model

จากนั้นเพิ่ม:

downloadModel("sentiment_analysis");

11. ผสานรวมโมเดลในแอปของคุณ

ไลบรารีงาน Tensorflow Lite ช่วยให้คุณผสานรวมโมเดล TensorFlow Lite เข้ากับแอปของคุณด้วยโค้ดเพียงไม่กี่บรรทัด เราจะเริ่มต้นอินสแตนซ์ NLClassifier โดยใช้โมเดล TensorFlow Lite ที่ดาวน์โหลดจาก Firebase จากนั้นเราจะใช้มันเพื่อจัดประเภทการป้อนข้อความจากผู้ใช้แอปและแสดงผลบน UI

เพิ่มการพึ่งพา

ไปที่ไฟล์ Gradle ของแอปและเพิ่ม TensorFlow Lite Task Library (ข้อความ) ในการขึ้นต่อกันของแอป

แอพ/build.gradle

ค้นหาความคิดเห็นนี้:

// TODO 4: Add TFLite Task API (Text) dependency

จากนั้นเพิ่ม:

implementation("org.tensorflow:tensorflow-lite-task-text:0.3.0")

เมื่อ Android Studio ขอให้ซิงค์โปรเจ็กต์ของคุณ ให้เลือก ซิงค์ทันที

เริ่มต้นตัวแยกประเภทข้อความ

จากนั้นเราจะโหลดโมเดลการวิเคราะห์ความรู้สึกที่ดาวน์โหลดจาก Firebase โดยใช้ NLClassifier ของไลบรารีงาน

MainActivity.java

มาประกาศตัวแปรอินสแตนซ์ NLClassifier กัน ค้นหาความคิดเห็นนี้:

// TODO 5: Define a NLClassifier variable

จากนั้นเพิ่ม:

private NLClassifier textClassifier;

เริ่มต้นตัวแปร textClassifier ด้วยโมเดลการวิเคราะห์ความรู้สึกที่ดาวน์โหลดจาก Firebase ค้นหาความคิดเห็นนี้:

// TODO 6: Initialize a TextClassifier with the downloaded model

จากนั้นเพิ่ม:

textClassifier = NLClassifier.createFromFile(model.getFile());

จำแนกข้อความ

เมื่อตั้งค่าอินสแตนซ์ textClassifier แล้ว คุณสามารถเรียกใช้การวิเคราะห์ความคิดเห็นได้ด้วยการเรียกเมธอดเดียว

MainActivity.java

ค้นหาความคิดเห็นนี้:

// TODO 7: Run sentiment analysis on the input text

จากนั้นเพิ่ม:

List<Category> results = textClassifier.classify(text);

ดำเนินการหลังการประมวลผล

สุดท้าย เราจะแปลงผลลัพธ์ของโมเดลเป็นข้อความอธิบายเพื่อแสดงบนหน้าจอ

MainActivity.java

ค้นหาความคิดเห็นนี้:

// TODO 8: Convert the result to a human-readable text

ลบรหัสที่สร้างข้อความผลลัพธ์จำลอง:

String textToShow = "Dummy classification result.\n";

จากนั้นเพิ่ม:

String textToShow = "Input: " + text + "\nOutput:\n";
for (int i = 0; i < results.size(); i++) {
  Category result = results.get(i);
  textToShow += String.format("    %s: %s\n", result.getLabel(),
                              result.getScore());
}
textToShow += "---------\n";

12. เรียกใช้แอปสุดท้าย

คุณได้รวมแบบจำลองการวิเคราะห์ความคิดเห็นเข้ากับแอปแล้ว ดังนั้นมาทดสอบกันดีกว่า เชื่อมต่ออุปกรณ์ Android ของคุณแล้วคลิก เรียกใช้ ( ดำเนินการ.png ) ในแถบเครื่องมือ Android Studio

แอปควรจะสามารถคาดการณ์ความคิดเห็นของบทวิจารณ์ภาพยนตร์ที่คุณป้อนได้อย่างถูกต้อง

img/การจัดประเภทข้อความ-result.png

13. เพิ่มพลังให้กับแอปด้วยฟีเจอร์ Firebase เพิ่มเติม

นอกจากการโฮสต์โมเดล TFLite แล้ว Firebase ยังมีฟีเจอร์อื่นๆ อีกหลายรายการเพื่อเพิ่มประสิทธิภาพกรณีการใช้งานแมชชีนเลิร์นนิงของคุณ:

  • การตรวจสอบประสิทธิภาพ Firebase เพื่อวัดความเร็วในการอนุมานโมเดลของคุณที่ทำงานบนอุปกรณ์ของผู้ใช้
  • Firebase Analytics เพื่อวัดว่าโมเดลของคุณทำงานได้ดีเพียงใดในการผลิตโดยการวัดปฏิกิริยาของผู้ใช้
  • การทดสอบ Firebase A/B เพื่อทดสอบโมเดลของคุณหลายเวอร์ชัน
  • คุณจำได้ไหมว่าเราฝึกโมเดล TFLite สองเวอร์ชันก่อนหน้านี้ การทดสอบ A/B เป็นวิธีที่ดีในการค้นหาว่าเวอร์ชันใดมีประสิทธิภาพดีกว่าในการใช้งานจริง!

หากต้องการเรียนรู้เพิ่มเติมเกี่ยวกับวิธีใช้ประโยชน์จากฟีเจอร์เหล่านี้ในแอปของคุณ โปรดดู Codelab ด้านล่าง:

14. ขอแสดงความยินดี!

ใน Codelab นี้ คุณได้เรียนรู้วิธีฝึกโมเดล TFLite สำหรับการวิเคราะห์ความรู้สึกและปรับใช้กับแอปบนอุปกรณ์เคลื่อนที่โดยใช้ Firebase หากต้องการเรียนรู้เพิ่มเติมเกี่ยวกับ TFLite และ Firebase โปรดดู ตัวอย่าง TFLite อื่นๆ และคู่มือ เริ่มต้นใช้ งาน Firebase

สิ่งที่เราได้กล่าวถึง

  • TensorFlow Lite
  • Firebase ML

ขั้นตอนถัดไป

  • วัดความเร็วอนุมานโมเดลของคุณด้วยการตรวจสอบประสิทธิภาพ Firebase
  • ทำให้โมเดลจาก Colab ใช้งานได้โดยตรงกับ Firebase ผ่าน Firebase ML Model Management API
  • เพิ่มกลไกเพื่อให้ผู้ใช้สามารถแสดงความคิดเห็นเกี่ยวกับผลการคาดการณ์ และใช้ Firebase Analytics เพื่อติดตามความคิดเห็นของผู้ใช้
  • ทดสอบ A/B โมเดล Average Word Vector และโมเดล MobileBERT ด้วยการทดสอบ Firebase A/B

เรียนรู้เพิ่มเติม

มีคำถาม?

รายงานปัญหา