Azure AI Search beceri kümesinin bağlam ve kaynak özelliklerini kullanarak zenginleştirilmiş düğümlere yönelik bir yola başvurma
Beceri kümesi yürütmesi sırasında altyapı, tanınan varlıklar veya çevrilmiş metinler gibi her zenginleştirmeyi yakalayan bir bellek içi zenginleştirme ağacı oluşturur. Bu makalede, çıkışları aşağı akış becerilerine geçirebilmeniz veya arama dizini alanı için bir çıkış alanı eşlemesi belirtebilmeniz için zenginleştirme ağacındaki bir zenginleştirme düğümüne nasıl başvuracağınızı öğrenin.
Bu makalede, çeşitli senaryoları göstermek için örnekler kullanılır. Söz diziminin tamamı için bkz . Beceri bağlamı ve giriş ek açıklama dili dili.
Arka plan kavramları
Söz dizimini gözden geçirmeden önce, bu makalenin devamında sağlanan örnekleri daha iyi anlamak için birkaç önemli kavramı yeniden inceleyelim.
Süre | Açıklama |
---|---|
"zenginleştirilmiş belge" | Zenginleştirilmiş belge, oluşturulduğu anda beceri çıktısı toplayan ve bir belgeyle ilgili tüm zenginleştirmeleri tutan bellek içi bir yapıdır. Zenginleştirilmiş bir belgeyi ağaç olarak düşünün. Genellikle, ağaç kök belge düzeyinde başlar ve her yeni zenginleştirme önceki bir alt öğeden oluşturulur. |
"node" | Zenginleştirilmiş bir belge içinde, OCR becerisinde "text" ve "layoutText" gibi bir beceri tarafından bir düğüm (bazen "ek açıklama" olarak da adlandırılır) oluşturulur ve doldurulur. Zenginleştirilmiş bir belge hem zenginleştirmelerle hem de özgün kaynak alan değerleriyle veya kaynaktan kopyalanan meta verilerle doldurulur. |
"bağlam" | Belgenin tamamı, belgenin bir bölümü veya resimlerle çalışıyorsanız, bir belgeden ayıklanan görüntüler olan zenginleştirmenin kapsamı. Varsayılan olarak, zenginleştirme bağlamı düzeyindedir "/document" ve kapsamı veri kaynağında yer alan tek tek belgelerle belirlenmiştir. Beceri çalıştırıldığında, bu becerinin çıkışları tanımlı bağlamın özellikleri haline gelir. |
Farklı senaryolar için yollar
Yollar, beceri kümesinin "bağlam" ve "kaynak" özelliklerinde ve dizin oluşturucudaki çıkış alanı eşlemelerinde belirtilir.
Ekran görüntüsündeki örnekte Azure Cosmos DB koleksiyonundaki bir öğenin yolu gösterilmektedir.
context
yol,/document/HotelId
koleksiyonun alana göre/HotelId
belgelere bölümlenmiş olmasıdır.source
yol,/document/Description
becerinin bir çeviri becerisi olması ve çevirmesini istediğiniz alanın her belgedekiDescription
alan olmasıdır.
Tüm yollar ile /document
başlar. Dizin oluşturucu bir belgeyi açtığında veya veri kaynağından bir satırda okuduğunda, dizin oluşturucu yürütmenin "belgeyi çatlatma" aşamasında zenginleştirilmiş bir belge oluşturulur. Başlangıçta zenginleştirilmiş bir belgedeki tek düğüm kök düğümdür (/document
)ve diğer tüm zenginleştirmelerin gerçekleştiği düğümdür.
Aşağıdaki listede birkaç yaygın örnek bulunur:
/document
kök düğümdür ve Azure Depolama'daki blob'un tamamını veya SQL tablosundaki bir satırı gösterir./document/{key}
, Azure Cosmos DB koleksiyonundaki bir belgenin veya öğenin söz dizimidir. Burada{key}
, önceki örnekte olduğu gibi/document/HotelId
gerçek anahtardır./document/content
JSON blobunun "content" özelliğini belirtir./document/{field}
, önceki örnekte görülen belirli bir alanda/document/Description
gerçekleştirilen bir işlemin söz dizimidir./document/pages/*
veya/document/sentences/*
büyük bir belgeyi işlenmek üzere daha küçük parçalara ayırıyorsanız bağlam haline gelebilirsiniz. "Bağlam" ise/document/pages/*
, beceri belgedeki her sayfa üzerinde bir kez yürütülür. Birden fazla sayfa veya tümce olabileceğinden, tümünü yakalamak için eklersiniz/*
./document/normalized_images/*
, belge görüntüler içeriyorsa, belgeyi çatlatma sırasında oluşturulur. Görüntülerin tüm yolları normalized_images ile başlar. Bir belgeye katıştırılmış birden çok resim olduğundan, öğesini ekleyin/*
.
Bu makalenin geri kalanındaki örnekler, belgenin kırılma aşamasının bir parçası olarak Azure blob dizin oluşturucuları tarafından otomatik olarak oluşturulan "içerik" alanını temel alır. Blob kapsayıcısından belgelere başvururken, "içerik" alanının "belgenin" parçası olduğu gibi "/document/content"
bir biçim kullanın.
Örnek 1: Basit ek açıklama başvurusu
Azure Blob Depolama'de, varlık tanımayı kullanarak ayıklamak istediğiniz kişilerin adlarına başvurular içeren çeşitli dosyalarınız olduğunu varsayalım. Aşağıdaki beceri tanımında, "/document/content"
belgenin tamamının metinsel gösterimidir ve "kişiler", kişi olarak tanımlanan varlıklar için tam adların çıkarılmasıdır.
Varsayılan bağlam olduğundan "/document"
, kişi listesine artık olarak "/document/people"
başvurulabilir. Bu özel durumda "/document/people"
, artık dizindeki bir alanla eşlenebilen veya aynı beceri kümesindeki başka bir beceride kullanılabilen bir ek açıklamadır.
{
"@odata.type": "#Microsoft.Skills.Text.V3.EntityRecognitionSkill",
"categories": [ "Person"],
"defaultLanguageCode": "en",
"inputs": [
{
"name": "text",
"source": "/document/content"
}
],
"outputs": [
{
"name": "persons",
"targetName": "people"
}
]
}
Örnek 2: Belge içindeki bir diziye başvurma
Bu örnek, bir zenginleştirme adımını aynı belge üzerinde birden çok kez çağırmayı gösteren önceki örnek üzerinde oluşturulur. Önceki örneğin, tek bir belgeden 10 kişi adıyla bir dize dizisi ürettiğini varsayalım. Mantıklı bir sonraki adım, soyadını bir tam addan ayıklayan ikinci bir zenginleştirme olabilir. 10 ad olduğundan, bu adımın bu belgede her bir kişi için bir kez olmak üzere 10 kez çağrılmasını istiyorsunuz.
Doğru sayıda yinelemeyi çağırmak için bağlamı olarak "/document/people/*"
ayarlayın; burada yıldız işareti ("*"
), zenginleştirilmiş belgedeki tüm düğümleri alt "/document/people"
öğeleri olarak temsil eder. Bu beceri beceri dizisinde yalnızca bir kez tanımlanmış olsa da, tüm üyeler işlenene kadar belgedeki her üye için çağrılır.
{
"@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"
}
]
}
Ek açıklamalar diziler veya dize koleksiyonları olduğunda, bir bütün olarak dizi yerine belirli üyeleri hedeflemek isteyebilirsiniz. Yukarıdaki örnek, bağlam tarafından temsil edilen her düğümün altında adlı "last"
bir ek açıklama oluşturur. Bu ek açıklama ailesine başvurmak istiyorsanız söz dizimini "/document/people/*/last"
kullanabilirsiniz. Belirli bir ek açıklamaya başvurmak isterseniz, belgede tanımlanan ilk kişinin soyadına başvurmak için açık bir dizin kullanabilirsiniz: "/document/people/1/last
" . Bu söz diziminde dizilerin "0 dizinli" olduğuna dikkat edin.
Örnek 3: Bir dizi içindeki başvuru üyeleri
Bazen belirli bir beceriye geçirmek için belirli bir türe ait tüm ek açıklamaları gruplandırmanız gerekir. Örnek 2'de ayıklanan tüm soyadlarından en yaygın soyadını tanımlayan varsayımsal bir özel beceri düşünün. Özel becerinin yalnızca soyadlarını sağlamak için bağlamı olarak ve girişi olarak "/document"
"/document/people/*/lastname"
belirtin.
kardinalitesinin "/document/people/*/lastname"
belgeninkinden daha büyük olduğuna dikkat edin. Bu belge için yalnızca bir belge düğümü varken 10 soyadı düğümü olabilir. Bu durumda, sistem otomatik olarak belgedeki tüm öğeleri içeren bir dizi "/document/people/*/lastname"
oluşturur.
{
"@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"
}
]
}
Ek açıklama yolu sorunlarını giderme ipuçları
Beceri girişlerini belirtirken sorun yaşıyorsanız, bu ipuçları ilerlemenize yardımcı olabilir:
Zenginleştirilmiş belgenin yapısını görüntülemek için beceri kümesinde hata ayıklama oturumu başlatın. Beceri tanımının yollarını ve diğer bölümlerini düzenleyebilir ve sonra değişikliklerinizi doğrulamak için beceriyi çalıştırabilirsiniz.