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

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

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

कोड का उदाहरण

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

सेटअप

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

पैकेज

टेक्स्ट एम्बेडर, MediaPipe पीआईपी पैकेज का इस्तेमाल करता है. इन चीज़ों के साथ डिपेंडेंसी इंस्टॉल की जा सकती है:

$ python -m pip install mediapipe

इंपोर्ट

टेक्स्ट एम्बेडर टास्क फ़ंक्शन को ऐक्सेस करने के लिए, इन क्लास को इंपोर्ट करें:

import mediapipe as mp
from mediapipe.tasks import python
from mediapipe.tasks.python import text

मॉडल

MediaPipe टेक्स्ट एम्बेडर टास्क के लिए एक प्रशिक्षित मॉडल की ज़रूरत होती है, जो इस टास्क के साथ काम कर सके. टेक्स्ट एम्बेडर के लिए उपलब्ध ट्रेनिंग मॉडल के बारे में ज़्यादा जानकारी के लिए, टास्क की खास जानकारी मॉडल सेक्शन देखें.

कोई मॉडल चुनें और उसे डाउनलोड करें. इसके बाद, उसे किसी लोकल डायरेक्ट्री में सेव करें. इसके लिए, सुझाए गए UniversalSentenceEncoder मॉडल का इस्तेमाल किया जा सकता है.

model_path = '/absolute/path/to/universal_sentence_encoder.tflite'

model_asset_path पैरामीटर में मॉडल का पाथ बताएं, जैसा कि यहां दिखाया गया है:

base_options = BaseOptions(model_asset_path=model_path)

टास्क बनाएं

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

नीचे दिया गया कोड इस टास्क को बनाने और कॉन्फ़िगर करने का तरीका बताता है.

import mediapipe as mp

BaseOptions = mp.tasks.BaseOptions
TextEmbedder = mp.tasks.text.TextEmbedder
TextEmbedderOptions = mp.tasks.text.TextEmbedderOptions

# For creating a text embedder instance:
options = TextEmbedderOptions(
    base_options=BaseOptions(model_asset_path=model_path),
    quantize=True)
text_embedder = TextEmbedder.create_from_options(options)

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

इस टास्क में Python ऐप्लिकेशन के लिए कॉन्फ़िगरेशन के ये विकल्प मौजूद हैं:

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

डेटा तैयार करना

टेक्स्ट एम्बेडर, टेक्स्ट (str) डेटा के साथ काम करता है. यह टास्क, डेटा इनपुट की प्री-प्रोसेसिंग को हैंडल करता है. इसमें टोकनाइज़ेशन और टेंसर प्री-प्रोसेसिंग भी शामिल हैं.

सभी प्री-प्रोसेसिंग को embed फ़ंक्शन में हैंडल किया जाता है. इनपुट टेक्स्ट को पहले से प्रोसेस करने की कोई ज़रूरत नहीं है.

input_text = "The input text to be embedded."

टास्क चलाएं

टेक्स्ट एम्बेडर, अनुमान को ट्रिगर करने के लिए embed फ़ंक्शन का इस्तेमाल करता है. टेक्स्ट एम्बेड करने का मतलब है, इनपुट टेक्स्ट के लिए एम्बेडिंग वेक्टर दिखाना.

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

# Perform text embedding on the provided input text.
embedding_result = text_embedder.embed(input_text)

नतीजे मैनेज करें और दिखाएं

टेक्स्ट एम्बेडर एक TextEmbedderResult देता है, जिसमें इनपुट टेक्स्ट के लिए एम्बेडिंग (फ़्लोटिंग पॉइंट या स्केलर-क्वांटाइज़्ड) की सूची होती है.

इस टास्क के आउटपुट डेटा का एक उदाहरण यहां दिया गया है:

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

TextEmbedder.cosine_similarity फ़ंक्शन का इस्तेमाल करके, एम्बेड किए गए दो वीडियो के मिलते-जुलते मतलब की तुलना की जा सकती है. उदाहरण के लिए, यह कोड देखें.

# Compute cosine similarity.
similarity = TextEmbedder.cosine_similarity(
  embedding_result.embeddings[0],
  other_embedding_result.embeddings[0])