我正在使用azure-ai-textanalytics(版本5.2.7)库来检测我拥有的一些文本内容中的PII。根据Azure文档,使用异步处理时允许的最大字符数是125,000个字符。https://learn.microsoft.com/en-us/azure/cognitive-services/language-service/concepts/data-limits
使用下面的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库)。
1条答案
按热度按时间kxkpmulp1#
基于您给出的场景,我使用文档中提供的this示例异步请求代码复制了代码和输出。
您遇到的问题是因为125,000个字符的限制是针对异步请求中所有提交文档的字符总数,而不是针对单个文档。异步处理时,单个文档的最大字符数仍为5,120个字符。
对于PII检测,您可以请求的上限为5个文档,以您共享的documentation为单位。因此,对于PII检测,每个请求的字符限制总数为:二万五千六百
例如,如果您的请求包含2个文档(5120个字符)和3个文档(),则输出将生成2个文档的结果(长度低于限制)。
输出:https://i.imgur.com/OUmrwvk.png
所有5个文件必须小于5120个字符限制,以获得完整的结果。
**若要处理较大的文档(大于5120个字符),您可以在将其发送到API之前将其分解为较小的文本块。**以下是一个示例代码片段,用于创建具有单个较大文档/文本的文档列表:
在Python中
在Java中