1. ภาพรวม

ยินดีต้อนรับสู่ Codelab การจัดประเภทข้อความด้วย TensorFlow Lite และ Firebase ใน Codelab นี้ คุณจะได้เรียนรู้วิธีใช้ TensorFlow Lite และ Firebase เพื่อฝึกและทำให้โมเดลการจัดประเภทข้อความใช้งานได้ในแอป Codelab นี้อิงตามตัวอย่าง TensorFlow Lite นี้
การจัดประเภทข้อความคือกระบวนการกำหนดแท็กหรือหมวดหมู่ให้กับข้อความตามเนื้อหา ซึ่งเป็นหนึ่งในงานพื้นฐานในการประมวลผลภาษาธรรมชาติ (NLP) ที่มีการใช้งานอย่างกว้างขวาง เช่น การวิเคราะห์ความเห็น การติดป้ายกำกับหัวข้อ การตรวจจับสแปม และการตรวจหาความตั้งใจ
การวิเคราะห์ความเห็นคือการตีความและจัดประเภทอารมณ์ (เชิงบวก เชิงลบ และเป็นกลาง) ภายในข้อมูลข้อความโดยใช้เทคนิคการวิเคราะห์ข้อความ การวิเคราะห์ความเห็นช่วยให้ธุรกิจระบุความรู้สึกของลูกค้าที่มีต่อผลิตภัณฑ์ แบรนด์ หรือบริการในการสนทนาออนไลน์และความคิดเห็น
บทแนะนำนี้แสดงวิธีสร้างโมเดลแมชชีนเลิร์นนิงสำหรับการวิเคราะห์ความพึงพอใจ โดยเฉพาะอย่างยิ่งการจัดประเภทข้อความเป็นเชิงบวกหรือเชิงลบ นี่เป็นตัวอย่างของการจัดประเภทแบบไบนารีหรือแบบ 2 คลาส ซึ่งเป็นปัญหาแมชชีนเลิร์นนิงประเภทหนึ่งที่สำคัญและมีการใช้งานอย่างกว้างขวาง
สิ่งที่คุณจะได้เรียนรู้
- ฝึกโมเดลการวิเคราะห์ความเห็น TF Lite ด้วย TF Lite Model Maker
- ทำให้โมเดล TF Lite ใช้งานได้กับ Firebase ML และเข้าถึงโมเดลจากแอป
- ติดตามความคิดเห็นของผู้ใช้เพื่อวัดความถูกต้องของโมเดลด้วย Firebase Analytics
- สร้างโปรไฟล์ประสิทธิภาพของโมเดลผ่าน Firebase Performance Monitoring
- เลือกโมเดลที่จะโหลดจากโมเดลที่ทำให้ใช้งานได้หลายโมเดลผ่านการกำหนดค่าระยะไกล
- ทดลองใช้โมเดลต่างๆ ผ่าน Firebase A/B Testing
สิ่งที่ต้องมี
- Xcode 11 (ขึ้นไป)
- CocoaPods 1.9.1 (ขึ้นไป)
คุณจะใช้บทแนะนำนี้อย่างไร
คุณจะให้คะแนนประสบการณ์ในการสร้างแอป Android เท่าใด
2. สร้างโปรเจ็กต์คอนโซล Firebase
เพิ่ม Firebase ลงในโปรเจ็กต์
- ไปที่ คอนโซล Firebase
- เลือกสร้างโปรเจ็กต์ใหม่ และตั้งชื่อโปรเจ็กต์ว่า "Firebase ML iOS Codelab"
3. รับโปรเจ็กต์ตัวอย่าง
ดาวน์โหลดโค้ด
เริ่มต้นด้วยการโคลนโปรเจ็กต์ตัวอย่างและเรียกใช้ pod update ในไดเรกทอรีโปรเจ็กต์
git clone https://github.com/FirebaseExtended/codelab-textclassification-ios.git cd codelab-textclassification-ios pod install --repo-update
หากไม่ได้ติดตั้ง Git ไว้ คุณยังดาวน์โหลดโปรเจ็กต์ตัวอย่างได้จากหน้า GitHub หรือโดยคลิกที่ ลิงก์นี้ เมื่อดาวน์โหลดโปรเจ็กต์แล้ว ให้ดำเนินการใน Xcode และลองใช้การจัดประเภทข้อความเพื่อดูว่าการจัดประเภทข้อความทำงานอย่างไร
ตั้งค่า Firebase
ทำตาม เอกสารประกอบ เพื่อสร้างโปรเจ็กต์ Firebase ใหม่ เมื่อมีโปรเจ็กต์แล้ว ให้ดาวน์โหลดไฟล์ GoogleService-Info.plist ของโปรเจ็กต์จาก คอนโซล Firebase แล้วลากไฟล์ดังกล่าวไปที่รากของโปรเจ็กต์ Xcode

