راهنمای تشخیص زبان برای وب

وظیفه‌ی تشخیص زبان مدیاپایپ (MediaPipe Language Detector) به شما امکان می‌دهد زبان یک متن را شناسایی کنید. این دستورالعمل‌ها نحوه‌ی استفاده از تشخیص زبان را برای برنامه‌های وب و جاوااسکریپت نشان می‌دهند. نمونه کد شرح داده شده در این دستورالعمل‌ها در گیت‌هاب (GitHub) موجود است.

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

مثال کد

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

راه‌اندازی

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

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

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

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

npm install @mediapipe/tasks-text

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

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

مدل

وظیفه‌ی تشخیص‌دهنده‌ی زبان مدیاپایپ (MediaPipe Language Detector) به یک مدل آموزش‌دیده نیاز دارد که با این وظیفه سازگار باشد. برای اطلاعات بیشتر در مورد مدل‌های آموزش‌دیده‌ی موجود برای تشخیص‌دهنده‌ی زبان، به بخش مدل‌های نمای کلی وظیفه مراجعه کنید.

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

<dev-project-root>/app/shared/models

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

baseOptions: {
        modelAssetPath: `/app/shared/models/language_detector.tflite`
      }

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

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

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

async function createDetector() {
  const textFiles = await FilesetResolver.forTextTasks(
      "https://cdn.jsdelivr.net/npm/@mediapipe/tasks-text@latest/wasm/");
  languageDetector = await languageDetector.createFromOptions(
    textFiles,
    {
      baseOptions: {
        modelAssetPath: `https://storage.googleapis.com/mediapipe-models/language_detector/language_detector/float32/1/language_detector.tflite`
      },
    }
  );
}
createDetector();

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

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

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

آماده‌سازی داده‌ها

آشکارساز زبان با داده‌های متنی ( string ) کار می‌کند. این وظیفه، پیش‌پردازش داده‌های ورودی، از جمله توکن‌سازی و پیش‌پردازش تنسور را مدیریت می‌کند. تمام پیش‌پردازش‌ها در داخل تابع detect انجام می‌شود. نیازی به پیش‌پردازش اضافی متن ورودی از قبل نیست.

const inputText = "The input text for the detector.";

اجرای وظیفه

تشخیص‌دهنده‌ی زبان از تابع detect برای ایجاد استنتاج استفاده می‌کند. برای تشخیص زبان، این به معنای بازگرداندن زبان‌های ممکن برای متن ورودی است.

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

// Wait to run the function until inner text is set
const detectionResult = languageDetector.detect(inputText);

مدیریت و نمایش نتایج

وظیفه‌ی تشخیص زبان، یک LanguageDetectorResult شامل فهرستی از پیش‌بینی‌های زبان به همراه احتمالات مربوط به آن پیش‌بینی‌ها را خروجی می‌دهد. در زیر نمونه‌ای از داده‌های خروجی این وظیفه نشان داده شده است:

LanguageDetectorResult:
  LanguagePrediction #0:
    language_code: "fr"
    probability: 0.999781

این نتیجه با اجرای مدل بر روی متن ورودی به دست آمده است: "Il ya beaucoup de bouches qui parlent et fort peu de têtes qui pensent." .

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