【问题标题】:SPACY - Confusion about word vectors and tok2vecSPACY - 关于词向量和 tok2vec 的混淆
【发布时间】:2020-10-07 23:18:16
【问题描述】:

如果你能帮助我理解一些关于 Spacy 的基本概念,那对我真的很有帮助。

我知道一些 spacy 模型有一些预定义的静态向量,例如,对于西班牙模型,这些是由 FastText 生成的向量。 我也知道有一个 tok2vec 层可以从标记生成向量,例如用作模型的 NER 组件的输入。

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

  • NER 组件是否也使用静态向量?
    • 如果是,那么 tok2vec 层在哪里发挥作用?
    • 如果不是,那么如果您只打算将模型用于例如NER 组件?
  • tok2vec 层是否已经针对预训练的下载模型进行了训练,例如西班牙语?
  • 如果我替换预训练模型的 NER 组件,它是否会保持 tok2vec 层不变,即使用学习的权重?
  • 我训练 NER 模型时是否也训练了 tok2vec 层?
  • pretrain 命令是否会帮助 tok2vec 层学习一些可能是 OOV 的特定领域的单词?

非常感谢!

【问题讨论】:

标签: python nlp spacy fasttext


【解决方案1】:

NER 组件是否也使用静态向量?

这在我的回答 here 的第 2 点和第 3 点中得到解决。

tok2vec 层是否已经针对预训练的下载模型进行了训练,例如西班牙语?

是的,整个模型都经过训练,tok2vec 层是其中的一部分。

如果我替换预训练模型的 NER 组件,它是否会保持 tok2vec 层不变,即使用学习的权重?

不,不在当前的 spaCy v2 中。 tok2vec 层是模型的一部分,如果移除模型,也会移除 tok2vec 层。在即将发布的 v3 中,您将能够将它们分开,这样您实际上就可以单独保留 tok2vec 模型,并在组件之间共享它。

我训练 NER 模型时是否也训练了 tok2vec 层?

是的 - 见上文

pretrain 命令会帮助 tok2vec 层学习一些可能是 OOV 的特定领域的单词吗?

另请参阅https://stackoverflow.com/a/63520262/7961860我的回答

如果您还有其他问题 - 很高兴在 cmets 中讨论!

【讨论】:

  • 非常感谢 Sofie 的详细回答。我仍然不太确定我理解 tok2vec 如何处理 OOV 单词。我坚持这一点,因为我想了解我需要为我的 NER 担心这个词。例如。拼写错误的单词“hipretension”没有静态向量,但如果我理解正确,tok2vec 应该在我训练我的 NER 时学会为此生成一个向量(假设这个词在我的数据中)。我仍然不确定预训练在这种情况下是否有帮助。用拼写错误来增加数据以帮助预测拼写错误是否有意义?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-06-15
  • 1970-01-01
  • 1970-01-01
  • 2011-04-11
  • 2017-09-12
  • 2016-04-24
  • 1970-01-01
相关资源
最近更新 更多