命名实体识别#
到目前为止,我们主要集中在一个自然语言处理(NLP)任务——分类。然而,神经网络还可以完成其他的NLP任务,其中之一就是**命名实体识别**(NER),它处理的是识别文本中的特定实体,例如地点、人物姓名、日期时间区间、化学式等等。
课前测验#
使用NER的示例#
假设你想开发一个类似于亚马逊Alexa或谷歌助手的自然语言聊天机器人。智能聊天机器人的工作方式是通过对输入句子进行文本分类来“理解”用户的需求。分类的结果是所谓的意图,它决定了聊天机器人应该执行什么操作。
图片由作者提供
然而,用户可能会在短语中提供一些参数。例如,当询问天气时,她可能会指定一个地点或日期。机器人应该能够理解这些实体,并在执行操作之前相应地填充参数槽。这正是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变换器模型。阅读说明以获取所有详细信息。