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 :
  • Il est utile d’indiquer un code de langue pour éviter de couper un mot en deux dans les langues sans espaces blancs, par exemple, le chinois, le japonais et le coréen.
  • Si vous ne connaissez pas la langue à l’avance (par exemple, si vous utilisez LanguageDetectionSkill pour détecter la langue), nous vous recommandons en par défaut.
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]"].

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é.

Voir aussi