访问spaCy屏蔽语言模型

时间:2019-05-24 19:29:15

标签: python nlp spacy language-model

从v2.1开始,spaCy具有BERT样式的语言模型(LM)。它预测单词向量而不是单词,因此在这里我将交替使用“单词”和“单词向量”。

我需要带一个带有被屏蔽单词的句子和一个单词列表,然后根据这些单词出现在被屏蔽插槽中的可能性来对这些单词进行排名。目前,我正在为此使用BERT(类似于bert-syntax)。我想看看spaCy在此任务上的表现是否可以接受。我很确定在this filethis one之间可以构建一些东西。但是,感觉比我想要的更深入地进入了库的内部。

有没有一种直接的方法可以与spaCy的屏蔽语言模型进行交互?

1 个答案:

答案 0 :(得分:1)

这基本上是LMAO近似的缺点。实际上,直到/r/machinelearning子目录上的某人向我指出了这一点,我才意识到这一点。

因为我们要预测向量,所以实际上只能预测向量空间中的一个点。这与预测单词的分布确实不同。想象一下,我们有一个像The __ of corn.这样的差距,假设填充物的良好分布是{kernel, ear, piece}。这些单词的向量并不是特别接近,因为word2vec算法正在根据单词的所有上下文构造一个向量空间,并且单词只能在此上下文中互换。在piece的绝大多数使用中,ear一词将是一个非常糟糕的替代词。

如果向量空间中可能的填充词不是很靠近,那么LMAO模型将无法向您返回与该词集合相对应的答案。

如果您只需要1个最佳答案,则spacy pretrain中的算法很有可能将其提供给您。但是,如果您需要分布,则近似值会分解,应使用类似BERT的东西。