1. ภาพรวม
ยินดีต้อนรับสู่การจัดประเภทข้อความด้วย TensorFlow Lite และ Codelab ของ Firebase ใน Codelab นี้ คุณจะได้เรียนรู้วิธีใช้ TensorFlow Lite และ Firebase เพื่อฝึกและปรับใช้โมเดลการจัดหมวดหมู่ข้อความกับแอปของคุณ Codelab นี้อิงตาม ตัวอย่าง TensorFlow Lite นี้
การจัดหมวดหมู่ข้อความเป็นกระบวนการกำหนดแท็กหรือหมวดหมู่ให้กับข้อความตามเนื้อหา นี่เป็นหนึ่งในงานพื้นฐานในการประมวลผลภาษาธรรมชาติ (NLP) ที่มีการนำไปใช้งานในวงกว้าง เช่น การวิเคราะห์ความรู้สึก การติดป้ายกำกับหัวข้อ การตรวจจับสแปม และการตรวจจับเจตนา
การวิเคราะห์ความรู้สึกคือการตีความและการจำแนกอารมณ์ (บวก ลบ และเป็นกลาง) ภายในข้อมูลข้อความโดยใช้เทคนิคการวิเคราะห์ข้อความ การวิเคราะห์ความรู้สึกช่วยให้ธุรกิจสามารถระบุความรู้สึกของลูกค้าต่อผลิตภัณฑ์ แบรนด์ หรือบริการในการสนทนาและคำติชมออนไลน์
บทช่วยสอนนี้แสดงวิธีสร้างแบบจำลองแมชชีนเลิร์นนิงสำหรับการวิเคราะห์ความรู้สึก โดยเฉพาะอย่างยิ่งการจัดประเภทข้อความเป็นบวกหรือลบ นี่คือตัวอย่างของการจำแนกประเภทไบนารีหรือสองชั้น ซึ่งเป็นปัญหาการเรียนรู้ของเครื่องที่สำคัญและนำไปใช้อย่างกว้างขวาง
สิ่งที่คุณจะได้เรียนรู้
- ฝึกฝนโมเดลการวิเคราะห์ความรู้สึกของ TF Lite ด้วย TF Lite Model Maker
- ปรับใช้โมเดล TF Lite กับ Firebase ML และเข้าถึงได้จากแอปของคุณ
- ติดตามความคิดเห็นของผู้ใช้เพื่อวัดความแม่นยำของโมเดลด้วย Firebase Analytics
- ประสิทธิภาพของโมเดลโปรไฟล์ผ่านการตรวจสอบประสิทธิภาพ Firebase
- เลือกว่าโมเดลใดที่ปรับใช้หลายโมเดลจะถูกโหลดผ่าน Remote Config
- ทดลองใช้โมเดลต่างๆ ผ่านการทดสอบ Firebase A/B
สิ่งที่คุณต้องการ
- 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
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 มีประโยชน์ด้วยเหตุผลสองประการ:
- เราสามารถทำให้ขนาดการติดตั้งแอปมีขนาดเล็ก และดาวน์โหลดโมเดลเฉพาะเมื่อจำเป็นเท่านั้น
- โมเดลสามารถอัปเดตได้เป็นประจำและมีรอบการเผยแพร่ที่แตกต่างจากทั้งแอป
โมเดลสามารถติดตั้งใช้งานได้ผ่านคอนโซลหรือโดยทางโปรแกรมโดยใช้ Firebase Admin SDK ในขั้นตอนนี้ เราจะปรับใช้ผ่านคอนโซล
ขั้นแรก เปิด คอนโซล Firebase แล้วคลิก Machine Learning ในแผงการนำทางด้านซ้าย คลิก 'เริ่มต้น' หากคุณเปิดเป็นครั้งแรก จากนั้นไปที่ "กำหนดเอง" และคลิกที่ปุ่ม "เพิ่มโมเดล"
เมื่อได้รับแจ้ง ให้ตั้งชื่อโมเดล sentiment_analysis
และอัปโหลดไฟล์ที่คุณดาวน์โหลดจาก Colab ในขั้นตอนก่อนหน้า
6. ดาวน์โหลดโมเดลจาก Firebase ML
การเลือกเวลาที่จะดาวน์โหลดโมเดลระยะไกลจาก Firebase ลงในแอปของคุณอาจเป็นเรื่องยุ่งยาก เนื่องจากโมเดล TFLite สามารถขยายได้ค่อนข้างใหญ่ ตามหลักการแล้ว เราต้องการหลีกเลี่ยงการโหลดโมเดลทันทีเมื่อแอปเปิดตัว เนื่องจากหากโมเดลของเราใช้สำหรับฟีเจอร์เดียวเท่านั้นและผู้ใช้ไม่เคยใช้ฟีเจอร์นั้น เราจะดาวน์โหลดข้อมูลจำนวนมากโดยไม่มีเหตุผล นอกจากนี้เรายังสามารถตั้งค่าตัวเลือกการดาวน์โหลด เช่น การดึงข้อมูลเฉพาะรุ่นเมื่อเชื่อมต่อกับ wifi หากคุณต้องการให้แน่ใจว่าโมเดลดังกล่าวพร้อมใช้งานแม้ว่าจะไม่ได้เชื่อมต่อเครือข่ายก็ตาม สิ่งสำคัญคือต้องรวมกลุ่มโมเดลดังกล่าวโดยไม่ต้องใช้แอปเป็นตัวสำรอง
เพื่อความเรียบง่าย เราจะลบโมเดลรวมเริ่มต้นและดาวน์โหลดโมเดลจาก 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)) } } }
ใน 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 }
เรียกใช้แอปของคุณอีกครั้ง หลังจากนั้นไม่กี่วินาที คุณจะเห็นบันทึกใน Xcode ระบุว่าดาวน์โหลดโมเดลระยะไกลสำเร็จแล้ว ลองพิมพ์ข้อความและยืนยันว่าพฤติกรรมของแอปไม่เปลี่ยนแปลง
7. ผสานรวมโมเดลในแอปของคุณ
ไลบรารีงาน Tensorflow Lite ช่วยให้คุณผสานรวมโมเดล TensorFlow Lite เข้ากับแอปของคุณด้วยโค้ดเพียงไม่กี่บรรทัด เราจะเริ่มต้นอินสแตนซ์ TFLNLClassifier
โดยใช้โมเดล TensorFlow Lite ที่ดาวน์โหลดจาก Firebase จากนั้นเราจะใช้มันเพื่อจัดประเภทการป้อนข้อความจากผู้ใช้แอปและแสดงผลบน UI
เพิ่มการพึ่งพา
ไปที่ Podfile ของแอปและเพิ่ม TensorFlow Lite Task Library (ข้อความ) ในการขึ้นต่อกันของแอป ตรวจสอบให้แน่ใจว่าคุณเพิ่มการพึ่งพาภายใต้การประกาศ target 'TextClassification'
pod 'TensorFlowLiteTaskText', '~> 0.2.0'
เรียกใช้ pod install
เพื่อติดตั้งการพึ่งพาใหม่
เริ่มต้นตัวแยกประเภทข้อความ
จากนั้นเราจะโหลดโมเดลการวิเคราะห์ความรู้สึกที่ดาวน์โหลดจาก Firebase โดยใช้ NLClassifier
ของไลบรารีงาน
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 ของคุณแล้วคลิก เรียกใช้ ( ) ในแถบเครื่องมือ Xcode
แอปควรจะสามารถคาดการณ์ความคิดเห็นของบทวิจารณ์ภาพยนตร์ที่คุณป้อนได้อย่างถูกต้อง
9. เพิ่มพลังให้กับแอปด้วยฟีเจอร์ Firebase ที่มากขึ้น
นอกจากการโฮสต์โมเดล TFLite แล้ว Firebase ยังมีฟีเจอร์อื่นๆ อีกหลายรายการเพื่อเพิ่มประสิทธิภาพกรณีการใช้งานแมชชีนเลิร์นนิงของคุณ:
- การตรวจสอบประสิทธิภาพ Firebase เพื่อวัดความเร็วในการอนุมานโมเดลของคุณที่ทำงานบนอุปกรณ์ของผู้ใช้
- Firebase Analytics เพื่อวัดว่าโมเดลของคุณทำงานได้ดีเพียงใดในการผลิตโดยการวัดปฏิกิริยาของผู้ใช้
- การทดสอบ Firebase A/B เพื่อทดสอบโมเดลของคุณหลายเวอร์ชัน
- คุณจำได้ไหมว่าเราฝึกโมเดล TFLite สองเวอร์ชันก่อนหน้านี้ การทดสอบ A/B เป็นวิธีที่ดีในการค้นหาว่าเวอร์ชันใดมีประสิทธิภาพดีกว่าในการใช้งานจริง!
หากต้องการเรียนรู้เพิ่มเติมเกี่ยวกับวิธีใช้ประโยชน์จากฟีเจอร์เหล่านี้ในแอปของคุณ โปรดดู Codelab ด้านล่าง:
10. ขอแสดงความยินดี!
ใน 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