Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Important
Certains paramètres sont en aperçu sous Conditions d’utilisation supplémentaires. L’API REST de prévisualisation prend en charge ces paramètres.
La compétence Séparation de texte divise le texte en morceaux. Vous pouvez préciser si vous souhaitez diviser le texte en phrases ou en pages d’une longueur particulière. Des métadonnées de position comme le décalage et la position ordinale sont également disponibles en sorties. Cette compétence est utile s’il existe des exigences de longueur maximale de texte dans d’autres compétences en aval, comme l’intégration de compétences qui transmettent des morceaux de données à des modèles d’intégration sur Azure OpenAI et d’autres fournisseurs de modèles. Pour plus d’informations sur ce scénario, voir Chunk documents pour la recherche vectorielle.
Plusieurs paramètres sont spécifiques à chaque version. Le tableau des paramètres de compétences indique la version API dans laquelle un paramètre a été introduit afin que vous sachiez si une mise à jour de version est nécessaire. Pour utiliser des fonctionnalités spécifiques à chaque version telles que glissement de tokens dans 2024-09-01-preview, vous pouvez utiliser le portail Azure, cibler une version de l’API REST, ou consulter un journal de modifications Kit de développement logiciel (SDK) Azure pour voir si elle prend en charge cette fonctionnalité.
Le portail Azure prend en charge la plupart des fonctionnalités d’aperçu et peut être utilisé pour créer ou mettre à jour un ensemble de compétences. Pour les mises à jour de la compétence Text Split, modifiez la définition JSON du skill set pour ajouter de nouveaux paramètres d’aperçu.
Note
Cette compétence n’est pas liée aux outils de fonderie. C’est non facturable et il n’y a pas d’exigence de clé Foundry Tools.
@odata.type
Microsoft.Skills.Text.SplitSkill
Skill Parameters
Les paramètres sont sensibles à la casse.
| Parameter name | Description |
|---|---|
textSplitMode |
Soit pagessentences. Les pages ont une longueur maximale configurable, mais la compétence tente d’éviter de tronquer une phrase pour que la longueur réelle soit plus courte. Les phrases sont une chaîne qui se termine à la ponctuation de fin de phrase, comme un point, un point d’interrogation ou un point d’exclamation, à condition que la langue ait une ponctuation de fin de phrase. |
maximumPageLength |
Ne s’applique que si textSplitMode est défini à pages. Pour unit un ensemble à 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 maxime 50000, et la valeur par défaut est 5000. L’algorithme fait de son mieux pour décomposer le texte selon les limites des phrases, de sorte que la taille de chaque morceau pourrait être légèrement inférieure à maximumPageLength. Pour unit définir à azureOpenAITokens, la longueur maximale de page est la limite de longueur des jetons du modèle. Pour les modèles d’inclusion de texte, une recommandation générale pour la longueur de page est de 512 jetons. |
defaultLanguageCode |
(optionnel) L’un des codes de langage 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. Par défaut, c’est anglais (en). Quelques points à considérer :
|
pageOverlapLength |
Ne s’applique que si textSplitMode est défini à pages. Chaque page commence avec ce nombre de caractères ou de jetons à la fin de la page précédente. Si ce paramètre est fixé à 0, il n’y a pas de texte qui se chevauche sur les pages successives. Cet exemple inclut le paramètre. |
maximumPagesToTake |
Ne s’applique que si textSplitMode est défini à pages. Nombre de pages à revenir. Par défaut, c’est 0, ce qui signifie retourner toutes les pages. Vous devriez définir cette valeur si un sous-ensemble de pages n’est nécessaire. Cet exemple inclut le paramètre. |
unit |
Ne s’applique que si textSplitMode est défini à pages. Spécifie s’il faut chunk par characters défaut ou azureOpenAITokens. Définir l’unité affecte maximumPageLength et pageOverlapLength. |
azureOpenAITokenizerParameters Un objet fournissant des paramètres supplémentaires pour l’unité azureOpenAITokens . encoderModelName est un tokeniseur désigné utilisé pour convertir du texte en jetons, essentiel pour les tâches de traitement du langage naturel (NLP). Différents modèles utilisent différents tokenizeurs. Les valeurs valides incluent cl100k_base (par défaut) utilisées par GPT-4. D’autres valeurs valides sont r50k_base, p50k_base et p50k_edit. La compétence implémente la bibliothèque tiktoken via SharpToken et Microsoft.ML.Tokenizers mais ne prend pas en charge tous les encodeurs. Par exemple, il n’y a actuellement aucun support pour 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 devez traiter de manière unique, afin de ne pas être divisées lors de la tokenisation. Par exemple [[START"], « [FIN]"]. Si la tiktoken bibliothèque n’effectue pas la tokenisation comme prévu, soit à cause de limitations spécifiques à la langue, soit d’autres comportements inattendus, il est recommandé d’utiliser la division de texte à la place. |
Skill Inputs
| Parameter name | Description |
|---|---|
text |
Le texte à diviser en sous-chaînes. |
languageCode |
(Optionnel) Code linguistique pour le document. Si vous ne connaissez pas le langage 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 qui n’est pas dans la liste prise en charge pour , defaultLanguageCodeun avertissement est émis et le texte n’est pas séparé. |
Skill Outputs
| Parameter name | 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 optionnel, mais si vous avez plusieurs compétences de Répartition de texte, assurez-vous de ne targetName pas écraser les données de la première compétence par la seconde. Si targetName est défini, utilisez-le dans les mappages de champs de sortie ou dans les compétences en aval qui consomment la sortie de compétence, comme une compétence d’inclusion. |
offsets |
La sortie est un tableau de décalages qui ont été extraits. La valeur à chaque index est un objet contenant le décalage de l’élément texte à cet index en trois encodages : UTF-8, UTF-16 et CodePoint.
offsets est le nom par défaut de la sortie. targetName est optionnel, mais si vous avez plusieurs compétences de Répartition de texte, assurez-vous de ne targetName pas écraser les données de la première compétence par la seconde. Si targetName est défini, utilisez-le dans les mappages de champs de sortie ou dans les compétences en aval qui consomment la sortie de compétence, comme une compétence d’inclusion. |
lengths |
La sortie est un tableau de longueurs extraites. La valeur à chaque index est un objet contenant le décalage de l’élément texte à cet index en trois encodages : UTF-8, UTF-16 et CodePoint.
lengths est le nom par défaut de la sortie. targetName est optionnel, mais si vous avez plusieurs compétences de Répartition de texte, assurez-vous de ne targetName pas écraser les données de la première compétence par la seconde. Si targetName est défini, utilisez-le dans les mappages de champs de sortie ou dans les compétences en aval qui consomment la sortie de compétence, comme une compétence d’inclusion. |
ordinalPositions |
La sortie est un tableau de positions ordinales correspondant à la position de l’élément de texte dans le texte source.
ordinalPositions est le nom par défaut de la sortie. targetName est optionnel, mais si vous avez plusieurs compétences de Répartition de texte, assurez-vous de ne targetName pas écraser les données de la première compétence par la seconde. Si targetName est défini, utilisez-le dans les mappages de champs de sortie ou dans les compétences en aval qui consomment la sortie de compétence, comme une compétence d’inclusion. |
Sample definition
{
"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"
}
]
}
Sample input
{
"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"
}
}
]
}
Sample output
{
"values": [
{
"recordId": "1",
"data": {
"pages": [
"This is the loan...",
"In the next section, we continue..."
],
"offsets": [
{
"utf8": 0,
"utf16": 0,
"codePoint": 0
},
{
"utf8": 146,
"utf16": 146,
"codePoint": 146
}
],
"lengths": [
{
"utf8": 146,
"utf16": 146,
"codePoint": 146
},
{
"utf8": 211,
"utf16": 211,
"codePoint": 211
}
],
"ordinalPositions" : [
1,
2
]
}
},
{
"recordId": "2",
"data": {
"pages": [
"This is the second document...",
"In the next section of the second doc..."
],
"offsets": [
{
"utf8": 0,
"utf16": 0,
"codePoint": 0
},
{
"utf8": 115,
"utf16": 115,
"codePoint": 115
}
],
"lengths": [
{
"utf8": 115,
"utf16": 115,
"codePoint": 115
},
{
"utf8": 209,
"utf16": 209,
"codePoint": 209
}
],
"ordinalPositions" : [
1,
2
]
}
}
]
}
Note
Cet exemple met textItems à pages travers targetName. Parce que targetName est défini, pages est la valeur que vous devez utiliser pour sélectionner la sortie de la compétence Text Split. Utiliser /document/pages/* des compétences en aval, mapper les champs de sortie indexeurs, projeter des archives de connaissances et projeter des index.
Cet exemple ne définit offsetspas , lengths, ni ordinalPosition aucun autre nom, donc la valeur à utiliser dans les compétences en aval resterait inchangée.
offsets et lengths sont des types complexes plutôt que des primitives, car ils contiennent les valeurs de plusieurs types d’encodage. La valeur que vous devriez utiliser pour obtenir un encodage spécifique, par exemple UTF-8, ressemblerait à ceci : /document/offsets/*/utf8.
Exemple pour le chunking et la vectorisation
Cet exemple concerne la vectorisation intégrée.
pageOverlapLength: Le chevauchement du texte est utile dans les scénarios de segmentation de données car il préserve la continuité entre les chunks générés à partir du même document.maximumPagesToTake: Les limites sur l’entrée de pages sont utiles dans les scénarios de vectorisation car elles permettent de rester en dessous des limites maximales d’entrée des modèles d’embedding fournissant la vectorisation.
Sample definition
Cette définition ajoute pageOverlapLength 100 caractères et maximumPagesToTake un seul.
En supposant que maximumPageLength soit 5 000 caractères (par défaut), les "maximumPagesToTake": 1 5 000 premiers caractères de chaque document source traitent.
Cet exemple met textItems à myPages travers targetName. Parce que targetName est défini, myPages est la valeur que vous devez utiliser pour sélectionner la sortie de la compétence Text Split. Utiliser /document/myPages/* des compétences en aval, mapper les champs de sortie indexeurs, projeter des archives de connaissances et projeter des 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"
}
]
}
Entrée d’échantillon (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"
}
}
]
}
Sortie d’échantillon (remarquez le chevauchement)
Dans chaque tableau « textItems », le texte suivant du premier élément est copié au début du second.
{
"values": [
{
"recordId": "1",
"data": {
"myPages": [
"This is the loan...Here is the overlap part",
"Here is the overlap part...In the next section, we continue..."
]
}
},
{
"recordId": "2",
"data": {
"myPages": [
"This is the second document...Here is the overlap part...",
"Here is the overlap part...In the next section of the second doc..."
]
}
}
]
}
Error cases
Si un langage n’est pas pris en charge, un avertissement est généré.