Delen via


Cognitieve tekstsplitsfunctie

Belangrijk

Sommige parameters bevinden zich in openbare preview onder Aanvullende gebruiksvoorwaarden. De PREVIEW REST API ondersteunt deze parameters.

Met de vaardigheid Tekst splitsen wordt tekst opgesplitst in stukken tekst. U kunt opgeven of u de tekst wilt opsplitsen in zinnen of in pagina's met een bepaalde lengte. Positionele metagegevens, zoals offset en rangschikken, zijn ook beschikbaar als uitvoer. Deze vaardigheid is handig als er vereisten voor maximale tekstlengte in andere vaardigheden downstream zijn, zoals het insluiten van vaardigheden die gegevenssegmenten doorgeven aan het insluiten van modellen in Azure OpenAI en andere modelproviders. Zie Segmentdocumenten voor vectorzoekopdrachten voor meer informatie over dit scenario.

Verschillende parameters zijn versiespecifiek. In de parametertabel vaardigheden wordt de API-versie weergegeven waarin een parameter is geïntroduceerd, zodat u weet of een versie-upgrade vereist is. Als u versiespecifieke functies zoals het segmenteren van tokens in 2024-09-01-preview wilt gebruiken, kunt u de Azure-portal gebruiken of een REST API-versie richten of een Azure SDK-wijzigingslogboek controleren om te zien of deze de functie ondersteunt.

Azure Portal ondersteunt de meeste preview-functies en kan worden gebruikt om een vaardighedenset te maken of bij te werken. Bewerk voor updates van de vaardigheid Tekst splitsen de JSON-definitie van de vaardighedenset om nieuwe preview-parameters toe te voegen.

Notitie

Deze vaardigheid is niet gebonden aan Foundry Tools. Het is niet factureerbare en heeft geen sleutelvereiste voor Foundry Tools.

@odata.type

Microsoft.Skills.Text.SplitSkill

Vaardigheidsparameters

Parameters zijn hoofdlettergevoelig.

Parameternaam Beschrijving
textSplitMode pages of sentences. Pagina's hebben een configureerbare maximale lengte, maar de vaardigheid probeert te voorkomen dat een zin wordt afgekapt, zodat de werkelijke lengte kleiner kan zijn. Zinnen zijn een tekenreeks die eindigt bij interpunctie in de zin, zoals een punt, vraagteken of uitroepteken, ervan uitgaande dat de taal interpunctie eindigt.
maximumPageLength Alleen van toepassing als textSplitMode deze is ingesteld op pages. unitDeze characters parameter verwijst naar de maximale paginalengte in tekens, zoals gemeten door String.Length. De minimumwaarde is 300, het maximum is 50000 en de standaardwaarde is 5000. Het algoritme doet het beste om de tekst op zinsgrenzen te verbreken, dus de grootte van elk segment kan iets kleiner zijn dan maximumPageLength.

unitDe azureOpenAITokens maximale paginalengte is de limiet voor de tokenlengte van het model. Voor het insluiten van tekstmodellen is een algemene aanbeveling voor paginalengte 512 tokens.
defaultLanguageCode (optioneel) Een van de volgende taalcodes: 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. Standaard is Engels (en). Enkele aandachtspunten:
  • Het verstrekken van een taalcode is handig om te voorkomen dat een woord in de helft wordt geknipt voor niet-geschreven talen, zoals Chinees, Japans en Koreaans.
  • Als u de taal niet van tevoren weet (bijvoorbeeld als u languageDetectionSkill gebruikt om taal te detecteren), raden we de en standaardinstelling aan.
