Aptitud cognitiva División de texto

La aptitud División de texto divide el texto en fragmentos de texto. Puede especificar si desea dividir el texto en oraciones o en páginas de una longitud determinada. Esta aptitud es especialmente útil si hay requisitos de longitud de texto máxima en otras aptitudes de bajada.

Nota:

Esta aptitud no está enlazada a los servicios de Azure AI. No es facturable y no tiene ningún requisito de clave de los servicios de Azure AI.

@odata.type

Microsoft.Skills.Text.SplitSkill

Parámetros de la aptitud

Los parámetros distinguen mayúsculas de minúsculas.

Nombre de parámetro Descripción
textSplitMode pages o sentences. Las páginas tienen una longitud máxima configurable, pero la aptitud intenta evitar truncar una frase para que la longitud real sea menor. Las frases constituyen una cadena que termina en la puntuación de fin de frase, como un punto, signo de interrogación o signo de exclamación, suponiendo que el idioma tenga puntuación final de frase.
maximumPageLength Solo se aplica si textSplitMode está establecido en pages. Este parámetro hace referencia a la longitud máxima de página en caracteres medida mediante String.Length. El valor mínimo es 300, el máximo es 50 000 y el valor predeterminado es 5000. El algoritmo hace todo lo posible para dividir el texto en los límites de frases, por lo que el tamaño de cada fragmento puede ser ligeramente menor que maximumPageLength.
pageOverlapLength Solo se aplica si textSplitMode está establecido en pages. Cada página comienza con este número de caracteres desde el final de la página anterior. Si este parámetro se establece en 0, no hay texto superpuesto en páginas sucesivas. Este parámetro se admite en la API REST 2023-10-01-Preview y en paquetes beta de Azure SDK que se han actualizado para admitir la vectorización integrada. En este ejemplo se incluye el parámetro.
maximumPagesToTake Solo se aplica si textSplitMode está establecido en pages. Número de páginas que se van a devolver. El valor predeterminado es 0, lo que significa devolver todas las páginas. Debe establecer este valor si solo se necesita un subconjunto de páginas. Este parámetro se admite en la API REST 2023-10-01-Preview y en paquetes beta de Azure SDK que se han actualizado para admitir la vectorización integrada. En este ejemplo se incluye el parámetro.
defaultLanguageCode (Opcional) Uno de los siguientes códigos de idioma: am, bs, cs, da, de, en, es, et, fr, he, hi, hr, hu, fi, id, is, it, ja, ko, lv, no, nl, pl, pt-PT, pt-BR, ru, sk, sl, sr, sv, tr, ur, zh-Hans. El valor predeterminado es inglés (en). Algunos aspectos que se deben tener en cuenta son:
  • Proporcionar un código de idioma es útil para evitar cortar una palabra por la mitad para idiomas sin espacios como el chino, japonés y coreano.
  • Si no conoce el idioma con antelación (por ejemplo, si usa LanguageDetectionSkill para detectar el idioma), se recomienda el valor en predeterminado.

Entradas de la aptitud

Nombre de parámetro Descripción
text Texto que se dividirá en subcadenas.
languageCode (Opcional) Código de idioma para el documento. Si no conoce el idioma de las entradas de texto (por ejemplo, si usa LanguageDetectionSkill para detectar el idioma), puede omitir este parámetro. Si establece languageCode en un idioma que no está en la lista de admitidos de defaultLanguageCode, se emite una advertencia y el texto no se divide.

Salidas de la aptitud

Nombre de parámetro Descripción
textItems La salida es una matriz de subcadenas extraídas. textItems es el nombre predeterminado de la salida. targetName es opcional, pero si tiene varias aptitudes de división de texto, asegúrese de establecer targetName para que no sobrescriba los datos de la primera aptitud con la segunda. Si targetName se establece, úsela en asignaciones de campos de salida o en aptitudes de nivel inferior que usen la salida de la aptitud.

Definición de ejemplo

