راهنمای جاسازی متن برای وب

وظیفه‌ی جاسازی متن MediaPipe به شما امکان می‌دهد یک نمایش عددی از داده‌های متنی ایجاد کنید تا معنای معنایی آن را به دست آورید. این دستورالعمل‌ها نحوه‌ی استفاده از جاسازی متن را برای برنامه‌های وب و جاوا اسکریپت به شما نشان می‌دهند.

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

مثال کد

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

راه‌اندازی

این بخش مراحل کلیدی برای تنظیم محیط توسعه و پروژه‌های کدنویسی شما را به طور خاص برای استفاده از Text Embedder شرح می‌دهد. برای اطلاعات کلی در مورد تنظیم محیط توسعه برای استفاده از وظایف 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 به یک مدل آموزش‌دیده نیاز دارد که با این وظیفه سازگار باشد. برای اطلاعات بیشتر در مورد مدل‌های آموزش‌دیده موجود برای جاسازی متن، به بخش مدل‌های نمای کلی وظیفه مراجعه کنید.

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

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

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

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

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

async function createEmbedder() {
  const textFiles = await FilesetResolver.forTextTasks("https://cdn.jsdelivr.net/npm/@mediapipe/tasks-text@latest/wasm/");
  textEmbedder = await TextEmbedder.createFromOptions(
    textFiles,
    {
      baseOptions: {
        modelAssetPath: `https://storage.googleapis.com/mediapipe-tasks/text_embedder/universal_sentence_encoder.tflite`
      },
      quantize: true
    }
  );
}
createEmbedder();

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

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

نام گزینه توضیحات محدوده ارزش مقدار پیش‌فرض
l2Normalize اینکه آیا بردار ویژگی برگشتی با نرم L2 نرمال‌سازی شود یا خیر. فقط در صورتی از این گزینه استفاده کنید که مدل از قبل شامل L2_NORMALIZATION TFLite Op بومی نباشد. در بیشتر موارد، این مورد از قبل وجود دارد و نرمال‌سازی L2 از طریق استنتاج TFLite و بدون نیاز به این گزینه انجام می‌شود. Boolean False
quantize اینکه آیا جاسازی برگشتی باید از طریق کوانتیزاسیون اسکالر به بایت‌ها کوانتیزه شود یا خیر. جاسازی‌ها به طور ضمنی به عنوان هنجار واحد فرض می‌شوند و بنابراین تضمین می‌شود که هر بُعد مقداری در [-1.0, 1.0] داشته باشد. اگر اینگونه نیست، از گزینه l2Normalize استفاده کنید. Boolean False

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

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

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

اجرای وظیفه

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

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

// Wait to run the function until inner text is set
const embeddingResult = textEmbedder.embed(
  inputText
);

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

تابع جاسازی متن، یک TextEmbedderResult تولید می‌کند که شامل فهرستی از جاسازی‌ها (اعم از ممیز شناور یا کوانتیزه شده با اسکالر) برای متن ورودی است.

در زیر نمونه‌ای از داده‌های خروجی این وظیفه نشان داده شده است:

TextEmbedderResult:
  Embedding #0 (sole embedding head):
    float_embedding: {0.2345f, 0.1234f, ..., 0.6789f}
    head_index: 0

شما می‌توانید شباهت معنایی دو جاسازی را با استفاده از تابع TextEmbedder.cosineSimilarity مقایسه کنید. برای مثال به کد زیر مراجعه کنید.

// Compute cosine similarity.
const similarity = TextEmbedder.cosineSimilarity(
  embeddingResult.embeddings[0],
  otherEmbeddingResult.embeddings[0]);

کد نمونه‌ی جاسازی متن، نحوه‌ی نمایش نتایج جاسازی برگردانده شده از وظیفه را نشان می‌دهد، برای جزئیات بیشتر به مثال مراجعه کنید.