1. ภาพรวม
ยินดีต้อนรับสู่ Codelab การจัดประเภทข้อความด้วย TensorFlow Lite และ Firebase ใน Codelab นี้ คุณจะได้เรียนรู้วิธีใช้ TensorFlow Lite และ Firebase เพื่อฝึกและทำให้โมเดลการจัดประเภทข้อความใช้งานได้กับแอปของคุณ Codelab นี้อิงตามตัวอย่าง TensorFlow Lite นี้
การจัดประเภทข้อความคือกระบวนการกำหนดแท็กหรือหมวดหมู่ให้กับข้อความตามเนื้อหา เป็นหนึ่งในงานพื้นฐานในการประมวลผลภาษาธรรมชาติ (NLP) ที่มีการใช้งานอย่างกว้างขวาง เช่น การวิเคราะห์ความรู้สึก การติดป้ายกำกับหัวข้อ การตรวจหาสแปม และการตรวจหาความตั้งใจ
การวิเคราะห์ความรู้สึกคือการตีความและการจัดประเภทอารมณ์ (เชิงบวก เชิงลบ และกลางๆ) ภายในข้อมูลข้อความโดยใช้เทคนิคการวิเคราะห์ข้อความ การวิเคราะห์ความเห็นช่วยให้ธุรกิจระบุความรู้สึกของลูกค้าที่มีต่อผลิตภัณฑ์ แบรนด์ หรือบริการในการสนทนาและการแสดงความคิดเห็นทางออนไลน์ได้
บทแนะนํานี้จะแสดงวิธีสร้างโมเดลแมชชีนเลิร์นนิงสําหรับการวิเคราะห์ความรู้สึก โดยเฉพาะการจัดประเภทข้อความเป็นเชิงบวกหรือเชิงลบ นี่เป็นตัวอย่างการจัดประเภทแบบไบนารีหรือแบบ 2 คลาส ซึ่งเป็นปัญหาแมชชีนเลิร์นนิงประเภทที่สําคัญและนําไปใช้ได้กว้างขวาง
สิ่งที่คุณจะได้เรียนรู้
- ฝึกโมเดลการวิเคราะห์ความเห็นของ 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
( ) จากการดาวน์โหลดโค้ดตัวอย่าง (ไฟล์ > เปิด > .../codelab-textclassification-android-master/start)
ตอนนี้คุณควรเปิดโปรเจ็กต์เริ่มต้นใน Android Studio แล้ว
4. เรียกใช้แอปเริ่มต้น
เมื่อนําเข้าโปรเจ็กต์ไปยัง Android Studio แล้ว คุณก็พร้อมเรียกใช้แอปเป็นครั้งแรก เชื่อมต่ออุปกรณ์ Android แล้วคลิกเรียกใช้ ( ) ในแถบเครื่องมือ Android Studio
แอปจะเปิดขึ้นในอุปกรณ์ ประกอบด้วย UI ง่ายๆ ที่ช่วยให้คุณผสานรวมและทดสอบโมเดลการจัดประเภทข้อความในขั้นตอนถัดไปได้อย่างง่ายดาย ณ จุดนี้ หากคุณพยายามคาดคะเนความรู้สึก แอปจะแสดงผลลัพธ์จำลองเพียงบางส่วนเท่านั้น
5. สร้างโปรเจ็กต์คอนโซล Firebase
เพิ่ม Firebase ลงในโปรเจ็กต์
- ไปที่คอนโซล Firebase
- เลือกเพิ่มโปรเจ็กต์
- เลือกหรือป้อนชื่อโปรเจ็กต์
- ทําตามขั้นตอนการตั้งค่าที่เหลือในคอนโซล Firebase แล้วคลิกสร้างโปรเจ็กต์ (หรือเพิ่ม Firebase หากคุณใช้โปรเจ็กต์ Google ที่มีอยู่)
6. เพิ่ม Firebase ไปยังแอป
- จากหน้าจอภาพรวมของโปรเจ็กต์ใหม่ ให้คลิกไอคอน Android เพื่อเปิดเวิร์กโฟลว์การตั้งค่า
- ป้อนชื่อแพ็กเกจของโค้ดแล็บ:
org.tensorflow.lite.codelabs.textclassification
เพิ่มไฟล์ google-services.json ลงในแอป
หลังจากเพิ่มชื่อแพ็กเกจและเลือกลงทะเบียน** แล้ว ให้คลิกดาวน์โหลด google-services.json** เพื่อรับไฟล์การกำหนดค่า Firebase Android แล้วคัดลอกไฟล์ google-services.json
ไปยังไดเรกทอรี *app
* ในโปรเจ็กต์ของคุณ
เพิ่มปลั๊กอิน google-services ลงในแอป
ทำตามวิธีการในคอนโซล Firebase อัปเดตไฟล์ build.gradle.kts
เพื่อเพิ่ม Firebase ลงในแอป
ปลั๊กอิน google-services ใช้ไฟล์ google-services.json เพื่อกำหนดค่าแอปพลิเคชันของคุณให้ใช้ Firebase
ซิงค์โปรเจ็กต์กับไฟล์ Gradle
คุณควรซิงค์โปรเจ็กต์กับไฟล์ Gradle ในตอนนี้เพื่อให้แน่ใจว่าแอปจะใช้ Dependency ทั้งหมดได้ เลือกไฟล์ > ซิงค์โปรเจ็กต์กับไฟล์ Gradle จากแถบเครื่องมือของ Android Studio
7. เรียกใช้แอปด้วย Firebase
เมื่อกําหนดค่าปลั๊กอิน google-services
ด้วยไฟล์ JSON แล้ว คุณก็พร้อมที่จะเรียกใช้แอปด้วย Firebase เชื่อมต่ออุปกรณ์ Android แล้วคลิกเรียกใช้ ( ) ในแถบเครื่องมือ Android Studio
แอปควรเปิดขึ้นในอุปกรณ์ เมื่อถึงจุดนี้ แอปของคุณควรยังสร้างได้สําเร็จ
8. ฝึกโมเดลการวิเคราะห์ความรู้สึก
เราจะใช้ Model Maker ของ TensorFlow Lite เพื่อฝึกโมเดลการจัดประเภทข้อความเพื่อคาดการณ์ความรู้สึกของข้อความที่ระบุ
ขั้นตอนนี้แสดงเป็นสมุดบันทึก Python ที่คุณเปิดใน Google Colab ได้ คุณเลือกรันไทม์ > ได้ เรียกใช้ทั้งหมดเพื่อเรียกใช้สมุดบันทึกทั้งหมดพร้อมกัน
เปิดใน Colab
หลังจากทำขั้นตอนนี้เรียบร้อยแล้ว คุณจะได้โมเดลการวิเคราะห์ความเห็นของ TensorFlow Lite ที่พร้อมนำไปใช้กับแอปบนอุปกรณ์เคลื่อนที่
9. ทำให้โมเดลใช้งานได้ใน Firebase ML
การทำให้โมเดลใช้งานได้กับ Firebase ML มีประโยชน์เนื่องจากเหตุผลหลัก 2 ประการ ได้แก่
- เราทำให้ขนาดการติดตั้งแอปมีขนาดเล็กและดาวน์โหลดโมเดลเฉพาะเมื่อจำเป็น
- โมเดลนี้อาจได้รับการอัปเดตเป็นประจำและมีรอบการเผยแพร่ที่ต่างจากทั้งแอป
คุณอาจทําให้การนําโมเดลไปใช้ได้ผ่านคอนโซลหรือแบบเป็นโปรแกรมโดยใช้ Firebase Admin SDK ในขั้นตอนนี้ เราจะทำให้ใช้งานได้ผ่านคอนโซล
ก่อนอื่น ให้เปิดคอนโซล Firebase แล้วคลิก Machine Learning ในแผงการนำทางด้านซ้าย คลิก "เริ่มต้นใช้งาน" หากเพิ่งเปิดเป็นครั้งแรก จากนั้นไปที่ "กําหนดเอง" แล้วคลิกปุ่ม "เพิ่มรูปแบบ"
เมื่อได้รับข้อความแจ้ง ให้ตั้งชื่อโมเดล sentiment_analysis
และอัปโหลดไฟล์ที่ดาวน์โหลดจาก Colab ในขั้นตอนก่อนหน้า
10. ดาวน์โหลดโมเดลจาก Firebase ML
การเลือกเวลาที่จะดาวน์โหลดโมเดลระยะไกลจาก Firebase ลงในแอปอาจเป็นเรื่องยุ่งยาก เนื่องจากโมเดล TFLite อาจเติบโตได้ค่อนข้างใหญ่ เราต้องการหลีกเลี่ยงการโหลดโมเดลทันทีเมื่อแอปเปิดขึ้น เนื่องจากหากมีการใช้โมเดลของเราสําหรับฟีเจอร์เดียวและผู้ใช้ไม่เคยใช้ฟีเจอร์นั้นเลย เราจะดาวน์โหลดข้อมูลจํานวนมากโดยไม่มีเหตุผล นอกจากนี้ เรายังตั้งค่าตัวเลือกการดาวน์โหลดได้ เช่น ดึงข้อมูลโมเดลเฉพาะเมื่อเชื่อมต่อ Wi-Fi เท่านั้น หากต้องการให้โมเดลพร้อมใช้งานแม้ว่าจะไม่มีการเชื่อมต่อเครือข่าย คุณควรจัดกลุ่มโมเดลไว้โดยไม่มีแอปเป็นข้อมูลสำรองด้วย
เราจะนําโมเดลที่รวมไว้โดยค่าเริ่มต้นออกและดาวน์โหลดโมเดลจาก Firebase ทุกครั้งที่แอปเริ่มทำงานเป็นครั้งแรกเพื่อความสะดวก วิธีนี้ช่วยให้คุณมั่นใจได้ว่าการอนุมานกำลังทำงานด้วยโมเดลที่มีให้จาก Firebase เมื่อเรียกใช้การวิเคราะห์ความเห็น
ในไฟล์ app/build.gradle.kts
ให้เพิ่มทรัพยากร Dependency ของแมชชีนเลิร์นนิงของ Firebase
app/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 (Text) ในทรัพยากร Dependency ของแอป
app/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 Testing เพื่อทดสอบโมเดลหลายเวอร์ชัน
- คุณยังจำได้ไหมว่าเราได้ฝึกโมเดล TFLite 2 เวอร์ชันก่อนหน้านี้ การทดสอบ 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 กับโมเดลเวกเตอร์คำเฉลี่ยและโมเดล MobileBERT โดยใช้ Firebase A/B Testing
ดูข้อมูลเพิ่มเติม
- เอกสารประกอบเกี่ยวกับแมชชีนเลิร์นนิงของ Firebase
- เอกสารประกอบของ TensorFlow Lite
- วัดประสิทธิภาพแอปด้วย Firebase
- รูปแบบการทดสอบ A/B ด้วย Firebase