وظیفهی طبقهبندی متن MediaPipe به شما امکان میدهد متن را در مجموعهای از دستههای تعریفشده، مانند احساسات مثبت یا منفی، طبقهبندی کنید. این دستهها بر اساس مدلی که استفاده میکنید و نحوهی آموزش آن مدل تعیین میشوند. این دستورالعملها نحوهی استفاده از طبقهبندی متن را برای برنامههای وب و جاوا اسکریپت به شما نشان میدهند.
شما میتوانید با مشاهدهی دمو، این وظیفه را در عمل مشاهده کنید. برای اطلاعات بیشتر در مورد قابلیتها، مدلها و گزینههای پیکربندی این وظیفه، به نمای کلی مراجعه کنید.
مثال کد
کد نمونه برای کلاسهبندی متن، پیادهسازی کاملی از این کار را در جاوا اسکریپت برای مرجع شما ارائه میدهد. این کد به شما کمک میکند تا این کار را آزمایش کنید و ساخت برنامه کلاسهبندی متن خود را شروع کنید. میتوانید مثال کلاسهبندی متن را فقط با استفاده از مرورگر وب خود مشاهده، اجرا و ویرایش کنید.
راهاندازی
این بخش مراحل کلیدی برای تنظیم محیط توسعه و پروژههای کدنویسی شما را به طور خاص برای استفاده از 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 به یک مدل آموزشدیده نیاز دارد که با این وظیفه سازگار باشد. برای اطلاعات بیشتر در مورد مدلهای آموزشدیدهی موجود برای طبقهبندی متن، به بخش مدلهای نمای کلی وظیفه مراجعه کنید.
یک مدل را انتخاب و دانلود کنید و سپس آن را در دایرکتوری پروژه خود ذخیره کنید:
<dev-project-root>/assets/bert_text_classifier.tflite
مسیر مدل را با پارامتر modelAssetPath از شیء baseOptions مشخص کنید، همانطور که در زیر نشان داده شده است:
baseOptions: {
modelAssetPath: `/assets/bert_text_classifier.tflite`
}
وظیفه را ایجاد کنید
از یکی از توابع 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 برای انگلیسی است. میتوانید با استفاده از API نویسنده فراداده TensorFlow Lite، برچسبهای محلی را به فراداده یک مدل سفارشی اضافه کنید. | کد محلی | انگلیسی |
maxResults | حداکثر تعداد نتایج طبقهبندی با بالاترین امتیاز را که باید برگردانده شوند، تنظیم میکند. اگر < 0 باشد، تمام نتایج موجود برگردانده میشوند. | هر عدد مثبت | -1 |
scoreThreshold | آستانه امتیاز پیشبینی را تنظیم میکند که بر آستانه ارائه شده در فراداده مدل (در صورت وجود) غلبه میکند. نتایج زیر این مقدار رد میشوند. | هر شناوری | تنظیم نشده |
categoryAllowlist | لیست اختیاری نامهای مجاز دستهبندی را تنظیم میکند. اگر خالی نباشد، نتایج طبقهبندی که نام دستهبندی آنها در این مجموعه نباشد، فیلتر میشوند. نامهای تکراری یا ناشناختهی دستهبندی نادیده گرفته میشوند. این گزینه با categoryDenylist ناسازگار است و استفاده از هر دو منجر به خطا میشود. | هر رشتهای | تنظیم نشده |
categoryDenylist | لیست اختیاری نامهای دستهبندی که مجاز نیستند را تنظیم میکند. اگر خالی نباشد، نتایج طبقهبندی که نام دستهبندی آنها در این مجموعه باشد، فیلتر میشوند. نامهای دستهبندی تکراری یا ناشناخته نادیده گرفته میشوند. این گزینه با categoryAllowlist ناسازگار است و استفاده از هر دو منجر به خطا میشود. | هر رشتهای | تنظیم نشده |
آمادهسازی دادهها
کلاسهبندیکننده متن با دادههای متنی ( String ) کار میکند. این وظیفه، پیشپردازش دادههای ورودی، از جمله توکنسازی و پیشپردازش تنسور را مدیریت میکند.
تمام پیشپردازشها درون تابع classify() انجام میشود. نیازی به پیشپردازش اضافی متن ورودی از قبل نیست.
const inputText = "The input text to be classified.";
اجرای وظیفه
کلاسهبندیکننده متن از تابع classify() برای ایجاد استنتاج استفاده میکند. برای کلاسهبندی متن، این به معنای بازگرداندن دستههای ممکن برای متن ورودی است.
کد زیر نحوه اجرای پردازش با مدل وظیفه را نشان میدهد.
// Wait to run the function until inner text is set
const result: TextClassifierResult = await textClassifier.classify(
inputText
);
مدیریت و نمایش نتایج
کلاسهبندیکننده متن، یک 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" .