Habilidad cognitiva ConformadorShaper cognitive skill

La aptitud Conformador consolida varias entradas en un tipo complejo al que se puede hacer referencia más adelante en la canalización de enriquecimiento.The Shaper skill consolidates several inputs into a complex type that can be referenced later in the enrichment pipeline. La aptitud Conformador básicamente permite crear una estructura, definir el nombre de los miembros de esa estructura y asignar valores a cada miembro.The Shaper skill allows you to essentially create a structure, define the name of the members of that structure, and assign values to each member. Los ejemplos de campos consolidados útiles en escenarios de búsqueda incluyen la combinación de un nombre y apellido, de una ciudad y un estado o de un nombre y una fecha de nacimiento en una sola estructura para establecer una identidad exclusiva.Examples of consolidated fields useful in search scenarios include combining a first and last name into a single structure, city and state into a single structure, or name and birthdate into a single structure to establish unique identity.

Además, la habilidad Conformador ilustrada en el escenario 3 agrega una propiedad opcional sourceContext a la entrada.Additionally, the Shaper skill illustrated in scenario 3 adds an optional sourceContext property to the input. Las propiedades source y sourceContext son mutuamente excluyentes.The source and sourceContext properties are mutually exclusive. Si la entrada está en el contexto de la aptitud, simplemente use source.If the input is at the context of the skill, simply use source. Si la entrada está en un contexto diferente al de la aptitud, use sourceContext.If the input is at a different context than the skill context, use the sourceContext. sourceContext exige definir una entrada anidada con el elemento específico considerado como origen.The sourceContext requires you to define a nested input with the specific element being addressed as the source.

El nombre de la salida es siempre "salida".The output name is always "output". Internamente, la canalización puede asignar otro nombre, como "analyzedText", como se muestra en los ejemplos siguientes, pero la aptitud Conformador devuelve "output" en la respuesta.Internally, the pipeline can map a different name, such as "analyzedText" as shown in the examples below, but the Shaper skill itself returns "output" in the response. Esto podría ser importante si está depurando documentos enriquecidos y observa la discrepancia de nombre, o si compila una habilidad personalizada y estructura la respuesta por sí mismo.This might be important if you are debugging enriched documents and notice the naming discrepancy, or if you build a custom skill and are structuring the response yourself.

Nota

La aptitud Conformador no está enlazada a una API de Cognitive Services y no se le cobra por usarla.The Shaper skill is not bound to a Cognitive Services API and you are not charged for using it. Sin embargo, debe adjuntar un recurso de Cognitive Services para invalidar la opción del recurso Gratis, que tiene un límite de unos pocos enriquecimientos al día.You should still attach a Cognitive Services resource, however, to override the Free resource option that limits you to a small number of daily enrichments per day.

@odata.type

Microsoft.Skills.Util.ShaperSkillMicrosoft.Skills.Util.ShaperSkill

Escenario 1: tipos complejosScenario 1: complex types

Piense en un escenario en el que quiere crear una estructura denominada analyzedText con dos miembros: text y sentiment, respectivamente.Consider a scenario where you want to create a structure called analyzedText that has two members: text and sentiment, respectively. En un índice, un campo de búsqueda de varias partes se denomina tipo complejo y se suele crear cuando los datos de origen tienen asignada una estructura compleja correspondiente.In an index, a multi-part searchable field is called a complex type and it's often created when source data has a corresponding complex structure that maps to it.

Pero otro método para crear tipos complejos es mediante la aptitud Conformador.However, another approach for creating complex types is through the Shaper skill. Al incluir esta aptitud en un conjunto de aptitudes, las operaciones en memoria durante el procesamiento del conjunto de aptitudes pueden generar formas de datos con estructuras anidadas, que luego pueden asignarse a un tipo complejo del índice.By including this skill in a skillset, the in-memory operations during skillset processing can output data shapes with nested structures, which can then be mapped to a complex type in your index.

En el ejemplo siguiente, la definición de aptitud proporciona los nombres de miembro como entrada.The following example skill definition provides the member names as the 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"
    }
  ]
}

Índice de ejemploSample index

Un indizador invoca a un conjunto de aptitudes, y un indizador requiere un índice.A skillset is invoked by an indexer, and an indexer requires an index. Una representación de campo complejo del índice podría ser similar al ejemplo siguiente.A complex field representation in your index might look like the following example.


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

Entrada de aptitudSkill input

Un documento JSON entrante que proporcionara una entrada útil para esta aptitud Conformador podría ser:An incoming JSON document providing usable input for this Shaper skill could be:

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

Salida de aptitudSkill output

La aptitud Conformador genera un nuevo elemento llamado analyzedText con los elementos combinados de text y sentiment.The Shaper skill generates a new element called analyzedText with the combined elements of text and sentiment. Esta salida se ajusta al esquema de índice.This output conforms to the index schema. Se importará e indexará en un índice de Azure Cognitive Search.It will be imported and indexed in an Azure Cognitive Search index.

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

Escenario 2: consolidación de entradaScenario 2: input consolidation

En otro ejemplo, imagine que en distintas fases del procesamiento de la canalización ha extraído el título de un libro y los títulos de capítulos de distintas páginas del libro.In another example, imagine that at different stages of pipeline processing, you have extracted the title of a book, and chapter titles on different pages of the book. Ahora podría crear una única estructura compuesta por estas distintas entradas.You could now create a single structure composed of these various inputs.

La definición de aptitud Conformador de este escenario podría ser similar al ejemplo siguiente:The Shaper skill definition for this scenario might look like the following example:

{
    "@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"
        }
    ]
}

Salida de aptitudSkill output

En este caso, Conformador acopla todos los títulos de capítulos para crear una matriz única.In this case, the Shaper flattens all chapter titles to create a single array.

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

Escenario 3: consolidación de entrada de contextos anidadosScenario 3: input consolidation from nested contexts

Imagine que tiene el título, los capítulos y el contenido de un libro y ha ejecutado el reconocimiento de entidades y frases clave en el contenido; ahora debe agregar los resultados de las distintas aptitudes en una sola forma con el nombre del capítulo, las entidades y las frases clave.Imagine you have the title, chapters, and contents of a book and have run entity recognition and key phrases on the contents and now need to aggregate results from the different skills into a single shape with the chapter name, entities, and key phrases.

La definición de aptitud Conformador de este escenario podría ser similar al ejemplo siguiente:The Shaper skill definition for this scenario might look like the following example:

{
    "@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"
        }
    ]
}

Salida de aptitudSkill output

En este caso, el Conformador crea un tipo complejo.In this case, the Shaper creates a complex type. Esta estructura existe en memoria.This structure exists in-memory. Si quiere guardarla en un almacén de conocimiento, tiene que crear una proyección en el conjunto de aptitudes que defina las características de almacenamiento.If you want to save it to a knowledge store, you should create a projection in your skillset that defines storage characteristics.

{
    "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}
                    ]
                }
            }
        }
    ]
}

Consulte tambiénSee also