تشكيل البيانات للإسقاط في مخزن المعرفة
في Azure Cognitive Search، يصف "تشكيل البيانات" خطوة في سير عمل مخزن المعرفة تقوم بإنشاء تمثيل بيانات للمحتوى الذي تريد عرضه في الجداول والكائنات والملفات في Azure Storage.
أثناء تنفيذ المهارات، تتم كتابة المخرجات إلى شجرة إثراء في تسلسل هرمي من العقد، وبينما قد ترغب في عرض شجرة الإثراء واستهلاكها بالكامل، فمن المرجح أنك ستحتاج إلى حبيبات أدق، وإنشاء مجموعات فرعية من العقد لسيناريوهات مختلفة، مثل وضع العقد المتعلقة بالنص المترجم أو الكيانات المستخرجة في جداول محددة.
في حد ذاتها ، لا تتضمن شجرة الإثراء منطقا من شأنه أن يوضح كيفية تمثيل محتواها في مخزن المعرفة. تملأ أشكال البيانات هذه الفجوة من خلال توفير مخطط ما يدخل في كل جدول وكائن وإسقاط ملف. يمكنك التفكير في شكل بيانات كتعريف مخصص أو طريقة عرض للبيانات المخصبة. يمكنك إنشاء أي عدد تريده من الأشكال، ثم تعيينها إلى إسقاطات في تعريف مخزن المعارف.
أساليب إنشاء الأشكال
هناك طريقتان لتشكيل المحتوى الغني بحيث يمكن إسقاطه في مخزن للمعرفة:
استخدم مهارة المشكل لإنشاء عقد في شجرة إثراء تستخدم صراحة للإسقاط. معظم المهارات تخلق محتوى جديدا. في المقابل ، تعمل مهارة المشكل مع العقد الموجودة ، عادة لدمج عقد متعددة في كائن معقد واحد. هذا مفيد للجداول، حيث تريد التعبير فعليا عن مخرجات عقد متعددة كأعمدة في الجدول.
استخدم شكلا مضمنا داخل تعريف الإسقاط نفسه.
يؤدي استخدام مهارة المشكل إلى إخراج الشكل بحيث يمكن استخدامه بواسطة إسقاطات متعددة أو حتى مهارات أخرى. كما يضمن احتواء جميع طفرات شجرة التخصيب داخل المهارة ، وأن الإخراج هو كائن يمكن إعادة استخدامه. في المقابل، يسمح لك التشكيل المضمن بإنشاء الشكل الذي تحتاجه، ولكنه كائن مجهول الهوية ولا يتوفر إلا للإسقاط الذي تم تعريفه له.
يمكن استخدام النهج معا أو بشكل منفصل. توضح هذه المقالة كلا من: مهارة المشكل لإسقاطات الجدول ، والتشكيل المضمن مع إسقاط جدول العبارات الرئيسية.
استخدام مهارة المشكل
عادة ما يتم وضع مهارات المشكل في نهاية مجموعة المهارات، مما يخلق طريقة عرض للبيانات التي تريد تمريرها إلى إسقاط. ينشئ هذا المثال شكلا يسمى "tableprojection" يحتوي على العقد التالية: "reviews_text" و "reviews_title" و "AzureSearch_DocumentKey" ودرجات المشاعر والعبارات الرئيسية من المراجعات المقسمة.
{
"@odata.type": "#Microsoft.Skills.Util.ShaperSkill",
"name": "#5",
"description": null,
"context": "/document",
"inputs": [
{
"name": "reviews_text",
"source": "/document/reviews_text",
"sourceContext": null,
"inputs": []
},
{
"name": "reviews_title",
"source": "/document/reviews_title",
"sourceContext": null,
"inputs": []
},
{
"name": "AzureSearch_DocumentKey",
"source": "/document/AzureSearch_DocumentKey",
"sourceContext": null,
"inputs": []
},
{
"name": "pages",
"source": null,
"sourceContext": "/document/reviews_text/pages/*",
"inputs": [
{
"name": "Sentiment",
"source": "/document/reviews_text/pages/*/Sentiment",
"sourceContext": null,
"inputs": []
},
{
"name": "LanguageCode",
"source": "/document/Language",
"sourceContext": null,
"inputs": []
},
{
"name": "Page",
"source": "/document/reviews_text/pages/*",
"sourceContext": null,
"inputs": []
},
{
"name": "keyphrase",
"sourceContext": "/document/reviews_text/pages/*/Keyphrases/*",
"inputs": [
{
"source": "/document/reviews_text/pages/*/Keyphrases/*",
"name": "Keyphrases"
}
]
}
]
}
],
"outputs": [
{
"name": "output",
"targetName": "tableprojection"
}
]
}
خاصية SourceContext
ضمن مهارة المشكل ، يمكن أن يحتوي الإدخال على sourceContext عنصر. يمكن أيضا استخدام هذه الخاصية نفسها في الأشكال المضمنة في الإسقاطات.
sourceContext يستخدم لبناء كائنات متعددة المستويات ومتداخلة في خط أنابيب التخصيب. إذا كان الإدخال في سياق مختلف عن سياق المهارة، فاستخدم sourceContext. يتطلب منك sourceContext تعريف إدخال متداخل مع العنصر المحدد الذي تتم معالجته كمصدر.
في المثال أعلاه ، تم إجراء تحليل المشاعر واستخراج العبارات الرئيسية على النص الذي تم تقسيمه إلى صفحات لتحليل أكثر كفاءة. على افتراض أنك تريد عرض الدرجات والعبارات في جدول ، فستحتاج الآن إلى تعيين السياق إلى إدخال متداخل يوفر النتيجة والعبارة.
إسقاط شكل في جداول متعددة
باستخدام العقدة المحددة في outputs القسم أعلاه ، يمكنك تقسيم أجزاء من العقدة tableprojectiontableprojection إلى جداول فردية ذات صلة:
"projections": [
{
"tables": [
{
"tableName": "hotelReviewsDocument",
"generatedKeyName": "Documentid",
"source": "/document/tableprojection"
},
{
"tableName": "hotelReviewsPages",
"generatedKeyName": "Pagesid",
"source": "/document/tableprojection/pages/*"
},
{
"tableName": "hotelReviewsKeyPhrases",
"generatedKeyName": "KeyPhrasesid",
"source": "/document/tableprojection/pages/*/keyphrase/*"
}
]
}
]
شكل مضمن لإسقاطات الجدول
التشكيل المضمن هو القدرة على تشكيل أشكال جديدة داخل تعريف الإسقاط نفسه. التشكيل المضمن له هذه الخصائص:
- يمكن استخدام الشكل فقط بواسطة الإسقاط الذي يحتوي عليه.
- يمكن أن يكون الشكل مطابقا لما تنتجه مهارة التشكيل.
يتم إنشاء شكل مضمن باستخدام sourceContext و inputs.
| الخاصية | الوصف |
|---|---|
| المصدرالسياق | يضبط جذر الإسقاط. |
| إدخال | كل إدخال عبارة عن عمود في الجدول. الاسم هو اسم العمود. المصدر هو عقدة التخصيب التي توفر القيمة. |
لعرض نفس البيانات مثل المثال السابق، سيبدو خيار الإسقاط المضمن كما يلي:
"projections": [
{
"tables": [
{
"tableName": "hotelReviewsInlineDocument",
"generatedKeyName": "Documentid",
"sourceContext": "/document",
"inputs": [
{
"name": "reviews_text",
"source": "/document/reviews_text"
},
{
"name": "reviews_title",
"source": "/document/reviews_title"
},
{
"name": "AzureSearch_DocumentKey",
"source": "/document/AzureSearch_DocumentKey"
}
]
},
{
"tableName": "hotelReviewsInlinePages",
"generatedKeyName": "Pagesid",
"sourceContext": "/document/reviews_text/pages/*",
"inputs": [
{
"name": "Sentiment",
"source": "/document/reviews_text/pages/*/Sentiment"
},
{
"name": "LanguageCode",
"source": "/document/Language"
},
{
"name": "Page",
"source": "/document/reviews_text/pages/*"
}
]
},
{
"tableName": "hotelReviewsInlineKeyPhrases",
"generatedKeyName": "KeyPhraseId",
"sourceContext": "/document/reviews_text/pages/*/Keyphrases/*",
"inputs": [
{
"name": "Keyphrases",
"source": "/document/reviews_text/pages/*/Keyphrases/*"
}
]
}
]
}
]
إحدى الملاحظات من كلا النهجين هي كيفية إسقاط قيم "العبارات الرئيسية" باستخدام "sourceContext". عقدة "العبارات الرئيسية" ، التي تحتوي على مجموعة من السلاسل ، هي في حد ذاتها تابعة لنص الصفحة. ومع ذلك، نظرا لأن الإسقاطات تتطلب كائن JSON والصفحة بدائية (سلسلة)، يتم استخدام "sourceContext" لالتفاف العبارة الرئيسية في كائن بخاصية مسماة. تمكن هذه التقنية حتى البدائيات من الإسقاط بشكل مستقل.
شكل مضمن لإسقاطات الكائنات
يمكنك إنشاء شكل جديد باستخدام مهارة المشكل أو استخدام التشكيل المضمن لإسقاط الكائن. في حين أن مثال الجداول يوضح نهج إنشاء شكل وتقطيع شرائح ، يوضح هذا المثال استخدام التشكيل المضمن.
التشكيل المضمن هو القدرة على إنشاء شكل جديد في تعريف المدخلات إلى الإسقاط. يخلق التشكيل المضمن كائنا مجهولا مطابقا لما ستنتجه مهارة المشكل (في هذه الحالة ، projectionShape). يكون التشكيل المضمن مفيدا إذا كنت تقوم بتعريف شكل لا تخطط لإعادة استخدامه.
خاصية الإسقاطات عبارة عن صفيف. يضيف هذا المثال مثيل إسقاط جديد إلى الصفيف، حيث يحتوي تعريف knowledgeStore على إسقاطات مضمنة. عند استخدام الإسقاطات المضمنة، يمكنك حذف مهارة Shaper.
"knowledgeStore" : {
"storageConnectionString": "DefaultEndpointsProtocol=https;AccountName=<Acct Name>;AccountKey=<Acct Key>;",
"projections": [
{
"tables": [ ],
"objects": [
{
"storageContainer": "sampleobject",
"source": null,
"generatedKeyName": "myobject",
"sourceContext": "/document",
"inputs": [
{
"name": "metadata_storage_name",
"source": "/document/metadata_storage_name"
},
{
"name": "metadata_storage_path",
"source": "/document/metadata_storage_path"
},
{
"name": "content",
"source": "/document/content"
},
{
"name": "keyPhrases",
"source": "/document/merged_content/keyphrases/*"
},
{
"name": "entities",
"source": "/document/merged_content/entities/*/name"
},
{
"name": "ocrText",
"source": "/document/normalized_images/*/text"
},
{
"name": "ocrLayoutText",
"source": "/document/normalized_images/*/layoutText"
}
]
}
],
"files": []
}
]
}
الخطوات التالية
توضح هذه المقالة مفاهيم ومبادئ أشكال الإسقاط. كخطوة تالية، راجع كيفية تطبيقها في الأنماط الخاصة بإسقاطات الجدول والكائن والملف.