بحث غامض لتصحيح الأخطاء الإملائية والإملائية

يدعم Azure الذكاء الاصطناعي Search البحث الغامض، وهو نوع من الاستعلامات يعوض الأخطاء الكتابية والمصطلحات التي بها أخطاء إملائية في سلسلة الإدخال. يفحص البحث الغامض المصطلحات ذات التكوين المماثل. يؤدي توسيع البحث لتغطية التطابقات القريبة إلى تصحيح الأخطاء المطبعية تلقائيا عندما يكون التناقض بضعة أحرف في غير موضعها.

إنه تمرين توسيع الاستعلام الذي ينتج تطابقا على المصطلحات التي لها تكوين مماثل. عند تحديد بحث غامض، ينشئ محرك البحث رسما بيانيا (استنادا إلى نظرية automaton محدودة محددة) للمصطلحات المكونة بشكل مماثل، لجميع المصطلحات الكاملة في الاستعلام. على سبيل المثال، إذا كان الاستعلام يتضمن ثلاثة مصطلحات "university of washington"، يتم إنشاء رسم بياني لكل مصطلح في الاستعلام search=university~ of~ washington~ (لا توجد إزالة كلمة توقف في البحث الغامض، لذلك "of" يحصل على رسم بياني).

يتكون الرسم البياني من ما يصل إلى 50 توسيعا أو تباديل لكل مصطلح، ويلتقط المتغيرات الصحيحة وغير الصحيحة في العملية. ثم يقوم المحرك بإرجاع أعلى التطابقات ذات الصلة في الاستجابة.

بالنسبة لمصطلح مثل "university"، قد يحتوي الرسم البياني على "unversty, universty, university, universe, inverse". يتم تضمين أي مستندات تتطابق مع تلك الموجودة في الرسم البياني في النتائج. على النقيض من الاستعلامات الأخرى التي تحلل النص للتعامل مع أشكال مختلفة من نفس الكلمة ("الماوس" و"الماوس")، يتم إجراء المقارنات في استعلام غامض بقيمة الوجه دون أي تحليل لغوي على النص. وسيتطابق "الكون" و"العكس"، المختلفان دلاليا، لأن التناقضات التركيبية صغيرة.

تنجح المطابقة إذا اقتصرت التناقضات على تحريرين أو أقل، حيث يكون التحرير حرفا مدرجا أو محذوفا أو بديلا أو متحولا. خوارزمية تصحيح السلسلة التي تحدد التفاضلية هي مقياس المسافة Damerau-Levenshtein. ويوصف بأنه "الحد الأدنى لعدد العمليات (عمليات الإدراج أو الحذف أو الاستبدال أو تبديل حرفين متجاورين) المطلوبة لتغيير كلمة واحدة إلى أخرى".

في Azure الذكاء الاصطناعي Search:

  • ينطبق الاستعلام الغامض على المصطلحات الكاملة. العبارات غير مدعومة مباشرة ولكن يمكنك تحديد تطابق غامض على كل مصطلح من عبارة متعددة الأجزاء من خلال الإنشاءات AND. على سبيل المثال، search=dr~ AND cleanin~ يجد تعبير الاستعلام هذا التطابقات على "التنظيف الجاف".

  • المسافة الافتراضية للتحرير هي 2. تشير قيمة ~0 إلى عدم التوسع (يعتبر المصطلح الدقيق فقط مطابقا)، ولكن يمكنك تحديد ~1 درجة واحدة من الاختلاف، أو تحرير واحد.

  • يمكن للاستعلام الغامض توسيع مصطلح يصل إلى 50 عملية تباديل. هذا الحد غير قابل للتكوين، ولكن يمكنك تقليل عدد التوسيعات بشكل فعال عن طريق تقليل مسافة التحرير إلى 1.

  • تتكون الردود من مستندات تحتوي على تطابق ذي صلة (حتى 50).

أثناء معالجة الاستعلام، لا تخضع الاستعلامات الغامضة للتحليل المعجمي. تتم إضافة إدخال الاستعلام مباشرة إلى شجرة الاستعلام وتوسيعه لإنشاء رسم بياني للمصطلحات. التحويل الوحيد الذي يتم تنفيذه هو الغلاف السفلي.

بشكل جماعي، يتم إرسال الرسوم البيانية كمعايي مطابقة مقابل الرموز المميزة في الفهرس. كما يمكنك أن تتخيل، البحث الغامض أبطأ بطبيعتها من نماذج الاستعلام الأخرى. يمكن أن يحدد حجم الفهرس وتعقيده ما إذا كانت المزايا كافية لإزاحة زمن انتقال الاستجابة.

إشعار

نظرا لأن البحث الغامض يميل إلى أن يكون بطيئا، فقد يكون من المفيد التحقيق في بدائل مثل فهرسة n-gram، مع تطور تسلسل الأحرف القصيرة (تسلسلان وثلاثة أحرف للرموز المميزة للأحرف الكبيرة والثلاثية). اعتمادا على اللغة وسطح الاستعلام، قد يمنحك n-gram أداء أفضل. المفاضلة هي أن فهرسة n-gram هي مساحة تخزين مكثفة جدا وتولد فهارس أكبر بكثير.

البديل الآخر، الذي يمكنك التفكير فيه إذا كنت تريد التعامل مع الحالات الأكثر فظعا، سيكون خريطة مرادفات. على سبيل المثال، تعيين "البحث" إلى "serach أو serch أو sarch" أو "استرداد" إلى "retreive".

