يتيح البحث النصي البحث عن نص متشابه دلاليًا في مجموعة كاملة. تعمل عن طريق تضمين طلب البحث في متجه عالي الأبعاد يمثل المعنى الدلالي لطلب البحث، متبوعًا ببحث التشابه في مصطلح فهرس مخصص باستخدام ScaNN (الجار الأقرب القابل للتوسع).
على عكس تصنيف النص (على سبيل المثال: مصنِّف لغة "بيرت" الطبيعية) لا يتطلب زيادة عدد العناصر التي يمكن التعرف عليها إعادة تدريب للنموذج بأكمله. يمكن إضافة عناصر جديدة ببساطة عند إعادة إنشاء الفهرس. هذا أيضًا ويمكّن العمل على مجموعات أكبر (أكثر من 100 ألف عنصر).
استخدِم واجهة برمجة التطبيقات Task Library TextSearcher
API لنشر الباحث النصي المخصّص في
لتطبيقات الهاتف المحمول.
الميزات الرئيسية لواجهة برمجة التطبيقات TextSearcher
يتم أخذ سلسلة واحدة كإدخال وتنفيذ استخراج التضمين بحث الجار الأقرب في الفهرس.
معالجة النصوص المُدخَلة، بما في ذلك الإعلانات داخل الرسم البياني أو خارج الرسم البياني الكلمة النصية أو الجملة عمليات إنشاء رموز مميّزة على النص المُدخَل.
المتطلبات الأساسية
قبل استخدام واجهة برمجة التطبيقات TextSearcher
، يجب إنشاء فهرس استنادًا إلى
مجموعة نصية مخصصة للبحث فيها. يمكن تحقيق ذلك باستخدام
واجهة برمجة تطبيقات باحث "مصمم النماذج"
من خلال اتباع وتكييف
البرنامج التعليمي.
لتنفيذ ذلك، سوف تحتاج إلى ما يلي:
- نموذج أداة تضمين النص بتنسيق TFLite، مثل برنامج ترميز الجملة العالمي. بالنسبة مثال،
- مجموعة النصوص لديك.
بعد هذه الخطوة، يُفترض أن يصبح لديك نموذج باحث مستقل في TFLite (على سبيل المثال،
mobilenet_v3_searcher.tflite
)، وهو النموذج الأصلي لبرنامج تضمين النص مع
الفهرس المرفق في ملف
البيانات الوصفية لنماذج TFLite:
تنفيذ الاستنتاج باستخدام Java
الخطوة 1: استيراد تبعية Gradle والإعدادات الأخرى
انسخ ملف نموذج البحث في .tflite
إلى دليل مواد العرض في نظام التشغيل Android.
موضع تشغيل النموذج. حدد أن الملف يجب ألا
وضغطها وإضافة مكتبة TensorFlow Lite إلى build.gradle
الخاصة بالوحدة.
الملف:
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'
}
الخطوة 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);
يمكنك الاطّلاع على
الرمز المصدر وJavadoc
لمزيد من الخيارات لضبط TextSearcher
.
تنفيذ الاستنتاج بلغة 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: تثبيت حزمة Pypi لدعم TensorFlow Lite
يمكنك تثبيت حزمة TensorFlow Lite Support 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
جرب البساطة أداة عرض واجهة سطر الأوامر الخاصة بـ TextSearcher باستخدام نموذجك الخاص وبيانات الاختبار.