Habilidade cognitiva do Text Split

A habilidade Text Split quebra o texto em partes do texto. Você pode especificar se deseja quebrar o texto em sentenças ou em páginas de um tamanho específico. Essa habilidade é especialmente útil se houver requisitos de comprimento em outras habilidades downstream em texto.

Observação

Essa habilidade não está associada aos serviços de IA do Azure. Ele não pode ser cobrado e não tem nenhum requisito de chave dos serviços de IA do Azure.

@odata.type

Microsoft.Skills.Text.SplitSkill

Parâmetros de habilidades

Os parâmetros diferenciam maiúsculas de minúsculas.

Nome do parâmetro Descrição
textSplitMode pages ou sentences. As páginas têm um comprimento máximo configurável, mas a habilidade tenta evitar truncar uma frase para que o comprimento real possa ser menor. As frases são uma cadeia de caracteres que termina na pontuação de término da frase, como um ponto de interrogação, ponto de interrogação ou ponto de exclamação, supondo que o idioma tenha pontuação de fim de frase.
maximumPageLength Aplica-se somente se textSplitMode estiver definido como pages . Esse parâmetro refere-se ao comprimento máximo da página em caracteres, conforme medido por String.Length. O valor mínimo é 300, o máximo é 50000 e o valor padrão é 5000. O algoritmo faz o possível para quebrar o texto em limites de frase, portanto, o tamanho de cada parte pode ser um pouco menor que maximumPageLength.
pageOverlapLength Aplica-se somente se textSplitMode estiver definido como pages . Cada página começa com esse número de caracteres do final da página anterior. Se esse parâmetro for definido como 0, não haverá texto sobreposto em páginas sucessivas. Esse parâmetro tem suporte na API REST 2023-10-01-Preview e em pacotes beta do SDK do Azure que foram atualizados para dar suporte à vetorização integrada. Este exemplo inclui o parâmetro.
maximumPagesToTake Aplica-se somente se textSplitMode estiver definido como pages . Número de páginas a serem retornadas. O padrão é 0, o que significa retornar todas as páginas. Você deverá definir esse valor se apenas um subconjunto de páginas for necessário. Esse parâmetro tem suporte na API REST 2023-10-01-Preview e em pacotes beta do SDK do Azure que foram atualizados para dar suporte à vetorização integrada. Este exemplo inclui o parâmetro.
defaultLanguageCode (opcional) Um dos seguintes 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. O padrão é inglês (en). Algumas coisas para levar em consideração:
  • Fornecer um código de idioma é útil para evitar cortar uma palavra pela metade para idiomas não brancos, como chinês, japonês e coreano.
  • Se você não souber o idioma com antecedência (por exemplo, se estiver usando LanguageDetectionSkill para detectar o idioma), recomendamos o en padrão.

Entradas de habilidades

Nome do parâmetro Descrição
text O texto a ser dividido em subcadeias.
languageCode (opcional) Código de idioma para o documento. Se você não souber o idioma das entradas de texto (por exemplo, se estiver usando LanguageDetectionSkill para detectar o idioma), poderá omitir esse parâmetro. Se você definir languageCode como um idioma que não estiver na lista com suporte para defaultLanguageCode, um aviso será emitido e o texto não será dividido.

Saídas de habilidades

Nome do parâmetro Descrição
textItems Saída é uma matriz de subsequências de caracteres que foram extraídas. textItems é o nome padrão da saída. targetName é opcional, mas se você tiver várias habilidades de Divisão de Texto, certifique-se de definir targetName para não substituir os dados da primeira habilidade pela segunda. Se targetName estiver definido, use-o em mapeamentos de campo de saída ou em habilidades downstream que usam a saída de habilidade.

Definição de exemplo

{
    "@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 exemplo

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

Saída de exemplo

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

Exemplo de agrupamento e vetorização

Este exemplo é para vetorização integrada, atualmente em versão prévia. Ele adiciona parâmetros somente visualização à definição de exemplo e mostra a saída resultante.

  • pageOverlapLength: A sobreposição de texto é útil em cenários de agrupamento de dados porque preserva a continuidade entre partes geradas do mesmo documento.

  • maximumPagesToTake: Os limites de ingestão de página são úteis em cenários de vetorização porque ajudam você a permanecer abaixo dos limites máximos de entrada dos modelos de inserção que fornecem a vetorização.

Definição de exemplo

Essa definição adiciona pageOverlapLength de 100 caracteres e maximumPagesToTake de um.

Supondo que o é 5.000 caracteres (o maximumPageLength padrão), processa "maximumPagesToTake": 1 os primeiros 5.000 caracteres de cada documento de origem.

Este exemplo define textItems como myPages through targetName. Porque targetName é definido, myPages é o valor que você deve usar para selecionar a saída da habilidade Divisão de texto. Use /document/mypages/* em habilidades downstream, mapeamentos de campo de saída do indexador, projeções de armazenamento de conhecimento e projeções 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 exemplo (igual ao exemplo 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"
            }
        }
    ]
}

Saída de exemplo (observe a sobreposição)

Em cada matriz "textItems", o texto à direita do primeiro item é copiado para o início do segundo item.

{
    "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 erro

Se não houver suporte para um idioma, um aviso será gerado.

Confira também