เพิ่ม Firebase ลงใน Podfile แล้วเรียกใช้ pod install
pod 'FirebaseMLModelDownloader', '9.3.0-beta'
ในเมธอด didFinishLaunchingWithOptions ของ AppDelegate ให้นำเข้า Firebase ที่ด้านบนของไฟล์
import FirebaseCore
และเพิ่มการเรียกเพื่อกำหนดค่า Firebase
FirebaseApp.configure()
เรียกใช้โปรเจ็กต์อีกครั้งเพื่อให้แน่ใจว่าแอปได้รับการกำหนดค่าอย่างถูกต้องและไม่ขัดข้องเมื่อเปิดตัว
4. ฝึกโมเดลการวิเคราะห์ความเห็น
เราจะใช้ TensorFlow Lite Model Maker เพื่อฝึกโมเดลการจัดประเภทข้อความเพื่อคาดการณ์ความพึงพอใจของข้อความที่กำหนด
ขั้นตอนนี้จะแสดงเป็นสมุดบันทึก Python ที่คุณสามารถเปิดใน Google Colab ได้
เปิดใน Colab
หลังจากทำขั้นตอนนี้เสร็จแล้ว คุณจะมีโมเดลการวิเคราะห์ความเห็น TensorFlow Lite ที่พร้อมสำหรับการทำให้ใช้งานได้ในแอปบนอุปกรณ์เคลื่อนที่
5. ทำให้โมเดลใช้งานได้กับ Firebase ML
การทำให้โมเดลใช้งานได้กับ Firebase ML มีประโยชน์หลักๆ 2 ประการ
- เราสามารถรักษาสถานะขนาดการติดตั้งแอปให้มีขนาดเล็ก และดาวน์โหลดโมเดลเฉพาะเมื่อจำเป็นเท่านั้น
- โมเดลสามารถอัปเดตเป็นประจำและมีรอบการเผยแพร่ที่แตกต่างจากแอปทั้งหมด
คุณทำให้โมเดลใช้งานได้ผ่านคอนโซลหรือโดยอัตโนมัติโดยใช้ Firebase Admin SDK ในขั้นตอนนี้ เราจะทำให้ใช้งานได้ผ่านคอนโซล
ขั้นแรก ให้เปิด คอนโซล Firebase แล้วคลิก Machine Learning ในแผงการนำทางด้านซ้าย คลิก "เริ่มต้นใช้งาน" หากคุณเปิดฟีเจอร์นี้เป็นครั้งแรก จากนั้นไปที่ "กำหนดเอง" แล้วคลิกปุ่ม "เพิ่มโมเดล"
เมื่อได้รับข้อความแจ้ง ให้ตั้งชื่อโมเดลว่า sentiment_analysis และอัปโหลดไฟล์ที่คุณดาวน์โหลดจาก Colab ในขั้นตอนก่อนหน้า

