الرجوع إلى مسار للعقد التي تم إثراؤها باستخدام خصائص السياق والمصدر مجموعة مهارات Azure الذكاء الاصطناعي Search

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

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

مفاهيم الخلفية

قبل مراجعة بناء الجملة، دعنا نعيد النظر في بعض المفاهيم المهمة لفهم الأمثلة المقدمة لاحقا في هذه المقالة بشكل أفضل.

الشرط ‏‏الوصف
"مستند تم إثرائه" المستند الذي تم إثرائه هو بنية في الذاكرة تجمع مخرجات المهارة عند إنشائها وتحمل جميع عمليات الإثراء المتعلقة بالمستند. فكر في المستند الذي تم إثرائه كشجرة. بشكل عام، تبدأ الشجرة على مستوى المستند الجذر، ويتم إنشاء كل إثراء جديد من السابق باعتباره تابعا لها.
"عقدة" داخل مستند تم إثرائه، يتم إنشاء عقدة (يشار إليها أحيانا باسم "التعليق التوضيحي") وتعبئتها بمهارة، مثل "النص" و"layoutText" في مهارة التعرف البصري على الحروف. يتم ملء المستند الذي تم إثرائه بكل من الإثراء وقيم حقل المصدر الأصلي أو بيانات التعريف المنسخة من المصدر.
"السياق" نطاق الإثراء، وهو إما المستند بأكمله، أو جزء من المستند، أو إذا كنت تعمل مع الصور، الصور المستخرجة من مستند. بشكل افتراضي، يكون سياق الإثراء على "/document" المستوى، ويتم تحديد نطاقه للمستندات الفردية المضمنة في مصدر البيانات. عند تشغيل مهارة، تصبح مخرجات تلك المهارة خصائص للسياق المحدد.

مسارات لسيناريوهات مختلفة

يتم تحديد المسارات في خصائص "السياق" و"المصدر" بمجموعةة المهارات، وفي تعيينات حقل الإخراج في المفهرس.

لقطة شاشة لتعريف مجموعة المهارات مع تمييز عناصر السياق والمصدر.

يوضح المثال في لقطة الشاشة مسار عنصر في مجموعة Azure Cosmos DB.

  • context لأن /document/HotelId المجموعة مقسمة إلى مستندات حسب /HotelId الحقل.

  • source ويرجع سبب ذلك /document/Description إلى أن المهارة هي مهارة ترجمة، وأن الحقل الذي تريد أن تترجمه المهارة هو الحقل في Description كل مستند.

تبدأ جميع المسارات ب /document. يتم إنشاء مستند تم إثرائه في مرحلة "تكسير المستند" لتنفيذ المفهرس، عندما يفتح المفهرس مستندا أو يقرأ في صف من مصدر البيانات. في البداية، العقدة الوحيدة في مستند تم إثراؤها هي العقدة الجذر (/document)، وهي العقدة التي تحدث منها جميع عمليات الإثراء الأخرى.

