Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Important
Alcuni parametri sono in anteprima sotto i Termini di Utilizzo Supplementari. L'API REST di anteprima supporta questi parametri.
L'abilità Text Split divide il testo in blocchi di testo. Puoi specificare se vuoi suddividere il testo in frasi o in pagine di una particolare lunghezza. Metadati posizionali come offset e posizione ordinale sono anch'essi disponibili come output. Questa abilità è utile se ci sono requisiti di lunghezza massima del testo in altre competenze a valle, come l'embedding di competenze che passano i dati a modelli di embedding su Azure OpenAI e altri provider di modelli. Per maggiori informazioni su questo scenario, vedi i documenti Chunk per la ricerca vettoriale.
Diversi parametri sono specifici per versione. La tabella dei parametri delle competenze indica la versione API in cui è stato introdotto un parametro, così da sapere se è necessario un aggiornamento di versione . Per utilizzare funzionalità specifiche per versione come token chunking in 2024-09-01-preview, puoi utilizzare il portale Azure, oppure puntare a una versione REST API, oppure controllare un registro modifiche Azure SDK per vedere se supporta la funzione.
Il portale Azure supporta la maggior parte delle funzionalità di anteprima e può essere utilizzato per creare o aggiornare un set di competenze. Per aggiornamenti all'abilità Text Split, modifica la definizione JSON del skill set per aggiungere nuovi parametri di anteprima.
Note
Questa abilità non è vincolata agli Utensili della Fonderia. Non è fatturabile e non richiede chiavi di Foundry Tools.
@odata.type
Microsoft.Skills.Text.SplitSkill
Skill Parameters
I parametri sono distinti dalla mazzela e minuscola.
| Parameter name | Description |
|---|---|
textSplitMode |
O pages oppure sentences. Le pagine hanno una lunghezza massima configurabile, ma l'abilità cerca di evitare di troncare una frase in modo che la lunghezza effettiva possa essere più piccola. Le frasi sono una stringa che termina alla punteggiatura che termina la frase, come un punto, un punto interrogativo o un punto esclamativo, supponendo che la lingua abbia punteggiatura che termina la frase. |
maximumPageLength |
Si applica solo se textSplitMode è impostato a pages. Per unit l'insieme a characters, questo parametro si riferisce alla lunghezza massima della pagina in caratteri misurata da String.Length. Il valore minimo è 300, il massimo è 50000 e il valore predefinito è 5000. L'algoritmo fa del suo meglio per rompere il testo sui confini delle frasi, così la dimensione di ogni blocco potrebbe essere leggermente inferiore a maximumPageLength. Per unit impostare a azureOpenAITokens, la lunghezza massima della pagina è il limite di lunghezza del token del modello. Per i modelli di incorporamento di testo, una raccomandazione generale per la lunghezza della pagina è 512 token. |
defaultLanguageCode |
(opzionale) Uno dei seguenti codici linguistici: 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. Il predefinito è inglese (en). Alcune cose da considerare:
|
pageOverlapLength |
Si applica solo se textSplitMode è impostato a pages. Ogni pagina inizia con questo numero di caratteri o gettoni dalla fine della pagina precedente. Se questo parametro è impostato a 0, non c'è testo sovrapposto nelle pagine successive. Questo esempio include il parametro. |
maximumPagesToTake |
Si applica solo se textSplitMode è impostato a pages. Numero di pagine da restituire. Il valore predefinito è 0, il che significa restituire tutte le pagine. Dovresti impostare questo valore se serve solo un sottoinsieme di pagine. Questo esempio include il parametro. |
unit |
Si applica solo se textSplitMode è impostato a pages. Specifica se spargere per characters (di default) o azureOpenAITokens. Impostare l'unità influisce maximumPageLength su e pageOverlapLength. |
azureOpenAITokenizerParameters Un oggetto che fornisce parametri extra per l'unità azureOpenAITokens . encoderModelName è un tokenizzatore designato utilizzato per convertire testo in token, essenziale per compiti di elaborazione del linguaggio naturale (NLP). Modelli diversi usano tokenizzatori differenti. I valori validi includono cl100k_base (predefinito) utilizzato da GPT-4. Altri valori validi sono r50k_base, p50k_base e p50k_edit. L'abilità implementa la libreria tiktoken tramite SharpToken e Microsoft.ML.Tokenizers ma non supporta tutti gli encoder. Ad esempio, attualmente non c'è supporto per o200k_base codifica usata da GPT-4o. allowedSpecialTokens definisce una collezione di token speciali consentiti all'interno del processo di tokenizzazione. I token speciali sono stringhe che vuoi trattare in modo unico, assicurandoti che non vengano divisi durante la tokenizzazione. Ad esempio [[START"], "[FINE]"]. Se la tiktoken libreria non esegue la tokenizzazione come previsto, sia a causa di limitazioni specifiche della lingua sia di altri comportamenti inaspettati, si consiglia di usare invece la divisione del testo. |
Skill Inputs
| Parameter name | Description |
|---|---|
text |
Il testo da dividere in sottostringhe. |
languageCode |
(Opzionale) Codice linguistico per il documento. Se non conosci il linguaggio degli input di testo (ad esempio, se usi LanguageDetectionSkill per rilevare il linguaggio), puoi omettere questo parametro. Se imposti languageCode a una lingua che non è nella lista supportata per , defaultLanguageCodeviene emessa una segnalazione e il testo non è diviso. |
Skill Outputs
| Parameter name | Description |
|---|---|
textItems |
L'output è un array di sottostringhe estratte.
textItems è il nome predefinito dell'output. targetName è opzionale, ma se hai più abilità di Text Split, assicurati di impostare targetName in modo da non sovrascrivere i dati della prima abilità con la seconda. Se targetName è impostato, usalo nelle mappature del campo di output o nelle abilità a valle che consumano l'output della skill, come una skill di embedding. |
offsets |
L'output è un array di offset estratti. Il valore in ciascun indice è un oggetto contenente lo offset dell'elemento testuale in quell'indice in tre codifica: UTF-8, UTF-16 e CodePoint.
offsets è il nome predefinito dell'output. targetName è opzionale, ma se hai più abilità di Text Split, assicurati di impostare targetName in modo da non sovrascrivere i dati della prima abilità con la seconda. Se targetName è impostato, usalo nelle mappature del campo di output o nelle abilità a valle che consumano l'output della skill, come una skill di embedding. |
lengths |
L'output è una serie di lunghezze che sono state estrate. Il valore in ciascun indice è un oggetto contenente lo offset dell'elemento testuale in quell'indice in tre codifica: UTF-8, UTF-16 e CodePoint.
lengths è il nome predefinito dell'output. targetName è opzionale, ma se hai più abilità di Text Split, assicurati di impostare targetName in modo da non sovrascrivere i dati della prima abilità con la seconda. Se targetName è impostato, usalo nelle mappature del campo di output o nelle abilità a valle che consumano l'output della skill, come una skill di embedding. |
ordinalPositions |
Output è un array di posizioni ordinali corrispondenti alla posizione dell'elemento di testo all'interno del testo sorgente.
ordinalPositions è il nome predefinito dell'output. targetName è opzionale, ma se hai più abilità di Text Split, assicurati di impostare targetName in modo da non sovrascrivere i dati della prima abilità con la seconda. Se targetName è impostato, usalo nelle mappature del campo di output o nelle abilità a valle che consumano l'output della skill, come una skill di embedding. |
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
Questo esempio imposta textItems a pages tramite targetName. Poiché targetName è impostato, pages è il valore che dovresti usare per selezionare l'output dalla skill Text Split. Utilizzare /document/pages/* competenze a valle, mappatura di campo di output dell'indicizzatore, proiezioni di knowledge store e proiezioni di indici.
Questo esempio non imposta offsets, lengths, né ordinalPosition a nessun altro nome, quindi il valore che dovresti usare nelle abilità a valle rimarrebbe invariato.
offsets e lengths sono tipi complessi piuttosto che primitivi, perché contengono i valori per più tipi di codifica. Il valore che dovresti usare per ottenere una specifica codifica, ad esempio UTF-8, sarebbe questo: /document/offsets/*/utf8.
Esempio per chunking e vettorizzazione
Questo esempio è per la vettorizzazione integrata.
pageOverlapLength: Il testo sovrapposto è utile in scenari di shunking dei dati perché preserva la continuità tra i chunk generati dallo stesso documento.maximumPagesToTake: I limiti sull'ingresso di pagine sono utili negli scenari di vettorizzazione perché aiutano a rimanere sotto i limiti massimi di input dei modelli di embedding che forniscono la vettorizzazione.
Sample definition
Questa definizione aggiunge pageOverlapLength 100 caratteri e maximumPagesToTake uno di uno.
Assumendo che maximumPageLength siano 5.000 caratteri (il valore predefinito), allora "maximumPagesToTake": 1 si elaborano i primi 5.000 caratteri di ciascun documento sorgente.
Questo esempio imposta textItems a myPages tramite targetName. Poiché targetName è impostato, myPages è il valore che dovresti usare per selezionare l'output dalla skill Text Split. Utilizzare /document/myPages/* competenze a valle, mappatura di campo di output dell'indicizzatore, proiezioni di knowledge store e 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 campione (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 campione (nota la sovrapposizione)
All'interno di ogni array "textItems", il testo successivo del primo elemento viene copiato all'inizio del secondo.
{
"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
Se un linguaggio non è supportato, viene generato un avviso.