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

۱. مرور کلی

نتیجه-طبقه‌بندی-متن.png

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

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

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

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

آنچه یاد خواهید گرفت

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

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

  • آخرین نسخه اندروید استودیو
  • نمونه کد.
  • یک دستگاه آزمایشی با اندروید ۵.۰+ و سرویس‌های گوگل پلی ۹.۸ یا بالاتر، یا یک شبیه‌ساز با سرویس‌های گوگل پلی ۹.۸ یا بالاتر
  • در صورت استفاده از دستگاه، کابل اتصال.

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

فقط تا انتها بخوانید آن را بخوانید و تمرین‌ها را انجام دهید

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

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

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

مخزن گیت‌هاب را از خط فرمان کلون کنید.

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

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

۳. برنامه‌ی آغازین را وارد کنید

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

اکنون باید پروژه شروع را در اندروید استودیو باز داشته باشید.

۴. برنامه‌ی آغازین را اجرا کنید

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

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

2fb4e69fafb2e3ed.png

۵. ایجاد پروژه کنسول فایربیس

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

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

۶. اضافه کردن فایربیس به برنامه

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

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

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

افزونه‌ی خدمات گوگل را به برنامه‌ی خود اضافه کنید

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

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

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

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

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

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

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

۸. آموزش یک مدل تحلیل احساسات

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

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

باز در کولاب

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

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

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

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

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

ابتدا کنسول فایربیس را باز کنید و در پنل ناوبری سمت چپ روی Machine Learning کلیک کنید. اگر اولین بار است که این کنسول را باز می‌کنید، روی «شروع به کار» کلیک کنید. سپس به «سفارشی» بروید و روی دکمه «افزودن مدل» کلیک کنید.

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

3c3c50e6ef12b3b.png

۱۰. دانلود مدل از 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")

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

سپس بیایید کدی برای دانلود مدل از 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 مربوط به activity فراخوانی کنید.

MainActivity.java

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

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

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

downloadModel("sentiment_analysis");

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

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

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

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

برنامه/ساخت.gradle

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

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

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

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

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

مقداردهی اولیه یک طبقه‌بندی‌کننده متن

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

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";

۱۲. اجرای برنامه نهایی

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

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

img/text-classification-result.png

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

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

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

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

۱۴. تبریک می‌گویم!

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

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

  • تنسورفلو لایت
  • فایربیس ام‌ال

مراحل بعدی

  • سرعت استنتاج مدل خود را با نظارت بر عملکرد Firebase اندازه‌گیری کنید.
  • مدل را از Colab مستقیماً از طریق API مدیریت مدل Firebase ML در Firebase مستقر کنید.
  • مکانیزمی اضافه کنید تا کاربران بتوانند در مورد نتیجه پیش‌بینی بازخورد بدهند و از Firebase Analytics برای پیگیری بازخورد کاربر استفاده کنید.
  • با استفاده از تست A/B در Firebase، مدل Average Word Vector و مدل MobileBERT را با هم تست A/B کنید.

اطلاعات بیشتر

سوالی دارید؟

گزارش مشکلات