با TensorFlow Lite و Firebase - Android Codelab طبقه بندی متن روی دستگاه را به برنامه خود اضافه کنید

1. بررسی اجمالی

text-classification-result.png

به طبقه بندی متن با TensorFlow Lite و Codelab Firebase خوش آمدید. در این کد لبه یاد خواهید گرفت که چگونه از TensorFlow Lite و Firebase برای آموزش و استقرار یک مدل طبقه بندی متن در برنامه خود استفاده کنید. این Codelab بر اساس این مثال TensorFlow Lite است.

طبقه‌بندی متن، فرآیند اختصاص برچسب‌ها یا دسته‌بندی‌ها به متن با توجه به محتوای آن است. این یکی از وظایف اساسی در پردازش زبان طبیعی (NLP) با کاربردهای گسترده ای مانند تجزیه و تحلیل احساسات، برچسب گذاری موضوع، تشخیص هرزنامه، و تشخیص هدف است.

تحلیل احساسات تفسیر و طبقه بندی احساسات (مثبت، منفی و خنثی) در داده های متنی با استفاده از تکنیک های تحلیل متن است. تجزیه و تحلیل احساسات به کسب و کارها این امکان را می دهد که احساسات مشتری نسبت به محصولات، برندها یا خدمات را در گفتگوها و بازخوردهای آنلاین شناسایی کنند.

این آموزش نشان می دهد که چگونه می توان یک مدل یادگیری ماشین برای تجزیه و تحلیل احساسات، به ویژه طبقه بندی متن به عنوان مثبت یا منفی، ساخت. این نمونه‌ای از طبقه‌بندی باینری یا دو کلاسه است، یک نوع مهم و کاربردی از مشکلات یادگیری ماشین.

چیزی که یاد خواهید گرفت

  • با TF Lite Model Maker مدل های تحلیل احساسات TF Lite را آموزش دهید
  • مدل های TF Lite را در Firebase ML مستقر کنید و از برنامه خود به آنها دسترسی داشته باشید
  • با استفاده از TF Lite Task Library، مدل‌های تحلیل احساسات TF Lite را در برنامه خود ادغام کنید

آنچه شما نیاز دارید

  • آخرین نسخه اندروید استودیو .
  • کد نمونه
  • یک دستگاه آزمایشی با Android نسخه 5.0 و بالاتر و خدمات Google Play نسخه 9.8 یا بالاتر، یا شبیه ساز با خدمات Google Play نسخه 9.8 یا بالاتر
  • در صورت استفاده از دستگاه، کابل اتصال.

چگونه از این آموزش استفاده خواهید کرد؟

فقط از طریق آن را بخوانید آن را بخوانید و تمرینات را کامل کنید

تجربه خود را در ساخت برنامه های اندروید چگونه ارزیابی می کنید؟

تازه کار متوسط مسلط

2. کد نمونه را دریافت کنید

مخزن GitHub را از خط فرمان کلون کنید.

$ git clone https://github.com/FirebaseExtended/codelab-textclassification-android.git

اگر git را نصب نکرده‌اید، می‌توانید پروژه نمونه را از صفحه GitHub آن یا با کلیک کردن روی این لینک دانلود کنید.

3. برنامه شروع را وارد کنید

از Android Studio، پوشه codelab-textclassification-android-master انتخاب کنید ( android_studio_folder.png ) از نمونه کد دانلود ( File > Open > .../codelab-textclassification-android-master/start).

اکنون باید پروژه شروع را در Android Studio باز کنید.

4. برنامه استارتر را اجرا کنید

اکنون که پروژه را به اندروید استودیو وارد کرده اید، برای اولین بار آماده اجرای برنامه هستید. دستگاه اندروید خود را وصل کنید و روی Run کلیک کنید ( execute.png )در نوار ابزار Android Studio.

