Thêm Phân loại văn bản trên thiết bị vào ứng dụng của bạn bằng TensorFlow Lite và Firebase - iOS Codelab

1. Khái quát chung

phân loại_result_screen.png

Chào mừng bạn đến với Phân loại văn bản với lớp học lập trình TensorFlow Lite và Firebase. Trong lớp học lập trình này, bạn sẽ tìm hiểu cách sử dụng TensorFlow Lite và Firebase để đào tạo và triển khai mô hình phân loại văn bản cho ứng dụng của mình. Lớp học lập trình này dựa trên ví dụ TensorFlow Lite này.

Phân loại văn bản là quá trình gán thẻ hoặc danh mục cho văn bản theo nội dung của nó. Đây là một trong những nhiệm vụ cơ bản trong Xử lý ngôn ngữ tự nhiên (NLP) với các ứng dụng rộng rãi như phân tích cảm xúc, gắn nhãn chủ đề, phát hiện thư rác và phát hiện ý định.

Phân tích tình cảm là việc giải thích và phân loại cảm xúc (tích cực, tiêu cực và trung tính) trong dữ liệu văn bản bằng kỹ thuật phân tích văn bản. Phân tích tình cảm cho phép doanh nghiệp xác định tình cảm của khách hàng đối với sản phẩm, thương hiệu hoặc dịch vụ trong các cuộc trò chuyện và phản hồi trực tuyến.

Hướng dẫn này cho thấy cách xây dựng mô hình học máy để phân tích cảm xúc, đặc biệt là phân loại văn bản là tích cực hoặc tiêu cực. Đây là một ví dụ về phân loại nhị phân—hoặc hai lớp—, một loại vấn đề học máy quan trọng và có thể áp dụng rộng rãi.

Bạn sẽ học được gì

  • Huấn luyện mô hình phân tích tình cảm TF Lite với TF Lite Model Maker
  • Triển khai các mô hình TF Lite cho Firebase ML và truy cập chúng từ ứng dụng của bạn
  • Theo dõi phản hồi của người dùng để đo độ chính xác của mô hình bằng Firebase Analytics
  • Hiệu suất mô hình hồ sơ thông qua Giám sát hiệu suất Firebase
  • Chọn một trong nhiều mô hình đã triển khai sẽ được tải thông qua Cấu hình từ xa
  • Thử nghiệm với các mô hình khác nhau thông qua Thử nghiệm A/B của Firebase

Những gì bạn cần

  • Xcode 11 (hoặc cao hơn)
  • CocoaPods 1.9.1 (hoặc cao hơn)

Bạn sẽ sử dụng hướng dẫn này như thế nào?

Chỉ đọc qua Đọc và hoàn thành bài tập

Bạn đánh giá trải nghiệm của bạn khi xây dựng ứng dụng Android như thế nào?

Người mới Trung cấp thành thạo

2. Tạo dự án bảng điều khiển Firebase

Thêm Firebase vào dự án

  1. Chuyển đến bảng điều khiển Firebase .
  2. Chọn Tạo dự án mới và đặt tên cho dự án của bạn là "Firebase ML iOS Codelab".

3. Lấy dự án mẫu

Tải xuống mã

Bắt đầu bằng cách sao chép dự án mẫu và chạy pod update trong thư mục dự án:

git clone https://github.com/FirebaseExtended/codelab-textclassification-ios.git
cd codelab-textclassification-ios
pod install --repo-update

Nếu chưa cài đặt git, bạn cũng có thể tải xuống dự án mẫu từ trang GitHub hoặc bằng cách nhấp vào liên kết này . Sau khi bạn đã tải xuống dự án, hãy chạy nó trong Xcode và thử phân loại văn bản để hiểu cách nó hoạt động.

Thiết lập căn cứ hỏa lực

Làm theo tài liệu để tạo dự án Firebase mới. Khi bạn đã có dự án của mình, hãy tải xuống tệp GoogleService-Info.plist của dự án từ bảng điều khiển Firebase và kéo nó vào thư mục gốc của dự án Xcode.

9efb62a92f27e939.png

Thêm Firebase vào Podfile của bạn và chạy pod install.

pod 'FirebaseMLModelDownloader', '9.3.0-beta'

Trong phương thức didFinishLaunchingWithOptions của AppDelegate , hãy nhập Firebase ở đầu tệp

import FirebaseCore

Và thêm cuộc gọi để định cấu hình Firebase.

FirebaseApp.configure()