تتضمن القائمة التالية العديد من الأمثلة الشائعة:

  • /document هي العقدة الجذر وتشير إلى كائن ثنائي كبير الحجم بأكمله في Azure Storage، أو صف في جدول SQL.
  • /document/{key} هو بناء الجملة لمستند أو عنصر في مجموعة Azure Cosmos DB، حيث {key} هو المفتاح الفعلي، كما هو الحال /document/HotelId في المثال السابق.
  • /document/content يحدد خاصية "المحتوى" لكائن ثنائي كبير الحجم JSON.
  • /document/{field} هو بناء الجملة لعملية يتم إجراؤها على حقل معين، مثل ترجمة /document/Description الحقل، الذي يظهر في المثال السابق.
  • /document/pages/* أو /document/sentences/* تصبح السياق إذا كنت تقوم بتقسيم مستند كبير إلى أجزاء أصغر للمعالجة. إذا كانت "السياق" هي /document/pages/*، يتم تنفيذ المهارة مرة واحدة فوق كل صفحة في المستند. نظرا إلى أنه قد يكون هناك أكثر من صفحة أو جملة واحدة، فستلحقها /* بالقبض عليها جميعا.
  • /document/normalized_images/* يتم إنشاؤه أثناء تكسير المستند إذا كان المستند يحتوي على صور. تبدأ جميع المسارات إلى الصور normalized_images. نظرا لوجود صور متعددة في كثير من الأحيان مضمنة في مستند، قم بإلحاق /*.

تستند الأمثلة في باقي هذه المقالة إلى حقل "المحتوى" الذي تم إنشاؤه تلقائيا بواسطة مفهرسات Azure blob كجزء من مرحلة تكسير المستند. عند الإشارة إلى مستندات من حاوية Blob، استخدم تنسيقا مثل "/document/content"، حيث يكون حقل "المحتوى" جزءا من "المستند".

مثال 1: مرجع تعليق توضيحي بسيط

في Azure Blob Storage، افترض أن لديك مجموعة متنوعة من الملفات التي تحتوي على مراجع لأسماء الأشخاص التي تريد استخراجها باستخدام التعرف على الكيان. في تعريف المهارة التالي، "/document/content" هو التمثيل النصي للوثيقة بأكملها، و"الأشخاص" هو استخراج الأسماء الكاملة للكيانات المحددة كأشخاص.

نظرا لأن السياق الافتراضي هو "/document"، يمكن الآن الإشارة إلى قائمة الأشخاص على أنها "/document/people". في هذه الحالة "/document/people" المحددة هو تعليق توضيحي، والذي يمكن الآن تعيينه إلى حقل في فهرس، أو استخدامه في مهارة أخرى في نفس مجموعة المهارات.

  {
    "@odata.type": "#Microsoft.Skills.Text.V3.EntityRecognitionSkill",
    "categories": [ "Person"],
    "defaultLanguageCode": "en",
    "inputs": [
      {
        "name": "text",
        "source": "/document/content"
      }
    ],
    "outputs": [
      {
        "name": "persons",
        "targetName": "people"
      }
    ]
  }

مثال 2: الرجوع إلى صفيف داخل مستند

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

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

  {
    "@odata.type": "#Microsoft.Skills.Custom.WebApiSkill",
    "description": "Fictitious skill that gets the last name from a full name",
    "uri": "http://names.azurewebsites.net/api/GetLastName",
    "context" : "/document/people/*",
    "defaultLanguageCode": "en",
    "inputs": [
      {
        "name": "fullname",
        "source": "/document/people/*"
      }
    ],
    "outputs": [
      {
        "name": "lastname",
        "targetName": "last"
      }
    ]
  }

عندما تكون التعليقات التوضيحية صفائف أو مجموعات من السلاسل، قد تحتاج إلى استهداف أعضاء محددين بدلا من الصفيف ككل. ينشئ المثال أعلاه تعليقا توضيحيا يسمى "last" ضمن كل عقدة ممثلة بالسياق. إذا كنت تريد الرجوع إلى مجموعة التعليقات التوضيحية هذه، يمكنك استخدام بناء الجملة "/document/people/*/last". إذا كنت تريد الإشارة إلى تعليق توضيحي معين، يمكنك استخدام فهرس صريح: "/document/people/1/last" للإشارة إلى اسم العائلة لأول شخص تم تحديده في المستند. لاحظ أنه في صفائف بناء الجملة هذه هي "0 مفهرسة".

مثال 3: الأعضاء المرجعون داخل صفيف

في بعض الأحيان تحتاج إلى تجميع جميع التعليقات التوضيحية من نوع معين لتمريرها إلى مهارة معينة. ضع في اعتبارك مهارة مخصصة افتراضية تحدد اسم العائلة الأكثر شيوعا من جميع أسماء العائلة المستخرجة في المثال 2. لتوفير أسماء العائلة فقط للمهارة المخصصة، حدد السياق ك "/document" و الإدخال ك "/document/people/*/lastname".

لاحظ أن العلاقة الأساسية أكبر من علاقة "/document/people/*/lastname" المستند. قد يكون هناك 10 عقد اسم العائلة بينما هناك عقدة مستند واحدة فقط لهذا المستند. في هذه الحالة، سيقوم النظام تلقائيا بإنشاء صفيف يحتوي "/document/people/*/lastname" على كافة العناصر في المستند.

  {
    "@odata.type": "#Microsoft.Skills.Custom.WebApiSkill",
    "description": "Fictitious skill that gets the most common string from an array of strings",
    "uri": "http://names.azurewebsites.net/api/MostCommonString",
    "context" : "/document",
    "inputs": [
      {
        "name": "strings",
        "source": "/document/people/*/lastname"
      }
    ],
    "outputs": [
      {
        "name": "mostcommon",
        "targetName": "common-lastname"
      }
    ]
  }

تلميحات لاستكشاف أخطاء مسار التعليق التوضيحي وإصلاحها

إذا كنت تواجه مشكلة في تحديد مدخلات المهارات، فقد تساعدك هذه التلميحات على المضي قدما:

  • قم بتشغيل معالج استيراد البيانات عبر بياناتك لمراجعة تعريفات مجموعة المهارات وتعيينات الحقول التي ينشئها المعالج.

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

(راجع أيضًا )