实体识别认知技能 (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 复杂类型的数组,包含以下字段:
  • category
  • 子类别
  • 置信度(值越高意味着它越有可能是一个真实的实体)
  • 长度(此实体的长度(字符数))
  • 偏移(在文本中找到它的位置)
  • 文本(文本中显示的实际实体名称)

示例定义

  {
    "@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 类来提取正确的内容。 有关详细信息,请参阅语言服务功能中的多语言和表情符号支持

警告情况

如果文档的语言代码不受支持,则会返回警告,并且不提取任何实体。

另请参阅