从v2.1开始,spaCy具有BERT风格的语言模型(LM)。它预测单词向量,而不是单词,所以我将在这里互换使用“单词”和“单词向量”。
我需要使用一个被掩蔽的单词和一个单词列表,并根据这些单词在被掩蔽的位置中出现的可能性对这些单词进行排序。目前我正在使用BERT (类似于bert-syntax)来做这件事。我想看看spaCy在这项任务上的表现是否可以接受。在this file和this one之间,我非常确定有可能构建一些东西。然而,这感觉像是深入到库的内部,而不是我想要的。
有没有一种直接的方式来与spaCy的屏蔽语言模型进行交互?
发布于 2019-06-01 18:45:27
这基本上是LMAO近似的缺点。实际上,我并没有意识到这一点,直到有人在/r/machinelearning上指出了这一点。
因为我们要预测一个向量,所以我们只能预测向量空间中的一个点。这与预测单词的分布是真的不同。假设我们有一个像The __ of corn.这样的间隙,假设{kernel, ear, piece}是一个很好的填充物分布。这些单词的向量并不是特别接近,因为word2vec算法是基于单词的所有上下文构建一个向量空间,并且单词只能在此上下文中互换。在piece的绝大多数用法中,ear这个词是一个非常糟糕的替代品。
如果可能的填充词在向量空间中不是紧密相连的,那么LMAO模型将无法返回与这组单词相对应的答案。
如果你只需要1-最好的答案,spacy pretrain中的算法很有可能会给你答案。但是如果你需要这个分布,近似值就会失效,你应该使用像BERT这样的东西。
https://stackoverflow.com/questions/56298584
复制相似问题