命名实体识别

重要

对机器学习工作室(经典)的支持将于 2024 年 8 月 31 日结束。 建议在该日期之前转换到 Azure 机器学习

从 2021 年 12 月 1 日开始,你将无法创建新的机器学习工作室(经典)资源。 在 2024 年 8 月 31 日之前,可继续使用现有的机器学习工作室(经典)资源。

ML 工作室(经典)文档即将停用,将来可能不会更新。

识别文本列中的命名实体

类别:文本分析

注意

适用于:仅限机器学习 Studio (经典)

可在 Azure 机器学习设计器中获取类似的拖放模块。

模块概述

本文介绍如何使用机器学习 Studio (经典) 中的命名实体识别模块来标识某些因素(例如人员、公司或文本列中的位置)的名称。

命名实体识别是机器学习和自然语言处理 (NLP) 的重要研究领域,因为它可以用于解答许多现实问题,例如:

  • 推文是否包含某个人名? 推文是否还提供该人员的当前位置?

  • 新闻稿中提到了哪些公司?

  • 是否指定了投诉或评论中提到的产品?

若要获取命名实体的列表,请提供包含文本列的数据集作为输入。 然后, 命名实体识别 模块将标识三种类型的实体:每个) 的用户 (、位置 (的位置) 和组织 (组织) 。

该模块还会按查找这些字词的位置标记序列,以便您可以在进一步分析中使用这些字词。

例如,下表显示了一个简单的输入句子,以及模块生成的字词和值:

输入文本 模块输出
“Boston is a great place to live.” 0,Boston,0,6,LOC

可按如下所述解释输出:

  • 第一个“0”表示此字符串是模块的第一个文章输入。

    由于单个文章可以包含多个实体,因此在输出中包含文章行号对于将特征映射到文章很重要。

  • Boston 是识别的实体。

  • 0下面 Boston 的表示实体 Boston 从输入字符串的第一个字母开始。 索引从零开始。

  • 6 表示实体 Boston 的长度为6。

  • LOC 表示实体 Boston 是位置或位置。 其他支持的命名实体类型为 person (PER) 和组织 (ORG) 。

如何配置命名实体识别

  1. 命名实体识别 模块添加到 Studio 中的试验 (经典) 。 可以在 "文本分析" 类别中找到该模块。

  2. 在名为 " 情景" 的输入中,连接包含要分析的文本的数据集。

    "情景" 应包含从中提取命名实体的文本。

    用作 情景 的列应该包含多行,其中每行都包含一个字符串。 字符串可以是简短的,如句子或 long,如新闻文章。

    可以连接包含文本列的任何数据集。 但是,如果输入数据集包含多个列,请使用 " 在数据集中选择列 " 来仅选择包含要分析的文本的列

    注意

    此时不支持第二个输入、 自定义资源 (Zip)

    将来,可以在此处添加自定义资源文件,用于标识不同的实体类型。

  3. 运行试验。

结果

该模块将为每个被识别的实体输出一个包含行的数据集以及偏移量。

因为输入文本的每一行可能包含多个命名实体,所以会自动生成一个项目 ID 号并将其包含在输出中,以标识包含该命名实体的输入行。 项目 ID 基于输入数据集中的行的自然顺序。

你可以将此输出数据集转换为 CSV 以便下载,或将其另存为数据集以便重复使用。

在 web 服务中使用命名实体识别

如果从机器学习 Studio 发布 web 服务 (经典) ,并且想要通过使用 c #、Python 或其他语言(如 R)来使用 web 服务,则必须首先实现 web 服务的帮助页上提供的服务代码。

如果你的 Web 服务提供多个行的输出,你将添加到你 C# 中,Python,Web 服务的 URL 或 R 代码应具有后缀 scoremultirow 而不是 score

例如,假设你为 web 服务使用以下 URL: https://ussouthcentral.services.azureml.net/workspaces/<workspace id>/services/<service id>/score

若要启用多行输出,请将 URL 更改为 https://ussouthcentral.services.azureml.net/workspaces/<workspace id>/services/<service id>/scoremultirow

若要发布此 web 服务,应在命名实体识别模块后面添加一个附加的执行 R 脚本模块,以将多行输出转换为以分号分隔的单个分隔 (; ) 。 将输出的多个行合并为单个行的原因是返回每个输入行的多个实体。

例如,我们假设您的输入句子包含两个命名实体。 你可以返回一个包含多个实体的行并用分号分隔,而不是针对每个输入行返回两个行,如下所示:

输入文本 Web 服务的输出
Microsoft has two office locations in Boston. 0,Microsoft,0,9,ORG,;,0,Boston,38,6,LOC,;

下面的代码示例演示了如何执行此操作:

# Map 1-based optional input ports to variables  
d <- maml.mapInputPort(1) # class: data.frame  
y=length(d) ##size of cols  
x=dim(d)[1] ##size of rows  
longd=matrix("NA",nrow=1,ncol=x*(y+1))  
for (i in 1:x)  
  {   
     for (j in 1:y)  
     {  
       longd[1,j+(i-1)*(y+1)]=toString(d[i,j])   
     }  
     longd[1,j+(i-1)*(y+1)+1]=c(";")  
  }   

final_output=as.data.frame(longd)  
# Select data.frame to be sent to the output Dataset port  
maml.mapOutputPort("final_output");  

示例

此博客提供了有关命名实体识别如何工作、其背景以及可能的应用程序的详细说明:

另请参阅 Azure AI 库 中的以下示例试验,以演示如何使用机器学习中常用的文本分类方法:

技术说明

语言支持

目前,“命名实体识别”模块仅支持英文文本。 它可以检测英语句子中的组织名称、个人名称和位置。 如果使用其他语言的模块,则可能会遇到错误,但结果并不像英语文本那样好。

将来,对其他语言可以启用通过集成 Office 自然语言工具包中提供的多语言组件的支持。

预期输入

名称 类型 说明
故事 数据表 包含要分析的文本列的输入数据集 (DataTable)。
CustomResources Zip (可选)包含其他自定义资源的 ZIP 格式文件。

此选项当前不可用,它只是为了向前兼容而提供的。

Outputs

名称 类型 说明
实体 数据表 字符偏移和实体列表

另请参阅

文本分析
特征哈希
对 Vowpal Wabbit 7-4 模型评分
训练 Vowpal Wabbit 7-4 模型