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ô 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 về 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 lĩnh vực Xử lý ngôn ngữ tự nhiên (NLP) với nhiều ứng dụng đa dạng như phân tích quan điểm, gắn nhãn chủ đề, phát hiện nội dung rác và phát hiện ý định.
Phân tích tình cảm là việc 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 kỹ thuật phân tích văn bản. Phân tích tâm lý cho phép các 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ụ thông qua các cuộc trò chuyện và phản hồi trực tuyến.
Phần hướng dẫn này trình bày cách xây dựng một mô hình học máy để phân tích quan điể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 (hai lớp), một loại bài toán học máy quan trọng và có thể áp dụng rộng rãi.
Kiến thức bạn sẽ học được
- Đào tạo mô hình phân tích quan điểm của TF Lite bằng Trình tạo mô hình TF Lite
- Triển khai các mô hình TF Lite cho công nghệ học máy của Firebase và truy cập các mô hình đó từ ứng dụng của bạn
- Tích hợp các mô hình phân tích cảm nhận của TF Lite vào ứng dụng của bạn bằng cách dùng Thư viện nhiệm vụ TF Lite
Bạn cần có
- Phiên bản Android Studio mới nhất.
- Mã mẫu.
- Thiết bị thử nghiệm chạy Android 5.0 trở lên và Dịch vụ Google Play 9.8 trở lên hoặc Trình mô phỏng có Dịch vụ Google Play 9.8 trở lên
- Nếu bạn sử dụng một thiết bị, hãy sử dụng cáp kết nối.
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 xây dựng ứng dụng Android?
2. Nhận mã mẫu
Sao chép kho lưu trữ GitHub từ dòng lệnh.
$ git clone https://github.com/FirebaseExtended/codelab-textclassification-android.git
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 hoặc bằng cách nhấp vào đường liên kết này.
3. Nhập ứng dụng khởi đầu
Trong Android Studio, hãy chọn thư mục codelab-textclassification-android-master
( ) trong phần tải mã mẫu xuống (File > Open > .../codelab-textclassification-android-master/start).
Bây giờ, bạn sẽ mở dự án bắt đầu trong Android Studio.
4. Chạy ứng dụng khởi đầu
Giờ đây, sau khi nhập dự án vào Android Studio, bạn có thể chạy ứng dụng của mình lần đầu tiên. Kết nối thiết bị Android rồi nhấp vào biểu tượng Chạy ( ) trên thanh công cụ của Android Studio.
Ứng dụng sẽ chạy trên thiết bị của bạn. Lớp này chỉ chứa một giao diện người dùng đơn giản giúp bạn dễ dàng tích hợp và kiểm thử các mô hình phân loại văn bản trong các bước tiếp theo. Tại thời điểm này, nếu bạn thử dự đoán ý kiến, ứng dụng sẽ chỉ trả về một số kết quả giả.
5. Tạo dự án trên bảng điều khiển Firebase
Thêm Firebase vào dự án
- Truy cập vào bảng điều khiển của Firebase.
- Chọn Thêm dự án.
- Chọn hoặc nhập tên Dự án.
- Hãy làm theo các bước thiết lập còn lại trong bảng điều khiển của Firebase, sau đó nhấp vào Tạo dự án (hoặc Thêm Firebase, nếu bạn đang sử dụng dự án hiện có của Google).
6. Thêm Firebase vào ứng dụng
- Trên màn hình tổng quan của dự án mới, hãy nhấp vào biểu tượng Android để bắt đầu quy trình thiết lập.
- Nhập tên gói của lớp học lập trình:
org.tensorflow.lite.codelabs.textclassification
Thêm tệp google-services.json vào ứng dụng
Sau khi thêm tên gói và chọn Đăng ký**, hãy nhấp vào Tải xuống google-services.json** để lấy tệp cấu hình Android của Firebase, sau đó sao chép tệp google-services.json
vào thư mục *app
* trong dự án của bạn.
Thêm trình bổ trợ google-services vào ứng dụng
Làm theo hướng dẫn trên Bảng điều khiển của Firebase trong việc cập nhật các tệp build.gradle.kts
để thêm Firebase vào ứng dụng của bạn.
Trình bổ trợ google-services sử dụng tệp google-services.json để định cấu hình ứng dụng của bạn nhằm sử dụng Firebase.
Đồng bộ hoá dự án với các tệp gradle
Để đảm bảo tất cả phần phụ thuộc đều dùng được cho ứng dụng, bạn nên đồng bộ hoá dự án với các tệp gradle. Chọn File > (Tệp >) Đồng bộ hoá dự án với tệp Gradle trên thanh công cụ Android Studio.
7. Chạy ứng dụng bằng Firebase
Sau khi định cấu hình trình bổ trợ google-services
bằng tệp JSON, bạn có thể chạy ứng dụng bằng Firebase. Kết nối thiết bị Android rồi nhấp vào biểu tượng Chạy ( ) trên thanh công cụ của Android Studio.
Ứng dụng sẽ chạy trên thiết bị của bạn. Tại thời điểm này, ứng dụng của bạn vẫn sẽ được tạo thành công.
8. Huấn luyện mô hình phân tích quan điểm
Chúng tôi sẽ sử dụng Trình tạo mô hình TensorFlow Lite để huấn luyện một mô hình phân loại văn bản nhằm dự đoán ý kiến 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. Bạn có thể chọn Thời gian chạy > Chạy tất cả để thực thi tất cả sổ tay cùng một lúc.
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 ứng dụng di động.
9. Triển khai mô hình cho công nghệ học máy của Firebase
Việc triển khai mô hình cho công nghệ học máy của Firebase sẽ hữu ích vì 2 lý do chính:
- Chúng ta có thể duy trì kích thước cài đặt ứng dụng nhỏ và chỉ tải mô hình xuống khi cần
- Mô hình có thể được cập nhật thường xuyên và với 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 thức lập trình bằng SDK dành cho quản trị viên của Firebase. Ở bước này, chúng ta sẽ triển khai qua bảng điều khiển.
Trước tiên, hãy mở Bảng điều khiển của Firebase rồi nhấp vào Học máy 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 đó, chuyển đến mục "Tuỳ 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 là sentiment_analysis
rồi tải tệp mà bạn đã tải xuống từ Colab ở bước trước lên.
10. Tải mô hình xuống từ Firebase ML
Bạn có thể gặp khó khăn khi chọn thời điểm tải mô hình từ xa xuống từ Firebase vào ứng dụng của mình vì các mô hình TFLite có thể phát triển 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 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 ta sẽ tải một lượng dữ liệu đáng kể xuống mà không có lý do. Chúng tôi cũng có thể thiết lập các tuỳ chọn tải xuống, chẳng hạn như chỉ tìm nạp mô hình khi kết nối với Wi-Fi. Nếu muốn đảm bảo rằng mô hình vẫn dùng được ngay cả khi không có kết nối mạng, thì bạn cũng phải gói mô hình đó mà không có ứng dụng làm dự phòng.
Để đơn giản, chúng tôi 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 bản phân tích quan điểm, bạn có thể chắc chắn rằng dự đoán đang chạy bằng mô hình do Firebase cung cấp.
Trong tệp app/build.gradle.kts
, hãy thêm phần phụ thuộc Học máy Firebase.
app/build.gradle.kts
Tìm nhận xét này:
// TODO 1: Add Firebase ML dependency
Sau đó, hãy thêm:
implementation(platform("com.google.firebase:firebase-bom:32.0.0"))
implementation("com.google.firebase:firebase-ml-modeldownloader:24.1.2")
Khi Android Studio yêu cầu đồng bộ hoá dự án của bạn, hãy chọn Sync Now (Đồng bộ hoá ngay).
Sau đó, hãy thêm một số mã để tải mô hình này xuống từ Firebase.
MainActivity.java
Tìm nhận xét này:
// TODO 2: Implement a method to download TFLite model from Firebase
Sau đó, hãy thêm:
/** Download model from Firebase ML. */
private synchronized void downloadModel(String modelName) {
CustomModelDownloadConditions conditions = new CustomModelDownloadConditions.Builder()
.requireWifi()
.build();
FirebaseModelDownloader.getInstance()
.getModel("sentiment_analysis", DownloadType.LOCAL_MODEL, conditions)
.addOnSuccessListener(model -> {
try {
// TODO 6: Initialize a TextClassifier with the downloaded model
predictButton.setEnabled(true);
} catch (IOException e) {
Log.e(TAG, "Failed to initialize the model. ", e);
Toast.makeText(
MainActivity.this,
"Model initialization failed.",
Toast.LENGTH_LONG)
.show();
predictButton.setEnabled(false);
}
})
.addOnFailureListener(e -> {
Log.e(TAG, "Failed to download the model. ", e);
Toast.makeText(
MainActivity.this,
"Model download failed, please check your connection.",
Toast.LENGTH_LONG)
.show();
}
);
}
Tiếp theo, hãy gọi phương thức downloadModel
trong phương thức onCreate
của hoạt động.
MainActivity.java
Tìm nhận xét này:
// TODO 3: Call the method to download TFLite model
Sau đó, hãy thêm:
downloadModel("sentiment_analysis");
11. Tích hợp mô hình trong ứ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 ta sẽ khởi tạo một thực thể NLClassifier
bằng cách sử dụng mô hình TensorFlow Lite được tải xuống từ Firebase. Sau đó, chúng ta sẽ sử dụng dữ liệu này để phân loại văn bản mà người dùng nhập vào và hiện kết quả trên giao diện người dùng.
Thêm phần phụ thuộc
Chuyển đến tệp Gradle của ứng dụng và 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.
app/build.gradle
Tìm nhận xét này:
// TODO 4: Add TFLite Task API (Text) dependency
Sau đó, hãy thêm:
implementation("org.tensorflow:tensorflow-lite-task-text:0.3.0")
Khi Android Studio yêu cầu đồng bộ hoá dự án của bạn, hãy chọn Sync Now (Đồng bộ hoá ngay).
Khởi chạy thuật toán phân loại văn bản
Sau đó, chúng ta sẽ tải mô hình phân tích ý kiến mà hệ thống đã tải xuống từ Firebase bằng cách sử dụng NLClassifier
của Thư viện tác vụ.
MainActivity.java
Hãy khai báo một biến thực thể NLClassifier. Tìm nhận xét này:
// TODO 5: Define a NLClassifier variable
Sau đó, hãy thêm:
private NLClassifier textClassifier;
Khởi động biến textClassifier
bằng mô hình phân tích ý kiến đã tải xuống từ Firebase. Tìm nhận xét này:
// TODO 6: Initialize a TextClassifier with the downloaded model
Sau đó, hãy thêm:
textClassifier = NLClassifier.createFromFile(model.getFile());
Phân loại văn bản
Sau khi thiết lập thực thể textClassifier
, bạn có thể chạy phân tích quan điểm bằng một lệnh gọi phương thức duy nhất.
MainActivity.java
Tìm nhận xét này:
// TODO 7: Run sentiment analysis on the input text
Sau đó, hãy thêm:
List<Category> results = textClassifier.classify(text);
Triển khai quy trình hậu xử lý
Cuối cùng, chúng ta sẽ chuyển đổi kết quả của mô hình thành văn bản mô tả để hiển thị trên màn hình.
MainActivity.java
Tìm nhận xét này:
// TODO 8: Convert the result to a human-readable text
Xoá mã tạo văn bản kết quả giả:
String textToShow = "Dummy classification result.\n";
Sau đó, hãy thêm:
String textToShow = "Input: " + text + "\nOutput:\n";
for (int i = 0; i < results.size(); i++) {
Category result = results.get(i);
textToShow += String.format(" %s: %s\n", result.getLabel(),
result.getScore());
}
textToShow += "---------\n";
12. Chạy ứng dụng hoàn thiện
Bạn đã tích hợp mô hình phân tích quan điểm vào ứng dụng, vì vậy hãy thử nghiệm mô hình đó. Kết nối thiết bị Android rồi nhấp vào biểu tượng Chạy ( ) trên thanh công cụ của Android Studio.
Ứng dụng phải có thể dự đoán chính xác ý kiến của bài đánh giá về phim mà bạn nhập.
13. Tăng sức mạnh cho ứng dụng bằng các 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 của công nghệ học máy:
- Giám sát hiệu suất Firebase để đo lường tốc độ suy luận của mô hình chạy trên thiết bị.
- Firebase Analytics để đo lường hiệu suất của mô hình trong phiên bản chính thức bằng cách đo lường phản ứng của người dùng.
- Thử nghiệm A/B trong Firebase để thử nghiệm nhiều phiên bản của mô hình
- Bạn có nhớ lúc trước chúng ta đã huấn luyện hai phiên bản mô hình TFLite không? Thử nghiệm A/B là một cách hiệu quả để tìm ra phiên bản nào hoạt động hiệu quả hơn khi 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 dưới đây:
14. 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 TFLite phân tích quan điểm và triển khai mô hình đó cho ứng dụng di động 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 của mô hình bằng tính năng Giám sát hiệu suất Firebase.
- Triển khai trực tiếp mô hình từ Colab với Firebase thông qua API Quản lý mô hình học máy của Firebase.
- 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.
- Tiến hành thử nghiệm A/B cho mô hình Vectơ từ trung bình và mô hình MobileBERT thông qua tính năng thử nghiệm A/B trong Firebase.
Tìm hiểu thêm
- Tài liệu về công nghệ Học máy của Firebase
- Tài liệu về TensorFlow Lite
- Đo lường hiệu suất của ứng dụng bằng Firebase
- Các mô hình thử nghiệm A/B bằng Firebase