Text Splittrad kognitiv färdighet

Important

Vissa parametrar finns i förhandsvisning under Kompletterande användarvillkor. Preview REST API stöder dessa parametrar.

Text Split-färdigheten delar upp text i textbitar. Du kan specificera om du vill dela upp texten i meningar eller i sidor av en viss längd. Positionsmetadata som offset och ordinal position finns också tillgängliga som utdata. Denna färdighet är användbar om det finns maximala textlängdskrav i andra färdigheter längre fram, såsom att bädda in färdigheter som skickar datablock till inbyggda modeller på Azure OpenAI och andra modellleverantörer. För mer information om detta scenario, se Chunk-dokument för vektorsökning.

Flera parametrar är versionsspecifika. Färdighetsparametertabellen noterar API-versionen där en parameter infördes så att du vet om en versionsuppgradering krävs. För att använda versionsspecifika funktioner som token chunking i 2024-09-01-preview kan du använda Azure-portalen, eller rikta in dig på en REST API-version, eller kontrollera en Azure SDKs ändringslogg för att se om den stöder funktionen.

Azure-portalen stöder de flesta förhandsgranskningsfunktioner och kan användas för att skapa eller uppdatera en färdighetsuppsättning. För uppdateringar av Text Split-färdigheten, redigera färdighetsuppsättningens JSON-definition för att lägga till nya förhandsgranskningsparametrar.

Note

Denna färdighet är inte bunden till Foundry Tools. Det är icke-fakturerbart och har inget nyckelkrav för Foundry Tools.

@odata.type

Microsoft.Skills.Text.SplitSkill

Skill Parameters

Parametrar är skiftlägeskänsliga.

Parameter name Description
textSplitMode Antingen pages eller sentences. Sidor har en konfigurerbar maxlängd, men färdigheten försöker undvika att korta av en mening så att den faktiska längden kan bli mindre. Meningar är en sträng som slutar vid skiljetecken i meningslut, såsom punkt, frågetecken eller utropstecken, förutsatt att språket har skiljetecken i meningslut.
maximumPageLength Endast gäller om textSplitMode är satt till pages. För unit att sätta till characters, avser denna parameter den maximala sidlängden i tecken mätt med String.Length. Minimivärdet är 300, maxvärdet är 50 000 och standardvärdet är 5000. Algoritmen gör sitt bästa för att bryta texten på meningsgränser, så storleken på varje bit kan vara något mindre än maximumPageLength.

För unit att sätta till azureOpenAITokens, är den maximala sidlängden modellens token-längdsgräns. För textinbäddningsmodeller är en allmän rekommendation för sidlängd 512 tokens.
defaultLanguageCode (valfritt) En av följande språkkoder: 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. Standard är engelska (en). Några saker att tänka på:
  • Att tillhandahålla en språkkod är användbart för att undvika att dela ett ord på mitten för språk utan mellanslag som kinesiska, japanska och koreanska.
  • Om du inte kan språket i förväg (till exempel om du använder LanguageDetectionSkill för att upptäcka språk) rekommenderar vi standardvalet en .
pageOverlapLength Endast gäller om textSplitMode är satt till pages. Varje sida börjar med detta antal tecken eller tokens från slutet av föregående sida. Om denna parameter är satt till 0 finns det ingen överlappande text på följande sidor. Detta exempel inkluderar parametern.
maximumPagesToTake Endast gäller om textSplitMode är satt till pages. Antal sidor att återvända. Standardvärdet är 0, vilket betyder att alla sidor ska returneras. Du bör sätta detta värde om bara en delmängd av sidorna behövs. Detta exempel inkluderar parametern.
unit Endast gäller om textSplitMode är satt till pages. Specificerar om man ska chunka med characters (standard) eller azureOpenAITokens. Att ställa in enheten påverkar maximumPageLength och pageOverlapLength.
azureOpenAITokenizerParameters Ett objekt som ger extra parametrar för azureOpenAITokens enheten.

encoderModelName är en utsedd tokenizer som används för att omvandla text till tokens, avgörande för uppgifter inom naturlig språkbehandling (NLP). Olika modeller använder olika tokenizers. Giltiga värden inkluderar cl100k_base (standard) som används av GPT-4. Andra giltiga värden är r50k_base, p50k_base och p50k_edit. Färdigheten implementerar TikToken-biblioteket via SharpToken och Microsoft.ML.Tokenizers men stöder inte alla kodare. Till exempel finns det för närvarande inget stöd för o200k_base kodning som används av GPT-4o.

allowedSpecialTokens definierar en samling specialtokens som är tillåtna inom tokeniseringsprocessen. Specialtokens är strängar som du vill behandla unikt, så att de inte delas upp under tokeniseringen. Till exempel ["[START"], "[SLUT]"]. Om biblioteket tiktoken inte utför tokenisering som förväntat, antingen på grund av språkspecifika begränsningar eller andra oväntade beteenden, rekommenderas det att använda textdelning istället.