{
    "@odata.type": "#Microsoft.Skills.Text.SplitSkill",
    "textSplitMode" : "pages", 
    "maximumPageLength": 1000,
    "defaultLanguageCode": "en",
    "inputs": [
        {
            "name": "text",
            "source": "/document/content"
        },
        {
            "name": "languageCode",
            "source": "/document/language"
        }
    ],
    "outputs": [
        {
            "name": "textItems",
            "targetName": "mypages"
        }
    ]
}

Entrada de ejemplo

{
    "values": [
        {
            "recordId": "1",
            "data": {
                "text": "This is the loan application for Joe Romero, a Microsoft employee who was born in Chile and who then moved to Australia...",
                "languageCode": "en"
            }
        },
        {
            "recordId": "2",
            "data": {
                "text": "This is the second document, which will be broken into several pages...",
                "languageCode": "en"
            }
        }
    ]
}

Salida de ejemplo

{
    "values": [
        {
            "recordId": "1",
            "data": {
                "textItems": [
                    "This is the loan...",
                    "In the next section, we continue..."
                ]
            }
        },
        {
            "recordId": "2",
            "data": {
                "textItems": [
                    "This is the second document...",
                    "In the next section of the second doc..."
                ]
            }
        }
    ]
}

Ejemplo de fragmentación y vectorización

Este ejemplo es para la vectorización integrada, actualmente en versión preliminar. Agrega parámetros de solo versión preliminar a la definición de ejemplo y muestra la salida resultante.

  • pageOverlapLength: el texto superpuesto es útil en escenarios de fragmentación de datos, ya que conserva la continuidad entre los fragmentos generados a partir del mismo documento.

  • maximumPagesToTake: los límites en la ingesta de páginas son útiles en escenarios de vectorización, ya que ayudan a mantenerse bajo los límites de entrada máximos de los modelos de inserción que proporcionan la vectorización.

Definición de ejemplo

Esta definición agrega pageOverlapLength de 100 caracteres y maximumPagesToTake de uno.

Suponiendo que maximumPageLength tiene 5000 caracteres (valor predeterminado), procesa "maximumPagesToTake": 1 los primeros 5000 caracteres de cada documento de origen.

En este ejemplo se establece textItems en myPages a través de targetName. Como targetName se establece, myPages es el valor que debe usar para seleccionar la salida de la aptitud División de texto. Use /document/mypages/* en aptitudes de bajada, asignaciones de campos de salida del indexador, proyecciones del almacén de conocimiento y proyecciones de índice.

{
    "@odata.type": "#Microsoft.Skills.Text.SplitSkill",
    "textSplitMode" : "pages", 
    "maximumPageLength": 1000,
    "pageOverlapLength": 100,
    "maximumPagesToTake": 1,
    "defaultLanguageCode": "en",
    "inputs": [
        {
            "name": "text",
            "source": "/document/content"
        },
        {
            "name": "languageCode",
            "source": "/document/language"
        }
    ],
    "outputs": [
        {
            "name": "textItems",
            "targetName": "mypages"
        }
    ]
}

Entrada de ejemplo (igual que el ejemplo anterior)

{
    "values": [
        {
            "recordId": "1",
            "data": {
                "text": "This is the loan application for Joe Romero, a Microsoft employee who was born in Chile and who then moved to Australia...",
                "languageCode": "en"
            }
        },
        {
            "recordId": "2",
            "data": {
                "text": "This is the second document, which will be broken into several sections...",
                "languageCode": "en"
            }
        }
    ]
}

Salida de ejemplo (observe la superposición)

Dentro de cada matriz "textItems", el texto final del primer elemento se copia al principio del segundo elemento.

{
    "values": [
        {
            "recordId": "1",
            "data": {
                "textItems": [
                    "This is the loan...Here is the overlap part",
                    "Here is the overlap part...In the next section, we continue..."
                ]
            }
        },
        {
            "recordId": "2",
            "data": {
                "textItems": [
                    "This is the second document...Here is the overlap part...",
                    "Here is the overlap part...In the next section of the second doc..."
                ]
            }
        }
    ]
}

Casos de error

Si un idioma no está admitido, se genera una advertencia.

Consulte también