برنامه باید روی دستگاه شما راه اندازی شود. این فقط شامل یک رابط کاربری ساده است که ادغام و آزمایش مدل های طبقه بندی متن را در مراحل بعدی آسان می کند. در این مرحله، اگر سعی کنید احساسات را پیش‌بینی کنید، برنامه فقط برخی از نتایج ساختگی را برمی‌گرداند.

2fb4e69fafb2e3ed.png

5. پروژه کنسول Firebase را ایجاد کنید

Firebase را به پروژه اضافه کنید

  1. به کنسول Firebase بروید.
  2. افزودن پروژه را انتخاب کنید.
  3. نام پروژه را انتخاب یا وارد کنید.
  4. مراحل راه‌اندازی باقی‌مانده را در کنسول Firebase دنبال کنید، سپس روی ایجاد پروژه (یا افزودن Firebase، اگر از یک پروژه Google موجود استفاده می‌کنید) کلیک کنید.

6. Firebase را به برنامه اضافه کنید

  1. از صفحه نمای کلی پروژه جدید خود، روی نماد Android کلیک کنید تا گردش کار راه اندازی شود.
  2. نام بسته کد لبه را وارد کنید: org.tensorflow.lite.codelabs.textclassification

فایل google-services.json را به برنامه خود اضافه کنید

پس از افزودن نام بسته و انتخاب Register**، روی Download google-services.json** کلیک کنید تا فایل پیکربندی Firebase Android خود را دریافت کنید و سپس فایل google-services.json را در فهرست * app * در پروژه خود کپی کنید.

افزونه google-services را به برنامه خود اضافه کنید

برای افزودن Firebase به برنامه خود، دستورالعمل‌های کنسول Firebase را در به‌روزرسانی فایل‌های build.gradle.kts دنبال کنید.

افزونه google-services از فایل google-services.json برای پیکربندی برنامه شما برای استفاده از Firebase استفاده می کند.

پروژه خود را با فایل های gradle همگام سازی کنید

برای اطمینان از اینکه همه وابستگی ها برای برنامه شما در دسترس هستند، باید پروژه خود را با فایل های gradle در این مرحله همگام کنید. File > Sync Project with Gradle Files را از نوار ابزار Android Studio انتخاب کنید.

7. برنامه را با Firebase اجرا کنید

اکنون که افزونه google-services را با فایل JSON خود پیکربندی کرده اید، آماده اجرای برنامه با Firebase هستید. دستگاه اندروید خود را وصل کنید و روی Run کلیک کنید ( execute.png )در نوار ابزار Android Studio.

برنامه باید روی دستگاه شما راه اندازی شود. در این مرحله، برنامه شما همچنان باید با موفقیت ساخته شود.

8. یک مدل تحلیل احساسات را آموزش دهید

ما از TensorFlow Lite Model Maker برای آموزش یک مدل طبقه‌بندی متن برای پیش‌بینی احساس یک متن استفاده می‌کنیم.

این مرحله به عنوان یک نوت بوک پایتون ارائه می شود که می توانید آن را در Google Colab باز کنید. می‌توانید Runtime > Run all را انتخاب کنید تا همه نوت‌بوک به‌طور هم‌زمان اجرا شود.

در کولب باز کنید

پس از اتمام این مرحله، یک مدل تحلیل احساسات TensorFlow Lite خواهید داشت که برای استقرار در یک برنامه تلفن همراه آماده است.

9. یک مدل را در Firebase ML مستقر کنید

استقرار یک مدل در Firebase ML به دو دلیل اصلی مفید است:

  1. ما می توانیم اندازه نصب برنامه را کوچک نگه داریم و فقط در صورت نیاز مدل را دانلود کنیم
  2. مدل را می توان به طور منظم و با چرخه انتشار متفاوت از کل برنامه به روز کرد

این مدل را می توان از طریق کنسول یا به صورت برنامه نویسی با استفاده از Firebase Admin SDK مستقر کرد. در این مرحله از طریق کنسول مستقر می‌شویم.

