NLP 不同数量的特征和 BoW 作为连接到前馈 NN 的特征

数据挖掘 机器学习 神经网络 分类 nlp
2022-01-26 11:51:15

我正在研究Google 的 Smart linkify 机器学习模型,因为它与个人项目密切相关。并且不能完全理解这些特征是如何被馈送到神经网络的。

这是关于以下内容:

在此处输入图像描述

给定一个候选实体跨度,我们提取:左上下文:实体之前的五个词,实体开始:实体的前三个词,实体结束:实体的最后三个词(如果它们重叠,它们可以与前一个特征重复,或填充,如果没有那么多),右上下文:实体后面的五个单词,实体内容:实体内的单词袋和实体长度:实体的大小(以单词数计)。然后将它们连接在一起并作为神经网络的输入。

我有 4 个主要问题无法找到明确的答案:

  • 文章指定功能是串联的。串联层如何在内部工作?从字面上看,它是否将所有值连接到一个变量中?这在计算上是如何工作的?

  • 当它是一个键值对时,一个词袋怎么能成为一个特征?或者它也只是全部连接成一个变量。再说一遍,这怎么能在计算上起作用?

  • 文本指定多个单词被用作单个特征;例如Left context: five words before the entity这是否再次连接嵌入/向量?

  • Entity end: last three words of the entity (they can be duplicated with the previous feature if they overlap, or padded if there are not that many)这是否意味着将可变数量的特征作为 NN(或连接层)的输入,或者这是否更适合作为配置?可用的上下文更少,因此“硬”编码输入特征的数量更少?

也许带有一些硬编码输入变量的简单 keras 模型将有助于形成答案。

网上有没有更多的资料可以理解和重新创建实体识别模型?

编辑:

该文章还提到缺乏可用的上下文或实体。例如,该图显示了实体的 4 个特征(2 个用于实体开始,2 个用于实体结束)。文章提到了重复,但重复 3 次听起来不是一个好主意。带有过滤器(1x3)的卷积层会更好吗?

那么 Keras 模型会是什么样子呢?它会有两个独立的输入层吗?一个输入层,具有 10 个上下文输入特征 + 1 个用于 BoW 的特征 + 1 个用于实体长度的特征。另一个具有 4 个输入特征的输入层,后跟一个卷积层。然后两层都通向一个连接层?

2个回答

让我来破解你的问题:

The article specifies the features are concatenated. How does a concatenation layer work internally? Does it concatenate all the values in a single variable, in a very literal sense? how does that work computationally?

在这种情况下,信息的连接是文本的向量表示的连接。您可以使用此处所述的串联层进行串联这是一种非常常见的方法,您希望根据需要解决的问题采用各种上下文来提供网络信息。

How can a Bag of Words be a feature, when its a key-value pair? Or is it also just all concatenated into one variable. Which again, how can that work computationally?

Bag of words,通常是上下文的向量表示。上面的答案应该对你有所帮助。您也可以在这里查看如何组合嵌入

The text specifies multiple words are used as a single feature; e.g. Left context: five words before the entity. Is this again concatenating the embedding / vectors?

是的,你是正确的。您可以组合使用 skipgram 或 cbow 生成的嵌入向量,甚至可以使用 one-hot 编码向量。

Entity end: last three words of the entity (they can be duplicated with the previous feature if they overlap, or padded if there are not that many) does this mean a variable amount of features as input to the NN (or concatenation layer) or is this more intended as a configuration? Less context available so fewer amount of 'hard' coded input features?

填充和使用定义明确的维度向量总是好的。帮助您更好地构建架构。您可以使用遮罩层来确保网络忽略填充。

我希望这有帮助。

词袋表示

逐个解决您的问题,在 DNN 解决方案中表示词袋的经典方法不是作为键值表示,而是作为“n-hot”向量。因此,如果实体由标记 #123、#456 和 #567(来自预先计算的字典)组成,那么您可以拥有一个具有字典长度的向量,其中所有值都是 0,但位 #123、#456 和#567 设置为 1。

如果使用预先计算的嵌入,我看到的另一个选择是添加或平均这些多个令牌的嵌入 - 这样您就可以拥有实体的固定长度表示,无论它有 1 个令牌还是 5 个令牌。