Condividi tramite


Competenza cognitiva Divisione del testo

Importante

Alcuni parametri sono disponibili in anteprima pubblica in Condizioni supplementari per l'utilizzo. L'API REST di anteprima supporta questi parametri.

La competenza Divisione del testo suddivide il testo in blocchi. È possibile specificare se si desidera suddividere il testo nelle frasi o nelle pagine di una determinata lunghezza. Questa competenza è utile se esistono requisiti massimi di lunghezza del testo in altri downstream di competenze, ad esempio le competenze di incorporamento che passano blocchi di dati ai modelli di incorporamento in Azure OpenAI e in altri provider di modelli. Per altre informazioni su questo scenario, vedere Blocchi di documenti per la ricerca vettoriale.

Diversi parametri sono specifici della versione. La tabella dei parametri di competenze indica la versione dell'API in cui è stato introdotto un parametro in modo da sapere se è necessario un aggiornamento della versione. Per usare funzionalità specifiche della versione, ad esempio la suddivisione in blocchi di token nella versione 2024-09-01-preview, è possibile usare la portale di Azure o specificare come destinazione una versione dell'API REST oppure controllare un log delle modifiche di Azure SDK per verificare se supporta la funzionalità.

Il portale di Azure supporta la maggior parte delle funzionalità di anteprima e può essere usato per creare o aggiornare un set di competenze. Per gli aggiornamenti alla competenza Suddivisione testo, modificare la definizione JSON del set di competenze per aggiungere nuovi parametri di anteprima.

Nota

Questa competenza non è associata ai servizi di intelligenza artificiale di Azure. Non è fatturabile e non ha requisiti chiave per i servizi di intelligenza artificiale di Azure.

@odata.type

Microsoft.Skills.Text.SplitSkill

Parametri della competenza

I parametri fanno distinzione tra maiuscole e minuscole.

Nome parametro Versione Descrizione
textSplitMode Tutte le versioni pages o sentences. Le pagine hanno una lunghezza massima configurabile, ma la competenza tenta di evitare di troncare una frase in modo che la lunghezza effettiva potrebbe essere inferiore. Le frasi sono una stringa che termina alla punteggiatura finale della frase, ad esempio un punto, un punto interrogativo o un punto esclamativo, supponendo che la lingua abbia punteggiatura finale di frase.
maximumPageLength Tutte le versioni Si applica solo se textSplitMode è impostato su pages. Per unit impostare su characters, questo parametro fa riferimento alla lunghezza massima della pagina in caratteri misurata da String.Length. Il valore minimo è 300, il valore massimo è 50000 e il valore predefinito è 5000. L'algoritmo esegue al meglio l'interruzione del testo sui limiti delle frasi, pertanto le dimensioni di ogni blocco potrebbero essere leggermente inferiori a maximumPageLength.

Per unit impostare su azureOpenAITokens, la lunghezza massima della pagina è il limite di lunghezza del token del modello. Per i modelli di incorporamento del testo, una raccomandazione generale per la lunghezza della pagina è di 512 token.
defaultLanguageCode Tutte le versioni (facoltativo) Uno dei codici lingua seguenti: 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. La lingua predefinita è Inglese (en). Alcuni aspetti da considerare:
  • Fornire un codice linguistico è utile per evitare di tagliare una parola a metà per lingue nonwhitespace come cinese, giapponese e coreano.
  • Se non si conosce la lingua in anticipo (ad esempio, se si usa LanguageDetectionSkill per rilevare la lingua), è consigliabile usare il en valore predefinito.
