1. ภาพรวม
ยินดีต้อนรับสู่การจัดประเภทข้อความด้วย 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
( ) จากการดาวน์โหลดโค้ดตัวอย่าง ( File > Open > .../codelab-textclassification-android-master/start)
ตอนนี้คุณควรเปิดโปรเจ็กต์เริ่มต้นใน Android Studio แล้ว
4. เรียกใช้แอปเริ่มต้น
เมื่อคุณนำเข้าโปรเจ็กต์ลงใน Android Studio แล้ว คุณก็พร้อมที่จะรันแอปเป็นครั้งแรก เชื่อมต่ออุปกรณ์ Android ของคุณแล้วคลิก เรียกใช้ ( ) ในแถบเครื่องมือ Android Studio
แอปควรเปิดบนอุปกรณ์ของคุณ มีเพียง UI ธรรมดาที่ทำให้ง่ายต่อการรวมและทดสอบโมเดลการจัดหมวดหมู่ข้อความในขั้นตอนถัดไป ณ จุดนี้ หากคุณพยายามทำนายความรู้สึก แอปจะส่งกลับผลลัพธ์จำลองเพียงบางส่วนเท่านั้น
5. สร้างโครงการคอนโซล Firebase
เพิ่ม Firebase ให้กับโปรเจ็กต์
- ไปที่ คอนโซล Firebase
- เลือก เพิ่มโครงการ
- เลือกหรือป้อนชื่อโครงการ
- ทำตามขั้นตอนการตั้งค่าที่เหลือในคอนโซล Firebase จากนั้นคลิกสร้างโปรเจ็กต์ (หรือเพิ่ม Firebase หากคุณใช้โปรเจ็กต์ Google ที่มีอยู่)
6. เพิ่ม Firebase ให้กับแอป
- จากหน้าจอภาพรวมของโปรเจ็กต์ใหม่ของคุณ ให้คลิกไอคอน Android เพื่อเปิดเวิร์กโฟลว์การตั้งค่า
- ป้อนชื่อแพ็กเกจของ 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 ของคุณแล้วคลิก เรียกใช้ ( ) ในแถบเครื่องมือ Android Studio
แอปควรเปิดบนอุปกรณ์ของคุณ ณ จุดนี้ แอปของคุณควรยังคงสร้างได้สำเร็จ
8. ฝึกอบรมแบบจำลองการวิเคราะห์ความรู้สึก
เราจะใช้ TensorFlow Lite Model Maker เพื่อฝึกโมเดลการจัดหมวดหมู่ข้อความเพื่อทำนายความรู้สึกของข้อความที่กำหนด
ขั้นตอนนี้จะแสดงเป็นสมุดบันทึก Python ที่คุณสามารถเปิดใน Google Colab ได้ คุณสามารถเลือก รันไทม์ > รันทั้งหมด เพื่อรันโน้ตบุ๊กทั้งหมดในคราวเดียว
เปิดใน Colab
หลังจากเสร็จสิ้นขั้นตอนนี้ คุณจะมีโมเดลการวิเคราะห์ความรู้สึกของ TensorFlow Lite ที่พร้อมสำหรับการปรับใช้กับแอปบนมือถือ
9. ปรับใช้โมเดลกับ Firebase ML
การปรับใช้โมเดลกับ Firebase ML มีประโยชน์ด้วยเหตุผลสองประการ:
- เราสามารถทำให้ขนาดการติดตั้งแอปมีขนาดเล็ก และดาวน์โหลดโมเดลเฉพาะเมื่อจำเป็นเท่านั้น
- โมเดลสามารถอัปเดตได้เป็นประจำและมีรอบการเผยแพร่ที่แตกต่างจากทั้งแอป
โมเดลสามารถติดตั้งใช้งานได้ผ่านคอนโซลหรือโดยทางโปรแกรมโดยใช้ Firebase Admin SDK ในขั้นตอนนี้ เราจะปรับใช้ผ่านคอนโซล
ขั้นแรก เปิด คอนโซล Firebase แล้วคลิก Machine Learning ในแผงการนำทางด้านซ้าย คลิก 'เริ่มต้น' หากคุณเปิดเป็นครั้งแรก จากนั้นไปที่ "กำหนดเอง" และคลิกที่ปุ่ม "เพิ่มโมเดล"
เมื่อได้รับแจ้ง ให้ตั้งชื่อโมเดล sentiment_analysis
และอัปโหลดไฟล์ที่คุณดาวน์โหลดจาก Colab ในขั้นตอนก่อนหน้า
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 ของคุณแล้วคลิก เรียกใช้ ( ) ในแถบเครื่องมือ Android Studio
แอปควรจะสามารถคาดการณ์ความคิดเห็นของบทวิจารณ์ภาพยนตร์ที่คุณป้อนได้อย่างถูกต้อง
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
เรียนรู้เพิ่มเติม
- เอกสารประกอบการเรียนรู้ของเครื่อง Firebase
- เอกสาร TensorFlow Lite
- วัดประสิทธิภาพของแอปด้วย Firebase
- โมเดลการทดสอบ A/B พร้อม Firebase