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

MediaPipe Text Embedder टास्क की मदद से, टेक्स्ट डेटा को संख्या के तौर पर निरूपित किया जा सकता है उनके मतलब को कैप्चर करें. ये निर्देश आपको वेब ब्राउज़र पर Android ऐप्लिकेशन के साथ टेक्स्ट एम्बेडर.

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

कोड का उदाहरण

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

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

कोड डाउनलोड करें

नीचे दिए गए निर्देशों में आपको उदाहरण की स्थानीय कॉपी बनाने का तरीका बताया गया है git कमांड लाइन टूल का इस्तेमाल करके कोड बनाना और उसमें बदलाव करना.

उदाहरण कोड डाउनलोड करने के लिए:

  1. नीचे दिए गए कमांड का इस्तेमाल करके git रिपॉज़िटरी का क्लोन बनाएं:
    git clone https://github.com/google-ai-edge/mediapipe-samples
    
  2. वैकल्पिक रूप से, विरल चेकआउट का इस्तेमाल करने के लिए अपने git इंस्टेंस को कॉन्फ़िगर करें, ताकि सिर्फ़ टेक्स्ट एम्बेडर के उदाहरण ऐप्लिकेशन की फ़ाइलें:
    cd mediapipe
    git sparse-checkout init --cone
    git sparse-checkout set examples/text_embedder/android
    

उदाहरण के तौर पर दिए गए कोड का लोकल वर्शन बनाने के बाद, प्रोजेक्ट को इंपोर्ट किया जा सकता है और इस ऐप्लिकेशन को चलाएं. निर्देशों के लिए, Android.

मुख्य कॉम्पोनेंट

नीचे दी गई फ़ाइलों में इस टेक्स्ट एम्बेडर के उदाहरण के लिए ज़रूरी कोड शामिल है ऐप्लिकेशन:

  • TextEmbedderHelper.kt: यह टेक्स्ट एम्बेडर को शुरू करता है. साथ ही, मॉडल और चुने गए डेलिगेट को हैंडल करता है.
  • MainActivity.kt: ऐप्लिकेशन लागू करता है और यूज़र इंटरफ़ेस के कॉम्पोनेंट असेंबल करता है.

सेटअप

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

डिपेंडेंसी

टेक्स्ट एम्बेडर, com.google.mediapipe:tasks-text लाइब्रेरी का इस्तेमाल करता है. इसे जोड़ें आपके Android ऐप्लिकेशन डेवलपमेंट प्रोजेक्ट की build.gradle फ़ाइल पर निर्भर है. इस कोड की मदद से, ज़रूरी डिपेंडेंसी इंपोर्ट की जा सकती हैं:

dependencies {
    implementation 'com.google.mediapipe:tasks-text:latest.release'
}

मॉडल

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

मॉडल चुनें और डाउनलोड करें, और फिर उसे अपनी प्रोजेक्ट डायरेक्ट्री में सेव करें:

<dev-project-root>/src/main/assets

ModelAssetPath पैरामीटर में मॉडल का पाथ तय करें. इस उदाहरण के लिए, मॉडल को इसके setupTextEmbedder() फ़ंक्शन में तय किया गया है TextEmbedderHelper.kt फ़ाइल:

पाथ की जानकारी देने के लिए, BaseOptions.Builder.setModelAssetPath() फ़ंक्शन का इस्तेमाल करें इस्तेमाल किया जाता है. यह विधि अगले अगले सेक्शन में जाएं.

टास्क बनाएं

टास्क बनाने के लिए, createFrom...() फ़ंक्शन में से किसी एक का इस्तेमाल किया जा सकता है. कॉन्टेंट बनाने createFromOptions() फ़ंक्शन, एम्बेडर को सेट करने के लिए कॉन्फ़िगरेशन के विकल्प स्वीकार करता है के विकल्प. createFromFile() फ़ैक्ट्री का इस्तेमाल करके भी टास्क शुरू किया जा सकता है फ़ंक्शन का इस्तेमाल करना होगा. createFromFile() फ़ंक्शन, रिलेटिव या ऐब्सलूट पाथ स्वीकार करता है तैयार मॉडल की फ़ाइल. कॉन्फ़िगरेशन के विकल्पों के बारे में ज़्यादा जानकारी पाने के लिए, यहां जाएं कॉन्फ़िगरेशन के विकल्प.

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

val baseOptions = baseOptionsBuilder.build()
val optionsBuilder =
    TextEmbedderOptions.builder().setBaseOptions(baseOptions)
val options = optionsBuilder.build()
textEmbedder = TextEmbedder.createFromOptions(context, options)

उदाहरण के तौर पर दिए गए कोड को लागू करने पर, टेक्स्ट एम्बेडर के विकल्प setupTextEmbedder() फ़ंक्शन TextEmbedderHelper.kt फ़ाइल से लिए जाते हैं.

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

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

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

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

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

val inputText = "The input text to be embedded."

टास्क को पूरा करें

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

नीचे दिया गया कोड बताता है कि टास्क मॉडल की मदद से प्रोसेसिंग कैसे लागू की जाती है.

textEmbedder?.let {
    val firstEmbed =
        it.embed(firstText).embeddingResult().embeddings().first()
    val secondEmbed =
        it.embed(secondText).embeddingResult().embeddings().first()
    ...
}

उदाहरण कोड में, embed फ़ंक्शन को TextEmbedderHelper.kt फ़ाइल से लिए जाते हैं.

नतीजों को हैंडल करना और दिखाना

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

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

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

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

val similarity = TextEmbedder.cosineSimilarity(firstEmbed, secondEmbed)

उदाहरण कोड में, TextEmbedder.cosineSimilarity() फ़ंक्शन को TextEmbedderHelper.kt फ़ाइल से लिए जाते हैं.