Share via


Cognitieve vaardigheid voor het splitsen van tekst

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. 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 Azure AI-services. Het is niet factureerbaar en heeft geen sleutelvereiste voor Azure AI-services.

@odata.type

Microsoft.Skills.Text.SplitSkill

Vaardigheidsparameters

Parameters zijn hoofdlettergevoelig.

Parameternaam Versie Beschrijving
textSplitMode Alle versies 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 Alle versies Alleen van toepassing als textSplitMode deze is ingesteld op pages. charactersDeze unit 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.

azureOpenAITokensDe unit 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 Alle versies (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 2024-07-01 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 2024-07-01 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 2024-09-01-preview Nieuw. 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 2024-09-01-preview Nieuw. 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-35-Turbo en 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]"].

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.

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

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 maximumPagesToTake één definitie toegevoegdpageOverlapLength.

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 myPages volgende ingesteld.textItems targetName 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": {
                "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..."
                ]
            }
        }
    ]
}

Foutcases

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

Zie ook