pageOverlapLength 2024-07-01 Si applica solo se textSplitMode è impostato su pages. Ogni pagina inizia con questo numero di caratteri o token dalla fine della pagina precedente. Se questo parametro è impostato su 0, non c'è testo sovrapposto nelle pagine successive. Questo esempio include il parametro .
maximumPagesToTake 2024-07-01 Si applica solo se textSplitMode è impostato su pages. Numero di pagine da restituire. Il valore predefinito è 0, ovvero restituire tutte le pagine. È consigliabile impostare questo valore se sono necessari solo un subset di pagine. Questo esempio include il parametro .
unit 2024-09-01-preview New. Si applica solo se textSplitMode è impostato su pages. Specifica se suddividere in blocchi characters per impostazione predefinita o azureOpenAITokens. L'impostazione dell'unità influisce su maximumPageLength e pageOverlapLength.
azureOpenAITokenizerParameters 2024-09-01-preview New. Oggetto che fornisce parametri aggiuntivi per l'unità azureOpenAITokens .

encoderModelName è un tokenizzatore designato usato per convertire il testo in token, essenziale per le attività di elaborazione del linguaggio naturale (NLP). I diversi modelli usano tokenizer diversi. I valori validi includono cl100k_base (impostazione predefinita) usata da GPT-35-Turbo e GPT-4. Altri valori validi sono r50k_base, p50k_base e p50k_edit. La competenza implementa la libreria tiktoken tramite SharpToken e Microsoft.ML.Tokenizers ma non supporta ogni codificatore. Ad esempio, attualmente non è disponibile alcun supporto per la codifica o200k_base usata da GPT-4o.

allowedSpecialTokens definisce una raccolta di token speciali consentiti all'interno del processo di tokenizzazione. I token speciali sono stringhe che si desidera trattare in modo univoco, assicurandosi che non vengano suddivise durante la tokenizzazione. Ad esempio ["[START"], "[END]"].

Input competenze

Nome parametro Descrizione
text Testo da suddividere in sottostringhe.
languageCode (Facoltativo) Codice lingua per il documento. Se non si conosce la lingua degli input di testo, ad esempio se si usa LanguageDetectionSkill per rilevare la lingua, è possibile omettere questo parametro. Se si imposta su languageCode una lingua non è presente nell'elenco supportato per defaultLanguageCode, viene generato un avviso e il testo non viene suddiviso.

Output competenze

Nome parametro Descrizione
textItems L'output è una matrice di sottostringhe estratte. textItems è il nome predefinito dell'output.

targetName è facoltativo, ma se si dispone di più competenze di divisione del testo, assicurarsi di impostare targetName in modo da non sovrascrivere i dati dalla prima competenza con il secondo. Se targetName è impostato, usarlo nei mapping dei campi di output o nelle competenze downstream che utilizzano l'output della competenza, ad esempio una competenza di incorporamento.

Definizione di esempio

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

Input di esempio

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

Output di esempio

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

Esempio di suddivisione in blocchi e vettorizzazione

Questo esempio è per la vettorizzazione integrata.

  • pageOverlapLength: il testo sovrapposto è utile negli scenari di suddivisione in blocchi di dati perché mantiene la continuità tra blocchi generati dallo stesso documento.

  • maximumPagesToTake: i limiti relativi all'assunzione di pagine sono utili negli scenari di vettorizzazione perché consentono di rimanere al di sotto dei limiti di input massimi dei modelli di incorporamento che forniscono la vettorizzazione.

Definizione di esempio

Questa definizione aggiunge pageOverlapLength 100 caratteri e maximumPagesToTake uno.

Supponendo che l'oggetto maximumPageLength sia di 5.000 caratteri (impostazione predefinita), elabora "maximumPagesToTake": 1 i primi 5.000 caratteri di ogni documento di origine.

In questo esempio viene impostato textItems su myPages tramite targetName. Poiché targetName è impostato, myPages è il valore da usare per selezionare l'output dalla competenza Divisione testo. Usare /document/mypages/* nelle competenze downstream, nei mapping dei campi di output dell'indicizzatore, nelle proiezioni dell'archivio conoscenze e nelle proiezioni di indici.

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

Input di esempio (uguale all'esempio precedente)

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

Output di esempio (si noti la sovrapposizione)

All'interno di ogni matrice "textItems", il testo finale del primo elemento viene copiato all'inizio del secondo elemento.

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

Casi di errore

Se una lingua non è supportata, viene generato un avviso.

Vedi anche