文本拆分认知技能
文本拆分技能将文本分解为文本区块。 你可以指定是要将文件分解为句子还是特定长度的页面。 当其他技能下游有最大文本长度要求时,此技能尤其有用。
注意
此技能不会绑定到 Azure AI 服务。 它是免费的,并且没有 Azure AI 服务密钥要求。
@odata.type
Microsoft.Skills.Text.SplitSkill
技能参数
参数区分大小写。
参数名称 | 说明 |
---|---|
textSplitMode |
pages 或 sentences 。 页面的最大长度是可配置的,但技能会尽量避免截断句子,因此实际长度可能会更小。 句子是一个字符串,在句子结束标点处终止,例如句点、问号或感叹号,系统假设语言具有句子结束标点。 |
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)。 注意事项:
|
技能输入
参数名称 | 说明 |
---|---|
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
设置为 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 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..."
]
}
}
]
}
错误案例
如果某语言不受支持,则会生成警告。