Sdílet prostřednictvím


Kognitivní dovednost rozdělení textu

Důležité

Některé parametry jsou ve verzi Public Preview v rámci dodatečných podmínek použití. Rozhraní REST API ve verzi Preview podporuje tyto parametry.

Dovednost Rozdělení textu rozdělí text na bloky textu. Můžete určit, jestli chcete text rozdělit na věty nebo na stránky určité délky. Tato dovednost je užitečná, pokud existují požadavky na maximální délku textu v dalších dovednostech, jako je vkládání dovedností, které předávají datové bloky do vložených modelů v Azure OpenAI a dalších poskytovatelích modelů. Další informace o tomto scénáři najdete v tématu Blok dokumentů pro vektorové vyhledávání.

Několik parametrů je specifické pro verzi. Tabulka parametrů dovedností uvádí verzi rozhraní API, ve které byl parametr zaveden, abyste věděli, jestli se vyžaduje upgrade verze. Pokud chcete použít funkce specifické pro verzi, jako je například blokování tokenů v 2024-09-01-preview, můžete použít Azure Portal nebo cílit na verzi rozhraní REST API nebo zkontrolovat protokol změn sady Azure SDK a zjistit, jestli tuto funkci podporuje.

Azure Portal podporuje většinu funkcí ve verzi Preview a dá se použít k vytvoření nebo aktualizaci sady dovedností. Pokud chcete aktualizovat dovednosti Rozdělení textu, upravte definici JSON sady dovedností a přidejte nové parametry náhledu.

Poznámka:

Tato dovednost není vázána na služby Azure AI. Je nefakturovatelný a nemá žádný požadavek na klíč služeb Azure AI.

@odata.type

Microsoft.Skills.Text.SplitSkill

Parametry dovedností

Parametry rozlišují malá a velká písmena.

Název parametru Verze Popis
textSplitMode Všechny verze Buďto pages nebo sentences. Stránky mají konfigurovatelnou maximální délku, ale dovednost se snaží vyhnout zkrácení věty, aby skutečná délka mohla být menší. Věty jsou řetězec, který končí interpunkcí na konci věty, jako je tečka, otazník nebo vykřičník za předpokladu, že jazyk má interpunkci končící větou.
maximumPageLength Všechny verze Platí pouze v případě, že textSplitMode je nastavena na pageshodnotu . Pro unit nastavení charactersodkazuje tento parametr na maximální délku stránky ve znacích měřených podle String.Length. Minimální hodnota je 300, maximum je 5 0000 a výchozí hodnota je 5000. Algoritmus nejlépe rozdělí text na hranicích vět, takže velikost každého bloku dat může být o něco menší než maximumPageLength.

azureOpenAITokensMaximální unit délka stránky je maximální délka stránky limitem délky tokenu modelu. U modelů vkládání textu je obecné doporučení pro délku stránky 512 tokenů.
defaultLanguageCode Všechny verze (volitelné) Jeden z následujících kódů jazyka: 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. Výchozí hodnota je angličtina (en). Několik věcí, které je potřeba vzít v úvahu:
  • Poskytnutí kódu jazyka je užitečné, abyste se vyhnuli dělení slov na polovinu pro jiné jazyky, než jsou čínština, japonština a korejština.
  • Pokud jazyk předem neznáte (například pokud k rozpoznávání jazyka používáte LanguageDetectionSkill ), doporučujeme en použít výchozí nastavení.
pageOverlapLength 2024-07-01 Platí pouze v případě, že textSplitMode je nastavena na pageshodnotu . Každá stránka začíná tímto počtem znaků nebo tokenů od konce předchozí stránky. Pokud je tento parametr nastavený na hodnotu 0, není na po sobě jdoucích stránkách žádný překrývající se text. Tento příklad obsahuje parametr.
maximumPagesToTake 2024-07-01 Platí pouze v případě, že textSplitMode je nastavena na pageshodnotu . Počet stránek, které se mají vrátit Výchozí hodnota je 0, což znamená vrátit všechny stránky. Tuto hodnotu byste měli nastavit, pokud potřebujete jenom podmnožinu stránek. Tento příklad obsahuje parametr.
unit 2024-09-01-preview Nový. Platí pouze v případě, že textSplitMode je nastavena na pageshodnotu . Určuje, jestli se mají blokovat ( characters výchozí) nebo azureOpenAITokens. Nastavení jednotky ovlivňuje maximumPageLength a pageOverlapLength.
azureOpenAITokenizerParameters 2024-09-01-preview Nový. Objekt poskytující další parametry pro jednotku azureOpenAITokens .