ابتدا کنسول Firebase را باز کنید و روی Machine Learning در پنل ناوبری سمت چپ کلیک کنید. اگر برای اولین بار این را باز می کنید، روی «شروع به کار» کلیک کنید. سپس به "Custom" بروید و روی دکمه "Add model" کلیک کنید.

هنگامی که از شما خواسته شد، مدل sentiment_analysis را نام ببرید و فایلی را که در مرحله قبل از Colab دانلود کرده اید، آپلود کنید.

3c3c50e6ef12b3b.png

10. دانلود مدل از Firebase ML

انتخاب زمان دانلود مدل از راه دور از Firebase در برنامه شما می تواند مشکل باشد زیرا مدل های TFLite می توانند نسبتاً بزرگ شوند. در حالت ایده‌آل، می‌خواهیم از بارگیری مدل بلافاصله هنگام راه‌اندازی برنامه جلوگیری کنیم، زیرا اگر مدل ما فقط برای یک ویژگی استفاده شود و کاربر هرگز از آن ویژگی استفاده نکند، بدون دلیل حجم قابل توجهی از داده‌ها را دانلود کرده‌ایم. همچنین می‌توانیم گزینه‌های دانلود مانند واکشی مدل‌ها را هنگام اتصال به وای‌فای تنظیم کنیم. اگر می‌خواهید مطمئن شوید که مدل حتی بدون اتصال به شبکه نیز در دسترس است، مهم است که آن را بدون برنامه به‌عنوان پشتیبان نیز همراه کنید.

برای سادگی، مدل پیش‌فرض همراه را حذف می‌کنیم و همیشه وقتی برنامه برای اولین بار شروع می‌شود، مدلی را از Firebase دانلود می‌کنیم. به این ترتیب هنگام اجرای تجزیه و تحلیل احساسات می توانید مطمئن شوید که استنتاج با مدل ارائه شده از Firebase اجرا می شود.

در فایل app/build.gradle.kts ، وابستگی Firebase Machine Learning را اضافه کنید.

app/build.gradle.kts

این نظر را پیدا کنید:

// TODO 1: Add Firebase ML dependency

سپس اضافه کنید:

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

هنگامی که Android Studio از شما درخواست می‌کند پروژه شما را همگام‌سازی کند، اکنون همگام‌سازی را انتخاب کنید.

سپس اجازه دهید مقداری کد برای دانلود مدل از Firebase اضافه کنیم.

MainActivity.java

این نظر را پیدا کنید:

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

