访问 spaCy 掩码语言模型

Access spaCy Masked Language Model

从 v2.1 开始,spaCy 具有 BERT 风格的语言模型 (LM)。它预测单词向量而不是单词,所以我将在这里互换使用 "words" 和 "word vectors"。

我需要用一个单词被屏蔽的句子和一个单词列表,然后根据它们出现在屏蔽槽中的可能性对这些单词进行排名。目前我正在为此使用 BERT(类似于 bert-syntax). I would like to see if spaCy's performance on this task is acceptable. Between this file and this one 我很确定可以构建一些东西。但是,感觉比我想要的更深入到库的内部。

是否有直接的方式与 spaCy 的屏蔽语言模型进行交互?

这基本上就是LMAO近似的缺点。直到有人在 /r/machinelearning subreddit 上向我指出,我才真正意识到这一点。

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

如果可能的填充词在 vector-space 中没有靠得很近,LMAO 模型将无法 return 你得到与那组词相对应的答案。

如果您只需要 1 个最佳答案,spacy pretrain 中的算法很有可能会给您答案。但是如果你需要分布,近似值就失效了,你应该使用像 BERT.

这样的东西