Freigeben über


Der Skill „Text teilen“

Wichtig

Einige Parameter befinden sich in der öffentlichen Vorschau unter ergänzenden Nutzungsbedingungen. Die Vorschau-REST-API unterstützt diese Parameter.

Der Skill Text teilen unterteilt den Text in Blöcke. Sie können festlegen, ob Sie den Text in Sätze oder in Seiten einer bestimmten Länge aufteilen möchten. Diese Fähigkeit ist nützlich, wenn in anderen Fähigkeiten nachgelagerte Textlängenanforderungen bestehen, z. B. Einbettungsfertigkeiten, die Datenblöcke an das Einbetten von Modellen in Azure OpenAI und andere Modellanbieter übergeben. Weitere Informationen zu diesem Szenario finden Sie unter "Blockdokumente für die Vektorsuche".

Mehrere Parameter sind versionsspezifisch. In der Tabelle mit den Fähigkeitenparametern wird die API-Version aufgeführt, in der ein Parameter eingeführt wurde, damit Sie wissen, ob ein Versionsupgrade erforderlich ist. Um versionsspezifische Features wie Tokenabschnitte in 2024-09-01-preview zu verwenden, können Sie die Azure-Portal oder eine REST-API-Version verwenden oder ein Azure SDK-Änderungsprotokoll überprüfen, um festzustellen, ob es das Feature unterstützt.

Die Azure-Portal unterstützt die meisten Vorschaufeatures und kann zum Erstellen oder Aktualisieren eines Skillsets verwendet werden. Bearbeiten Sie die JSON-Definition des Skillset für die Textteilung, um neue Vorschauparameter hinzuzufügen.

Hinweis

Diese Fähigkeit ist nicht an Azure AI Services gebunden. Sie ist nicht abrechenbar und erfordert keinen Azure AI Services-Schlüssel.

@odata.type

Microsoft.Skills.Text.SplitSkill

Skillparameter

Bei den Parametern wird zwischen Groß- und Kleinschreibung unterschieden.

Parametername Version Beschreibung
textSplitMode Alle Versionen Entweder pages oder sentences. Seiten haben eine konfigurierbare maximale Länge, aber der Skill versucht, das Abschneiden eines Satzes zu vermeiden, so dass die tatsächliche Länge kleiner sein kann. Sätze sind eine Zeichenkette, die an einem Satzendezeichen endet, z. B. einem Punkt, einem Fragezeichen oder einem Ausrufezeichen, vorausgesetzt, die Sprache hat ein Satzendezeichen.
maximumPageLength Alle Versionen Gilt nur, wenn textSplitMode auf pages festgelegt ist. Für unit diesen charactersParameter bezieht sich dieser Parameter auf die maximale Seitenlänge in Zeichen, wie gemessen von String.Length. Der Mindestwert ist 300, der Höchstwert ist 50000 und der Standardwert ist 5000. Der Algorithmus tut sein Bestes, um den Text an den Satzgrenzen zu unterbrechen, so dass die Größe der einzelnen Teile etwas weniger als maximumPageLength betragen kann.

Bei unit Festlegung auf azureOpenAITokens" ist die maximale Seitenlänge das Tokenlängenlimit des Modells. Bei Texteinbettungsmodellen ist eine allgemeine Empfehlung für die Seitenlänge 512 Token.
defaultLanguageCode Alle Versionen (Optional) Einer der folgenden Sprachcodes: 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. Die Standardsprache ist Englisch (en). Folgende Aspekte müssen beachtet werden:
  • Die Angabe eines Sprachcodes ist nützlich, um zu vermeiden, dass ein Wort bei Sprachen ohne Leerzeichen wie Chinesisch, Japanisch und Koreanisch halbiert wird.
  • Wenn Sie die Sprache nicht im Voraus kennen (z. B. wenn Sie den LanguageDetectionSkill zur Erkennung der Sprache verwenden), empfehlen wir die Voreinstellung en.
pageOverlapLength 2024-07-01 Gilt nur, wenn textSplitMode auf pages festgelegt ist. Jede Seite beginnt mit dieser Anzahl von Zeichen oder Token am Ende der vorherigen Seite. Wenn dieser Parameter auf 0 gesetzt ist, gibt es keinen überlappenden Text auf aufeinanderfolgenden Seiten. Dieses Beispiel enthält den Parameter.
maximumPagesToTake 2024-07-01 Gilt nur, wenn textSplitMode auf pages festgelegt ist. Anzahl der zurückzuschickenden Seiten. Der Standardwert ist 0, was bedeutet, dass alle Seiten zurückgegeben werden. Sie sollten diesen Wert festlegen, wenn nur eine Teilmenge von Seiten benötigt wird. Dieses Beispiel enthält den Parameter.
unit 2024-09-01-Vorschau New. Gilt nur, wenn textSplitMode auf pages festgelegt ist. Gibt an, ob Blöcke nach characters (Standard) oder azureOpenAITokens. Das Festlegen der Einheit wirkt sich auf maximumPageLength und pageOverlapLength.
azureOpenAITokenizerParameters 2024-09-01-Vorschau New. Ein Objekt, das zusätzliche Parameter für die azureOpenAITokens Einheit bereitstellt.

