命名实体识别#

到目前为止,我们主要集中在一个自然语言处理(NLP)任务——分类。然而,神经网络还可以完成其他的NLP任务,其中之一就是**命名实体识别**(NER),它处理的是识别文本中的特定实体,例如地点、人物姓名、日期时间区间、化学式等等。

课前测验#

使用NER的示例#

假设你想开发一个类似于亚马逊Alexa或谷歌助手的自然语言聊天机器人。智能聊天机器人的工作方式是通过对输入句子进行文本分类来“理解”用户的需求。分类的结果是所谓的意图,它决定了聊天机器人应该执行什么操作。

Bot NER

图片由作者提供

然而,用户可能会在短语中提供一些参数。例如,当询问天气时,她可能会指定一个地点或日期。机器人应该能够理解这些实体,并在执行操作之前相应地填充参数槽。这正是NER的作用所在。

✅ 另一个例子是分析科学医学论文。我们需要寻找的主要内容是特定的医学术语,例如疾病和药物成分。虽然少量疾病可能可以通过子字符串搜索提取,但更复杂的实体,例如化学化合物和药物名称,则需要更复杂的方法。

NER作为标记分类#

NER模型本质上是标记分类模型,因为对于每个输入标记,我们需要决定它是否属于某个实体,如果属于,则属于哪个实体类别。

考虑以下论文标题:

三尖瓣反流碳酸锂在新生儿中的毒性

这里的实体是:

  • 三尖瓣反流是一种疾病(DIS
  • 碳酸锂是一种化学物质(CHEM
  • 毒性也是一种疾病(DIS

注意,一个实体可能跨越多个标记。而且,如本例所示,我们需要区分两个连续的实体。因此,通常为每个实体使用两个类别——一个指定实体的第一个标记(通常使用B-前缀,表示开始),另一个表示实体的延续部分(I-,表示内部标记)。我们还使用O作为类别来表示所有其他标记。这种标记标注称为BIO标注(或IOB)。标注后的标题如下所示:

标记 标签
三尖瓣 B-DIS
反流 I-DIS
O
碳酸 B-CHEM
I-CHEM
毒性 B-DIS
O
新生儿 O
O
O
毒性 O
O

由于我们需要在标记和类别之间建立一一对应关系,我们可以从下图中训练一个最右侧的多对多神经网络模型:

展示常见循环神经网络模式的图片。

图片来自这篇博客文章作者为Andrej Karpathy。NER标记分类模型对应于此图片中最右侧的网络架构。

训练NER模型#

由于NER模型本质上是一个标记分类模型,我们可以使用我们已经熟悉的RNN来完成这个任务。在这种情况下,每个循环网络块将返回标记ID。以下示例笔记本展示了如何训练用于标记分类的LSTM。

✍️ 示例笔记本:NER#

通过以下笔记本继续学习:

总结#

NER模型是一种标记分类模型,这意味着它可以用于执行标记分类。这是NLP中非常常见的任务,帮助识别文本中的特定实体,包括地点、姓名、日期等。

🚀 挑战#

完成以下链接的作业,训练一个用于医学术语的命名实体识别模型,然后尝试在不同的数据集上使用它。

课后测验#

复习与自学#

阅读博客循环神经网络的非凡有效性,并按照文章中的进一步阅读部分加深你的知识。

作业#

在本课的作业中,你需要训练一个医学实体识别模型。你可以从本课中描述的LSTM模型训练开始,然后使用BERT变换器模型。阅读说明以获取所有详细信息。