टेक्स्ट खोज की सुविधा की मदद से, किसी कॉर्पस में सिमैंटिक तौर पर मिलते-जुलते टेक्स्ट को खोजा जा सकता है. यह काम ऐसे करता है: सबसे पहले, खोज क्वेरी को ज़्यादा डाइमेंशन वाले ऐसे वेक्टर में एम्बेड किया जाता है जो क्वेरी के सिमैंटिक मतलब को दिखाता है. इसके बाद, ScaNN (स्केलेबल नियरेस्ट नेबर) का इस्तेमाल करके, पहले से तय किए गए कस्टम इंडेक्स में मिलती-जुलती खोज की जाती है.
टेक्स्ट क्लासिफ़िकेशन (जैसे, बर्ल्ट नैचुरल लैंग्वेज क्लासिफ़ायर) के उलट, पहचाने जा सकने वाले आइटम की संख्या बढ़ाने के लिए, पूरे मॉडल को फिर से ट्रेन करने की ज़रूरत नहीं होती. सिर्फ़ इंडेक्स को फिर से बनाकर, नए आइटम जोड़े जा सकते हैं. इससे बड़े कॉर्पस (100 हज़ार से ज़्यादा आइटम) के साथ काम करने की सुविधा भी मिलती है.
अपने मोबाइल ऐप्लिकेशन में कस्टम टेक्स्ट सर्च करने की सुविधा को डिप्लॉय करने के लिए, Task Library TextSearcher API का इस्तेमाल करें.
TextSearcher API की मुख्य सुविधाएं
यह एक स्ट्रिंग को इनपुट के तौर पर लेता है. साथ ही, इंडेक्स में एम्बेडिंग एक्सट्रैक्शन और सबसे मिलते-जुलते पड़ोसी की खोज करता है.
इनपुट टेक्स्ट प्रोसेसिंग. इसमें इनपुट टेक्स्ट पर, ग्राफ़ में मौजूद या ग्राफ़ से बाहर के Wordpiece या Sentencepiece टोकनाइज़ेशन शामिल हैं.
ज़रूरी शर्तें
TextSearcher एपीआई का इस्तेमाल करने से पहले, टेक्स्ट के कस्टम कॉर्पस के आधार पर एक इंडेक्स बनाना होगा, ताकि उसमें खोज की जा सके. इसके लिए, Model Maker Searcher API का इस्तेमाल किया जा सकता है. इसके लिए, ट्यूटोरियल को फ़ॉलो करें और उसमें दिए गए निर्देशों के मुताबिक बदलाव करें.
इसके लिए, आपको इन चीज़ों की ज़रूरत होगी:
- TFLite टेक्स्ट एम्बेडर मॉडल, जैसे कि Universal Sentence Encoder. उदाहरण के लिए,
- इस Colab में फिर से ट्रेन किया गया एक मॉडल, जिसे डिवाइस पर अनुमान लगाने के लिए ऑप्टिमाइज़ किया गया है. Pixel 6 पर किसी टेक्स्ट स्ट्रिंग के बारे में क्वेरी करने में सिर्फ़ 6 मिलीसेकंड लगते हैं.
- क्वांटाइज़्ड मॉडल, जो ऊपर दिए गए मॉडल से छोटा है, लेकिन हर एम्बेडिंग के लिए 38 मि॰से॰ लेता है.
- टेक्स्ट के डेटासेट को.
इस चरण के बाद, आपके पास एक स्टैंडअलोन TFLite सर्च करने वाला मॉडल (जैसे, mobilenet_v3_searcher.tflite) होना चाहिए.यह ओरिजनल टेक्स्ट एम्बेडर मॉडल होता है. इसमें इंडेक्स को TFLite मॉडल मेटाडेटा में अटैच किया जाता है.
Java में अनुमान लगाने की सुविधा इस्तेमाल करना
पहला चरण: Gradle डिपेंडेंसी और अन्य सेटिंग इंपोर्ट करना
.tflite खोज करने वाले मॉडल की फ़ाइल को Android मॉड्यूल की ऐसेट डायरेक्ट्री में कॉपी करें जहां मॉडल को चलाया जाएगा. यह तय करें कि फ़ाइल को कंप्रेस नहीं किया जाना चाहिए. साथ ही, मॉड्यूल की 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
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'
}
दूसरा चरण: मॉडल का इस्तेमाल करना
// 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 को कॉन्फ़िगर करने के ज़्यादा विकल्पों के लिए, सोर्स कोड देखें.
Python में अनुमान लगाने की सुविधा का इस्तेमाल करना
पहला चरण: TensorFlow Lite Support Pypi पैकेज इंस्टॉल करें.
TensorFlow Lite Support Pypi पैकेज को इंस्टॉल करने के लिए, इस निर्देश का इस्तेमाल करें:
pip install tflite-support
दूसरा चरण: मॉडल का इस्तेमाल करना
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
अपने मॉडल और टेस्ट डेटा के साथ, TextSearcher के लिए उपलब्ध, आसान CLI डेमो टूल आज़माएं.