เพิ่มการจัดประเภทข้อความในอุปกรณ์ลงในแอปด้วย TensorFlow Lite และ Firebase - iOS Codelab

เพิ่มการจัดประเภทข้อความในอุปกรณ์ลงในแอปด้วย TensorFlow Lite และ Firebase - iOS Codelab

เกี่ยวกับ Codelab นี้

subjectอัปเดตล่าสุดเมื่อ ก.ย. 4, 2024
account_circleเขียนโดย ulukaya@, morganchen@

1 ภาพรวม

การจำแนกประเภท_ผลลัพธ์_หน้าจอ.png

ยินดีต้อนรับสู่การจำแนกประเภทข้อความด้วย TensorFlow Lite และ Firebase Codelab ใน Codelab นี้ คุณจะได้เรียนรู้วิธีใช้ TensorFlow Lite และ Firebase เพื่อฝึกและทำให้โมเดลการจัดประเภทข้อความใช้งานได้กับแอปของคุณ Codelab นี้อิงตามตัวอย่าง TensorFlow Lite นี้

การจัดประเภทข้อความเป็นกระบวนการกำหนดแท็กหรือหมวดหมู่ให้กับข้อความตามเนื้อหา ซึ่งเป็นงานพื้นฐานอย่างหนึ่งในการประมวลผลภาษาธรรมชาติ (NLP) ที่มีการใช้งานอย่างกว้างๆ เช่น การวิเคราะห์ความเห็น การติดป้ายกำกับหัวข้อ การตรวจจับสแปม และการตรวจจับความตั้งใจ

การวิเคราะห์ความรู้สึกคือการแปลความหมายและการจำแนกอารมณ์ (แง่บวก ลบ และกลาง) ภายในข้อมูลข้อความโดยใช้เทคนิคการวิเคราะห์ข้อความ การวิเคราะห์ความเห็นช่วยให้ธุรกิจระบุความรู้สึกของลูกค้าที่มีต่อผลิตภัณฑ์ แบรนด์ หรือบริการในการสนทนาและการแสดงความคิดเห็นทางออนไลน์ได้

บทแนะนํานี้จะแสดงวิธีสร้างโมเดลแมชชีนเลิร์นนิงสําหรับการวิเคราะห์ความเห็น โดยเฉพาะการจำแนกข้อความเป็นเชิงบวกหรือเชิงลบ นี่คือตัวอย่างของการจำแนกประเภทแบบไบนารีหรือ 2 คลาส ซึ่งเป็นปัญหาประเภทหนึ่งที่สำคัญและใช้ได้ในวงกว้าง

สิ่งที่คุณจะได้เรียนรู้

  • ฝึกโมเดลการวิเคราะห์ความเห็นของ TF Lite ด้วยโมเดลโมเดล TF Lite
  • ทำให้โมเดล TF Lite ใช้งานได้ใน Firebase ML และเข้าถึงได้จากแอปของคุณ
  • ติดตามความคิดเห็นของผู้ใช้เพื่อวัดความแม่นยำของโมเดลด้วย Firebase Analytics
  • ประสิทธิภาพของโมเดลโปรไฟล์ผ่านการตรวจสอบประสิทธิภาพของ Firebase
  • เลือกโมเดลที่ทำให้ใช้งานได้แล้วซึ่งโหลดผ่านการกำหนดค่าระยะไกล
  • ทดลองใช้รูปแบบต่างๆ ผ่าน Firebase A/B Testing

สิ่งที่ต้องมี

  • Xcode 11 (หรือสูงกว่า)
  • CocoaPods 1.9.1 (หรือสูงกว่า)

คุณจะใช้บทแนะนำนี้อย่างไร

คุณจะให้คะแนนประสบการณ์ในการสร้างแอป Android ของคุณมากน้อยเพียงใด

2 สร้างโปรเจ็กต์คอนโซล Firebase

เพิ่ม Firebase ไปยังโปรเจ็กต์

  1. ไปที่คอนโซล Firebase
  2. เลือกสร้างโปรเจ็กต์ใหม่ และตั้งชื่อโปรเจ็กต์เป็น "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

9efb62a92f27e939.png

เพิ่ม Firebase ไปยัง Podfile และเรียกใช้การติดตั้งพ็อด

pod 'FirebaseMLModelDownloader', '9.3.0-beta'

ในเมธอด didFinishLaunchingWithOptions ของ AppDelegate ให้นำเข้า Firebase ที่ด้านบนของไฟล์

