Competenza cognitiva Shaper

La competenza Shaper viene usata per rimodellare o modificare la struttura dell'albero di arricchimento in memoria creato da un set di competenze. Se gli output delle competenze non possono essere mappati direttamente ai campi di ricerca, è possibile aggiungere una competenza Shaper per creare la forma dei dati necessaria per l'indice di ricerca o l'archivio conoscenze.

I casi d'uso principali per questa competenza includono:

  • Si sta popolando un archivio conoscenze. La struttura fisica delle tabelle e degli oggetti di un archivio conoscenze viene definita tramite proiezioni. Una competenza Shaper aggiunge granularità creando forme di dati che possono essere spostate nelle proiezioni.

  • Si vuole eseguire il mapping di più output delle competenze in una singola struttura nell'indice di ricerca, in genere un tipo complesso, come descritto nello scenario 1.

  • Le competenze producono più output, ma si vuole combinare in un singolo campo (non deve essere un tipo complesso), come descritto nello scenario 2. Ad esempio, combinando i titoli e gli autori in un singolo campo.

  • Le competenze producono più output con gli elementi figlio e si vogliono combinarli. Questo caso d'uso è illustrato nello scenario 3.

Il nome di output di una competenza shaper è sempre "output". Internamente, la pipeline può eseguire il mapping di un nome diverso, ad esempio "analyzedText", come illustrato negli esempi seguenti, ma la competenza Shaper stessa restituisce "output" nella risposta. Questo potrebbe essere importante se si esegue il debug di documenti approfonditi e si nota la discrepanza nella denominazione oppure se si compila una competenza personalizzata e si esegue la struttura della risposta manualmente.

Nota

Questa competenza non è associata ai servizi di intelligenza artificiale di Azure. Non è fatturabile e non ha requisiti chiave per i servizi di intelligenza artificiale di Azure.

@odata.type

Microsoft.Skills.Util.ShaperSkill

Scenario 1: tipi complessi

Si consideri uno scenario in cui si desidera creare una struttura denominata analyzedText dotata di due membri: rispettivamente testo e valutazione. In un indice, un campo ricercabile in più parti viene chiamato un tipo complesso ed è spesso creato quando i dati di origine hanno una struttura complessa corrispondente mappata.

Tuttavia, un altro approccio per la creazione di tipi complessi consiste nell'usare la competenza Shaper . Includendo questa competenza in un set di competenze, le operazioni in memoria durante l'elaborazione del set di competenze possono restituire forme di dati con strutture annidate, che possono quindi essere mappate a un tipo complesso nell'indice.

La definizione di competenza di esempio seguente fornisce i nomi dei membri come input.

{
  "@odata.type": "#Microsoft.Skills.Util.ShaperSkill",
  "context": "/document/content/phrases/*",
  "inputs": [
    {
      "name": "text",
      "source": "/document/content/phrases/*"
    },
    {
      "name": "sentiment",
      "source": "/document/content/phrases/*/sentiment"
    }
  ],
  "outputs": [
    {
      "name": "output",
      "targetName": "analyzedText"
    }
  ]
}

Indice di esempio

Un set di competenze viene richiamato da un indicizzatore e un indicizzatore richiede un indice. Una rappresentazione di campo complessa nell'indice potrebbe essere simile all'esempio seguente.