6. ดาวน์โหลดโมเดลจาก Firebase ML
การเลือกเวลาที่จะดาวน์โหลดโมเดลระยะไกลจาก Firebase ลงในแอปอาจเป็นเรื่องยาก เนื่องจากโมเดล TFLite อาจมีขนาดค่อนข้างใหญ่ เราควรหลีกเลี่ยงการโหลดโมเดลทันทีเมื่อเปิดตัวแอป เนื่องจากหากโมเดลของเราใช้สำหรับฟีเจอร์เดียวและผู้ใช้ไม่เคยใช้ฟีเจอร์นั้น เราก็จะดาวน์โหลดข้อมูลจำนวนมากโดยไม่มีเหตุผล นอกจากนี้ เรายังตั้งค่าตัวเลือกการดาวน์โหลด เช่น การดึงข้อมูลโมเดลเฉพาะเมื่อเชื่อมต่อกับ Wi-Fi ได้ด้วย หากต้องการให้แน่ใจว่าโมเดลพร้อมใช้งานแม้ว่าจะไม่มีการเชื่อมต่อเครือข่าย คุณควรจัดกลุ่มโมเดลไว้โดยไม่รวมแอปเป็นข้อมูลสำรองด้วย
เพื่อให้ง่ายขึ้น เราจะนำโมเดลที่จัดกลุ่มไว้เริ่มต้นออกและดาวน์โหลดโมเดลจาก Firebase ทุกครั้งเมื่อแอปเริ่มต้นเป็นครั้งแรก วิธีนี้จะช่วยให้คุณมั่นใจได้ว่าเมื่อเรียกใช้การวิเคราะห์ความเห็น การอนุมานจะทำงานกับโมเดลที่มาจาก Firebase
นำเข้าโมดูล Firebase ที่ด้านบนของ ModelLoader.swift
import FirebaseCore import FirebaseMLModelDownloader
จากนั้นใช้เมธอดต่อไปนี้
static func downloadModel(named name: String,
completion: @escaping (CustomModel?, DownloadError?) -> Void) {
guard FirebaseApp.app() != nil else {
completion(nil, .firebaseNotInitialized)
return
}
guard success == nil && failure == nil else {
completion(nil, .downloadInProgress)
return
}
let conditions = ModelDownloadConditions(allowsCellularAccess: false)
ModelDownloader.modelDownloader().getModel(name: name, downloadType: .localModelUpdateInBackground, conditions: conditions) { result in
switch (result) {
case .success(let customModel):
// Download complete.
// The CustomModel object contains the local path of the model file,
// which you can use to instantiate a TensorFlow Lite classifier.
return completion(customModel, nil)
case .failure(let error):
// Download was unsuccessful. Notify error message.
completion(nil, .downloadFailed(underlyingError: error))
}
}
}
ใน viewDidLoad ของ ViewController.swift ให้แทนที่การเรียก loadModel() ด้วยเมธอดการดาวน์โหลดโมเดลใหม่
// Download the model from Firebase
print("Fetching model...")
ModelLoader.downloadModel(named: "sentiment_analysis") { (customModel, error) in
guard let customModel = customModel else {
if let error = error {
print(error)
}
return
}
print("Model download complete")
// TODO: Initialize an NLClassifier from the downloaded model
}
เรียกใช้แอปอีกครั้ง หลังจากผ่านไป 2-3 วินาที คุณควรเห็นบันทึกใน Xcode ที่ระบุว่าดาวน์โหลดโมเดลระยะไกลเรียบร้อยแล้ว ลองพิมพ์ข้อความและยืนยันว่าลักษณะการทำงานของแอปไม่เปลี่ยนแปลง
7. ผสานรวมโมเดลในแอป
Tensorflow Lite Task Library ช่วยให้คุณผสานรวมโมเดล TensorFlow Lite เข้ากับแอปได้ด้วยโค้ดเพียงไม่กี่บรรทัด เราจะเริ่มต้นอินสแตนซ์ TFLNLClassifier โดยใช้โมเดล TensorFlow Lite ที่ดาวน์โหลดจาก Firebase จากนั้นเราจะใช้โมเดลนี้เพื่อจัดประเภทข้อความที่ผู้ใช้แอปป้อนและแสดงผลลัพธ์ใน UI
เพิ่มทรัพยากร Dependency
ไปที่ Podfile ของแอปและเพิ่ม TensorFlow Lite Task Library (Text) ในทรัพยากร Dependency ของแอป ตรวจสอบว่าคุณได้เพิ่มทรัพยากร Dependency ไว้ภายใต้การประกาศ target 'TextClassification'
pod 'TensorFlowLiteTaskText', '~> 0.2.0'
เรียกใช้ pod install เพื่อติดตั้งทรัพยากร Dependency ใหม่
เริ่มต้นตัวจัดประเภทข้อความ
จากนั้นเราจะโหลดโมเดลการวิเคราะห์ความเห็นที่ดาวน์โหลดจาก Firebase โดยใช้ NLClassifier ของ Task Library
ViewController.swift
ประกาศตัวแปรอินสแตนซ์ TFLNLClassifier นำเข้าทรัพยากร Dependency ใหม่ที่ด้านบนของไฟล์
import TensorFlowLiteTaskText
ค้นหาความคิดเห็นนี้เหนือเมธอดที่เราแก้ไขในขั้นตอนสุดท้าย
// TODO: Add a TFLNLClassifier property.
แทนที่ TODO ด้วยโค้ดต่อไปนี้
private var classifier: TFLNLClassifier?
เริ่มต้นตัวแปร textClassifier ด้วยโมเดลการวิเคราะห์ความเห็นที่ดาวน์โหลดจาก Firebase ค้นหาความคิดเห็นที่เราเพิ่มในขั้นตอนสุดท้าย
// TODO: Initialize an NLClassifier from the downloaded model
แทนที่ TODO ด้วยโค้ดต่อไปนี้
let options = TFLNLClassifierOptions()
self.classifier = TFLNLClassifier.nlClassifier(modelPath: customModel.path, options: options)
จัดประเภทข้อความ
เมื่อตั้งค่าอินสแตนซ์ classifier แล้ว คุณจะเรียกใช้การวิเคราะห์ความเห็นได้ด้วยการเรียกใช้เมธอดเดียว
ViewController.swift
ในเมธอด classify(text:) ให้ค้นหาความคิดเห็น TODO
// TODO: Run sentiment analysis on the input text
แทนที่ความคิดเห็นด้วยโค้ดต่อไปนี้
guard let classifier = self.classifier else { return }
// Classify the text
let classifierResults = classifier.classify(text: text)
// Append the results to the list of results
let result = ClassificationResult(text: text, results: classifierResults)
results.append(result)
8. เรียกใช้แอปสุดท้าย
คุณได้ผสานรวมโมเดลการวิเคราะห์ความเห็นเข้ากับแอปแล้ว ดังนั้นมาทดสอบกัน เชื่อมต่ออุปกรณ์ iOS แล้วคลิกเรียกใช้ (
) ในแถบเครื่องมือ Xcode
แอปควรคาดการณ์ความพึงพอใจของรีวิวภาพยนตร์ที่คุณป้อนได้อย่างถูกต้อง

