Umiejętność poznawcza podziału tekstu
Ważne
Niektóre parametry są dostępne w publicznej wersji zapoznawczej w obszarze Dodatkowe warunki użytkowania. Interfejs API REST w wersji zapoznawczej obsługuje te parametry.
Umiejętność Dzielenie tekstu dzieli tekst na fragmenty tekstu. Możesz określić, czy chcesz podzielić tekst na zdania, czy na strony o określonej długości. Ta umiejętność jest przydatna, jeśli istnieją maksymalne wymagania dotyczące długości tekstu w innych umiejętnościach podrzędnych, takich jak osadzanie umiejętności, które przekazują fragmenty danych do osadzania modeli w usłudze Azure OpenAI i innych dostawców modeli. Aby uzyskać więcej informacji na temat tego scenariusza, zobacz Dokumenty fragmentów dotyczące wyszukiwania wektorów.
Kilka parametrów jest specyficznych dla wersji. Tabela parametrów umiejętności zawiera informacje o wersji interfejsu API, w której wprowadzono parametr, aby wiedzieć, czy wymagane jest uaktualnienie wersji. Aby użyć funkcji specyficznych dla wersji, takich jak fragmentowanie tokenów w wersji 2024-09-01-preview, możesz użyć witryny Azure Portal lub użyć wersji interfejsu API REST lub sprawdzić dziennik zmian zestawu Azure SDK, aby sprawdzić, czy obsługuje tę funkcję.
Witryna Azure Portal obsługuje większość funkcji w wersji zapoznawczej i może służyć do tworzenia lub aktualizowania zestawu umiejętności. Aby uzyskać aktualizacje umiejętności dzielenia tekstu, edytuj definicję zestawu umiejętności JSON, aby dodać nowe parametry wersji zapoznawczej.
Uwaga
Ta umiejętność nie jest powiązana z usługami azure AI. Nie jest rozliczana i nie ma kluczowego wymagania dotyczącego usług azure AI.
@odata.type
Microsoft.Skills.Text.SplitSkill
Parametry umiejętności
W parametrach jest rozróżniana wielkość liter.
Nazwa parametru | Wersja | opis |
---|---|---|
textSplitMode |
Wszystkie wersje | pages lub sentences . Strony mają konfigurowalną maksymalną długość, ale umiejętności próbują uniknąć obcinania zdania, dzięki czemu rzeczywista długość może być mniejsza. Zdania to ciąg, który kończy się znakiem interpunkcyjnym kończącym zdanie, takim jak kropka, znak zapytania lub wykrzyknik, przy założeniu, że język ma znak interpunkcyjny kończący zdanie. |
maximumPageLength |
Wszystkie wersje | Ma zastosowanie tylko wtedy, gdy textSplitMode ustawiono wartość pages . W przypadku unit ustawienia na characters wartość ten parametr odnosi się do maksymalnej długości strony w znakach mierzonych przez String.Length wartość . Wartość minimalna to 300, wartość maksymalna to 50000, a wartość domyślna to 5000. Algorytm robi wszystko, co w jego mocy, aby przerwać tekst w granicach zdań, więc rozmiar każdego fragmentu może być nieco mniejszy niż maximumPageLength . Dla unit ustawienia parametru azureOpenAITokens maksymalna długość strony to limit długości tokenu modelu. W przypadku modeli osadzania tekstu ogólne zalecenie dotyczące długości strony to 512 tokenów. |
defaultLanguageCode |
Wszystkie wersje | (opcjonalnie) Jeden z następujących kodów języków: 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 . Wartość domyślna to angielski (en). Kilka kwestii, które należy wziąć pod uwagę:
|
pageOverlapLength |
2024-07-01 | Ma zastosowanie tylko wtedy, gdy textSplitMode ustawiono wartość pages . Każda strona rozpoczyna się od tej liczby znaków lub tokenów od końca poprzedniej strony. Jeśli ten parametr ma wartość 0, nie ma nakładających się tekstu na kolejnych stronach. Ten przykład zawiera parametr . |
maximumPagesToTake |
2024-07-01 | Ma zastosowanie tylko wtedy, gdy textSplitMode ustawiono wartość pages . Liczba stron do zwrócenia. Wartość domyślna to 0, co oznacza zwrócenie wszystkich stron. Tę wartość należy ustawić, jeśli potrzebny jest tylko podzbiór stron. Ten przykład zawiera parametr . |
unit |
2024-09-01-preview | Nowy. Ma zastosowanie tylko wtedy, gdy textSplitMode ustawiono wartość pages . Określa, czy domyślnie mają być fragmentowane characters , czy azureOpenAITokens . Ustawienie jednostki ma wpływ na maximumPageLength element i pageOverlapLength . |
azureOpenAITokenizerParameters |
2024-09-01-preview | Nowy. Obiekt dostarczający dodatkowe parametry dla azureOpenAITokens jednostki. encoderModelName jest wyznaczonym tokenizatorem używanym do konwertowania tekstu na tokeny, niezbędne dla zadań przetwarzania języka naturalnego (NLP). Różne modele używają różnych tokenizatorów. Prawidłowe wartości obejmują cl100k_base (domyślnie) używane przez GPT-35-Turbo i GPT-4. Inne prawidłowe wartości to r50k_base, p50k_base i p50k_edit. Umiejętność implementuje bibliotekę tiktoken za pomocą narzędzia SharpToken i Microsoft.ML.Tokenizers nie obsługuje każdego kodera. Na przykład obecnie nie ma obsługi kodowania o200k_base używanego przez GPT-4o. allowedSpecialTokens definiuje kolekcję specjalnych tokenów, które są dozwolone w procesie tokenizacji. Tokeny specjalne to ciągi, które chcesz traktować unikatowo, co gwarantuje, że nie są one dzielone podczas tokenizacji. Na przykład ["[START"], "[END]"]. W przypadku języków, w których biblioteka tiktoken nie wykonuje tokenizacji zgodnie z oczekiwaniami, zaleca się użycie dzielenia tekstu. |
Dane wejściowe umiejętności
Nazwa parametru | opis |
---|---|
text |
Tekst, który ma być podzielony na podciąg. |
languageCode |
(Opcjonalnie) Kod języka dokumentu. Jeśli nie znasz języka wprowadzania tekstu (na przykład jeśli używasz języka LanguageDetectionSkill do wykrywania języka), możesz pominąć ten parametr. Jeśli ustawiono languageCode język nie znajduje się na liście obsługiwanych dla defaultLanguageCode elementu , zostanie wyemitowane ostrzeżenie i tekst nie zostanie podzielony. |
Dane wyjściowe umiejętności
Nazwa parametru | opis |
---|---|
textItems |
Dane wyjściowe to tablica wyodrębnionych podciągów. textItems to domyślna nazwa danych wyjściowych. targetName Jest opcjonalne, ale jeśli masz wiele umiejętności dzielenia tekstu, upewnij się, że nie targetName zastąpisz danych z pierwszej umiejętności z drugiej. Jeśli targetName jest ustawiona, użyj jej w mapowaniach pól wyjściowych lub w umiejętności podrzędnych, które używają danych wyjściowych umiejętności, takich jak umiejętność osadzania. |
Przykładowa definicja
{
"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"
}
]
}
Przykładowe dane wejściowe
{
"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"
}
}
]
}
Przykładowe dane wyjściowe
{
"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..."
]
}
}
]
}
Przykład fragmentowania i wektoryzacji
Ten przykład dotyczy wektoryzacji zintegrowanej.
pageOverlapLength
: Nakładający się tekst jest przydatny w scenariuszach fragmentowania danych, ponieważ zachowuje ciągłość między fragmentami wygenerowanymi z tego samego dokumentu.maximumPagesToTake
: Limity wprowadzania stron są przydatne w scenariuszach wektoryzacji , ponieważ pomaga utrzymać się poniżej maksymalnych limitów wejściowych modeli osadzania zapewniających wektoryzację.
Przykładowa definicja
Ta definicja dodaje pageOverlapLength
100 znaków i maximumPagesToTake
jeden.
Zakładając, że wartość to maximumPageLength
5000 znaków (wartość domyślna), a następnie "maximumPagesToTake": 1
przetwarza pierwsze 5000 znaków każdego dokumentu źródłowego.
W tym przykładzie parametr jest ustawiany textItems
na myPages
wartość za pośrednictwem targetName
. Ponieważ targetName
jest ustawiona, jest wartością, myPages
której należy użyć do wybrania danych wyjściowych z umiejętności Dzielenie tekstu. Korzystaj z /document/mypages/*
umiejętności podrzędnych, mapowań pól wyjściowych indeksatora, projekcji magazynu wiedzy i projekcji indeksów.
{
"@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"
}
]
}
Przykładowe dane wejściowe (takie same jak w poprzednim przykładzie)
{
"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"
}
}
]
}
Przykładowe dane wyjściowe (zwróć uwagę na nakładanie się)
W każdej tablicy "textItems" tekst końcowy z pierwszego elementu jest kopiowany na początek drugiego elementu.
{
"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..."
]
}
}
]
}
Przypadki błędów
Jeśli język nie jest obsługiwany, zostanie wygenerowane ostrzeżenie.