Competenza cognitiva Divisione del testo

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 è particolarmente utile se ci sono requisiti di lunghezza massima del testo in altre competenze a valle.

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 Descrizione
textSplitMode 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 Si applica solo se textSplitMode è impostato su pages. 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.
pageOverlapLength Si applica solo se textSplitMode è impostato su pages. Ogni pagina inizia con questo numero di caratteri dalla fine della pagina precedente. Se questo parametro è impostato su 0, non c'è testo sovrapposto nelle pagine successive. Questo parametro è supportato nell'API REST 2023-10-01-Preview e nei pacchetti beta di Azure SDK aggiornati per supportare la vettorizzazione integrata. Questo esempio include il parametro .
maximumPagesToTake 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 parametro è supportato nell'API REST 2023-10-01-Preview e nei pacchetti beta di Azure SDK aggiornati per supportare la vettorizzazione integrata. Questo esempio include il parametro .
defaultLanguageCode (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.

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 usano l'output della competenza.

Definizione di esempio

{
    "@odata.type": "#Microsoft.Skills.Text.SplitSkill",
    "textSplitMode" : "pages", 
    "maximumPageLength": 1000,
    "defaultLanguageCode": "en",
    "inputs": [
        {
            "name": "text",
            "source": "/document/content"
        },
        {
            "name": "languageCode",
            "source": "/document/language"
        }
    ],
    "outputs": [
        {
            "name": "textItems",
            "targetName": "mypages"
        }
    ]
}

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 vettorializzazione integrata, attualmente in anteprima. Aggiunge parametri di sola anteprima alla definizione di esempio e mostra l'output risultante.

  • 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