gpt4 book ai didi

Azure 认知服务 : Async Text analytics for PII, 将允许的最大字符大小限制为 5120,而本应为 125,000

转载 作者:行者123 更新时间:2023-12-03 06:14:21 28 4
gpt4 key购买 nike

我正在使用 azure-ai-textanalytics(版本 5.2.7)库来检测我拥有的某些文本内容中的 PII。根据 Azure 文档,使用异步处理时允许的最大字符数为 125,000 个字符。 https://learn.microsoft.com/en-us/azure/cognitive-services/language-service/concepts/data-limits enter image description here

使用下面的 azure 库是我构建异步客户端的方式:

 private static TextAnalyticsAsyncClient createTextClient() {
if (textAnalyticsClient == null) {
textAnalyticsClient = new TextAnalyticsClientBuilder()
.credential(new AzureKeyCredential(AzureKeyVaultConnector.readKeyValue("languageResourceKey")))
.endpoint(AzureKeyVaultConnector.readKeyValue("languageResourceEndPoint"))
.buildAsyncClient();
}
return textAnalyticsClient;
}

我使用以下行提交要处理的文档:

 RecognizePiiEntitiesResultCollection piiEntityCollection = createTextClient().recognizePiiEntitiesBatch(documents,"en",requestOptions).block();

当我使用大约 7000 个字符的字符串进行测试时,出现以下错误:

A document within the request was too large to be processed. Limit document size to: 5120 text elements. For additional details on the data limitations see https://aka.ms/text-analytics-data-limits

为什么它仍然试图将我的最大字符大小限制为 5120?因为我使用的是异步客户端,所以不应该是 125,000 吗?如有任何帮助,我们将不胜感激。

我很想使用 azure-ai-textanalytics 库并实现这一点,而不是直接进行 http 调用(不使用 azure 库)。

最佳答案

根据您给出的场景,我使用 this 重现了代码和输出documentation. 中提供了示例异步请求代码

您遇到的问题是因为 125,000 个字符的限制是针对异步请求中所有提交的文档的字符总数,而不是针对单个文档。异步处理中单个文档允许的最大字符数仍然是5,120 个字符

对于 PII 检测,您可以请求的限制为 5 个文档,如 documentation由您分享。因此,对于 PII 检测,每个请求的字符总数限制为:25600

例如,如果您的请求包含 2 个文档(5120 个字符)和 3 个文档 ()输出将产生 2 个文档的结果(长度低于限制)。

输出:https://i.imgur.com/OUmrwvk.png

所有 5 个文档必须低于 5120 个字符限制才能获得完整结果。

要处理较大的文档(大于 5120 个字符),您可以将其分解为较小的文本 block ,然后再将其发送到 API。下面是一个示例代码片段,用于创建具有单个较大文档/文本的文档列表:

在 Python 中,


def split_string(string):
#Splits a string into multiple strings, each of which is no more than 5120 characters long.
strings = []
for i in range(0, len(string), 5120):
strings.append(string[i:min(len(string), i + 5120)])
return strings

在 Java 中,

// Split the string into multiple strings, each of which is no more than 5120 characters long. 
List<String> strings = new List<String>();
for (int i = 0; i < originalString.length(); i += 5120) {
strings.add(originalString.substring(i, Math.min(originalString.length(), i + 5120))); }

关于Azure 认知服务 : Async Text analytics for PII, 将允许的最大字符大小限制为 5120,而本应为 125,000,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/76424525/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com