实体识别技能 (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 类来提取正确的内容。 有关详细信息,请参阅语言服务功能中的多语言和表情符号支持。
警告情况
如果文档的语言代码不受支持,则会返回警告,并且不提取任何实体。