سپس اضافه کنید:

  /** 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();

                      }
              );

}

سپس متد downloadModel را در متد onCreate اکتیویتی فراخوانی کنید.

MainActivity.java

این نظر را پیدا کنید:

// TODO 3: Call the method to download TFLite model

سپس اضافه کنید:

downloadModel("sentiment_analysis");

11. مدل را در برنامه خود ادغام کنید

Tensorflow Lite Task Library به شما کمک می کند مدل های TensorFlow Lite را تنها با چند خط کد در برنامه خود ادغام کنید. ما یک نمونه NLClassifier را با استفاده از مدل TensorFlow Lite که از Firebase دانلود شده است، مقداردهی اولیه می کنیم. سپس از آن برای طبقه بندی متن ورودی کاربران برنامه و نمایش نتیجه در رابط کاربری استفاده می کنیم.

وابستگی را اضافه کنید

به فایل Gradle برنامه بروید و TensorFlow Lite Task Library (متن) را در وابستگی های برنامه اضافه کنید.

app/build.gradle

این نظر را پیدا کنید:

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

سپس اضافه کنید:

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

هنگامی که Android Studio از شما درخواست می‌کند پروژه شما را همگام‌سازی کند، اکنون همگام‌سازی را انتخاب کنید.

یک طبقه بندی متن را راه اندازی کنید

سپس مدل تحلیل احساسات دانلود شده از Firebase را با استفاده از NLClassifier Task Library بارگیری می کنیم.

MainActivity.java

بیایید یک متغیر نمونه NLClassifier را اعلام کنیم. این نظر را پیدا کنید:

// TODO 5: Define a NLClassifier variable

سپس اضافه کنید:

private NLClassifier textClassifier;

متغیر textClassifier را با مدل تحلیل احساسات که از Firebase دانلود شده است، مقداردهی کنید. این نظر را پیدا کنید:

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

سپس اضافه کنید:

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

طبقه بندی متن

هنگامی که نمونه textClassifier راه‌اندازی شد، می‌توانید تجزیه و تحلیل احساسات را با یک فراخوانی روش اجرا کنید.

MainActivity.java

این نظر را پیدا کنید:

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

سپس اضافه کنید:

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

اجرای پس پردازش

در نهایت خروجی مدل را به یک متن توصیفی تبدیل می کنیم تا روی صفحه نمایش داده شود.

MainActivity.java

این نظر را پیدا کنید:

// TODO 8: Convert the result to a human-readable text

کدی را که متن نتیجه ساختگی را ایجاد می کند حذف کنید:

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

سپس اضافه کنید:

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. برنامه نهایی را اجرا کنید

شما مدل تحلیل احساسات را در برنامه ادغام کرده‌اید، پس بیایید آن را آزمایش کنیم. دستگاه اندروید خود را وصل کنید و روی Run کلیک کنید ( execute.png )در نوار ابزار Android Studio.

برنامه باید بتواند به درستی احساس نقد فیلمی را که وارد می‌کنید پیش‌بینی کند.

img/text-classification-result.png

13. برنامه را با ویژگی های Firebase بیشتر تقویت کنید

علاوه بر میزبانی مدل‌های TFLite، Firebase چندین ویژگی دیگر را برای تقویت موارد استفاده از یادگیری ماشین شما ارائه می‌کند:

  • نظارت بر عملکرد Firebase برای اندازه گیری سرعت استنتاج مدل شما که در دستگاه کاربران اجرا می شود.
  • Firebase Analytics برای اندازه‌گیری عملکرد خوب مدل شما در تولید با اندازه‌گیری واکنش کاربر.
  • تست Firebase A/B برای آزمایش چندین نسخه از مدل شما
  • آیا به یاد دارید که قبلاً دو نسخه از مدل TFLite خود را آموزش داده بودیم؟ تست A/B راه خوبی برای فهمیدن اینکه کدام نسخه در تولید بهتر عمل می کند!

برای کسب اطلاعات بیشتر در مورد نحوه استفاده از این ویژگی ها در برنامه خود، کدهای زیر را بررسی کنید:

14. تبریک می گویم!

در این کد لبه، شما یاد گرفتید که چگونه یک مدل TFLite تجزیه و تحلیل احساسات را آموزش دهید و آن را با استفاده از Firebase در برنامه تلفن همراه خود اجرا کنید. برای کسب اطلاعات بیشتر در مورد TFLite و Firebase، به سایر نمونه های TFLite و راهنمای شروع Firebase نگاهی بیندازید.

آنچه را پوشش داده ایم

  • TensorFlow Lite
  • Firebase ML

مراحل بعدی

  • سرعت استنتاج مدل خود را با Firebase Performance Monitoring اندازه گیری کنید.
  • مدل را از Colab مستقیماً از طریق Firebase ML Model Management API به Firebase مستقر کنید.
  • مکانیزمی را اضافه کنید که به کاربران امکان می دهد در مورد نتیجه پیش بینی بازخورد داشته باشند و از Firebase Analytics برای ردیابی بازخورد کاربران استفاده کنید.
  • A/B مدل میانگین کلمه برداری و مدل MobileBERT را با تست Firebase A/B تست کنید.

بیشتر بدانید

سوالی دارید؟

گزارش مسائل