encoderModelName ist ein festgelegter Tokenizer, der zum Konvertieren von Text in Token verwendet wird, die für NLP-Aufgaben (Natural Language Processing) unerlässlich sind. Verschiedene Modelle verwenden unterschiedliche Tokenizer. Gültige Werte sind cl100k_base (Standard), die von GPT-35-Turbo und GPT-4 verwendet werden. Andere gültige Werte sind r50k_base, p50k_base und p50k_edit. Die Fähigkeit implementiert die Tiktoken-Bibliothek über SharpToken und Microsoft.ML.Tokenizers unterstützt jedoch nicht jeden Encoder. Beispielsweise gibt es derzeit keine Unterstützung für o200k_base Codierung, die von GPT-4o verwendet wird.

allowedSpecialTokens definiert eine Sammlung spezieller Token, die innerhalb des Tokenisierungsprozesses zulässig sind. Spezielle Token sind Zeichenfolgen, die Sie eindeutig behandeln möchten, um sicherzustellen, dass sie während der Tokenisierung nicht geteilt werden. Beispiel: ["[START"], "[END]"].

Skilleingaben

Parametername Beschreibung
text Der Text, der in Teilzeichenfolgen aufgeteilt werden soll.
languageCode (Optional) Der Sprachcode für das Dokument. Wenn Sie die Sprache der Texteingaben nicht kennen (z. B. wenn Sie LanguageDetectionSkill zur Erkennung der Sprache verwenden), können Sie diesen Parameter weglassen. Wenn Sie languageCode auf eine Sprache setzen, die nicht in der Liste der unterstützten Sprachen für defaultLanguageCode steht, wird eine Warnung ausgegeben und der Text wird nicht geteilt.

Skillausgaben

Parametername Beschreibung
textItems Die Ausgabe ist ein Array von Teilzeichenfolgen, die extrahiert wurden. textItems ist der Standardname der Ausgabe.

targetName ist optional, aber wenn Sie über mehrere Textteilungskenntnisse verfügen, stellen Sie sicher targetName , dass Sie die Daten nicht aus der ersten Fähigkeit mit dem zweiten überschreiben. Wenn targetName festgelegt, verwenden Sie sie in Ausgabefeldzuordnungen oder nachgelagerten Fähigkeiten, die die Qualifikationsausgabe nutzen, z. B. eine Einbettungskompetenz.

Beispieldefinition

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

Beispieleingabe

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

Beispielausgabe

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

Beispiel für Chunking und Vektorisierung

Dieses Beispiel dient der integrierten Vektorisierung.

  • pageOverlapLength: Überlappender Text ist in Daten-Chunking-Szenarien nützlich, da er die Kontinuität zwischen den aus demselben Dokument generierten Chunks bewahrt.

  • maximumPagesToTake: Begrenzungen der Seitenaufnahme sind in Vektorisierungsszenarien nützlich, da sie Ihnen helfen, unter den maximalen Eingabegrenzen der Einbettungsmodelle zu bleiben, die die Vektorisierung liefern.

Beispieldefinition

Diese Definition fügt pageOverlapLength von 100 Zeichen und maximumPagesToTake von einem hinzu.

Wenn es maximumPageLength sich um 5.000 Zeichen (Standardeinstellung) handelt, werden dann "maximumPagesToTake": 1 die ersten 5.000 Zeichen jedes Quelldokuments verarbeitet.

In diesem Beispiel wird auf "myPagesThroughtargetName" festgelegttextItems. Da targetName festgelegt ist, ist der Wert, myPages den Sie zum Auswählen der Ausgabe aus der Textteilungsfertigkeit verwenden sollten. Verwendung /document/mypages/* in nachgelagerten Fähigkeiten, Indexerausgabefeldzuordnungen, Wissensspeicherprojektionen und Indexprojektionen.

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

Beispieleingabe (wie im vorherigen Beispiel)

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

Beispielhafte Ausgabe (beachten Sie die Überlappung)

Innerhalb jedes „textItems“-Arrays wird der Text am Ende des ersten Eintrags an den Anfang des zweiten Eintrags kopiert.

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

Auftretende Fehler

Wenn eine Sprache nicht unterstützt wird, wird eine Warnung ausgegeben.

Siehe auch