Habilidade cognitiva de divisão de texto
Importante
Alguns parâmetros estão em pré-visualização pública em Termos de Utilização Suplementares. A API REST de visualização suporta esses parâmetros.
A habilidade Divisão de texto divide o texto em partes de texto. Você pode especificar se deseja dividir o texto em frases ou em páginas de um determinado comprimento. Essa habilidade é útil se houver requisitos de comprimento máximo de texto em outras habilidades a jusante, como incorporar habilidades que passam blocos de dados para incorporar modelos no Azure OpenAI e em outros provedores de modelos. Para obter mais informações sobre esse cenário, consulte Documentos de bloco para pesquisa vetorial.
Vários parâmetros são específicos da versão. A tabela de parâmetros de habilidades 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 fragmentação de token na visualização 2024-09-01, 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.
Nota
Essa habilidade não está vinculada aos serviços de IA do Azure. Não é faturável e não tem nenhum requisito de chave de serviços de IA do Azure.
@odata.type
Microsoft.Skills.Text.SplitSkill
Parâmetros de habilidade
Os parâmetros diferenciam maiúsculas de minúsculas.
Nome do parâmetro | Versão | Description |
---|---|---|
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. Frases são uma cadeia de caracteres que termina na pontuação final da frase, como um ponto, ponto de interrogação ou ponto de exclamação, supondo que o idioma tenha pontuação final de frase. |
maximumPageLength |
Todas as versões | Aplica-se apenas 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 medido por String.Length . O valor mínimo é 300, o máximo é 50000 e o valor padrão é 5000. O algoritmo faz o seu melhor para quebrar o texto nos limites da frase, de modo que o tamanho de cada pedaço pode ser um pouco menor do que maximumPageLength . Para unit definido como azureOpenAITokens , o comprimento máximo da página é o limite de comprimento do token do modelo. Para modelos de incorporação de texto, uma recomendação geral para o comprimento da página é de 512 tokens. |
defaultLanguageCode |
Todas as versões | (facultativo) Um dos seguintes códigos linguísticos: 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 a considerar:
|
pageOverlapLength |
2024-07-01 | Aplica-se apenas se textSplitMode estiver definido como pages . Cada página começa com este número de caracteres ou tokens do final da página anterior. Se esse parâmetro for definido como 0, não haverá sobreposição de texto em páginas sucessivas. Este exemplo inclui o parâmetro. |
maximumPagesToTake |
2024-07-01 | Aplica-se apenas se textSplitMode estiver definido como pages . Número de páginas a devolver. O padrão é 0, o que significa retornar todas as páginas. Você deve 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 | Novo. Aplica-se apenas 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 | Novo. Um objeto que fornece parâmetros extras para a azureOpenAITokens unidade. encoderModelName é um tokenizador 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 pelo 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 de SharpToken e Microsoft.ML.Tokenizers não suporta 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 dentro do processo de tokenização. Os tokens especiais são cadeias de caracteres que você deseja tratar exclusivamente, garantindo que não sejam divididos durante a tokenização. Por exemplo ["[START"], "[END]"]. |
Entradas de Habilidade
Nome do parâmetro | Description |
---|---|
text |
O texto a ser dividido em substring. |
languageCode |
(Opcional) Código linguístico do documento. Se você não souber o idioma das entradas de texto (por exemplo, se estiver usando LanguageDetectionSkill para detetar o idioma), poderá omitir esse parâmetro. Se você definir languageCode como um idioma não está na lista de suporte para o defaultLanguageCode , um aviso será emitido e o texto não será dividido. |
Resultados de Competências
Nome do parâmetro | Description |
---|---|
textItems |
Output é uma matriz de substrings 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 de habilidade, como uma habilidade de incorporação. |
Definição da amostra
{
"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 fragmentação e vetorização
Este exemplo é para vetorização integrada.
pageOverlapLength
: A sobreposição de texto é útil em cenários de fragmentação de dados porque preserva a continuidade entre partes geradas a partir do mesmo documento.maximumPagesToTake
: Os limites de entrada de páginas são úteis em cenários de vetorização porque ajudam você a ficar abaixo dos limites máximos de entrada dos modelos de incorporação que fornecem a vetorização.
Definição da amostra
Esta definição acrescenta pageOverlapLength
de 100 caracteres e maximumPagesToTake
de um.
Supondo que o maximumPageLength
seja de 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 de 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"
}
]
}
Exemplo de entrada (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 da amostra (observe a sobreposição)
Dentro de 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 um idioma não for suportado, um aviso será gerado.