Skill Inputs

Parameter name Description
text Texten ska delas upp i substrängar.
languageCode (Valfritt) Språkkod för dokumentet. Om du inte känner till språket för textinmatningarna (till exempel om du använder LanguageDetectionSkill för att upptäcka språket) kan du utelämna denna parameter. Om du ställer in languageCode att ett språk inte finns i stödlistan för defaultLanguageCode, sänds en varning ut och texten delas inte upp.

Skill Outputs

Parameter name Description
textItems Output är en array av delsträngar som extraherades. textItems är standardnamnet på utdatan.

targetName är valfritt, men om du har flera Text Split-färdigheter, se till att ställa targetName in så att du inte skriver över data från den första färdigheten med den andra. Om targetName är satt, använd den i utdatafältmappningar eller i nedströms färdigheter som förbrukar färdighetsutdata, såsom en inbäddningsfärdighet.
offsets Output är en array av offsets som extraherades. Värdet i varje index är ett objekt som innehåller offsetet av textobjektet i det indexet i tre kodningar: UTF-8, UTF-16 och CodePoint. offsets är standardnamnet på utdatan.

targetName är valfritt, men om du har flera Text Split-färdigheter, se till att ställa targetName in så att du inte skriver över data från den första färdigheten med den andra. Om targetName är satt, använd den i utdatafältmappningar eller i nedströms färdigheter som förbrukar färdighetsutdata, såsom en inbäddningsfärdighet.
lengths Output är en array av längder som extraherades. Värdet i varje index är ett objekt som innehåller offsetet av textobjektet i det indexet i tre kodningar: UTF-8, UTF-16 och CodePoint. lengths är standardnamnet på utdatan.

targetName är valfritt, men om du har flera Text Split-färdigheter, se till att ställa targetName in så att du inte skriver över data från den första färdigheten med den andra. Om targetName är satt, använd den i utdatafältmappningar eller i nedströms färdigheter som förbrukar färdighetsutdata, såsom en inbäddningsfärdighet.
ordinalPositions Output är en array av ordningstalpositioner som motsvarar textobjektets position i källtexten. ordinalPositions är standardnamnet på utdatan.

targetName är valfritt, men om du har flera Text Split-färdigheter, se till att ställa targetName in så att du inte skriver över data från den första färdigheten med den andra. Om targetName är satt, använd den i utdatafältmappningar eller i nedströms färdigheter som förbrukar färdighetsutdata, såsom en inbäddningsfärdighet.

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

Detta exempel sätter textItems till pages genom targetName. Eftersom targetName är satt, pages är värdet du ska använda för att välja utdata från Text Split-färdigheten. Användning /document/pages/* av downstream-färdigheter, indexerarens fältkartläggningar, kunskapslagringsprojektioner och indexprognoser. Detta exempel sätter offsetsinte , lengths, eller ordinalPosition till något annat namn, så värdet du bör använda i nedströmsfärdigheter skulle vara oförändrat. offsets och lengths är komplexa typer snarare än primitiva, eftersom de innehåller värdena för flera kodningstyper. Värdet du bör använda för att erhålla en specifik kodning, till exempel UTF-8, skulle se ut så här: /document/offsets/*/utf8.

Exempel för chunking och vektorisering

Detta exempel gäller integrerad vektorisering.

  • pageOverlapLength: Överlappande text är användbart i datachunking-scenarier eftersom det bevarar kontinuiteten mellan delar som genereras från samma dokument.

  • maximumPagesToTake: Gränser för sidintag är användbara i vektoriseringsscenarier eftersom det hjälper dig att hålla dig under de maximala indatagränserna för de inbäddningsmodeller som tillhandahåller vektoriseringen.

Sample definition

Denna definition lägger till pageOverlapLength 100 tecken och maximumPagesToTake ett.

Om vi antar att det maximumPageLength är 5 000 tecken (standard), bearbetas de "maximumPagesToTake": 1 första 5 000 tecknen i varje källdokument.

Detta exempel sätter textItems till myPages genom targetName. Eftersom targetName är satt, myPages är värdet du ska använda för att välja utdata från Text Split-färdigheten. Användning /document/myPages/* av downstream-färdigheter, indexerarens fältkartläggningar, kunskapslagringsprojektioner och indexprognoser.

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

Exempelinmatning (samma som i föregående exempel)

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

Samplingsutdata (notera överlappningen)

Inom varje "textItems"-array kopieras efterföljande text från det första objektet till början av det andra objektet.

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

Om ett språk inte stöds genereras en varning.

See also