"name":"my-index",
"fields":[
   { "name":"myId", "type":"Edm.String", "key":true, "filterable":true  },
   { "name":"analyzedText", "type":"Edm.ComplexType",
      "fields":[
         {
            "name":"text",
            "type":"Edm.String",
            "facetable":false,
            "filterable":false,
            "searchable":true,
            "sortable":false  },
         {
            "name":"sentiment",
            "type":"Edm.Double",
            "facetable":true,
            "filterable":true,
            "searchable":true,
            "sortable":true }
      }

Input della competenza

Un documento JSON in ingresso che fornisce input utilizzabile per questa competenza shaper potrebbe essere:

{
    "values": [
        {
            "recordId": "1",
            "data": {
                "text": "this movie is awesome",
                "sentiment": 0.9
            }
        }
    ]
}

Output delle competenze

La competenza Shaper genera un nuovo elemento denominato analyzedText con gli elementi combinati di testo e valutazione. Questo output è conforme allo schema dell'indice. Verrà importato e indicizzato in un indice di Ricerca di intelligenza artificiale di Azure.

{
    "values": [
      {
        "recordId": "1",
        "data":
           {
            "analyzedText": 
              {
                "text": "this movie is awesome" ,
                "sentiment": 0.9
              }
           }
      }
    ]
}

Scenario 2: consolidamento dell'input

In un altro esempio, si supponga che in diverse fasi di elaborazione della pipeline siano stati estratti il titolo di un libro e i titoli dei capitoli in diverse pagine del libro. È ora possibile creare una singola struttura composta da questi vari output.

La definizione della competenza Shaper per questo scenario potrebbe essere simile all'esempio seguente:

{
    "@odata.type": "#Microsoft.Skills.Util.ShaperSkill",
    "context": "/document",
    "inputs": [
        {
            "name": "title",
            "source": "/document/content/title"
        },
        {
            "name": "chapterTitles",
            "source": "/document/content/pages/*/chapterTitles/*/title"
        }
    ],
    "outputs": [
        {
            "name": "output",
            "targetName": "titlesAndChapters"
        }
    ]
}

Output delle competenze

In questo caso, Shaper appiattisce tutti i titoli dei capitoli per creare una singola matrice.

{
    "values": [
        {
            "recordId": "1",
            "data": {
                "titlesAndChapters": {
                    "title": "How to be happy",
                    "chapterTitles": [
                        "Start young",
                        "Laugh often",
                        "Eat, sleep and exercise"
                    ]
                }
            }
        }
    ]
}

Scenario 3: consolidamento dell'input da contesti annidati

Si supponga di avere titoli di capitolo e numeri di capitolo di un libro e di aver eseguito il riconoscimento delle entità e frasi chiave sul contenuto e ora è necessario aggregare i risultati delle diverse competenze in una singola forma con il nome, le entità e le frasi chiave del capitolo.

In questo esempio viene aggiunta una proprietà facoltativa sourceContext all'input "chapterTitles". Le source proprietà e sourceContext si escludono a vicenda. Se l'input si trova nel contesto della competenza, è possibile usare source. Se l'input si trova in un contesto diverso rispetto al contesto della competenza, usare sourceContext. sourceContext Richiede di definire un input annidato, in cui ogni input ha un source oggetto che identifica l'elemento specifico usato per popolare il nodo denominato.

La definizione della competenza Shaper per questo scenario potrebbe essere simile all'esempio seguente:

{
    "@odata.type": "#Microsoft.Skills.Util.ShaperSkill",
    "context": "/document",
    "inputs": [
        {
            "name": "title",
            "source": "/document/content/title"
        },
        {
            "name": "chapterTitles",
            "sourceContext": "/document/content/pages/*/chapterTitles/*",
            "inputs": [
              {
                  "name": "title",
                  "source": "/document/content/pages/*/chapterTitles/*/title"
              },
              {
                  "name": "number",
                  "source": "/document/content/pages/*/chapterTitles/*/number"
              }
            ]
        }

    ],
    "outputs": [
        {
            "name": "output",
            "targetName": "titlesAndChapters"
        }
    ]
}

Output delle competenze

In questo caso, shaper crea un tipo complesso. Questa struttura esiste in memoria. Se si vuole salvarlo in un archivio conoscenze, è necessario creare una proiezione nel set di competenze che definisce le caratteristiche di archiviazione.

{
    "values": [
        {
            "recordId": "1",
            "data": {
                "titlesAndChapters": {
                    "title": "How to be happy",
                    "chapterTitles": [
                      { "title": "Start young", "number": 1},
                      { "title": "Laugh often", "number": 2},
                      { "title": "Eat, sleep and exercise", "number: 3}
                    ]
                }
            }
        }
    ]
}

Vedi anche