Dela via


Kognitiv skicklighet för textdelning

Viktigt!

Vissa parametrar finns i offentlig förhandsversion under Kompletterande användningsvillkor. REST API för förhandsversion stöder dessa parametrar.

Färdigheten Dela upp text delar upp text i textsegment. Du kan ange om du vill dela upp texten i meningar eller i sidor med en viss längd. Den här färdigheten är användbar om det finns maximala krav på textlängd i andra färdigheter nedströms, till exempel inbäddningsfärdigheter som skickar datasegment till inbäddningsmodeller i Azure OpenAI och andra modellproviders. Mer information om det här scenariot finns i Segmentdokument för vektorsökning.

Flera parametrar är versionsspecifika. I tabellen med kompetensparametern visas den API-version där en parameter introducerades så att du vet om en versionsuppgradering krävs. Om du vill använda versionsspecifika funktioner som tokensegmentering i 2024-09-01-preview kan du använda Azure Portal eller rikta in dig på en REST API-version eller kontrollera en Azure SDK-ändringslogg för att se om den stöder funktionen.

Azure Portal stöder de flesta förhandsversionsfunktioner och kan användas för att skapa eller uppdatera en kompetensuppsättning. För uppdateringar av färdigheten Textdelning redigerar du JSON-definitionen för kompetensuppsättningen för att lägga till nya förhandsgranskningsparametrar.

Kommentar

Den här färdigheten är inte kopplad till Azure AI-tjänster. Den kan inte faktureras och har inga nyckelkrav för Azure AI-tjänster.

@odata.type

Microsoft.Skills.Text.SplitSkill

Kompetensparametrar

Parametrar är skiftlägeskänsliga.

Parameternamn Version beskrivning
textSplitMode Alla versioner Antingen pages eller sentences. Sidor har en konfigurerbar maximal längd, men färdigheten försöker undvika att trunkera en mening så att den faktiska längden kan vara mindre. Meningar är en sträng som avslutas vid meningsavslutande skiljetecken, till exempel punkt, frågetecken eller utropstecken, förutsatt att språket har meningsslutande skiljetecken.
maximumPageLength Alla versioner Gäller endast om textSplitMode är inställt på pages. För unit inställd på charactersrefererar den här parametern till den maximala sidlängden i tecken mätt med String.Length. Det minsta värdet är 300, maxvärdet är 50000 och standardvärdet är 5 000. Algoritmen gör sitt bästa för att bryta texten på meningsgränser, så storleken på varje segment kan vara något mindre än maximumPageLength.

För unit inställd på azureOpenAITokensär den maximala sidlängden tokenlängdsgränsen för modellen. För inbäddningsmodeller för text är en allmän rekommendation för sidlängd 512 tokens.
defaultLanguageCode Alla versioner (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. Standardvärdet är engelska (en). Några saker att tänka på:
  • Att tillhandahålla en språkkod är användbart för att undvika att halvera ett ord för icke-vita språk 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 identifiera språk) rekommenderar vi standardvärdet en .
pageOverlapLength 2024-07-01 Gäller endast om textSplitMode är inställt på pages. Varje sida börjar med det här antalet tecken eller token från slutet av föregående sida. Om den här parametern är inställd på 0 finns det ingen överlappande text på efterföljande sidor. Det här exemplet innehåller parametern .
maximumPagesToTake 2024-07-01 Gäller endast om textSplitMode är inställt på pages. Antal sidor som ska returneras. Standardvärdet är 0, vilket innebär att alla sidor returneras. Du bör ange det här värdet om endast en delmängd sidor behövs. Det här exemplet innehåller parametern .
unit 2024-09-01-preview Ny. Gäller endast om textSplitMode är inställt på pages. Anger om segment ska segmenteras som characters (standard) eller azureOpenAITokens. Inställningen av enheten påverkar maximumPageLength och pageOverlapLength.
azureOpenAITokenizerParameters 2024-09-01-preview Ny. Ett objekt som tillhandahåller extra parametrar för azureOpenAITokens enheten.

encoderModelName är en avsedd tokenizer som används för att konvertera text till token, vilket är viktigt för nlp-uppgifter (natural language processing). Olika modeller använder olika tokenizers. Giltiga värden inkluderar cl100k_base (standard) som används av GPT-35-Turbo och GPT-4. Andra giltiga värden är r50k_base, p50k_base och p50k_edit. Kunskapen implementerar tiktoken-biblioteket via SharpToken och Microsoft.ML.Tokenizers men stöder inte alla kodare. Det finns till exempel för närvarande inget stöd för o200k_base kodning som används av GPT-4o.

allowedSpecialTokens definierar en samling specialtoken som tillåts i tokeniseringsprocessen. Särskilda token är strängar som du vill behandla unikt, vilket säkerställer att de inte delas upp under tokenisering. Till exempel ["[START"], "[END]"].

Kunskapsindata

Parameternamn beskrivning
text Texten som ska delas upp i delsträng.
languageCode (Valfritt) Språkkod för dokumentet. Om du inte känner till språket för textindata (till exempel om du använder LanguageDetectionSkill för att identifiera språket) kan du utelämna den här parametern. Om du anger languageCode till ett språk inte finns i listan som stöds för defaultLanguageCodegenereras en varning och texten delas inte upp.

Kunskapsutdata

Parameternamn beskrivning
textItems Utdata är en matris med delsträngar som extraherades. textItems är standardnamnet för utdata.

targetName är valfritt, men om du har flera kunskaper om textdelning måste du ange targetName så att du inte skriver över data från den första färdigheten med den andra. Om targetName anges använder du det i utdatafältmappningar eller i underordnade färdigheter som använder kunskapsutdata, till exempel en inbäddningsfärdighet.

Exempeldefinition

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

Exempelindata

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

Exempelutdata

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

Exempel på segmentering och vektorisering

Det här exemplet är för integrerad vektorisering.

  • pageOverlapLength: Överlappande text är användbar i datasegmenteringsscenarier eftersom den bevarar kontinuiteten mellan segment som genereras från samma dokument.

  • maximumPagesToTake: Begränsningar 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.

Exempeldefinition

Den här definitionen lägger till pageOverlapLength 100 tecken och maximumPagesToTake av ett.

Förutsatt att är maximumPageLength 5 000 tecken (standard) bearbetar du sedan "maximumPagesToTake": 1 de första 5 000 tecknen i varje källdokument.

Det här exemplet anges textItems till myPages via targetName. Eftersom targetName är inställt myPages är det värde som du bör använda för att välja utdata från färdigheten Textdelning. Använd /document/mypages/* i underordnade kunskaper, indexerares utdatafältmappningar, kunskapslagerprojektioner och indexprojektioner.

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

Exempelindata (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"
            }
        }
    ]
}

Exempelutdata (observera överlappningen)

I varje matris "textItems" kopieras avslutande text från det första objektet till början av det andra objektet.

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

Felfall

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

Se även