वेब के लिए टेक्स्ट एम्बेड करने की गाइड

MediaPipe टेक्स्ट एम्बेडर टास्क की मदद से आप टेक्स्ट डेटा को संख्यात्मक रूप में दिखा सकते हैं, ताकि इसका सिमैंटिक मतलब कैप्चर किया जा सके. इन निर्देशों में वेब और JavaScript ऐप्लिकेशन के लिए टेक्स्ट एम्बेडर को इस्तेमाल करने का तरीका बताया गया है.

इस टास्क की क्षमताओं, मॉडल, और कॉन्फ़िगरेशन विकल्पों के बारे में ज़्यादा जानकारी के लिए, खास जानकारी देखें.

कोड का उदाहरण

टेक्स्ट एम्बेडर के लिए उदाहरण कोड में आपकी जानकारी के लिए, JavaScript में इस टास्क को पूरी तरह लागू किया गया है. यह कोड इस टास्क की जांच करने और खुद का टेक्स्ट एम्बेड करने वाला ऐप्लिकेशन बनाने में मदद करेगा. आपके पास अपने वेब ब्राउज़र का इस्तेमाल करके, टेक्स्ट एम्बेडर उदाहरण कोड को देखने, चलाने, और उसमें बदलाव करने का विकल्प होता है.

सेटअप

इस सेक्शन में, डेवलपमेंट एनवायरमेंट को सेट अप करने और खास तौर पर टेक्स्ट एम्बेडर का इस्तेमाल करने के लिए कोड प्रोजेक्ट सेट अप करने के मुख्य चरणों के बारे में बताया गया है. MediaPipe टास्क का इस्तेमाल करने के लिए अपना डेवलपमेंट एनवायरमेंट सेट अप करने से जुड़ी सामान्य जानकारी पाने के लिए, वेब के लिए सेटअप गाइड देखें. इसमें प्लैटफ़ॉर्म के वर्शन की ज़रूरी शर्तों के बारे में भी जानकारी शामिल है.

JavaScript पैकेज

टेक्स्ट एम्बेडर कोड, @mediapipe/tasks-text पैकेज के ज़रिए उपलब्ध है. प्लैटफ़ॉर्म सेटअप गाइड में दिए गए लिंक से इन लाइब्रेरी को ढूंढा और डाउनलोड किया जा सकता है.

इस कमांड का इस्तेमाल करके, लोकल स्टेजिंग के लिए इस कोड के साथ ज़रूरी पैकेज इंस्टॉल किए जा सकते हैं:

npm install @mediapipe/tasks-text

अगर आपको किसी सर्वर पर डिप्लॉय करना है, तो सीधे अपने एचटीएमएल पेज पर कोड जोड़ने के लिए, कॉन्टेंट डिलीवरी नेटवर्क (सीडीएन) सेवा, जैसे कि jsDelivr का इस्तेमाल किया जा सकता है. इसके लिए, यह तरीका अपनाएं:

<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...() फ़ंक्शन में से किसी एक का इस्तेमाल करें. ट्रेन की गई मॉडल फ़ाइल के रिलेटिव या ऐब्सलूट पाथ के साथ, 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();

कॉन्फ़िगरेशन विकल्प

इस टास्क में वेब और JavaScript ऐप्लिकेशन के लिए ये कॉन्फ़िगरेशन विकल्प हैं:

विकल्प का नाम ब्यौरा वैल्यू रेंज डिफ़ॉल्ट मान
l2Normalize रिटर्न किए गए फ़ीचर वेक्टर को L2 स्टैंडर्ड के साथ सामान्य बनाना है या नहीं. इस विकल्प का इस्तेमाल सिर्फ़ तब करें, जब मॉडल में पहले से ही कोई नेटिव L2_NORMALIZATION TFLite Op मौजूद न हो. ज़्यादातर मामलों में, ऐसा पहले से ही होता है और L2 नॉर्मलाइज़ेशन को TFLite अनुमान के ज़रिए पूरा किया जाता है. इसके लिए, इस विकल्प की कोई ज़रूरत नहीं होती. Boolean False
quantize दिखाए गए एम्बेड किए गए मैसेज को स्केलर क्वांटाइज़ेशन के ज़रिए बाइट में मापा जाना चाहिए या नहीं. एम्बेड किए गए डाइमेंशन को यूनिट-नर्म माना जाता है. इसलिए, किसी भी डाइमेंशन की वैल्यू [-1.0, 1.0] में होने की गारंटी होती है. अगर ऐसा नहीं है, तो l2 नॉर्मलाइज़ विकल्प का इस्तेमाल करें. 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]);

टेक्स्ट एम्बेडर के उदाहरण कोड से पता चलता है कि टास्क से दिखाए गए एम्बेडर के नतीजों को कैसे दिखाया जाए. ज़्यादा जानकारी के लिए कोड का उदाहरण देखें.