टेक्स्ट एम्बेडर, टेक्स्ट को ज़्यादा डाइमेंशन वाले फ़ीचर वेक्टर में एम्बेड करने की सुविधा देते हैं. यह फ़ीचर वेक्टर, टेक्स्ट के सिमैंटिक मतलब को दिखाता है. इसके बाद, इसकी तुलना दूसरे टेक्स्ट के फ़ीचर वेक्टर से की जा सकती है, ताकि उनके सिमैंटिक मतलब की समानता का आकलन किया जा सके.
टेक्स्ट सर्च के उलट, टेक्स्ट एम्बेडर की मदद से टेक्स्ट के बीच समानता का पता तुरंत लगाया जा सकता है. इसके लिए, कॉर्पस से बनाए गए पहले से तय इंडेक्स में खोजने की ज़रूरत नहीं होती.
अपने मोबाइल ऐप्लिकेशन में कस्टम टेक्स्ट एम्बेडर को डिप्लॉय करने के लिए, Task Library TextEmbedder API का इस्तेमाल करें.
TextEmbedder API की मुख्य सुविधाएं
इनपुट टेक्स्ट प्रोसेसिंग. इसमें इनपुट टेक्स्ट पर, ग्राफ़ में मौजूद या ग्राफ़ से बाहर के Wordpiece या Sentencepiece टोकनाइज़ेशन शामिल हैं.
यह एक बिल्ट-इन यूटिलिटी फ़ंक्शन है. इसका इस्तेमाल, फ़ीचर वेक्टर के बीच कोसाइन सिमिलैरिटी का हिसाब लगाने के लिए किया जाता है.
टेक्स्ट एम्बेड करने वाले मॉडल
इन मॉडल में TextEmbedder API का इस्तेमाल किया जा सकता है.
कस्टम मॉडल, जो मॉडल के साथ काम करने की ज़रूरी शर्तों को पूरा करते हों.
C++ में अनुमान चलाने की सुविधा
// Initialization.
TextEmbedderOptions options:
options.mutable_base_options()->mutable_model_file()->set_file_name(model_path);
std::unique_ptr<TextEmbedder> text_embedder = TextEmbedder::CreateFromOptions(options).value();
// Run inference with your two inputs, `input_text1` and `input_text2`.
const EmbeddingResult result_1 = text_embedder->Embed(input_text1);
const EmbeddingResult result_2 = text_embedder->Embed(input_text2);
// Compute cosine similarity.
double similarity = TextEmbedder::CosineSimilarity(
result_1.embeddings[0].feature_vector()
result_2.embeddings[0].feature_vector());
TextEmbedder को कॉन्फ़िगर करने के ज़्यादा विकल्पों के लिए, सोर्स कोड देखें.
Python में अनुमान लगाने की सुविधा का इस्तेमाल करना
पहला चरण: TensorFlow Lite Support Pypi पैकेज इंस्टॉल करें.
TensorFlow Lite Support Pypi पैकेज को इंस्टॉल करने के लिए, इस निर्देश का इस्तेमाल करें:
pip install tflite-support
दूसरा चरण: मॉडल का इस्तेमाल करना
from tflite_support.task import text
# Initialization.
text_embedder = text.TextEmbedder.create_from_file(model_path)
# Run inference on two texts.
result_1 = text_embedder.embed(text_1)
result_2 = text_embedder.embed(text_2)
# Compute cosine similarity.
feature_vector_1 = result_1.embeddings[0].feature_vector
feature_vector_2 = result_2.embeddings[0].feature_vector
similarity = text_embedder.cosine_similarity(
result_1.embeddings[0].feature_vector, result_2.embeddings[0].feature_vector)
TextEmbedder को कॉन्फ़िगर करने के ज़्यादा विकल्पों के लिए, सोर्स कोड देखें.
परिणामों के उदाहरण
सामान्य किए गए फ़ीचर वेक्टर के बीच कोसाइन समानता, -1 और 1 के बीच का स्कोर दिखाती है. कोसाइन सिमिलैरिटी जितनी ज़्यादा हो उतना बेहतर है. इसका मतलब है कि अगर कोसाइन सिमिलैरिटी 1 है, तो दोनों वेक्टर एक जैसे हैं.
Cosine similarity: 0.954312
अपने मॉडल और टेस्ट डेटा के साथ, TextEmbedder के लिए उपलब्ध, आसान CLI डेमो टूल आज़माएं.
मॉडल के साथ काम करने से जुड़ी ज़रूरी शर्तें
TextEmbedder एपीआई को TFLite मॉडल
मेटाडेटा के साथ TFLite मॉडल की ज़रूरत होती है.
तीन मुख्य तरह के मॉडल इस्तेमाल किए जा सकते हैं:
BERT पर आधारित मॉडल (ज़्यादा जानकारी के लिए, सोर्स कोड देखें):
ठीक तीन इनपुट टेंसर (kTfLiteString)
"ids" नाम वाले मेटाडेटा के साथ आईडी टेंसर,
मेटाडेटा के नाम "mask" वाला मास्क टेंसर.
सेगमेंट आईडी का टेंसर, जिसका मेटाडेटा नाम "segment_ids" है
सिर्फ़ एक आउटपुट टेंसर (kTfLiteUInt8/kTfLiteFloat32)
इस आउटपुट लेयर के लिए, लौटाए गए फ़ीचर वेक्टर के
Nडाइमेंशन के हिसाब सेNकॉम्पोनेंट होते हैं.दो या चार डाइमेंशन, यानी कि
[1 x N]या[1 x 1 x 1 x N].Wordpiece/Sentencepiece Tokenizer के लिए input_process_units
युनिवर्सल सेंटेंस एन्कोडर पर आधारित मॉडल (ज़्यादा जानकारी के लिए, सोर्स कोड देखें):
ठीक तीन इनपुट टेंसर (kTfLiteString)
क्वेरी टेक्स्ट टेंसर, जिसका मेटाडेटा नाम "inp_text" है.
जवाब के कॉन्टेक्स्ट का टेंसर, जिसका मेटाडेटा नाम "res_context" है.
जवाब का टेक्स्ट टेंसर, जिसका मेटाडेटा नाम "res_text" है.
आउटपुट के तौर पर ठीक दो टेंसर (kTfLiteUInt8/kTfLiteFloat32)
क्वेरी एन्कोडिंग टेंसर, जिसका मेटाडेटा नाम "query_encoding" है.
जवाब को एन्कोड करने वाला टेंसर. इसका मेटाडेटा नाम "response_encoding" है.
दोनों में
Nकॉम्पोनेंट होते हैं, जो इस आउटपुट लेयर के लिए दिखाए गए फ़ीचर वेक्टर केNडाइमेंशन के मुताबिक होते हैं.दोनों में दो या चार डाइमेंशन होने चाहिए. जैसे,
[1 x N]या[1 x 1 x 1 x N].
टेक्स्ट एम्बेड करने वाला कोई भी ऐसा मॉडल जिसमें ये सुविधाएं हों:
- इनपुट टेक्स्ट टेंसर (kTfLiteString)
कम से कम एक आउटपुट एम्बेडिंग टेंसर (kTfLiteUInt8/kTfLiteFloat32)
इस आउटपुट लेयर के लिए, लौटाए गए फ़ीचर वेक्टर के
Nडाइमेंशन के हिसाब सेNकॉम्पोनेंट होते हैं.दो या चार डाइमेंशन, यानी कि
[1 x N]या[1 x 1 x 1 x N].