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 - Android Codelab

1. Khái quát chung

văn bản-phân loại-result.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
  • Tích hợp các mô hình phân tích cảm xúc TF Lite vào ứng dụng của bạn bằng Thư viện tác vụ TF Lite

Những gì bạn cần

  • Phiên bản Android Studio mới nhất.
  • Mã mẫu.
  • Thiết bị thử nghiệm có Android 5.0+ 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 sử dụng thiết bị, cáp kết nối.

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. Lấy 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 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 .

3. Nhập ứng dụng khởi động

Từ Android Studio, chọn thư mục codelab-textclassification-android-master ( android_studio_folder.png ) từ bản tải xuống mã mẫu ( 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 động

Bây giờ bạn đã nhập dự án vào Android Studio, bạn đã sẵn sàng chạy ứng dụng lần đầu tiên. Kết nối thiết bị Android của bạn và nhấp vào Chạy ( thực thi.png ) trên thanh công cụ của Android Studio.

Ứng dụng sẽ khởi chạy trên thiết bị của bạn. Nó chỉ chứa một giao diện người dùng đơn giản giúp dễ dàng tích hợp và thử nghiệm 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 cảm xúc, ứng dụng sẽ chỉ trả về một số kết quả giả.

2fb4e69fafb2e3ed.png

5. 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 Thêm dự án .
  3. Chọn hoặc nhập Tên dự án.
  4. Làm theo các bước thiết lập còn lại trong bảng điều khiển 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

  1. Từ màn hình tổng quan về dự án mới của bạn, hãy nhấp vào biểu tượng Android để khởi chạy quy trình thiết lập.
  2. 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 của bạn

Sau khi thêm tên gói và chọn Đăng ký**, Nhấp vào Tải xuống google-services.json** để lấy tệp cấu hình Firebase Android của bạn, sau đó sao chép tệp google-services.json vào thư mục * app * trong dự án của bạn.

Thêm plugin dịch vụ google vào ứng dụng của bạn

Làm theo hướng dẫn trên Bảng điều khiển Firebase cập nhật tệp build.gradle.kts để thêm Firebase vào ứng dụng của bạn.

Plugin 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ộ hóa dự án của bạn với các tệp gradle

Để đảm bảo rằng tất cả các phần phụ thuộc đều có sẵn cho ứng dụng của bạn, bạn nên đồng bộ hóa dự án của mình với các tệp gradle tại thời điểm này. Chọn Tệp > Đồng bộ hóa dự án với Tệp Gradle từ thanh công cụ Android Studio.

7. Chạy ứng dụng với Firebase

Bây giờ bạn đã định cấu hình plugin google-services bằng tệp JSON của mình, bạn đã sẵn sàng chạy ứng dụng với Firebase. Kết nối thiết bị Android của bạn và nhấp vào Chạy ( thực thi.png ) trên thanh công cụ của Android Studio.

Ứng dụng sẽ khởi 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 xây dựng thành công.

8. 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. Bạn có thể chọn Thời gian chạy > Chạy tất cả để thực thi tất cả sổ ghi chép cùng một lúc.

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.

9. 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

10. 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.

Trong tệp app/build.gradle.kts , hãy thêm phần phụ thuộc Firebase Machine Learning.

app/build.gradle.kts

Tìm nhận xét này:

// TODO 1: Add Firebase ML dependency

Sau đó thêm:

implementation(platform("com.google.firebase:firebase-bom:32.0.0"))
implementation("com.google.firebase:firebase-ml-modeldownloader:24.1.2")

Khi được Android Studio yêu cầu đồng bộ hóa dự án của bạn, hãy chọn Đồng bộ hóa ngay .

Sau đó, hãy thêm một số mã để tải xuống mô hình từ Firebase.

MainActivity.java

Tìm nhận xét này:

// TODO 2: Implement a method to download TFLite model from Firebase

Sau đó 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, 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 đó thêm:

downloadModel("sentiment_analysis");

11. 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 NLClassifier 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 tệp Gradle của ứng dụng và thêm Thư viện tác vụ TensorFlow Lite (Văn bản) trong phần phụ thuộc của ứng dụng.

ứng dụng/build.gradle

Tìm nhận xét này:

// TODO 4: Add TFLite Task API (Text) dependency

Sau đó thêm:

implementation("org.tensorflow:tensorflow-lite-task-text:0.3.0")

Khi được Android Studio yêu cầu đồng bộ hóa dự án của bạn, hãy chọn Đồng bộ hóa ngay .

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ụ.

MainActivity.java

Hãy khai báo một biến đối tượng NLClassifier. Tìm nhận xét này:

// TODO 5: Define a NLClassifier variable

Sau đó thêm:

private NLClassifier textClassifier;

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:

// TODO 6: Initialize a TextClassifier with the downloaded model

Sau đó thêm:

textClassifier = NLClassifier.createFromFile(model.getFile());

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

Sau khi thiết lập phiên bản textClassifier , 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.

MainActivity.java

Tìm nhận xét này:

// TODO 7: Run sentiment analysis on the input text

Sau đó thêm:

List<Category> results = textClassifier.classify(text);

Thực hiện xử lý hậu kỳ

Cuối cùng, chúng ta sẽ chuyển đổi đầu ra 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

Xóa mã tạo văn bản kết quả giả:

String textToShow = "Dummy classification result.\n";

Sau đó 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 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ị Android của bạn và nhấp vào Chạy ( thực thi.png ) trên thanh công cụ của Android Studio.

Ứ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.

img/text-classification-result.png

13. 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:

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 đà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 đề