9. เพิ่มประสิทธิภาพแอปด้วยฟีเจอร์ Firebase เพิ่มเติม
นอกจากการโฮสต์โมเดล TFLite แล้ว Firebase ยังมีฟีเจอร์อื่นๆ อีกมากมายที่จะช่วยเพิ่มประสิทธิภาพกรณีการใช้งานแมชชีนเลิร์นนิง
- Firebase Performance Monitoring เพื่อวัดความเร็วในการอนุมานของโมเดลที่ทำงานบนอุปกรณ์ของผู้ใช้
- Firebase Analytics เพื่อวัดประสิทธิภาพของโมเดลในการใช้งานจริงโดยวัดจากปฏิกิริยาของผู้ใช้
- Firebase A/B Testing เพื่อทดสอบโมเดลหลายเวอร์ชัน
- จำได้ไหมว่าเราฝึกโมเดล TFLite 2 เวอร์ชันก่อนหน้านี้ การทดสอบ A/B เป็นวิธีที่ดีในการดูว่าเวอร์ชันใดทำงานได้ดีกว่าในการใช้งานจริง
ดูข้อมูลเพิ่มเติมเกี่ยวกับวิธีใช้ประโยชน์จากฟีเจอร์เหล่านี้ในแอปได้ที่ Codelab ด้านล่าง
10. ยินดีด้วย
ใน Codelab นี้ คุณได้เรียนรู้วิธีฝึกโมเดลการวิเคราะห์ความเห็น TFLite และทำให้โมเดลใช้งานได้ในแอปบนอุปกรณ์เคลื่อนที่โดยใช้ Firebase ดูข้อมูลเพิ่มเติมเกี่ยวกับ TFLite และ Firebase ได้ที่ตัวอย่าง TFLite อื่นๆ และคู่มือ เริ่มต้นใช้งาน Firebase
สิ่งที่เราได้พูดถึงไปแล้ว
- TensorFlow Lite
- Firebase ML
ขั้นตอนถัดไป
- วัดความเร็วในการอนุมานของโมเดลด้วย Firebase Performance Monitoring
- ทำให้โมเดลใช้งานได้จาก Colab ไปยัง Firebase โดยตรงผ่าน Firebase ML Model Management API
- เพิ่มกลไกเพื่อให้ผู้ใช้แสดงความคิดเห็นเกี่ยวกับผลการคาดการณ์ และใช้ Firebase Analytics เพื่อติดตามความคิดเห็นของผู้ใช้
- ทดสอบ A/B โมเดล Average Word Vector และโมเดล MobileBERT ด้วย Firebase A/B Testing
ดูข้อมูลเพิ่มเติม
- เอกสารประกอบของ Firebase Machine Learning
- เอกสารประกอบของ TensorFlow Lite
- วัดประสิทธิภาพของแอปด้วย Firebase
- ทดสอบ A/B โมเดลด้วย Firebase