pageOverlapLength Alleen van toepassing als textSplitMode deze is ingesteld op pages. Elke pagina begint met dit aantal tekens of tokens vanaf het einde van de vorige pagina. Als deze parameter is ingesteld op 0, is er geen overlappende tekst op opeenvolgende pagina's. Dit voorbeeld bevat de parameter.
maximumPagesToTake Alleen van toepassing als textSplitMode deze is ingesteld op pages. Het aantal pagina's dat moet worden geretourneerd. De standaardwaarde is 0, wat betekent dat alle pagina's moeten worden geretourneerd. U moet deze waarde instellen als er alleen een subset van pagina's nodig is. Dit voorbeeld bevat de parameter.
unit Alleen van toepassing als textSplitMode deze is ingesteld op pages. Hiermee geeft u op of segmenteren op characters (standaard) of azureOpenAITokens. Het instellen van de eenheid is van invloed maximumPageLength op en pageOverlapLength.
azureOpenAITokenizerParameters Een object met extra parameters voor de azureOpenAITokens eenheid.

encoderModelName is een aangewezen tokenizer die wordt gebruikt voor het converteren van tekst naar tokens, essentieel voor NLP-taken (Natural Language Processing). Verschillende modellen gebruiken verschillende tokenizers. Geldige waarden zijn cl100k_base (standaard) die worden gebruikt door GPT-4. Andere geldige waarden zijn r50k_base, p50k_base en p50k_edit. De vaardigheid implementeert de tiktokenbibliotheek via SharpToken en Microsoft.ML.Tokenizers ondersteunt niet elke encoder. Er is momenteel bijvoorbeeld geen ondersteuning voor o200k_base codering die wordt gebruikt door GPT-4o.

allowedSpecialTokens definieert een verzameling speciale tokens die zijn toegestaan binnen het tokenisatieproces. Speciale tokens zijn tekenreeksen die u uniek wilt behandelen, zodat ze niet worden gesplitst tijdens de tokenisatie. Bijvoorbeeld ["[START"], "[END]"]. Als de tiktoken bibliotheek geen tokenisatie uitvoert zoals verwacht, vanwege taalspecifieke beperkingen of ander onverwacht gedrag, is het raadzaam om in plaats daarvan tekstsplitsing te gebruiken.

Invoer van vaardigheden

Parameternaam Beschrijving
text De tekst die moet worden gesplitst in de subtekenreeks.
languageCode (Optioneel) Taalcode voor het document. Als u de taal van de tekstinvoer niet kent (bijvoorbeeld als u LanguageDetectionSkill gebruikt om de taal te detecteren), kunt u deze parameter weglaten. Als u instelt languageCode op een taal, wordt er geen waarschuwing verzonden in de lijst defaultLanguageCodemet ondersteunde talen en wordt de tekst niet gesplitst.

Uitvoer van vaardigheden

Parameternaam Beschrijving
textItems Uitvoer is een matrix met subtekenreeksen die zijn geëxtraheerd. textItems is de standaardnaam van de uitvoer.

targetName is optioneel, maar als u meerdere vaardigheden voor tekst splitsen hebt, moet u instellen targetName dat u de gegevens niet overschrijft van de eerste vaardigheid met de tweede vaardigheid. Als targetName dit is ingesteld, gebruikt u deze in uitvoerveldtoewijzingen of in downstreamvaardigheden die de vaardigheidsuitvoer gebruiken, zoals een insluitvaardigheid.
offsets Uitvoer is een matrix met offsets die zijn geëxtraheerd. De waarde voor elke index is een object met de offset van het tekstitem in die index in drie coderingen: UTF-8, UTF-16 en CodePoint. offsets is de standaardnaam van de uitvoer.

targetName is optioneel, maar als u meerdere vaardigheden voor tekst splitsen hebt, moet u instellen targetName dat u de gegevens niet overschrijft van de eerste vaardigheid met de tweede vaardigheid. Als targetName dit is ingesteld, gebruikt u deze in uitvoerveldtoewijzingen of in downstreamvaardigheden die de vaardigheidsuitvoer gebruiken, zoals een insluitvaardigheid.
lengths Uitvoer is een matrix met lengten die zijn geëxtraheerd. De waarde voor elke index is een object met de offset van het tekstitem in die index in drie coderingen: UTF-8, UTF-16 en CodePoint. lengths is de standaardnaam van de uitvoer.

