NER with LSTM - 如何识别不属于词汇表的人名?

数据挖掘 nlp lstm 命名实体识别
2022-03-16 03:54:06

我正在学习命名实体识别并浏览与此类似的帖子:

使用 Keras 双向 LSTM 的命名实体识别 (NER)

因此,句子作为整数序列输入模型 - 每个 int 对应于词汇表中的索引 - 据我了解,这就是嵌入层的工作方式。

我的问题是 - 这是否意味着如果词汇表中不存在一个人的名字,该模型将无法识别它?

例如,从句子中:

“John Doe 去散步了”

鉴于 John Doe 在词汇表中,它将被识别为人名,但句子:

“不知名的名字去散步了”

如果未知名称不在词汇中,将不会被正确标记?

对我来说,这有点奇怪,因为 Unknown Name 与 John Doe 处于相同的上下文中,所以我希望能够以某种方式正确标记它。

我显然在这里缺乏知识,所以我非常感谢任何建议和参考资料。

1个回答

对于单词级词汇表,未知单词通常使用特殊标记进行编码<unk>如果在训练数据中有足够多的人名示例,那么双向 LSTM 可能已经学会从上下文中识别人名,而不仅仅是单词本身。在这种情况下,只要在特定的输入句子中有足够的上下文,模型就可以识别它。如果模型是普通 LSTM 而不是双向 LSTM,模型将更难以识别它,因为它只能使用未知单词左侧的上下文。

如果训练数据不包含这样的例子,它将无法从上下文中识别出这个人。

改进处理此问题的一种选择是在训练数据中强制使用此类示例,方法是以一定的概率将人名替换为未知单词。

另一种选择是使用子词级词汇表,如字节对编码 (BPE)词汇表,完全消除词汇表外 (OOV) 单词问题。