पाठ खोजकर्ताओं को एकीकृत करें

पाठ खोज किसी कॉर्पस में शब्दार्थ रूप से समान पाठ की खोज करने की अनुमति देती है। यह खोज क्वेरी को क्वेरी के अर्थपूर्ण अर्थ का प्रतिनिधित्व करने वाले एक उच्च-आयामी वेक्टर में एम्बेड करके काम करता है, इसके बाद ScaNN (स्केलेबल निकटतम पड़ोसियों) का उपयोग करके पूर्वनिर्धारित, कस्टम इंडेक्स में समानता खोज करता है।

पाठ वर्गीकरण (जैसे बर्ट प्राकृतिक भाषा वर्गीकरणकर्ता ) के विपरीत, पहचानी जा सकने वाली वस्तुओं की संख्या का विस्तार करने के लिए पूरे मॉडल को फिर से प्रशिक्षित करने की आवश्यकता नहीं होती है। सूचकांक को फिर से बनाकर नए आइटम जोड़े जा सकते हैं। यह बड़े (100k+ आइटम) कॉर्पस के साथ काम करने में भी सक्षम बनाता है।

अपने कस्टम टेक्स्ट सर्चर को अपने मोबाइल ऐप्स में तैनात करने के लिए टास्क लाइब्रेरी TextSearcher एपीआई का उपयोग करें।

टेक्स्ट सर्चर एपीआई की मुख्य विशेषताएं

  • इनपुट के रूप में एक स्ट्रिंग लेता है, इंडेक्स में एम्बेडिंग निष्कर्षण और निकटतम-पड़ोसी खोज करता है।

  • इनपुट टेक्स्ट प्रोसेसिंग, जिसमें इनपुट टेक्स्ट पर इन-ग्राफ़ या आउट-ऑफ़-ग्राफ़ वर्डपीस या सेंटेंसपीस टोकननाइजेशन शामिल है।

आवश्यक शर्तें

TextSearcher एपीआई का उपयोग करने से पहले, खोज करने के लिए टेक्स्ट के कस्टम कॉर्पस के आधार पर एक इंडेक्स बनाने की आवश्यकता होती है। इसे मॉडल मेकर सर्चर एपीआई का उपयोग करके ट्यूटोरियल का अनुसरण और अनुकूलन करके प्राप्त किया जा सकता है।

इसके लिए आपको आवश्यकता होगी:

  • एक TFLite टेक्स्ट एम्बेडर मॉडल, जैसे यूनिवर्सल सेंटेंस एनकोडर। उदाहरण के लिए,
    • इस Colab में पुनः प्रशिक्षित किया गया, जो ऑन-डिवाइस अनुमान के लिए अनुकूलित है। Pixel 6 पर एक टेक्स्ट स्ट्रिंग को क्वेरी करने में केवल 6ms लगते हैं।
    • परिमाणित एक, जो उपरोक्त से छोटा है लेकिन प्रत्येक एम्बेडिंग के लिए 38ms लेता है।
  • आपके पाठ का संग्रह.

इस चरण के बाद, आपके पास एक स्टैंडअलोन TFLite खोजकर्ता मॉडल (उदाहरण के लिए mobilenet_v3_searcher.tflite ) होना चाहिए, जो TFLite मॉडल मेटाडेटा में संलग्न इंडेक्स के साथ मूल टेक्स्ट एम्बेडर मॉडल है।

जावा में अनुमान चलाएँ

चरण 1: ग्रैडल निर्भरता और अन्य सेटिंग्स आयात करें

.tflite खोजकर्ता मॉडल फ़ाइल को एंड्रॉइड मॉड्यूल की संपत्ति निर्देशिका में कॉपी करें जहां मॉडल चलाया जाएगा। निर्दिष्ट करें कि फ़ाइल को संपीड़ित नहीं किया जाना चाहिए, और मॉड्यूल की build.gradle फ़ाइल में TensorFlow Lite लाइब्रेरी जोड़ें:

android {
    // Other settings

    // Specify tflite index file should not be compressed for the app apk
    aaptOptions {
        noCompress "tflite"
    }

}

dependencies {
    // Other dependencies

    // Import the Task Vision Library dependency (NNAPI is included)
    implementation 'org.tensorflow:tensorflow-lite-task-vision:0.4.4'
    // Import the GPU delegate plugin Library for GPU inference
    implementation 'org.tensorflow:tensorflow-lite-gpu-delegate-plugin:0.4.4'
}

चरण 2: मॉडल का उपयोग करना

// Initialization
TextSearcherOptions options =
    TextSearcherOptions.builder()
        .setBaseOptions(BaseOptions.builder().useGpu().build())
        .setSearcherOptions(
            SearcherOptions.builder().setL2Normalize(true).build())
        .build();
TextSearcher textSearcher =
    textSearcher.createFromFileAndOptions(context, modelFile, options);

// Run inference
List<NearestNeighbor> results = textSearcher.search(text);

TextSearcher को कॉन्फ़िगर करने के लिए अधिक विकल्पों के लिए स्रोत कोड और javadoc देखें।

C++ में अनुमान चलाएँ

// Initialization
TextSearcherOptions options;
options.mutable_base_options()->mutable_model_file()->set_file_name(model_path);
options.mutable_embedding_options()->set_l2_normalize(true);
std::unique_ptr<TextSearcher> text_searcher = TextSearcher::CreateFromOptions(options).value();

// Run inference with your input, `input_text`.
const SearchResult result = text_searcher->Search(input_text).value();

TextSearcher कॉन्फ़िगर करने के अधिक विकल्पों के लिए स्रोत कोड देखें।

पायथन में अनुमान चलाएँ

चरण 1: TensorFlow Lite सपोर्ट Pypi पैकेज स्थापित करें।

आप निम्न कमांड का उपयोग करके TensorFlow Lite सपोर्ट Pypi पैकेज स्थापित कर सकते हैं:

pip install tflite-support

चरण 2: मॉडल का उपयोग करना

from tflite_support.task import text

# Initialization
text_searcher = text.TextSearcher.create_from_file(model_path)

# Run inference
result = text_searcher.search(text)

TextSearcher कॉन्फ़िगर करने के अधिक विकल्पों के लिए स्रोत कोड देखें।

उदाहरण परिणाम

Results:
 Rank#0:
  metadata: The sun was shining on that day.
  distance: 0.04618
 Rank#1:
  metadata: It was a sunny day.
  distance: 0.10856
 Rank#2:
  metadata: The weather was excellent.
  distance: 0.15223
 Rank#3:
  metadata: The cat is chasing after the mouse.
  distance: 0.34271
 Rank#4:
  metadata: He was very happy with his newly bought car.
  distance: 0.37703

अपने स्वयं के मॉडल और परीक्षण डेटा के साथ टेक्स्ट सर्चर के लिए सरल सीएलआई डेमो टूल आज़माएं।