Compétence cognitive Fractionnement de texte
Important
Certains paramètres sont en préversion publique sous Conditions d’utilisation supplémentaires. L’API REST en préversion prend en charge ces paramètres.
La compétence Fractionnement de texte découpe le texte en segments. Vous pouvez choisir de décomposer le texte en phrases ou en pages d’une longueur donnée. Cette compétence est utile s’il existe des exigences de longueur de texte maximales dans d’autres compétences en aval, telles que l’incorporation de compétences qui transmettent des blocs de données à des modèles incorporés sur Azure OpenAI et d’autres fournisseurs de modèles. Pour plus d’informations sur ce scénario, consultez Documents de bloc pour la recherche vectorielle.
Plusieurs paramètres sont spécifiques à la version. La table de paramètres de compétences note la version de l’API dans laquelle un paramètre a été introduit afin de savoir si une mise à niveau de version est requise. Pour utiliser des fonctionnalités spécifiques à la version, telles que la segmentation de jetons dans la version 2024-09-01-preview, vous pouvez utiliser le Portail Azure, ou cibler une version d’API REST, ou vérifier un journal des modifications du Kit de développement logiciel (SDK) Azure pour voir s’il prend en charge la fonctionnalité.
Le Portail Azure prend en charge la plupart des fonctionnalités en préversion et peut être utilisé pour créer ou mettre à jour un ensemble de compétences. Pour les mises à jour de la compétence Fractionner du texte, modifiez la définition JSON de l’ensemble de compétences pour ajouter de nouveaux paramètres d’aperçu.
Remarque
Cette compétence n’est pas liée aux services Azure AI. Elle n’est pas facturable et aucune clé de services Azure AI n’est requise.
@odata.type
Microsoft.Skills.Text.SplitSkill
Paramètres de la compétence
Les paramètres respectent la casse.
Nom du paramètre | Version | Description |
---|---|---|
textSplitMode |
Toutes les versions | pages ou sentences . Les pages ont une longueur maximale configurable, mais la compétence tente d’éviter de tronquer une phrase afin que la longueur réelle soit plus petite. Les phrases sont une chaîne qui se termine par une ponctuation de fin de phrase, telle qu’un point d’interrogation ou un point d’exclamation, en supposant que la langue a une ponctuation de fin de phrase. |
maximumPageLength |
Toutes les versions | S’applique uniquement si textSplitMode est défini sur pages . Pour unit la valeur définie characters , ce paramètre fait référence à la longueur maximale de page en caractères mesurée par String.Length . La valeur minimale est 300, la valeur maximale 50 000, et la valeur par défaut 5 000. L’algorithme s’efforce de scinder le texte en respectant les délimitations de phrases, de sorte que la taille de chaque bloc soit légèrement inférieure à maximumPageLength . Pour unit défini sur azureOpenAITokens , la longueur maximale de page est la limite de longueur du jeton du modèle. Pour les modèles d’incorporation de texte, une recommandation générale pour la longueur de page est de 512 jetons. |
defaultLanguageCode |
Toutes les versions | (Facultatif) L’un des codes de langue suivants : 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 . La langue par défaut est l’anglais (en). Quelques points à prendre en compte :
|
pageOverlapLength |
2024-07-01 | S’applique uniquement si textSplitMode est défini sur pages . Chaque page commence par ce nombre de caractères ou de jetons à partir de la fin de la page précédente. Si ce paramètre est défini sur 0, il n’y a pas de texte qui se chevauche sur les pages successives. Cet exemple inclut le paramètre. |
maximumPagesToTake |
2024-07-01 | S’applique uniquement si textSplitMode est défini sur pages . Nombre de fichiers à retourner. La valeur par défaut est 0, ce qui signifie retourner toutes les pages. Vous devez définir cette valeur si seul un sous-ensemble de pages est nécessaire. Cet exemple inclut le paramètre. |
unit |
2024-09-01-preview | New. S’applique uniquement si textSplitMode est défini sur pages . Spécifie s’il faut segmenter par characters (par défaut) ou azureOpenAITokens . La définition de l’unité affecte maximumPageLength et pageOverlapLength . |
azureOpenAITokenizerParameters |
2024-09-01-preview | New. Objet fournissant des paramètres supplémentaires pour l’unité azureOpenAITokens . encoderModelName est un tokenizer désigné utilisé pour convertir du texte en jetons, essentiel pour les tâches de traitement en langage naturel (NLP). Différents modèles utilisent différents tokenizers. Les valeurs valides incluent cl100k_base (valeur par défaut) utilisée par GPT-35-Turbo et GPT-4. D’autres valeurs valides sont r50k_base, p50k_base et p50k_edit. La compétence implémente la bibliothèque tiktoken par le biais de SharpToken et Microsoft.ML.Tokenizers ne prend pas en charge chaque encodeur. Par exemple, il n’existe actuellement aucune prise en charge de l’encodage o200k_base utilisé par GPT-4o. allowedSpecialTokens définit une collection de jetons spéciaux autorisés dans le processus de tokenisation. Les jetons spéciaux sont des chaînes que vous souhaitez traiter de manière unique, ce qui garantit qu’ils ne sont pas fractionnés pendant la tokenisation. Par exemple ["[START"], « [END]"]. Pour les langues dans lesquelles la bibliothèque tiktoken n’effectue pas la tokenisation comme prévu, il est recommandé d’utiliser le fractionnement de texte à la place. |
Entrées de la compétence
Nom du paramètre | Description |
---|---|
text |
Texte à fractionner en sous-chaînes. |
languageCode |
(Facultatif) Code de langue du document. Si vous ne connaissez pas la langue des entrées de texte (par exemple, si vous utilisez LanguageDetectionSkill pour détecter la langue), vous pouvez omettre ce paramètre. Si vous définissez languageCode sur une langue ne figure pas dans la liste prise en charge pour defaultLanguageCode , un avertissement est émis et le texte n’est pas fractionné. |
Sorties de la compétence
Nom du paramètre | Description |
---|---|
textItems |
La sortie est un tableau de sous-chaînes qui ont été extraites. textItems est le nom par défaut de la sortie. targetName est facultatif, mais si vous avez plusieurs compétences de fractionnement de texte, veillez à définir targetName afin de ne pas remplacer les données de la première compétence avec la deuxième. Si targetName elle est définie, utilisez-la dans les mappages de champs de sortie ou dans les compétences en aval qui consomment la sortie des compétences, telles qu’une compétence d’incorporation. |
Exemple de définition
{
"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"
}
]
}
Exemple d’entrée
{
"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"
}
}
]
}
Exemple de sortie
{
"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..."
]
}
}
]
}
Exemple de segmentation et de vectorisation
Cet exemple est destiné à la vectorisation intégrée.
pageOverlapLength
: le chevauchement de texte est utile dans les scénarios de segmentation de données, car il conserve la continuité entre les blocs générés à partir du même document.maximumPagesToTake
: les limites de l’entrée de page sont utiles dans les scénarios de vectorisation, car cela vous permet de rester sous les limites d’entrée maximales des modèles d’incorporation fournissant la vectorisation.
Exemple de définition
Cette définition ajoute pageOverlapLength
de 100 caractères et maximumPagesToTake
d’un caractère.
En supposant que la maximumPageLength
valeur est de 5 000 caractères (valeur par défaut), traite "maximumPagesToTake": 1
les 5 000 premiers caractères de chaque document source.
Cet exemple définit textItems
la valeur myPages
via targetName
. Comme targetName
défini, myPages
est la valeur que vous devez utiliser pour sélectionner la sortie de la compétence Fractionnement de texte. Utilisez /document/mypages/*
les compétences en aval, les mappages de champs de sortie de l’indexeur, les projections de magasin de connaissances et les projections d’index.
{
"@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"
}
]
}
Exemple d’entrée (identique à l’exemple précédent)
{
"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"
}
}
]
}
Exemple de sortie (notez le chevauchement)
Dans chaque tableau « textItems », le texte de fin du premier élément est copié au début du deuxième élément.
{
"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..."
]
}
}
]
}
Cas d’erreur
Si la langue n’est pas prise en charge, un avertissement est généré.