encoderModelName je určený tokenizátor používaný k převodu textu na tokeny, což je nezbytné pro úlohy zpracování přirozeného jazyka (NLP). Různé modely používají různé tokenizátory. Platné hodnoty zahrnují cl100k_base (výchozí) používané GPT-35-Turbo a GPT-4. Další platné hodnoty jsou r50k_base, p50k_base a p50k_edit. Dovednost implementuje knihovnu tiktoken prostřednictvím SharpTokenu , Microsoft.ML.Tokenizers ale nepodporuje každý kodér. V současné době například neexistuje podpora kódování o200k_base, které používá GPT-4o.

allowedSpecialTokens definuje kolekci speciálních tokenů, které jsou povoleny v rámci procesu tokenizace. Speciální tokeny jsou řetězec, který chcete považovat za jedinečný, aby se během tokenizace nerozdělily. Například ["[START"], "[END]"]. U jazyků, ve kterých knihovna tiktoken neprovádí tokenizaci podle očekávání, se doporučuje místo toho použít dělení textu.

Vstupy dovedností

Název parametru Popis
text Text, který chcete rozdělit do podřetědce.
languageCode (Volitelné) Kód jazyka dokumentu Pokud neznáte jazyk textových vstupů (například pokud k rozpoznání jazyka používáte LanguageDetectionSkill ), můžete tento parametr vynechat. Pokud jste nastavili languageCode jazyk, který není v seznamu podporovaných položek defaultLanguageCode, vygeneruje se upozornění a text se nerozdělí.

Výstupy dovedností

Název parametru Popis
textItems Výstup je pole podřetědců, které byly extrahovány. textItems je výchozí název výstupu.

targetName je nepovinný, ale pokud máte více dovedností rozdělení textu, nezapomeňte nastavit targetName , abyste nepřepsali data z první dovednosti druhou dovedností. Pokud targetName je nastavená, použijte ji v mapování výstupních polí nebo v podřízených dovednostech, které využívají výstup dovednosti, jako je například dovednost vkládání.

Ukázková definice

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

Ukázkový vstup

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

Ukázkový výstup

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

Příklad pro vytváření bloků dat a vektorizaci

Tento příklad je určený pro integrovanou vektorizaci.

  • pageOverlapLength: Překrývající se text je užitečný ve scénářích vytváření bloků dat, protože zachovává kontinuitu mezi bloky dat vygenerovanými ze stejného dokumentu.

  • maximumPagesToTake: Limity příjmu stránky jsou užitečné ve scénářích vektorizace , protože vám pomůže zůstat pod maximálními vstupními limity vložených modelů poskytujících vektorizaci.

Ukázková definice

Tato definice přidá pageOverlapLength 100 znaků a maximumPagesToTake z jedné.

Za předpokladu, že maximumPageLength je 5 000 znaků (výchozí), zpracuje "maximumPagesToTake": 1 prvních 5 000 znaků každého zdrojového dokumentu.

Tento příklad se nastaví textItems na myPages .targetName Protože targetName je nastavená, je hodnota, myPages kterou byste měli použít k výběru výstupu z dovednosti Rozdělení textu. Používá se /document/mypages/* v podřízených dovednostech, mapováních výstupních polí indexeru, projekcích úložiště znalostí a projekcích indexu.

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

Ukázkový vstup (stejný jako v předchozím příkladu)

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

Ukázkový výstup (všimněte si překrytí)

V každém poli textItems se koncový text z první položky zkopíruje na začátek druhé položky.

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

Chybové případy

Pokud jazyk není podporovaný, vygeneruje se upozornění.

Viz také