Chạy lại dự án để đảm bảo ứng dụng được định cấu hình chính xác và không gặp sự cố khi khởi chạy.

4. Huấn luyện mô hình phân tích tình cảm

Chúng tôi sẽ sử dụng TensorFlow Lite Model Maker để huấn luyện mô hình phân loại văn bản nhằm dự đoán cảm xúc của một văn bản nhất định.

Bước này được trình bày dưới dạng sổ ghi chép Python mà bạn có thể mở trong Google Colab.

Mở trong Colab

Sau khi hoàn thành bước này, bạn sẽ có mô hình phân tích cảm tính TensorFlow Lite sẵn sàng triển khai trên ứng dụng di động.

5. Triển khai mô hình lên Firebase ML

Việc triển khai mô hình lên Firebase ML rất hữu ích vì hai lý do chính:

  1. Chúng tôi có thể giữ kích thước cài đặt ứng dụng ở mức nhỏ và chỉ tải xuống mô hình nếu cần
  2. Mô hình có thể được cập nhật thường xuyên và có chu kỳ phát hành khác với toàn bộ ứng dụng

Mô hình này có thể được triển khai thông qua bảng điều khiển hoặc theo chương trình bằng cách sử dụng SDK quản trị Firebase. Ở bước này chúng ta sẽ triển khai thông qua console.

Đầu tiên, mở Bảng điều khiển Firebase và nhấp vào Machine Learning trong bảng điều hướng bên trái. Nhấp vào 'Bắt ​​đầu' nếu bạn mở lần đầu tiên. Sau đó điều hướng đến "Tùy chỉnh" và nhấp vào nút "Thêm mô hình".

Khi được nhắc, hãy đặt tên cho mô hình sentiment_analysis và tải tệp bạn đã tải xuống từ Colab ở bước trước lên.

3c3c50e6ef12b3b.png

6. Tải xuống mô hình từ Firebase ML

Việc chọn thời điểm tải mô hình từ xa từ Firebase xuống ứng dụng của bạn có thể khó khăn vì các mô hình TFLite có thể phát triển tương đối lớn. Lý tưởng nhất là chúng tôi muốn tránh tải mô hình ngay lập tức khi ứng dụng khởi chạy, vì nếu mô hình của chúng tôi chỉ được sử dụng cho một tính năng và người dùng không bao giờ sử dụng tính năng đó thì chúng tôi sẽ tải xuống một lượng dữ liệu đáng kể mà không có lý do. Chúng ta cũng có thể đặt các tùy chọn tải xuống như chỉ tìm nạp các kiểu máy khi kết nối với wifi. Nếu bạn muốn đảm bảo rằng mô hình này khả dụng ngay cả khi không có kết nối mạng, điều quan trọng là bạn cũng phải gói mô hình đó mà không có ứng dụng làm bản sao lưu.

Để đơn giản, chúng tôi sẽ xóa mô hình đi kèm mặc định và luôn tải mô hình xuống từ Firebase khi ứng dụng khởi động lần đầu tiên. Bằng cách này, khi chạy phân tích cảm tính, bạn có thể chắc chắn rằng suy luận đang chạy với mô hình được cung cấp từ Firebase.

Ở đầu ModelLoader.swift , hãy nhập mô-đun Firebase.

import FirebaseCore
import FirebaseMLModelDownloader

Sau đó thực hiện các phương pháp sau.

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

Trong viewDidLoad của ViewController.swift , hãy thay thế lệnh gọi đến loadModel() bằng phương thức tải xuống mô hình mới của chúng tôi.

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

Chạy lại ứng dụng của bạn. Sau vài giây, bạn sẽ thấy nhật ký Xcode cho biết mô hình từ xa đã được tải xuống thành công. Hãy thử nhập một số văn bản và xác nhận hoạt động của ứng dụng không thay đổi.

7. Tích hợp mô hình vào ứng dụng của bạn

Thư viện tác vụ Tensorflow Lite giúp bạn tích hợp các mô hình TensorFlow Lite vào ứng dụng của mình chỉ bằng một vài dòng mã. Chúng tôi sẽ khởi tạo phiên bản TFLNLClassifier bằng mô hình TensorFlow Lite được tải xuống từ Firebase. Sau đó, chúng tôi sẽ sử dụng nó để phân loại nội dung nhập văn bản từ người dùng ứng dụng và hiển thị kết quả trên giao diện người dùng.

Thêm phụ thuộc

