1. Tổng quan
Chào mừng bạn đến với lớp học lập trình Phân loại văn bản bằng 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 để huấn luyện và triển khai một 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ụ này của TensorFlow Lite.
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 văn bả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 nhiều ứng dụng như phân tích tình cảm, 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à quá trình diễn giải và phân loại cảm xúc (tích cực, tiêu cực và trung lập) trong dữ liệu văn bản bằng cách sử dụng các kỹ thuật phân tích văn bản. Phân tích tình cảm giú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à ý kiến phản hồi trực tuyến.
Hướng dẫn này cho biết cách tạo một mô hình học máy để phân tích tình cảm, cụ thể là phân loại văn bản là tích cực hay tiêu cực. Đây là một ví dụ về phân loại nhị phân (hoặc phân loại hai lớp), một loại vấn đề quan trọng và có phạm vi áp dụng rộng rãi trong học máy.
Kiến thức bạn sẽ học được
- Huấn luyện mô hình phân tích tình cảm TF Lite bằng TF Lite Model Maker
- Triển khai các mô hình TF Lite cho Firebase ML và truy cập vào các mô hình đó từ ứng dụng của bạn
- Theo dõi ý kiến phản hồi của người dùng để đo lường độ chính xác của mô hình bằng Firebase Analytics
- Lập hồ sơ hiệu suất của mô hình thông qua tính năng Giám sát hiệu suất Firebase
- Chọn một trong số nhiều mô hình đã triển khai được tải thông qua Cấu hình từ xa
- Thử nghiệm với nhiều mô hình thông qua tính năng Thử nghiệm A/B trong Firebase
Bạn cần có
- Xcode 11 (trở lên)
- CocoaPods 1.9.1 (trở lên)
Bạn sẽ sử dụng hướng dẫn này như thế nào?
Bạn đánh giá thế nào về trải nghiệm tạo ứng dụng Android?
2. Tạo dự án trên bảng điều khiển của Firebase
Thêm Firebase vào dự án
- Truy cập vào bảng điều khiển của Firebase.
- Chọn Create New Project (Tạo dự án mới) rồi đặt tên cho dự án là "Firebase ML iOS Codelab" (Lớp học lập trình Firebase ML iOS).
3. Tải dự án mẫu xuống
Tải mã nguồn xuống
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 dự án mẫu xuống từ trang GitHub của dự án hoặc bằng cách nhấp vào đường liên kết này. Sau khi tải dự án xuống, hãy chạy dự án đó trong Xcode và thử phân loại văn bản để hiểu rõ cách hoạt động của dự án.
Thiết lập Firebase
Làm theo tài liệu để tạo một dự án Firebase mới. Sau khi bạn có dự án, hãy tải tệp GoogleService-Info.plist
của dự án xuống từ bảng điều khiển Firebase rồi kéo tệp đó vào thư mục gốc của dự án Xcode.
Thêm Firebase vào Podfile và chạy lệnh 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 một lệnh 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 đúng cách 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 ta sẽ sử dụng TensorFlow Lite Model Maker để huấn luyện một 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 một sổ tay Python mà bạn có thể mở trong Google Colab.
Mở trong Colab
Sau khi hoàn tất bước này, bạn sẽ có một mô hình phân tích cảm xúc TensorFlow Lite sẵn sàng triển khai cho một ứng dụng di động.
5. Triển khai một mô hình cho Firebase ML
Việc triển khai một mô hình cho Firebase ML mang lại lợi ích cho 2 lý do chính:
- Chúng ta có thể giảm kích thước cài đặt ứng dụng và chỉ tải mô hình xuống nếu cần
- Bạn có thể cập nhật mô hình thường xuyên và có chu kỳ phát hành khác với toàn bộ ứng dụng
Bạn có thể triển khai mô hình này thông qua bảng điều khiển hoặc theo phương pháp lập trình bằng cách sử dụng Firebase Admin SDK. Trong bước này, chúng ta sẽ triển khai thông qua bảng điều khiển.
Trước tiên, hãy mở Bảng điều khiển Firebase rồi 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 đây là lần đầu tiên bạn mở ứng dụng này. Sau đó, chuyển đến phần "Tuỳ chỉnh" rồi 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
rồi tải tệp mà bạn đã tải xuống từ Colab ở bước trước lên.
6. Tải mô hình xuống từ Firebase ML
Việc chọn thời điểm tải mô hình từ xa xuống từ Firebase vào ứng dụng của bạn có thể khó khăn vì các mô hình TFLite có thể tăng kích thước tương đối lớn. Tốt nhất là chúng ta nên tránh tải mô hình ngay khi ứng dụng khởi chạy, vì nếu mô hình của chúng ta chỉ được dùng cho một tính năng và người dùng không bao giờ dùng tính năng đó, thì chúng ta 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 lựa chọn tải xuống, chẳng hạn như chỉ tìm nạp các mô hình khi có kết nối Wi-Fi. Nếu muốn đảm bảo rằng mô hình này vẫn có sẵn ngay cả khi không có kết nối mạng, bạn cũng cần phải gói mô hình này mà không có ứng dụng làm bản sao lưu.
Để đơn giản hoá, chúng ta sẽ xoá mô hình đi kèm mặc định và luôn tải một 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 tính năng phân tích tình cảm, bạn có thể chắc chắn rằng quá trình suy luận đang chạy với mô hình do Firebase cung cấp.
Ở đầu ModelLoader.swift
, hãy nhập mô-đun Firebase.
import FirebaseCore import FirebaseMLModelDownloader
Sau đó, hãy triển khai các phương thức 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 mô hình mới của chúng ta.
// 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. Sau vài giây, bạn sẽ thấy một nhật ký trong 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 rằng hành vi của ứng dụng không thay đổi.
7. Tích hợp mô hình này 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 chỉ bằng một vài dòng mã. Chúng ta sẽ khởi tạo một thực thể TFLNLClassifier
bằng mô hình TensorFlow Lite được tải xuống từ Firebase. Sau đó, chúng ta sẽ dùng mô hình này để phân loại văn bản đầu vào của người dùng ứng dụng và cho thấy kết quả trên giao diện người dùng.
Thêm phần phụ thuộc
Chuyển đến Podfile của ứng dụng rồi thêm Thư viện tác vụ TensorFlow Lite (Văn bản) vào các phần phụ thuộc của ứng dụng. Đảm bảo rằng bạn thêm phần phụ thuộc trong 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 động một trình phân loại văn bản
Sau đó, chúng ta sẽ tải mô hình phân tích tình cảm được tải xuống từ Firebase bằng NLClassifier
của Thư viện tác vụ.
ViewController.swift
Hãy khai báo một biến thực thể TFLNLClassifier. Ở đầu tệp, hãy 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 mà chúng ta đã sửa đổi ở bước cuối cùng:
// TODO: Add a TFLNLClassifier property.
Thay thế TODO bằng mã sau:
private var classifier: TFLNLClassifier?
Khởi động biến textClassifier
bằng mô hình phân tích tình cảm được tải xuống từ Firebase. Tìm nhận xét mà chúng ta đã thêm ở bước cuối cùng:
// TODO: Initialize an NLClassifier from the downloaded model
Thay thế TODO bằng 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 tính năng phân tích tình cảm chỉ bằng một lệnh gọi phương thức.
ViewController.swift
Trong phương thức classify(text:)
, hãy tìm dòng nhận xét TODO:
// TODO: Run sentiment analysis on the input text
Thay thế chú thích 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 tình cảm vào ứng dụng, vì vậy, hãy kiểm thử mô hình này. Kết nối thiết bị iOS rồi nhấp vào Run ( Chạy) trong thanh công cụ Xcode.
Ứng dụng phải có khả năng dự đoán chính xác cảm xúc của bài đánh giá phim mà bạn nhập.
9. Tăng cường sức mạnh cho ứng dụng bằng nhiều tính năng khác của Firebase
Ngoài việc lưu trữ các mô hình TFLite, 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 học máy:
- Firebase Performance Monitoring để đo lường tốc độ suy luận mô hình chạy trên thiết bị của người dùng.
- Firebase Analytics để đo lường hiệu suất của mô hình trong thực tế bằng cách đo lường phản ứng của người dùng.
- Thử nghiệm A/B trong Firebase để kiểm thử nhiều phiên bản của mô hình
- Bạn có nhớ rằng trước đó chúng ta đã huấn luyện 2 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 hoạt động hiệu quả hơn trong quá trình phát hành công khai!
Để 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 huấn luyện một mô hình phân tích tình cảm TFLite 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 sử dụng Firebase.
Nội dung đã đề cập
- TensorFlow Lite
- Firebase ML
Các bước tiếp theo
- Đo lường tốc độ suy luận mô hình bằng tính năng Giám sát hiệu suất của Firebase.
- Triển khai mô hình từ Colab trực tiếp đến Firebase thông qua Firebase ML Model Management API.
- Thêm một 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 ý kiến phản hồi của người dùng.
- Tiến hành thử nghiệm A/B cho mô hình Trung bình của vectơ từ và mô hình MobileBERT bằng tính năng Thử nghiệm A/B trong Firebase.
Tìm hiểu thêm
- Tài liệu về học máy của Firebase
- Tài liệu về TensorFlow Lite
- Đo lường hiệu suất ứng dụng bằng Firebase
- Các mô hình thử nghiệm A/B bằng Firebase