Habilidade cognitiva do Text Split
Importante
Alguns parâmetros estão em visualização pública nos Termos de Uso Complementares. A API REST de visualização dá suporte a esses parâmetros.
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 será útil se houver requisitos de comprimento máximo de texto em outras habilidades downstream, como habilidades de inserção que passam partes de dados para modelos de inserção no Azure OpenAI e em outros provedores de modelo. Para obter mais informações sobre esse cenário, consulte Documentos de partes para pesquisa vetorial.
Vários parâmetros são específicos da versão. A tabela de parâmetros skills observa a versão da API na qual um parâmetro foi introduzido para que você saiba se uma atualização de versão é necessária. Para usar recursos específicos da versão, como agrupamento de token em 2024-09-01-preview, você pode usar o portal do Azure ou direcionar uma versão da API REST ou verificar um log de alterações do SDK do Azure para ver se ele dá suporte ao recurso.
O portal do Azure dá suporte à maioria dos recursos de visualização e pode ser usado para criar ou atualizar um conjunto de habilidades. Para atualizações da habilidade Divisão de Texto, edite a definição JSON do conjunto de habilidades para adicionar novos parâmetros de visualização.
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 | Versão | Descrição |
---|---|---|
textSplitMode |
Todas as versões | 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 |
Todas as versões | Aplica-se somente se textSplitMode estiver definido como pages . Para unit definido como characters , este 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 . For unit set to azureOpenAITokens , o comprimento máximo da página é o limite de comprimento do token do modelo. Para modelos de inserção de texto, uma recomendação geral para o comprimento da página é 512 tokens. |
defaultLanguageCode |
Todas as versões | (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:
|
pageOverlapLength |
01-07-2024 | Aplica-se somente se textSplitMode estiver definido como pages . Cada página começa com esse número de caracteres ou tokens do final da página anterior. Se esse parâmetro for definido como 0, não haverá texto sobreposto em páginas sucessivas. Este exemplo inclui o parâmetro. |
maximumPagesToTake |
01-07-2024 | 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. Este exemplo inclui o parâmetro. |
unit |
2024-09-01-visualização | New. Aplica-se somente se textSplitMode estiver definido como pages . Especifica se deve ser dividido por characters (padrão) ou azureOpenAITokens . A configuração da unidade afeta maximumPageLength e pageOverlapLength . |
azureOpenAITokenizerParameters |
2024-09-01-visualização | New. Um objeto que fornece parâmetros extras para a azureOpenAITokens unidade. encoderModelName é um tokenizer designado usado para converter texto em tokens, essencial para tarefas de processamento de linguagem natural (NLP). Modelos diferentes usam tokenizadores diferentes. Os valores válidos incluem cl100k_base (padrão) usados por GPT-35-Turbo e GPT-4. Outros valores válidos são r50k_base, p50k_base e p50k_edit. A habilidade implementa a biblioteca tiktoken por meio do SharpToken e Microsoft.ML.Tokenizers não oferece suporte a todos os codificadores. Por exemplo, atualmente não há suporte para codificação o200k_base usada pelo GPT-4o. allowedSpecialTokens define uma coleção de tokens especiais que são permitidos no processo de tokenização. Tokens especiais são cadeias de caracteres que você deseja tratar exclusivamente, garantindo que eles não sejam divididos durante a geração de tokens. Por exemplo, ["[START"], "[END]"]. |
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 |
A saída é uma matriz de subcadeias 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 consomem a saída da habilidade, como uma habilidade de inserção. |
Definição de exemplo
{
"name": "SplitSkill",
"@odata.type": "#Microsoft.Skills.Text.SplitSkill",
"description": "A skill that splits text into chunks",
"context": "/document",
"defaultLanguageCode": "en",
"textSplitMode": "pages",
"unit": "azureOpenAITokens",
"azureOpenAITokenizerParameters":{
"encoderModelName":"cl100k_base",
"allowedSpecialTokens": [
"[START]",
"[END]"
]
},
"maximumPageLength": 512,
"inputs": [
{
"name": "text",
"source": "/document/text"
},
{
"name": "languageCode",
"source": "/document/language"
}
],
"outputs": [
{
"name": "textItems",
"targetName": "pages"
}
]
}
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.
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 sejam maximumPageLength
5.000 caracteres (o 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
está 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 repositório 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.