دمج الباحثين عن النص

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

على عكس تصنيف النص (مثل مصنف Bert للغة الطبيعية )، فإن توسيع عدد العناصر التي يمكن التعرف عليها لا يتطلب إعادة تدريب النموذج بأكمله. يمكن إضافة عناصر جديدة بمجرد إعادة بناء الفهرس. يتيح هذا أيضًا العمل مع مجموعات أكبر (أكثر من 100 ألف عنصر).

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

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

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

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

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

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

لهذا سوف تحتاج:

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

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

تشغيل الاستدلال في جافا

الخطوة 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 (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);

راجع الكود المصدري و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: تثبيت حزمة TensorFlow Lite Support Pypi.

يمكنك تثبيت حزمة 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 باستخدام النموذج الخاص بك وبيانات الاختبار.