دمج أدوات البحث عن النصوص

يتيح البحث النصي البحث عن نص متشابه دلاليًا في مجموعة كاملة. تعمل عن طريق تضمين طلب البحث في متجه عالي الأبعاد يمثل المعنى الدلالي لطلب البحث، متبوعًا ببحث التشابه في مصطلح فهرس مخصص باستخدام ScaNN (الجار الأقرب القابل للتوسع).

على عكس تصنيف النص (على سبيل المثال: مصنِّف لغة "بيرت" الطبيعية) لا يتطلب زيادة عدد العناصر التي يمكن التعرف عليها إعادة تدريب للنموذج بأكمله. يمكن إضافة عناصر جديدة ببساطة عند إعادة إنشاء الفهرس. هذا أيضًا ويمكّن العمل على مجموعات أكبر (أكثر من 100 ألف عنصر).

استخدِم واجهة برمجة التطبيقات Task Library TextSearcher API لنشر الباحث النصي المخصّص في لتطبيقات الهاتف المحمول.

الميزات الرئيسية لواجهة برمجة التطبيقات TextSearcher

  • يتم أخذ سلسلة واحدة كإدخال وتنفيذ استخراج التضمين بحث الجار الأقرب في الفهرس.

  • معالجة النصوص المُدخَلة، بما في ذلك الإعلانات داخل الرسم البياني أو خارج الرسم البياني الكلمة النصية أو الجملة عمليات إنشاء رموز مميّزة على النص المُدخَل.

المتطلبات الأساسية

قبل استخدام واجهة برمجة التطبيقات TextSearcher، يجب إنشاء فهرس استنادًا إلى مجموعة نصية مخصصة للبحث فيها. يمكن تحقيق ذلك باستخدام واجهة برمجة تطبيقات باحث "مصمم النماذج" من خلال اتباع وتكييف البرنامج التعليمي.

لتنفيذ ذلك، سوف تحتاج إلى ما يلي:

  • نموذج أداة تضمين النص بتنسيق TFLite، مثل برنامج ترميز الجملة العالمي. بالنسبة مثال،
    • الـ واحد تمت إعادة تدريبه في هذا Colab، التي تم تحسينها للاستنتاج على الجهاز فقط يستغرق الاستعلام عن نصية على Pixel 6.
    • الـ الكمية وهو أصغر من المذكور أعلاه ولكن يستغرق 38 ملّي ثانية لكل عملية تضمين.
  • مجموعة النصوص لديك.

بعد هذه الخطوة، يُفترض أن يصبح لديك نموذج باحث مستقل في 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

جرب البساطة أداة عرض واجهة سطر الأوامر (CLI) لـ TextSearcher باستخدام نموذجك الخاص وبيانات الاختبار.