المرادفات

يقوم عامل التصفية synonym بإعادة كتابة الرموز وفقًا لقاموس المرادفات، بحيث تتطابق المصطلحات ذات الصلة أثناء البحث. يدعم وضعين للتشغيل وطريقتين لتزويد القاموس:

  • وضعي التشغيل - وضع expand يحافظ على الرمز الأصلي ويصدر مرادفات إضافية إلى جانبه؛ وضع التطبيع (expand: false) يعيد كتابة الرموز إلى شكل متعارف عليه.

  • مصادر القاموس - يمكن تسطير القواميس الصغيرة في تكوين المرشح عبر مصفوفة synonyms ؛ أما القواميس الكبيرة فيجب تخزينها كمورد ملف والإشارة إليها عبر synonyms_file.

تنسيق القاموس

قاموس المرادفات هو عبارة عن مستند نصي عادي (أو مصفوفة مضمنة) يحدد فيه كل سطر قاعدة واحدة. يتم دعم شكلين من القواعد.

قاعدة التعيين

fast, quick => speedy

يتم إعادة كتابة الرموز الموجودة على اليسار (fast ، quick) إلى الرموز الموجودة على اليمين (speedy). يُسمح بتعدد الأهداف:

small, little => tiny, compact

مع expand: true ، يتم الاحتفاظ بالرموز الأصلية إلى جانب الأهداف:

  • الإدخال fast مع expand: truefast, speedy

  • الإدخال fast مع expand: false → → speedy

مجموعة التكافؤ

happy, joyful, cheerful

تعتبر جميع الرموز المدرجة متكافئة:

  • مع expand: true ، أي تكرار لأي رمز مميز في المجموعة ينبعث منه كل رمز مميز في المجموعة. المدخلات happyhappy ، joyful ، cheerful.

  • باستخدام expand: false ، تتم إعادة كتابة كل تكرار للرمز المميز الأول في المجموعة. المدخلات joyfulhappy ؛ المدخلات happy هي بالفعل الرمز الأول في المجموعة ولم تتغير.

التكوين

عامل التصفية synonym هو عامل تصفية مخصص. حدد "type": "synonym" مع واحد على الأقل من synonyms (مضمن) أو synonyms_file (خارجي)، بالإضافة إلى علامة expand.

analyzer_params = {
    "tokenizer": "standard",
    "filter": [
        {
            "type": "synonym",
            "synonyms": [                       # inline rules (optional)
                "fast, quick => speedy",
                "happy, joyful, cheerful",
            ],
            "synonyms_file": {                  # external rules (optional)
                "type": "remote",
                "resource_name": "en_synonyms",
                "file_name": "synonyms.txt",
            },
            "expand": True,
        }
    ],
}

يقبل عامل التصفية synonym المعلمات التالية.

المعلمة

الوصف

افتراضي

synonyms

مصفوفة مضمنة من سلاسل القواعد. تستخدم كل سلسلة تنسيق القاموس الموضح أعلاه. مناسبة للقواميس الصغيرة (حتى بضع عشرات من القواعد).

-

synonyms_file

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

-

expand

علامة منطقية تتحكم في كيفية تطبيق القواعد. صواب يحافظ على الرمز المميز الأصلي ويصدر مرادفات إلى جانبه؛ خطأ يعيد كتابة الرموز إلى شكلها المتعارف عليه (الجانب الأيمن من التعيين أو الرمز الأول لمجموعة التكافؤ).

خطأ

يمكنك تحديد synonyms أو synonyms_file أو كليهما. عند وجود كليهما، يدمج عامل التصفية المصدرين. يعمل عامل التصفية على الرموز التي تنتجها أداة الترميز؛ لذلك يجب دمجه مع أداة ترميز مثل أداة الترميز القياسية.

ملف القاموس الخارجي

بالنسبة للقواميس بحجم الإنتاج، قم بتسجيل الملف كمورد ملف بعيد وقم بالرجوع إليه من synonyms_file.

from pymilvus import MilvusClient

client = MilvusClient(uri="http://localhost:19530")

# Register the file once, then reference it from any analyzer that needs it.
client.add_file_resource(
    name="en_synonyms",
    path="file/synonyms.txt",     # full S3 object key, including rootPath
)

analyzer_params = {
    "tokenizer": "standard",
    "filter": [{
        "type": "synonym",
        "synonyms_file": {
            "type": "remote",
            "resource_name": "en_synonyms",
            "file_name": "synonyms.txt",
        },
        "expand": True,
    }],
}

انظر إدارة موارد الملفات للاطلاع على سير العمل الكامل (التحميل، التسجيل، الإدراج، الإزالة) وللاطلاع على النموذج البديل "type": "local".

أمثلة

قبل تطبيق المحلل على مخطط مجموعة، تحقق من سلوكه باستخدام run_analyzer. تستخدم الأمثلة التالية مصفوفة synonyms المضمنة للإيجاز؛ استبدلها بـ synonyms_file للقواميس الأكبر.

expand: true - احتفظ بالأصل، وأضف المرادفات

from pymilvus import MilvusClient

client = MilvusClient(uri="http://localhost:19530")

analyzer_params = {
    "tokenizer": "standard",
    "filter": [{
        "type": "synonym",
        "synonyms": [
            "fast, quick => speedy",
            "happy, joyful, cheerful",
        ],
        "expand": True,
    }],
}

print(client.run_analyzer(["a fast car"], analyzer_params))
# → [['a', 'fast', 'speedy', 'car']]

print(client.run_analyzer(["i am happy today"], analyzer_params))
# → [['i', 'am', 'happy', 'joyful', 'cheerful', 'today']]

يتم الإبقاء على كل من fast و happy ؛ يتم الاحتفاظ بمرادفاتهما معًا.

expand: false - إعادة الكتابة إلى الشكل المتعارف عليه

analyzer_params_norm = {
    "tokenizer": "standard",
    "filter": [{
        "type": "synonym",
        "synonyms": [
            "fast, quick => speedy",
            "happy, joyful, cheerful",
        ],
        "expand": False,
    }],
}

print(client.run_analyzer(["a fast car"], analyzer_params_norm))
# → [['a', 'speedy', 'car']]

print(client.run_analyzer(["i am happy today"], analyzer_params_norm))
# → [['i', 'am', 'happy', 'today']]

تقوم قاعدة التعيين بإعادة كتابة fast إلى speedy. تترك مجموعة التكافؤ happy دون تغيير لأنه الرمز الأول في المجموعة؛ أي مدخل يحتوي على joyful أو cheerful كان من الممكن إعادة كتابته إلى happy.

جرب Managed Milvus مجاناً

Zilliz Cloud خالي من المتاعب، ويعمل بواسطة Milvus ويعمل بسرعة 10 أضعاف.

ابدأ
التعليقات

هل كانت هذه الصفحة مفيدة؟