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
- เลือกโมเดลที่ติดตั้งใช้งานหลายรายการซึ่งจะโหลดผ่านการกำหนดค่าระยะไกล
- ทดลองใช้โมเดลต่างๆ ผ่าน Firebase A/B Testing
สิ่งที่ต้องมี
- Xcode 11 (ขึ้นไป)
- CocoaPods 1.9.1 (หรือสูงกว่า)
คุณจะใช้บทแนะนำนี้อย่างไร
คุณจะให้คะแนนประสบการณ์ในการสร้างแอป Android เท่าใด
2. สร้างโปรเจ็กต์คอนโซล Firebase
เพิ่ม Firebase ลงในโปรเจ็กต์
- ไปที่คอนโซล Firebase
- เลือกสร้างโปรเจ็กต์ใหม่ แล้วตั้งชื่อโปรเจ็กต์ว่า "Codelab Firebase ML iOS"
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'
ในเมธอดของ AppDelegate
didFinishLaunchingWithOptions
ให้นำเข้า Firebase ที่ด้านบนของไฟล์
import FirebaseCore
และเพิ่มการเรียกเพื่อกำหนดค่า Firebase
FirebaseApp.configure()
เรียกใช้โปรเจ็กต์อีกครั้งเพื่อให้แน่ใจว่าได้กำหนดค่าแอปอย่างถูกต้องและแอปไม่ขัดข้องเมื่อเปิดตัว
4. ฝึกโมเดลการวิเคราะห์ความเห็น
เราจะใช้ TensorFlow Lite Model Maker เพื่อฝึกโมเดลการจัดประเภทข้อความเพื่อคาดการณ์ความรู้สึกของข้อความที่กำหนด
ขั้นตอนนี้จะแสดงเป็น Notebook ของ Python ที่คุณเปิดได้ใน Google Colab
เปิดใน Colab
หลังจากทำขั้นตอนนี้เสร็จแล้ว คุณจะมีโมเดลวิเคราะห์ความรู้สึกของ TensorFlow Lite ที่พร้อมสำหรับการนำไปใช้กับแอปบนอุปกรณ์เคลื่อนที่
5. ทําให้โมเดลใช้งานได้ใน Firebase ML
การทําให้โมเดลใช้งานได้ใน Firebase ML มีประโยชน์ด้วยเหตุผลหลัก 2 ประการ ดังนี้
- เราสามารถทำให้ขนาดการติดตั้งแอปมีขนาดเล็กและดาวน์โหลดโมเดลเฉพาะในกรณีที่จำเป็นเท่านั้น
- อัปเดตโมเดลได้เป็นประจำและมีรอบการเผยแพร่ที่แตกต่างจากแอปทั้งหมด
คุณสามารถติดตั้งใช้งานโมเดลผ่านคอนโซลหรือโดยอัตโนมัติโดยใช้ Firebase Admin SDK ในขั้นตอนนี้ เราจะติดตั้งใช้งานผ่านคอนโซล
ก่อนอื่น ให้เปิดคอนโซล Firebase แล้วคลิกแมชชีนเลิร์นนิงในแผงการนำทางด้านซ้าย คลิก "เริ่มต้นใช้งาน" หากเปิดเป็นครั้งแรก จากนั้นไปที่ "กำหนดเอง" แล้วคลิกปุ่ม "เพิ่มโมเดล"
เมื่อได้รับข้อความแจ้ง ให้ตั้งชื่อโมเดลเป็น sentiment_analysis
แล้วอัปโหลดไฟล์ที่คุณดาวน์โหลดจาก Colab ในขั้นตอนก่อนหน้า
6. ดาวน์โหลดโมเดลจาก Firebase ML
การเลือกเวลาที่จะดาวน์โหลดโมเดลระยะไกลจาก Firebase ลงในแอปอาจเป็นเรื่องยาก เนื่องจากโมเดล TFLite อาจมีขนาดค่อนข้างใหญ่ เราต้องการหลีกเลี่ยงการโหลดโมเดลทันทีเมื่อแอปเปิดตัว เนื่องจากหากโมเดลของเราใช้สำหรับฟีเจอร์เดียวและผู้ใช้ไม่เคยใช้ฟีเจอร์นั้น เราจะดาวน์โหลดข้อมูลจำนวนมากโดยไม่มีเหตุผล นอกจากนี้ เรายังตั้งค่าตัวเลือกการดาวน์โหลดได้ เช่น ดึงข้อมูลโมเดลเมื่อเชื่อมต่อกับ Wi-Fi เท่านั้น หากต้องการให้มั่นใจว่าโมเดลพร้อมใช้งานแม้จะไม่ได้เชื่อมต่อเครือข่าย คุณควรจัดกลุ่มโมเดลดังกล่าวโดยไม่รวมแอปเป็นข้อมูลสำรองด้วย
เพื่อความสะดวก เราจะนำโมเดลเริ่มต้นที่รวมไว้และดาวน์โหลดโมเดลจาก Firebase เสมอเมื่อแอปเริ่มทำงานเป็นครั้งแรก ด้วยวิธีนี้ เมื่อเรียกใช้การวิเคราะห์ความรู้สึก คุณจะมั่นใจได้ว่าการอนุมานจะทํางานกับโมเดลที่ได้จาก Firebase
ที่ด้านบนของ ModelLoader.swift
ให้นำเข้าโมดูล Firebase
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)) } } }
ใน ViewController.swift
ของ viewDidLoad
ให้แทนที่การเรียกใช้ 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 ช่วยให้คุณผสานรวมโมเดล TensorFlow Lite เข้ากับแอปได้โดยใช้โค้ดเพียงไม่กี่บรรทัด เราจะเริ่มต้นอินสแตนซ์ TFLNLClassifier
โดยใช้โมเดล TensorFlow Lite ที่ดาวน์โหลดจาก Firebase จากนั้นเราจะใช้ข้อมูลดังกล่าวเพื่อจัดประเภทข้อความที่ผู้ใช้แอปป้อนและแสดงผลลัพธ์ใน UI
เพิ่มการอ้างอิง
ไปที่ Podfile ของแอป แล้วเพิ่ม TensorFlow Lite Task Library (ข้อความ) ในทรัพยากร Dependency ของแอป ตรวจสอบว่าคุณได้เพิ่มการอ้างอิงภายใต้การประกาศ target 'TextClassification'
pod 'TensorFlowLiteTaskText', '~> 0.2.0'
เรียกใช้ pod install
เพื่อติดตั้งทรัพยากร Dependency ใหม่
เริ่มต้นตัวแยกประเภทข้อความ
จากนั้นเราจะโหลดโมเดลการวิเคราะห์ความรู้สึกที่ดาวน์โหลดจาก Firebase โดยใช้ NLClassifier
ของ Task Library
ViewController.swift
มาประกาศตัวแปรอินสแตนซ์ TFLNLClassifier กัน ที่ด้านบนของไฟล์ ให้นำเข้าการอ้างอิงใหม่
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 แล้วคลิก Run ( ) ในแถบเครื่องมือ Xcode
แอปควรคาดการณ์ความรู้สึกของรีวิวภาพยนตร์ที่คุณป้อนได้อย่างถูกต้อง
9. เพิ่มประสิทธิภาพแอปด้วยฟีเจอร์ Firebase เพิ่มเติม
นอกจากโฮสต์โมเดล TFLite แล้ว Firebase ยังมีฟีเจอร์อื่นๆ อีกหลายอย่างที่จะช่วยเพิ่มประสิทธิภาพกรณีการใช้งานแมชชีนเลิร์นนิงของคุณ
- การตรวจสอบประสิทธิภาพ Firebase เพื่อวัดความเร็วในการอนุมานโมเดลที่ทำงานบนอุปกรณ์ของผู้ใช้
- Firebase Analytics เพื่อวัดประสิทธิภาพของโมเดลในเวอร์ชันที่ใช้งานจริงโดยวัดปฏิกิริยาของผู้ใช้
- Firebase A/B Testing เพื่อทดสอบโมเดลหลายเวอร์ชัน
- คุณจำได้ไหมว่าเราฝึกโมเดล TFLite 2 เวอร์ชันไปก่อนหน้านี้ การทดสอบ A/B เป็นวิธีที่ดีในการดูว่าเวอร์ชันใดมีประสิทธิภาพดีกว่าในเวอร์ชันที่ใช้งานจริง
ดูข้อมูลเพิ่มเติมเกี่ยวกับวิธีใช้ประโยชน์จากฟีเจอร์เหล่านี้ในแอปได้ที่ Codelab ด้านล่าง
10. ยินดีด้วย
ในโค้ดแล็บนี้ คุณได้เรียนรู้วิธีฝึกโมเดล 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 Machine Learning
- เอกสารประกอบ TensorFlow Lite
- วัดประสิทธิภาพแอปด้วย Firebase
- โมเดลการทดสอบ A/B ด้วย Firebase