命名实体识别
重要
对机器学习工作室(经典)的支持将于 2024 年 8 月 31 日结束。 建议在该日期之前转换到 Azure 机器学习。
从 2021 年 12 月 1 日开始,你将无法创建新的机器学习工作室(经典)资源。 在 2024 年 8 月 31 日之前,可继续使用现有的机器学习工作室(经典)资源。
ML 工作室(经典)文档即将停用,将来可能不会更新。
识别文本列中的命名实体
类别:文本分析
模块概述
本文介绍如何使用机器学习 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
) 。
如何配置命名实体识别
将 命名实体识别 模块添加到 Studio 中的试验 (经典) 。 可以在 "文本分析" 类别中找到该模块。
在名为 " 情景" 的输入中,连接包含要分析的文本的数据集。
"情景" 应包含从中提取命名实体的文本。
用作 情景 的列应该包含多行,其中每行都包含一个字符串。 字符串可以是简短的,如句子或 long,如新闻文章。
可以连接包含文本列的任何数据集。 但是,如果输入数据集包含多个列,请使用 " 在数据集中选择列 " 来仅选择包含要分析的文本的列
注意
此时不支持第二个输入、 自定义资源 (Zip) 。
将来,可以在此处添加自定义资源文件,用于标识不同的实体类型。
运行试验。
结果
该模块将为每个被识别的实体输出一个包含行的数据集以及偏移量。
因为输入文本的每一行可能包含多个命名实体,所以会自动生成一个项目 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 库 中的以下示例试验,以演示如何使用机器学习中常用的文本分类方法:
新闻分类示例:使用功能哈希将项目分类到预定义的类别列表中。
类似公司示例:使用维基百科文章的文本对公司进行分类。
文本分类步骤1(共5步):数据准备:在这五部分文本分类演练中,Twitter 消息中的文本用于执行情绪分析。 还演示了各种文本预处理技术。
技术说明
语言支持
目前,“命名实体识别”模块仅支持英文文本。 它可以检测英语句子中的组织名称、个人名称和位置。 如果使用其他语言的模块,则可能会遇到错误,但结果并不像英语文本那样好。
将来,对其他语言可以启用通过集成 Office 自然语言工具包中提供的多语言组件的支持。
预期输入
名称 | 类型 | 说明 |
---|---|---|
故事 | 数据表 | 包含要分析的文本列的输入数据集 (DataTable)。 |
CustomResources | Zip | (可选)包含其他自定义资源的 ZIP 格式文件。 此选项当前不可用,它只是为了向前兼容而提供的。 |
Outputs
名称 | 类型 | 说明 |
---|---|---|
实体 | 数据表 | 字符偏移和实体列表 |