بحث غامض لتصحيح الأخطاء الإملائية والأخطاء المطبعية
يدعم Azure Cognitive Search البحث الضبابي، وهو نوع من الاستعلام يعوض عن الأخطاء المطبعية والمصطلحات التي بها أخطاء إملائية في سلسلة الإدخال. يقوم بذلك عن طريق البحث عن المصطلحات التي لها تركيبة مماثلة. يؤدي توسيع نطاق البحث لتغطية التطابقات القريبة إلى التصحيح التلقائي للخطأ المطبعي عندما يكون التناقض مجرد عدد قليل من الأحرف في غير محلها.
ما هو البحث الغامض؟
إنه تمرين توسع ينتج مباراة بشروط لها تركيبة مماثلة. عندما يتم تحديد بحث غامض ، يقوم المحرك ببناء رسم بياني (استنادا إلى نظرية الأوتوماتون المحدودة الحتمية) من المصطلحات المكونة بشكل مماثل ، لجميع المصطلحات بأكملها في الاستعلام. على سبيل المثال، إذا كان استعلامك يتضمن ثلاثة مصطلحات جامعة واشنطن، إنشاء رسم بياني لكل مصطلح في الاستعلام search=university~ of~ washington~ (لا توجد إزالة كلمة إيقاف في البحث الضبابي، لذلك تحصل كلمة من على رسم بياني).
يتكون الرسم البياني من ما يصل إلى 50 توسعا ، أو تباديل ، لكل مصطلح ، مع التقاط كل من المتغيرات الصحيحة وغير الصحيحة في هذه العملية. ثم يقوم المحرك بإرجاع أعلى التطابقات ذات الصلة في الاستجابة.
بالنسبة لمصطلح مثل "الجامعة" ، قد يحتوي الرسم البياني على "unversty ، universty ، University ، universe ، inverse". يتم تضمين أي مستندات تتطابق مع تلك الموجودة في الرسم البياني في النتائج. على النقيض من الاستعلامات الأخرى التي تحلل النص للتعامل مع أشكال مختلفة من نفس الكلمة ("الفئران" و "الماوس") ، يتم أخذ المقارنات في استعلام غامض بالقيمة الاسمية دون أي تحليل لغوي على النص. "الكون" و "العكسي" ، اللذان يختلفان دلاليا ، سوف يتطابقان لأن التناقضات النحوية صغيرة.
تنجح المطابقة إذا اقتصرت التناقضات على تعديلين أو أقل، حيث يكون التعديل عبارة عن حرف مدرج أو محذوف أو بديل أو منقول. خوارزمية تصحيح السلسلة التي تحدد الفرق هي مقياس مسافة Damerau-Levenshtein ، الذي يوصف بأنه "الحد الأدنى لعدد العمليات (الإدراج أو الحذف أو الاستبدال أو نقل الأحرف المتجاورة) المطلوبة لتغيير كلمة واحدة إلى أخرى".
في البحث المعرفي Azure:
ينطبق الاستعلام الضبابي على المصطلحات بأكملها، ولكن يمكنك دعم العبارات من خلال إنشاءات AND. على سبيل المثال ، "Unviersty ~ من ~ "Wshington ~" ستتطابق مع "جامعة واشنطن".
المسافة الافتراضية للتحرير هي 2. قيمة
~0لا تعني أي توسع (فقط المصطلح الدقيق يعتبر مطابقا) ، ولكن يمكنك تحديد~1درجة واحدة من الفرق ، أو تعديل واحد.يمكن للاستعلام الضبابي توسيع مصطلح يصل إلى 50 تباديل إضافية. هذا الحد غير قابل للتكوين، ولكن يمكنك تقليل عدد التوسعات بشكل فعال عن طريق تقليل مسافة التحرير إلى 1.
تتكون الردود من مستندات تحتوي على مطابقة ذات صلة (حتى 50).
بشكل جماعي ، يتم تقديم الرسوم البيانية كمعايير مطابقة مقابل الرموز المميزة في الفهرس. كما يمكنك أن تتخيل ، فإن البحث الضبابي أبطأ بطبيعته من أشكال الاستعلام الأخرى. يمكن أن يحدد حجم الفهرس وتعقيده ما إذا كانت الفوائد كافية لتعويض زمن الاستجابة أم لا.
ملاحظة
نظرا لأن البحث الضبابي يميل إلى أن يكون بطيئا ، فقد يكون من المفيد التحقيق في بدائل مثل فهرسة n-gram ، مع تقدمه في تسلسلات الأحرف القصيرة (تسلسلان وثلاثة أحرف لرموز bigram و trigram). اعتمادا على لغتك وسطح الاستعلام، قد يمنحك n-gram أداء أفضل. المفاضلة هي أن فهرسة n-gram كثيفة التخزين للغاية وتولد مؤشرات أكبر بكثير.
بديل آخر ، والذي يمكنك مراعاته إذا كنت ترغب في التعامل مع الحالات الأكثر فظاعة ، سيكون خريطة مرادفة. على سبيل المثال ، تعيين "البحث" إلى "serach ، serch ، sarch" ، أو "استرداد" إلى "rereive".
الفهرسة للبحث الغامض
لا يتم استخدام أجهزة التحليل أثناء معالجة الاستعلام لإنشاء رسم بياني للتوسيع، ولكن هذا لا يعني أنه يجب تجاهل أجهزة التحليل في سيناريوهات البحث الغامضة. بعد كل شيء ، يتم استخدام أجهزة التحليل أثناء الفهرسة لإنشاء رموز مميزة تتم المطابقة مقابلها ، سواء كان الاستعلام عبارة عن شكل حر أو بحث تمت تصفيته أو بحث غامض مع رسم بياني كمدخلات.
بشكل عام ، عند تعيين أجهزة التحليل على أساس كل حقل ، يعتمد قرار ضبط سلسلة التحليل على حالة الاستخدام الأساسية (مرشح أو بحث النص الكامل) بدلا من نماذج الاستعلام المتخصصة مثل البحث الضبابي. لهذا السبب ، لا توجد توصية محلل محددة للبحث الغامض.
ومع ذلك، إذا كانت استعلامات الاختبار لا تنتج التطابقات التي تتوقعها، فيمكنك محاولة تغيير محلل الفهرسة، وتعيينه إلى محلل لغة، لمعرفة ما إذا كنت ستحصل على نتائج أفضل. يمكن لبعض اللغات، وخاصة تلك التي تحتوي على طفرات حروف العلة، الاستفادة من الانعطاف وأشكال الكلمات غير المنتظمة التي تم إنشاؤها بواسطة معالجات اللغات الطبيعية من Microsoft. في بعض الحالات ، يمكن أن يؤدي استخدام محلل اللغة الصحيح إلى إحداث فرق في ما إذا كان المصطلح رمزيا بطريقة متوافقة مع القيمة التي يقدمها المستخدم.
كيفية استخدام البحث الغامض
يتم إنشاء الاستعلامات الضبابية باستخدام بناء جملة استعلام Lucene الكامل، مع استدعاء محلل استعلام Lucene.
قم بتعيين محلل Lucene الكامل على الاستعلام (
queryType=full).اختياريا، قم بتوسيع نطاق الطلب إلى حقول محددة، باستخدام هذه المعلمة (
searchFields=<field1,field2>).إلحاق عامل تشغيل التلدة () في نهاية المدة بأكملها (
~search=<string>~).قم بتضمين معلمة اختيارية، رقم يتراوح بين 0 و2 (افتراضي)، إذا كنت تريد تحديد مسافة التحرير (
~1). على سبيل المثال ، "الأزرق ~" أو "الأزرق ~ 1" سيعود "الأزرق" و "البلوز" و "الغراء".
في Azure Cognitive Search، إلى جانب المصطلح والمسافة (بحد أقصى 2)، لا توجد معلمات إضافية لتعيينها على الاستعلام.
ملاحظة
أثناء معالجة الاستعلام، لا تخضع الاستعلامات الغامضة لتحليل معجمي. تتم إضافة إدخال الاستعلام مباشرة إلى شجرة الاستعلام وتوسيعه لإنشاء رسم بياني للمصطلحات. التحويل الوحيد الذي يتم إجراؤه هو الغلاف السفلي.
اختبار البحث الغامض
لإجراء اختبارات بسيطة، نوصي باستخدام مستكشف البحث أو ساعي البريد للتكرار عبر تعبير استعلام. كلتا الأداتين تفاعليتان ، مما يعني أنه يمكنك التنقل بسرعة عبر متغيرات متعددة من المصطلح وتقييم الاستجابات التي تعود.
عندما تكون النتائج غامضة، يمكن أن يساعدك تمييز الضرب في تحديد التطابق في الاستجابة.
ملاحظة
إن استخدام تمييز النتائج لتحديد التطابقات الغامضة له قيود ولا يعمل إلا في البحث الضبابي الأساسي. إذا كان الفهرس يحتوي على ملفات تعريف تسجيل النقاط، أو إذا قمت بطبقة الاستعلام مع بناء جملة إضافي، فقد يفشل تمييز الضرب في تحديد التطابق.
مثال 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".