SPACY - 对于单词向量和tok2vec的混淆

6

如果您能帮助我了解关于Spacy的一些基本概念,那将对我非常有帮助。

我知道一些Spacy模型具有一些预定义的静态向量,例如对于西班牙语模型,这些向量是由FastText生成的。 我还知道,有一个tok2vec层可以从令牌生成向量,并且将其用作模型的NER组件的输入。

如果以上是正确的话,那么我有一些问题:

  • NER组件是否也使用静态向量?
    • 如果是,那么tok2vec层在哪里发挥作用?
    • 如果不是,那么如果您只打算为NER组件使用模型,使用lg或md模型是否有任何优势?
  • 预训练下载的模型(例如西班牙语)是否已经训练好了tok2vec层?
  • 如果我替换预训练模型的NER组件,它是否保持不变,即学习了权重的tok2vec层?
  • 当我训练NER模型时,tok2vec层是否也会被训练?
  • pretrain命令是否有助于tok2vec层学习一些可能是OOV的特定领域词语?

非常感谢!


一些相关的讨论可以在这里找到:https://dev59.com/HLzpa4cB1Zd3GeqPK3Ly#63520262 - Sofie VL
1个回答

6
NER组件是否也使用静态向量?
这在我的回答这里的第2和第3点中有所涉及。
tok2vec层对于预训练下载的模型(例如西班牙语)是否已经训练完成?
是的,完整的模型已经被训练过了,而tok2vec层是其中的一部分。
如果我替换预先训练模型的NER组件,tok2vec层是否会保留不变,即使用学习到的权重?
在当前的spaCy v2版本中,是不行的。tok2vec层是模型的一部分,如果您移除模型,tok2vec层也会被移除。在即将发布的v3版本中,您将能够将它们分离,以便您可以单独保留tok2vec模型,并在组件之间共享它。
当我训练一个NER模型时,tok2vec层是否也会被训练?
是的 - 参见上面的回答 pretrain命令是否可以帮助tok2vec层学习一些可能是OOV的领域特定词汇?
请参见我在https://dev59.com/HLzpa4cB1Zd3GeqPK3Ly#63520262的回答。
如果您有进一步的问题 - 欢迎在评论中讨论!

1
非常感谢Sofie提供详细的答案。我仍然不太确定tok2vec如何处理OOV单词。我坚持这一点是因为我想了解我在进行命名实体识别时需要多担心这些单词。例如,拼错的单词“hipretension”没有静态向量,但如果我理解正确,当我训练我的NER时,tok2vec应该学会为此生成一个向量(假设该单词在我的数据中)。我仍然不确定预训练是否有助于这种情况。增加打字错误的数据是否有意义来帮助预测拼写错误? - BaldML

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接