Бөлісу құралы:


Когнитивный навык разделения текста

Внимание

Некоторые параметры доступны в общедоступной предварительной версии в разделе "Дополнительные условия использования". REST API предварительной версии поддерживает эти параметры.

Навык Разделение текста разделяет текст на блоки текста. Можете указать, хотите ли вы разбить текст на предложения или на страницы определенной длины. Этот навык полезен, если существуют требования к максимальной длине текста в других навыков нижестоящего уровня, например внедрение навыков, которые передают блоки данных для внедрения моделей в Azure OpenAI и других поставщиков моделей. Дополнительные сведения об этом сценарии см. в документах Chunk для поиска векторов.

Несколько параметров зависят от версии. Таблица параметров навыков отмечает версию API, в которой был введен параметр, чтобы узнать, требуется ли обновление версии. Чтобы использовать определенные версии функции, такие как фрагментирование маркеров в версии 2024-09-01-preview, можно использовать портал Azure или использовать версию REST API или проверить журнал изменений пакета SDK Azure, чтобы узнать, поддерживает ли она эту функцию.

Портал Azure поддерживает большинство функций предварительной версии и может использоваться для создания или обновления набора навыков. Чтобы обновить навык разделения текста, измените определение набора навыков JSON, чтобы добавить новые параметры предварительной версии.

Примечание.

Этот навык не привязан к службам ИИ Azure. Она не взимается и не имеет ключевого требования к службам искусственного интеллекта Azure.

@odata.type

Microsoft.Skills.Text.SplitSkill

Параметры навыков

Параметры зависят от регистра.

Наименование параметра Версия Description
textSplitMode Все версии pages или sentences. Страницы имеют настраиваемую максимальную длину, но навык пытается избежать усечения предложения, поэтому фактическая длина может быть меньше. Предложения — это строка, завершающаяся при препинаниях, таких как период, вопросительный знак или восклицательный знак, если язык имеет знак препинания.
maximumPageLength Все версии Применяется, только если для параметра textSplitMode задано значение pages. Для unit параметра задано charactersзначение , этот параметр ссылается на максимальную длину страницы в символах, измеряемых по String.Length. Минимальное значение равно 300, максимальное — 50000, а значение по умолчанию — 5000. Алгоритм делает все возможное, чтобы разорвать текст по границам предложения, поэтому размер каждого блока может быть немного меньше maximumPageLength.

Для unit заданного значения azureOpenAITokensмаксимальная длина страницы — это ограничение длины маркера модели. Для моделей внедрения текста общая рекомендация для длины страницы составляет 512 токенов.
defaultLanguageCode Все версии (Дополнительно.) Один из следующих кодов языка: 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. По умолчанию — английский (en). Несколько вещей, которые следует рассмотреть:
  • Предоставление языкового кода полезно, чтобы избежать сокращения слова наполовину для языков, нехитовых пространств, таких как китайский, японский и корейский.
  • Если вы заранее не знаете язык (например, если вы используете LanguageDetectionSkill для обнаружения языка), рекомендуется en использовать значение по умолчанию.
pageOverlapLength 2024-07-01 Применяется, только если для параметра textSplitMode задано значение pages. Каждая страница начинается с этого числа символов или маркеров с конца предыдущей страницы. Если для этого параметра задано значение 0, на последующих страницах нет перекрывающегося текста. Этот пример включает параметр.
maximumPagesToTake 2024-07-01 Применяется, только если для параметра textSplitMode задано значение pages. Количество возвращаемых страниц. Значение по умолчанию — 0, то есть возвращает все страницы. Это значение следует задать, если требуется только подмножество страниц. Этот пример включает параметр.
unit 2024-09-01-preview New (Создать). Применяется, только если для параметра textSplitMode задано значение pages. Указывает, следует ли фрагментировать по characters умолчанию или azureOpenAITokens. Настройка единицы влияет и maximumPageLength pageOverlapLength.
azureOpenAITokenizerParameters 2024-09-01-preview New (Создать). Объект, предоставляющий дополнительные параметры для azureOpenAITokens единицы.

encoderModelName — это назначенный токенизатор, используемый для преобразования текста в маркеры, необходимый для задач обработки естественного языка (NLP). Разные модели используют разные токенизаторы. Допустимые значения включают cl100k_base (по умолчанию), используемые GPT-35-Turbo и GPT-4. Другие допустимые значения: r50k_base, p50k_base и p50k_edit. Навык реализует библиотеку tiktoken с помощью SharpToken и Microsoft.ML.Tokenizers не поддерживает каждый кодировщик. Например, в настоящее время нет поддержки кодировки o200k_base, используемой GPT-4o.

allowedSpecialTokens определяет коллекцию специальных маркеров, разрешенных в процессе токенизации. Специальные маркеры — это строка, которая требуется обработать уникально, гарантируя, что они не разделяются во время токенизации. Например, ["[START"], "[END]".

Входные данные навыков

Наименование параметра Description
text Текст, который будет разбит на подстроки.
languageCode (Необязательно.) Код языка документа. Если вы не знаете язык текстовых входных данных (например, если вы используете LanguageDetectionSkill для обнаружения языка), этот параметр можно опустить. languageCode Если для языка нет в поддерживаемом спискеdefaultLanguageCode, создается предупреждение, и текст не разбивается.

Выходные данные навыка

Наименование параметра Description
textItems Выходные данные — это массив подстроок, извлеченных. textItems — это имя выходных данных по умолчанию.

targetName является необязательным, но если у вас несколько навыков разделения текста, убедитесь targetName , что вы не перезаписываете данные из первого навыка вторым. Если targetName задано, используйте его в сопоставлениях полей вывода или в подчиненных навыках, которые используют выходные данные навыка, например навык внедрения.

Пример определения

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

Пример ввода

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

Пример полученных результатов

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

Пример для фрагментирования и векторизации

Этот пример предназначен для интегрированной векторизации.

  • pageOverlapLength: перекрывающийся текст полезен в сценариях блокирования данных, так как он сохраняет непрерывность между блоками, созданными из одного документа.

  • maximumPagesToTake: ограничения на потребление страниц полезны в сценариях векторизации , так как это помогает оставаться под максимальными ограничениями входных данных моделей внедрения, которые обеспечивают векторизацию.

Пример определения

Это определение добавляет pageOverlapLength 100 символов и maximumPagesToTake одного.

Предположим, maximumPageLength что значение равно 5000 символов (по умолчанию), а затем "maximumPagesToTake": 1 обрабатывает первые 5000 символов каждого исходного документа.

В этом примере задано textItems значение .myPages targetName>. Так как targetName задано, это значение, myPages которое следует использовать для выбора выходных данных из навыка разделения текста. Используйте /document/mypages/* подчиненные навыки, сопоставления полей выходных данных индексатора, проекции хранилища знаний и проекции индексов.

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

Пример входных данных (аналогичный предыдущему примеру)

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

Пример выходных данных (обратите внимание на перекрытие)

В каждом массиве textItems текст из первого элемента копируется в начало второго элемента.

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

Варианты ошибок

Если язык не поддерживается, создается предупреждение.

См. также