حقول السلسلة التي تنسب على أنها "قابلة للبحث" هي مرشحة للبحث الغامض.

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

كما هو الحال دائما، إذا كانت استعلامات الاختبار لا تنتج التطابقات التي تتوقعها، فجرب محللات فهرسة مختلفة. على سبيل المثال، جرب محلل اللغة لمعرفة ما إذا كنت تحصل على نتائج أفضل. يمكن أن تستفيد بعض اللغات، ولا سيما تلك التي تحتوي على طفرات حروف علوي، من أشكال الكلمات غير المنتظمة وغير المنتظمة التي تم إنشاؤها بواسطة معالجات اللغة الطبيعية من Microsoft. في بعض الحالات، يمكن أن يحدث استخدام محلل اللغة الصحيح فرقا في ما إذا كان المصطلح رمزيا بطريقة متوافقة مع القيمة التي يوفرها المستخدم.

يتم إنشاء الاستعلامات الغامضة باستخدام بناء جملة استعلام Lucene الكامل، واستدعاء محلل استعلام Lucene الكامل، وإلحاق حرف ~ التلدي بعد كل مصطلح كامل أدخله المستخدم.

فيما يلي مثال لطلب استعلام يستدعي البحث الغامض. يتضمن أربعة شروط، اثنان منها بها أخطاء إملائية:

POST https://[service name].search.windows.net/indexes/hotels-sample-index/docs/search?api-version=2023-11-01
{
    "search": "seatle~ waterfront~ view~ hotle~",
    "queryType": "full",
    "searchMode": "any",
    "searchFields": "HotelName, Description",
    "select": "HotelName, Description, Address/City,",
    "count": "true"
}
  1. تعيين نوع الاستعلام إلى بناء جملة Lucene الكامل (queryType=full).

  2. قم بتوفير سلسلة الاستعلام حيث يتبع كل مصطلح عامل تشغيل tilde (~) في نهاية كل مصطلح بأكمله (search=<string>~). يتم إنشاء رسم بياني للتوسيع لكل مصطلح في إدخال الاستعلام.

    تضمين معلمة اختيارية، رقم بين 0 و2 (افتراضي)، إذا كنت تريد تحديد مسافة التحرير (~1). على سبيل المثال، "blue~" أو "blue~1" قد ترجع "blue" و"blues" و"glue".

اختياريا، يمكنك تحسين أداء الاستعلام عن طريق تحديد نطاق الطلب إلى حقول معينة. استخدم المعلمة searchFields لتحديد الحقول التي تريد البحث فيها. يمكنك أيضا استخدام الخاصية select لتحديد الحقول التي يتم إرجاعها في استجابة الاستعلام.

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

عندما تكون النتائج غامضة، يمكن أن يساعدك تمييز الضرب في تحديد التطابق في الاستجابة.

إشعار

استخدام تمييز الضرب لتحديد التطابقات الغامضة له قيود ويعمل فقط للبحث الغامض الأساسي. إذا كان الفهرس يحتوي على ملفات تعريف تسجيل النقاط، أو إذا قمت بطبقة الاستعلام مع بناء جملة أكثر، فقد يفشل تمييز الضغط في تحديد التطابق.

مثال 1: بحث غامض بالمصطلح الدقيق

افترض أن السلسلة التالية موجودة في "Description" حقل في مستند بحث: "Test queries with special characters, plus strings for MSFT, SQL and Java."

ابدأ بالبحث الغامض على "خاص" وأضف تمييز ضرب إلى حقل الوصف:

search=special~&highlight=Description

في الاستجابة، نظرا لأنك أضفت تمييز ضرب، يتم تطبيق التنسيق على "خاص" كمصطلح مطابق.

"@search.highlights": {
    "Description": [
        "Test queries with <em>special</em> characters, plus strings for MSFT, SQL and Java."
    ]
}

حاول الطلب مرة أخرى، خطأ إملائي "خاص" عن طريق إخراج عدة أحرف ("pe"):

search=scial~&highlight=Description

حتى الآن، لا تغيير في الاستجابة. نظرا للمسافة الافتراضية 2 درجة، فإن إزالة حرفين "pe" من "خاص" لا يزال يسمح بمطابقة ناجحة على هذا المصطلح.

"@search.highlights": {
    "Description": [
        "Test queries with <em>special</em> characters, plus strings for MSFT, SQL and Java."
    ]
}

محاولة طلب آخر، قم بتعديل مصطلح البحث بشكل أكبر عن طريق إخراج حرف أخير واحد لإجمالي ثلاثة عمليات حذف (من "خاص" إلى "scal"):

search=scal~&highlight=Description

لاحظ أنه يتم إرجاع نفس الاستجابة، ولكن الآن بدلا من المطابقة على "خاص"، تكون المطابقة الغامضة على "SQL".

"@search.score": 0.4232868,
"@search.highlights": {
    "Description": [
        "Mix of special characters, plus strings for MSFT, <em>SQL</em>, 2019, Linux, Java."
    ]
}

الهدف من هذا المثال الموسع هو توضيح الوضوح الذي يمكن أن يؤدي إلى تسليط الضوء على نتائج غامضة. في جميع الحالات، يتم إرجاع المستند نفسه. إذا كنت تعتمد على معرفات المستندات للتحقق من التطابق، فربما فاتك التحول من "خاص" إلى "SQL".

(راجع أيضًا )