Udostępnij za pośrednictwem


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 characterswartość ten parametr odnosi się do maksymalnej długości strony w znakach mierzonych przez String.Lengthwartość . 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 azureOpenAITokensmaksymalna 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ę:
  • Zapewnienie kodu językowego jest przydatne, aby uniknąć wycinania wyrazu na pół w przypadku języków innych niżwhitespace, takich jak chiński, japoński i koreański.
  • Jeśli nie znasz wcześniej języka (na przykład jeśli używasz języka LanguageDetectionSkill do wykrywania języka), zalecamy en ustawienie domyślne.
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]"].

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 defaultLanguageCodeelementu , 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.

Zobacz też