Đi tới Podfile của ứng dụng và thêm Thư viện tác vụ (Văn bản) TensorFlow Lite trong phần phụ thuộc của ứng dụng. Đảm bảo bạn thêm phần phụ thuộc vào phần khai báo target 'TextClassification' .

pod 'TensorFlowLiteTaskText', '~> 0.2.0'

Chạy pod install để cài đặt phần phụ thuộc mới.

Khởi tạo trình phân loại văn bản

Sau đó, chúng tôi sẽ tải mô hình phân tích tình cảm được tải xuống từ Firebase bằng cách sử dụng NLClassifier của Thư viện tác vụ.

ViewController.swift

Hãy khai báo một biến đối tượng TFLNLClassifier. Ở đầu tệp, nhập phần phụ thuộc mới:

import TensorFlowLiteTaskText

Tìm nhận xét này phía trên phương thức chúng tôi đã sửa đổi ở bước cuối cùng:

// TODO: Add a TFLNLClassifier property.

Thay thế TODO bằng đoạn mã sau:

private var classifier: TFLNLClassifier?

Khởi tạo biến textClassifier bằng mô hình phân tích cảm tính được tải xuống từ Firebase. Tìm nhận xét này chúng tôi đã thêm ở bước cuối cùng:

// TODO: Initialize an NLClassifier from the downloaded model

Thay thế TODO bằng đoạn mã sau:

let options = TFLNLClassifierOptions()
self.classifier = TFLNLClassifier.nlClassifier(modelPath: customModel.path, options: options)

Phân loại văn bản

Sau khi thiết lập phiên bản classifier , bạn có thể chạy phân tích cảm tính bằng một lệnh gọi phương thức duy nhất.

ViewController.swift

Trong phương thức classify(text:) , hãy tìm nhận xét TODO:

// TODO: Run sentiment analysis on the input text

Thay thế nhận xét bằng đoạn mã sau:

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. Chạy ứng dụng cuối cùng

Bạn đã tích hợp mô hình phân tích cảm tính vào ứng dụng, vì vậy hãy thử nghiệm nó. Kết nối thiết bị iOS của bạn và nhấp vào Chạy ( thực thi.png ) trên thanh công cụ Xcode.

Ứng dụng phải có thể dự đoán chính xác cảm xúc của bài đánh giá phim mà bạn nhập.

phân loại_result_screen.png

9. Tăng sức mạnh cho ứng dụng với nhiều tính năng Firebase hơn

Bên cạnh việc lưu trữ các mô hình TFLite của bạn, Firebase còn cung cấp một số tính năng khác để hỗ trợ các trường hợp sử dụng máy học của bạn:

  • Giám sát hiệu suất Firebase để đo tốc độ suy luận mô hình của bạn đang chạy trên thiết bị của người dùng.
  • Firebase Analytics để đo lường mức độ hiệu quả của mô hình của bạn trong quá trình sản xuất bằng cách đo lường phản ứng của người dùng.
  • Thử nghiệm A/B Firebase để thử nghiệm nhiều phiên bản mô hình của bạn
  • Bạn có nhớ trước đây chúng tôi đã đào tạo hai phiên bản của mô hình TFLite không? Thử nghiệm A/B là một cách hay để tìm ra phiên bản nào hoạt động tốt hơn trong quá trình sản xuất!

Để tìm hiểu thêm về cách tận dụng các tính năng này trong ứng dụng của bạn, hãy xem các lớp học lập trình bên dưới:

10. Xin chúc mừng!

Trong lớp học lập trình này, bạn đã tìm hiểu cách đào tạo mô hình TFLite phân tích cảm tính và triển khai mô hình đó vào ứng dụng di động của mình bằng Firebase. Để tìm hiểu thêm về TFLite và Firebase, hãy xem các mẫu TFLite khác và hướng dẫn bắt đầu Firebase.

Những gì chúng tôi đã đề cập

  • TensorFlow Lite
  • Firebase ML

Bước tiếp theo

  • Đo tốc độ suy luận mô hình của bạn bằng Giám sát hiệu suất Firebase.
  • Triển khai trực tiếp mô hình từ Colab đến Firebase thông qua API quản lý mô hình Firebase ML.
  • Thêm cơ chế cho phép người dùng phản hồi về kết quả dự đoán và sử dụng Firebase Analytics để theo dõi phản hồi của người dùng.
  • Thử nghiệm A/B mô hình Vectơ từ trung bình và mô hình MobileBERT với thử nghiệm A/B Firebase.

Tìm hiểu thêm

Có một câu hỏi?

Báo cáo vấn đề