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

وظیفه MediaPipe Text Classifier به شما امکان می دهد متن را به مجموعه ای از دسته بندی های تعریف شده، مانند احساسات مثبت یا منفی طبقه بندی کنید. دسته بندی ها مدلی را که استفاده می کنید و نحوه آموزش آن مدل تعیین می کنند. این دستورالعمل ها به شما نشان می دهد که چگونه از Text Classifier برای برنامه های وب و جاوا اسکریپت استفاده کنید.

با مشاهده دمو می توانید این کار را در عمل مشاهده کنید. برای اطلاعات بیشتر در مورد قابلیت‌ها، مدل‌ها و گزینه‌های پیکربندی این کار، به نمای کلی مراجعه کنید.

نمونه کد

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

برپایی

این بخش مراحل کلیدی را برای راه اندازی محیط توسعه و پروژه های کد به طور خاص برای استفاده از Text Classifier توضیح می دهد. برای اطلاعات کلی در مورد تنظیم محیط توسعه خود برای استفاده از MediaPipe Tasks، از جمله الزامات نسخه پلت فرم، به راهنمای راه اندازی برای وب مراجعه کنید.

بسته های جاوا اسکریپت

کد طبقه‌بندی‌کننده متن از طریق بسته @mediapipe/tasks-text در دسترس است. می‌توانید این کتابخانه‌ها را از پیوندهای ارائه شده در راهنمای راه‌اندازی پلتفرم پیدا و دانلود کنید.

با استفاده از دستور زیر می توانید بسته های مورد نیاز را با کد زیر برای مرحله محلی نصب کنید:

npm install @mediapipe/tasks-text

اگر می‌خواهید روی یک سرور مستقر شوید، می‌توانید از یک سرویس شبکه تحویل محتوا (CDN) مانند jsDelivr برای اضافه کردن کد مستقیماً به صفحه HTML خود به شرح زیر استفاده کنید:

<head>
  <script src="https://cdn.jsdelivr.net/npm/@mediapipe/tasks-text@0.1/text-bundle.js"
    crossorigin="anonymous"></script>
</head>

مدل

وظیفه MediaPipe Text Classifier به یک مدل آموزش دیده نیاز دارد که با این کار سازگار باشد. برای اطلاعات بیشتر در مورد مدل‌های آموزش‌دیده موجود برای Text Classifier، بخش مدل‌های نمای کلی کار را ببینید.

یک مدل را انتخاب و دانلود کنید و سپس آن را در فهرست پروژه خود ذخیره کنید:

<dev-project-root>/assets/bert_text_classifier.tflite

مسیر مدل را با پارامتر شی baseOptions modelAssetPath ، مانند شکل زیر مشخص کنید:

baseOptions: {
        modelAssetPath: `/assets/bert_text_classifier.tflite`
      }

کار را ایجاد کنید

از یکی از توابع Text Classifier TextClassifier.createFrom...() برای آماده کردن کار برای اجرای استنتاج استفاده کنید. می توانید از تابع createFromModelPath() با یک مسیر نسبی یا مطلق به فایل مدل آموزش دیده استفاده کنید. مثال کد زیر استفاده از تابع TextClassifier.createFromOptions() را نشان می دهد. برای اطلاعات بیشتر در مورد گزینه های پیکربندی موجود، به گزینه های پیکربندی مراجعه کنید.

کد زیر نحوه ساخت و پیکربندی این وظیفه را نشان می دهد:

async function createClassifier() {
  const textFiles = await FilesetResolver.forTextTasks("https://cdn.jsdelivr.net/npm/@mediapipe/tasks-text@latest/wasm/");
  textClassifier = await TextClassifier.createFromOptions(
    textFiles,
    {
      baseOptions: {
        modelAssetPath: `https://storage.googleapis.com/mediapipe-tasks/text_classifier/bert_text_classifier.tflite`
      },
      maxResults: 5
    }
  );
}
createClassifier();