targetName is optioneel, maar als u meerdere vaardigheden voor tekst splitsen hebt, moet u instellen targetName dat u de gegevens niet overschrijft van de eerste vaardigheid met de tweede vaardigheid. Als targetName dit is ingesteld, gebruikt u deze in uitvoerveldtoewijzingen of in downstreamvaardigheden die de vaardigheidsuitvoer gebruiken, zoals een insluitvaardigheid.
ordinalPositions Uitvoer is een matrix van rangtelposities die overeenkomen met de positie van het tekstitem in de brontekst. ordinalPositions is de standaardnaam van de uitvoer.

targetName is optioneel, maar als u meerdere vaardigheden voor tekst splitsen hebt, moet u instellen targetName dat u de gegevens niet overschrijft van de eerste vaardigheid met de tweede vaardigheid. Als targetName dit is ingesteld, gebruikt u deze in uitvoerveldtoewijzingen of in downstreamvaardigheden die de vaardigheidsuitvoer gebruiken, zoals een insluitvaardigheid.

Voorbeelddefinitie

{
    "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"
        }
    ]
}

Voorbeeldinvoer

{
    "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"
            }
        }
    ]
}

Voorbeelduitvoer

{
    "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
                ]
            }
        }
    ]
}

Notitie

In dit voorbeeld wordt het textItems volgende ingesteld.pagestargetName Omdat targetName deze is ingesteld, pages is de waarde die u moet gebruiken om de uitvoer van de vaardigheid Tekst splitsen te selecteren. Gebruik /document/pages/* in downstreamvaardigheden, indexeerfunctie uitvoerveldtoewijzingen, kennisarchiefprojecties en indexprojecties. In dit voorbeeld wordt geen of offsetslengths een andere naam ingesteldordinalPosition, dus de waarde die u in downstreamvaardigheden moet gebruiken, is ongewijzigd. offsets en lengths complexe typen zijn in plaats van primitieven, omdat ze de waarden voor meerdere coderingstypen bevatten. De waarde die u moet gebruiken om een specifieke codering te verkrijgen, bijvoorbeeld UTF-8, ziet er als volgt uit: /document/offsets/*/utf8.

Voorbeeld voor segmentering en vectorisatie

Dit voorbeeld is voor geïntegreerde vectorisatie.

  • pageOverlapLength: Overlappende tekst is handig in scenario's voor het segmenteren van gegevens, omdat hiermee de continuïteit wordt behouden tussen segmenten die zijn gegenereerd op basis van hetzelfde document.

  • maximumPagesToTake: Limieten voor pagina-intake zijn handig in vectorisatiescenario's , omdat u hiermee onder de maximale invoerlimieten van de insluitmodellen kunt blijven die de vectorisatie bieden.

Voorbeelddefinitie

Met deze definitie worden 100 tekens en pageOverlapLength één definitie toegevoegdmaximumPagesToTake.

Ervan uitgaande dat de waarde maximumPageLength 5000 tekens (de standaardwaarde) is, worden de "maximumPagesToTake": 1 eerste 5000 tekens van elk brondocument verwerkt.

In dit voorbeeld wordt het textItems volgende ingesteld.myPagestargetName Omdat targetName deze is ingesteld, myPages is de waarde die u moet gebruiken om de uitvoer van de vaardigheid Tekst splitsen te selecteren. Gebruik /document/myPages/* in downstreamvaardigheden, indexeerfunctie uitvoerveldtoewijzingen, kennisarchiefprojecties en indexprojecties.

{
    "@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"
        }
    ]
}

Voorbeeldinvoer (hetzelfde als in het vorige voorbeeld)

{
    "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"
            }
        }
    ]
}

Voorbeelduitvoer (let op de overlapping)

Binnen elke matrix 'textItems' wordt volgtekst van het eerste item gekopieerd naar het begin van het tweede item.

{
    "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..."
                ]
            }
        }
    ]
}

Foutcases

Als een taal niet wordt ondersteund, wordt er een waarschuwing gegenereerd.

Zie ook