Aptitud cognitiva División de texto
Importante
Algunos parámetros están en versión preliminar pública en Términos de uso complementarios. La API REST en versión preliminar admite estos parámetros.
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 útil si hay requisitos máximos de longitud de texto en otras aptitudes de nivel inferior, como insertar aptitudes que pasan fragmentos de datos para insertar modelos en Azure OpenAI y otros proveedores de modelos. Para obtener más información sobre este escenario, vea Documentos de fragmentos para la búsqueda de vectores.
Varios parámetros son específicos de la versión. En la tabla de parámetros skills se indica la versión de la API en la que se introdujo un parámetro para saber si se requiere una actualización de versión . Para usar características específicas de la versión, como la fragmentación de tokens en 2024-09-01-preview, puede usar Azure Portal o tener como destino una versión de la API REST o comprobar un registro de cambios del SDK de Azure para ver si admite la característica.
Azure Portal admite la mayoría de las características en versión preliminar y se pueden usar para crear o actualizar un conjunto de aptitudes. Para las actualizaciones de la aptitud División de texto, edite la definición JSON del conjunto de aptitudes para agregar nuevos parámetros de vista previa.
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 del parámetro | Versión | Descripción |
---|---|---|
textSplitMode |
Todas las versiones | 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 |
Todas las versiones | Solo se aplica si textSplitMode está establecido en pages . Para unit establecer en characters , este parámetro hace referencia a la longitud máxima de página en caracteres medida por 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 . Para unit establecer en azureOpenAITokens , la longitud máxima de página es el límite de longitud del token del modelo. Para los modelos de inserción de texto, una recomendación general para la longitud de página es 512 tokens. |
defaultLanguageCode |
Todas las versiones | (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:
|
pageOverlapLength |
2024-07-01 | Solo se aplica si textSplitMode está establecido en pages . Cada página comienza con este número de caracteres o tokens desde el final de la página anterior. Si este parámetro se establece en 0, no hay texto superpuesto en páginas sucesivas. En este ejemplo se incluye el parámetro. |
maximumPagesToTake |
2024-07-01 | 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. En este ejemplo se incluye el parámetro. |
unit |
2024-09-01-preview | New. Solo se aplica si textSplitMode está establecido en pages . Especifica si se va a fragmentar por characters (valor predeterminado) o azureOpenAITokens . Establecer la unidad afecta a maximumPageLength y pageOverlapLength . |
azureOpenAITokenizerParameters |
2024-09-01-preview | New. Objeto que proporciona parámetros adicionales para la azureOpenAITokens unidad. encoderModelName es un tokenizador designado que se usa para convertir texto en tokens, esencial para las tareas de procesamiento de lenguaje natural (NLP). Los diferentes modelos usan distintos tokenizadores. Los valores válidos incluyen cl100k_base (valor predeterminado) usado por GPT-35-Turbo y GPT-4. Otros valores válidos son r50k_base, p50k_base y p50k_edit. La aptitud implementa la biblioteca tiktoken mediante SharpToken y Microsoft.ML.Tokenizers , sin embargo, no admite todos los codificadores. Por ejemplo, actualmente no hay compatibilidad con o200k_base codificación usada por GPT-4o. allowedSpecialTokens define una colección de tokens especiales que se permiten en el proceso de tokenización. Los tokens especiales son cadenas que desea tratar de forma única, asegurándose de que no se dividen durante la tokenización. Por ejemplo ["[START"], "[END]"]. En el caso de los idiomas en los que la biblioteca tiktoken no realiza la tokenización según lo previsto, se recomienda usar la división de texto en su lugar. |
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 consumen la salida de la aptitud, como una aptitud de inserción. |
Definición de ejemplo
{
"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 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.
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.