文本拆分认知技能

文本拆分技能将文本分解为文本区块。 你可以指定是要将文件分解为句子还是特定长度的页面。 当其他技能下游有最大文本长度要求时,此技能尤其有用。

注意

此技能不会绑定到 Azure AI 服务。 它是免费的,并且没有 Azure AI 服务密钥要求。

@odata.type

Microsoft.Skills.Text.SplitSkill

技能参数

参数区分大小写。

参数名称 说明
textSplitMode pagessentences。 页面的最大长度是可配置的,但技能会尽量避免截断句子,因此实际长度可能会更小。 句子是一个字符串,在句子结束标点处终止,例如句点、问号或感叹号,系统假设语言具有句子结束标点。
maximumPageLength 仅当将 textSplitMode 设置为 pages 时才适用。 此参数指 String.Length 测量的最大页面长度(以字符为单位)。 最小值为 300,最大值为 50000,默认值为 5000。 此算法会尽可能在句子边界断开文本,所以每个区块大小可能略小于 maximumPageLength
pageOverlapLength 仅当将 textSplitMode 设置为 pages 时才适用。 每一页都以此数量的字符开始(从上页结尾倒数算起)。 如果此参数设置为 0,则连续页面上没有重叠文本。 2024-07-01 和更高预览版的 REST API 以及已更新为支持集成矢量化的 Azure SDK 包均支持此参数。 此示例中包括了此参数。
maximumPagesToTake 仅当将 textSplitMode 设置为 pages 时才适用。 要返回的页数。 默认值为 0,这意味着将返回所有页面。 如果只需要页的某个子集,则应设置此值。 2024-07-01 和更高预览版的 REST API 以及已更新为支持集成矢量化的 Azure SDK 包均支持此参数。 此示例中包括了此参数。
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

技能输入

参数名称 说明
text 要拆分为子字符串的文本。
languageCode (可选)文档的语言代码。 如果不知道文本输入的语言(例如,如果使用 LanguageDetectionSkill 来检测语言),则可以省略此参数。 如果将 languageCode 设置为的语言不在 defaultLanguageCode 的支持列表中,则系统会发出警告,并且不会拆分文本。

技能输出

参数名称 说明
textItems 输出是提取的子字符串数组。 textItems 是输出的默认名称。 targetName 为可选项,但是如果你有多个文本拆分技能,请确保设置 targetName,这样就不会用第二个技能覆盖第一个技能中的数据。 如果已设置 targetName,则其用于输出字段映射或使用技能输出的下游技能。

示例定义

{
    "@odata.type": "#Microsoft.Skills.Text.SplitSkill",
    "textSplitMode" : "pages", 
    "maximumPageLength": 1000,
    "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 Azure 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 加 1。

假设 maximumPageLength 为 5,000 个字符(默认值),则 "maximumPagesToTake": 1 会处理每个源文档的前 5,000 个字符。

此示例将 textItems 设置为 myPagestargetName。 由于已设置 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 Azure 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..."
                ]
            }
        }
    ]
}

错误案例

如果某语言不受支持,则会生成警告。

另请参阅