import FirebaseCore

และเพิ่มการเรียกใช้เพื่อกำหนดค่า Firebase

FirebaseApp.configure()

เรียกใช้โปรเจ็กต์อีกครั้งเพื่อตรวจสอบว่าแอปได้รับการกำหนดค่าอย่างถูกต้องและไม่ขัดข้องเมื่อเปิดใช้

4 ฝึกโมเดลการวิเคราะห์ความเห็น

เราจะใช้ Model Maker ของ TensorFlow Lite เพื่อฝึกโมเดลการจัดประเภทข้อความเพื่อคาดการณ์ความรู้สึกของข้อความที่ระบุ

ขั้นตอนนี้แสดงเป็นสมุดบันทึก Python ที่คุณเปิดใน Google Colab ได้

เปิดใน Colab

หลังจากเสร็จสิ้นขั้นตอนนี้ คุณจะได้โมเดลการวิเคราะห์ความเห็นของ TensorFlow Lite ที่พร้อมสำหรับการทำให้ใช้งานได้ในแอปบนอุปกรณ์เคลื่อนที่

5 ทำให้โมเดลใช้งานได้กับ Firebase ML

การทำให้โมเดลใช้งานได้กับ Firebase ML มีประโยชน์เนื่องจากเหตุผลหลัก 2 ประการ ได้แก่

  1. เราสามารถทำให้การติดตั้งแอปมีขนาดเล็กและดาวน์โหลดโมเดลได้เมื่อจำเป็นเท่านั้น
  2. โมเดลนี้อาจได้รับการอัปเดตเป็นประจำและมีรอบการเผยแพร่ที่ต่างจากทั้งแอป

คุณสามารถทำให้โมเดลใช้งานได้ผ่านคอนโซลหรือแบบเป็นโปรแกรมโดยใช้ Firebase Admin SDK ในขั้นตอนนี้ เราจะติดตั้งใช้งานผ่านคอนโซล

ขั้นแรก ให้เปิดคอนโซล Firebase แล้วคลิกที่แมชชีนเลิร์นนิงในแผงการนำทางด้านซ้าย คลิก "เริ่มต้นใช้งาน" หากเพิ่งเปิดเป็นครั้งแรก จากนั้นไปที่ "กำหนดเอง" แล้วคลิก "เพิ่มโมเดล"

เมื่อได้รับข้อความแจ้ง ให้ตั้งชื่อโมเดล sentiment_analysis และอัปโหลดไฟล์ที่คุณดาวน์โหลดจาก Colab ในขั้นตอนก่อนหน้า

3c3c50e6ef12b3b.png

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))
          }
  }
}

ใน 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 ผสานรวมโมเดลในแอปของคุณ

Task Library ของ Tensorflow Lite ช่วยให้คุณผสานรวมโมเดล 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 ของไลบรารีงาน

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 แล้วคลิก Run ( ดำเนินการ.png) ในแถบเครื่องมือ Xcode

แอปควรคาดการณ์ความรู้สึกของรีวิวภาพยนตร์ที่คุณป้อนได้อย่างถูกต้อง

การจำแนกประเภท_ผลลัพธ์_หน้าจอ.png

9 เพิ่มประสิทธิภาพแอปด้วยฟีเจอร์ของ Firebase เพิ่มเติม

นอกจากโฮสติ้งโมเดล TFLite แล้ว Firebase ยังมีฟีเจอร์อื่นๆ อีกมากมายเพื่อเพิ่มประสิทธิภาพให้กับกรณีการใช้งานของแมชชีนเลิร์นนิงดังนี้

  • การตรวจสอบประสิทธิภาพของ Firebase เพื่อวัดความเร็วในการอนุมานโมเดลของคุณที่ทำงานอยู่สำหรับผู้ใช้ อุปกรณ์
  • Firebase Analytics เพื่อวัดประสิทธิภาพของโมเดลในเวอร์ชันที่ใช้งานจริงด้วยการวัดปฏิกิริยาของผู้ใช้
  • Firebase A/B Testing เพื่อทดสอบโมเดลหลายเวอร์ชัน
  • จำได้ไหมว่าเราฝึกโมเดล TFLite 2 เวอร์ชันก่อนหน้านี้ การทดสอบ 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 กับรูปแบบค่าเฉลี่ยของ Word Vector และโมเดล MobileBERT ด้วย Firebase A/B Testing

ดูข้อมูลเพิ่มเติม

หากมีข้อสงสัย

รายงานปัญหา