گزینه های پیکربندی

این کار دارای گزینه های پیکربندی زیر برای برنامه های وب و جاوا اسکریپت است:

نام گزینه شرح محدوده ارزش مقدار پیش فرض
displayNamesLocale زبان برچسب‌ها را برای استفاده برای نام‌های نمایشی ارائه شده در فراداده مدل کار، در صورت وجود، تنظیم می‌کند. پیش فرض برای انگلیسی en است. با استفاده از TensorFlow Lite Metadata Writer API می‌توانید برچسب‌های محلی را به ابرداده یک مدل سفارشی اضافه کنید. کد محلی en
maxResults حداکثر تعداد اختیاری نتایج طبقه بندی با امتیاز بالا را برای بازگشت تنظیم می کند. اگر < 0 باشد، تمام نتایج موجود برگردانده خواهند شد. هر عدد مثبت -1
scoreThreshold آستانه امتیاز پیش‌بینی را تنظیم می‌کند که بر آستانه ارائه‌شده در فراداده مدل (در صورت وجود) لغو می‌شود. نتایج زیر این مقدار رد می شوند. هر شناور تنظیم نشده
categoryAllowlist فهرست اختیاری نام‌های دسته‌بندی مجاز را تنظیم می‌کند. در صورت خالی نبودن، نتایج طبقه بندی که نام دسته آنها در این مجموعه نیست فیلتر می شود. نام‌های دسته‌بندی تکراری یا ناشناخته نادیده گرفته می‌شوند. این گزینه با categoryDenylist منحصر به فرد است و از هر دو نتیجه در یک خطا استفاده می کند. هر رشته تنظیم نشده
categoryDenylist فهرست اختیاری نام‌های دسته‌هایی را که مجاز نیستند را تنظیم می‌کند. در صورت خالی نبودن، نتایج طبقه بندی که نام دسته آنها در این مجموعه است فیلتر می شود. نام‌های دسته‌بندی تکراری یا ناشناخته نادیده گرفته می‌شوند. این گزینه با categoryAllowlist منحصر به فرد است و از هر دو نتیجه در خطا استفاده می کند. هر رشته تنظیم نشده

داده ها را آماده کنید

Text Classifier با داده های متن ( String ) کار می کند. این وظیفه، پیش پردازش ورودی داده، از جمله پیش پردازش توکن و تانسور را انجام می دهد.

تمام پیش پردازش ها در تابع classify() انجام می شود. نیازی به پیش پردازش اضافی متن ورودی از قبل نیست.

const inputText = "The input text to be classified.";

وظیفه را اجرا کنید

Text Classifier از تابع classify() برای استنتاج استفاده می کند. برای طبقه‌بندی متن، این به معنای برگرداندن دسته‌های ممکن برای متن ورودی است.

کد زیر نحوه اجرای پردازش با مدل وظیفه را نشان می دهد.

// Wait to run the function until inner text is set
const result: TextClassifierResult = await textClassifier.classify(
  inputText
);

کنترل و نمایش نتایج

Text Classifier یک TextClassifierResult را خروجی می دهد که حاوی لیستی از دسته بندی های ممکن برای متن ورودی است. دسته‌ها با مدلی که استفاده می‌کنید تعریف می‌شوند، بنابراین اگر دسته‌های متفاوتی می‌خواهید، مدل متفاوتی را انتخاب کنید یا یک مدل موجود را دوباره آموزش دهید.

شکل زیر نمونه ای از داده های خروجی از این کار را نشان می دهد:

TextClassificationResult:
  Classification #0 (single classification head):
    ClassificationEntry #0:
      Category #0:
        category name: "positive"
        score: 0.8904
        index: 0
      Category #1:
        category name: "negative"
        score: 0.1096
        index: 1

این نتیجه با اجرای طبقه‌بندی BERT بر روی متن ورودی به دست آمده است: "an imperfect but overall entertaining mystery" .