实体识别认知技能 (v3)
实体识别技能 (v3) 从文本中提取各种类型的实体。 这些实体分为 14 个不同类别,范围从人员和组织到 URL 和电话号码。 此技能使用 Azure AI 语言提供的命名实体识别机器学习模型。
注意
此技能绑定到 Azure AI 服务,并且对于每天每个索引器超过 20 个文档的事务,需要使用可计费资源。 执行内置技能将按现有的 Azure AI 服务标准预付费套餐价格收费。
@odata.type
Microsoft.Skills.Text.V3.EntityRecognitionSkill
数据限制
记录的最大大小应为 50,000 个字符,通过 String.Length
进行测量。 如果在将数据发送到 EntityRecognition 技能之前需要进行分解,请考虑使用文本拆分技能。 使用拆分技能时,请将页面长度设置为 5000 以获得最佳性能。
技能参数
参数区分大小写并且都是可选的。
参数名称 | 说明 |
---|---|
categories |
应提取的类别的数组。 可能的类别类型:"Person" 、"Location" 、"Organization" 、"Quantity" 、"DateTime" 、"URL" 、"Email" 、"personType" 、"Event" 、"Product" 、"Skill" 、"Address" 、"phoneNumber" 、"ipAddress" 。 如果不提供类别,则返回所有类型。 |
defaultLanguageCode |
输入文本的语言代码。 如果未指定默认语言代码,会将英语 (en) 用作默认语言代码。 请参阅支持的语言的完整列表。 并非所有实体类别都支持所有语言;请参阅下文中的说明。 |
minimumPrecision |
一个介于 0 和 1 之间的值。 如果置信度分数(在 namedEntities 输出中)低于此值,则不会返回该实体。 默认值为 0。 |
modelVersion |
(可选)指定在调用实体识别 API 时要使用的模型版本。 如果未指定,将默认为最新可用版本。 建议不要指定此值,除非必要。 |
技能输入
输入名称 | 说明 |
---|---|
languageCode |
表示记录的语言的字符串。 如果未指定此参数,将使用默认语言代码分析记录。 请参阅支持的语言的完整列表。 |
text |
要分析的文本。 |
技能输出
注意
并非所有实体类别都支持所有语言。 请参阅支持的命名实体识别 (NER) 实体类别,了解将要使用的语言支持哪些实体类别。
输出名称 | 说明 |
---|---|
persons |
一个字符串数组,其中,一个字符串表示一个人员名称。 |
locations |
一个字符串数组,其中,一个字符串表示一个位置。 |
organizations |
一个字符串数组,其中,一个字符串表示一个组织。 |
quantities |
一个字符串数组,其中,每个字符串都表示一个数量。 |
dateTimes |
一个字符串数组,其中,每个字符串都表示一个日期时间(因为它以文本形式显示)值。 |
urls |
一个字符串数组,其中,每个字符串都表示一个 URL |
emails |
一个字符串数组,其中,每个字符串都表示一个电子邮件地址 |
personTypes |
一个字符串数组,其中,每个字符串都表示一个人员类型 |
events |
一个字符串数组,其中,每个字符串都表示一个事件 |
products |
一个字符串数组,其中,每个字符串都表示一个产品 |
skills |
一个字符串数组,其中,每个字符串都表示一个技能 |
addresses |
一个字符串数组,其中,每个字符串都表示一个地址 |
phoneNumbers |
一个字符串数组,其中,每个字符串都表示一个电话号码 |
ipAddresses |
一个字符串数组,其中,每个字符串都表示一个 IP 地址 |
namedEntities |
复杂类型的数组,包含以下字段:
|
示例定义
{
"@odata.type": "#Microsoft.Skills.Text.V3.EntityRecognitionSkill",
"context": "/document",
"categories": [ "Person", "Email"],
"defaultLanguageCode": "en",
"minimumPrecision": 0.5,
"inputs": [
{
"name": "text",
"source": "/document/content"
},
{
"name": "languageCode",
"source": "/document/language"
}
],
"outputs": [
{
"name": "persons",
"targetName": "people"
},
{
"name": "emails",
"targetName": "emails"
},
{
"name": "namedEntities",
"targetName": "namedEntities"
}
]
}
示例输入
{
"values": [
{
"recordId": "1",
"data":
{
"text": "Contoso Corporation was founded by Jean Martin. They can be reached at contact@contoso.com",
"languageCode": "en"
}
}
]
}
示例输出
{
"values": [
{
"recordId": "1",
"data" :
{
"people": [ "Jean Martin"],
"emails":["contact@contoso.com"],
"namedEntities":
[
{
"category": "Person",
"subcategory": null,
"length": 11,
"offset": 35,
"confidenceScore": 0.98,
"text": "Jean Martin"
},
{
"category": "Email",
"subcategory": null,
"length": 19,
"offset": 71,
"confidenceScore": 0.8,
"text": "contact@contoso.com"
}
],
}
}
]
}
在此技能的输出中,针对实体返回的偏移量是直接从语言服务 API 返回的,这意味着,如果使用这些偏移量为原始字符串编制索引,则应使用 .NET 中的 StringInfo 类来提取正确的内容。 有关详细信息,请参阅语言服务功能中的多语言和表情符号支持。
警告情况
如果文档的语言代码不受支持,则会返回警告,并且不提取任何实体。