【问题标题】:Proper way to add new vectors for OOV words为 OOV 词添加新向量的正确方法
【发布时间】:2020-07-28 23:28:48
【问题描述】:

我正在使用一些特定领域的语言,其中包含很多 OOV 单词以及一些拼写错误。我注意到 Spacy 只会为这些 OOV 词分配一个全零向量,所以我想知道处理这个问题的正确方法是什么。如果可能的话,我很感激澄清所有这些要点:

  1. pre-train 命令具体做什么?老实说,我似乎无法正确解析网站上的解释:

使用近似的语言建模目标对管道组件的“token to vector”(tok2vec) 层进行预训练。具体来说,我们加载预训练的向量,并训练一个组件(如 CNN、BiLSTM 等)来预测与预训练的向量匹配的向量

tok2vec 不是生成向量的部分吗?那么这个命令不应该改变生成的向量吗? 加载预训练的向量然后训练一个组件来预测这些向量是什么意思?这样做的目的是什么?

--use-vectors 标志有什么作用? --init-tok2vec 标志有什么作用?这是否包含在文档中?

  1. 似乎 pretrain 不是我想要的,它不会改变给定单词的向量。生成一组包含我的 OOV 单词但仍包含该语言的一般知识的新向量集的最简单方法是什么?

  2. 据我所知,Spacy 的预训练模型使用快速文本向量。 Fasttext 网站提及:

一个不错的功能是您还可以查询未出现在数据中的单词!实际上,单词是由其子字符串的总和表示的。只要未知词是由已知子串组成的,就有它的表示!

但 Spacy 似乎没有使用此功能。有没有办法仍然将它用于 OOV 单词?

非常感谢

【问题讨论】:

标签: python nlp spacy fasttext


【解决方案1】:

我认为不同的组件存在一些混淆 - 我将尝试澄清:

  1. 标记器不生成向量。它只是一个组件 将文本分割成标记。在 spaCy 中,它是基于规则的,而不是 可训练的,并且与向量没有任何关系。它看着 空格和标点符号来确定句子中的唯一标记。
  2. spaCy 中的nlp 模型可以具有可在Token 级别访问的预定义​​(静态)词向量。每个令牌都具有相同的 Lexeme 得到相同的向量。某些标记/词位可能确实是 OOV,就像拼写错误。如果您想重新定义/扩展所有向量 在模型中使用时,您可以使用 init-model(在 spaCy v3 中为 init vectors)之类的东西。
  3. tok2vec 层是一个机器学习组件,用于学习如何为标记生成合适的(动态)向量。它通过查看来做到这一点 at 标记的词法属性,但也可能包括静态 令牌的向量(参见第 2 项)。该组件通常不单独使用,而是作为另一个组件的一部分,例如 NER。它将是 NER 模型的第一层,它可以作为训练 NER 的一部分进行训练,以生成适合您的 NER 任务的向量。

在 spaCy v2 中,您可以先使用 pretrain 训练一个 tok2vec 组件,然后将此组件用于后续的 train 命令。请注意,两个命令的所有设置都必须相同,才能使图层兼容。

回答您的问题:

tok2vec 不是生成向量的部分吗?

如果你的意思是静态向量,那么不是。 tok2vec 组件在静态向量之上生成新向量(可能具有不同的维度),但不会改变静态向量。

加载预训练的向量然后训练一个组件来预测这些向量是什么意思?这样做的目的是什么?

目的是获得一个已经从外部向量数据预训练的tok2vec 组件。外部向量数据已经嵌入了标记的一些“意义”或“相似性”,这可以说是转移到tok2vec 组件中,该组件学习产生相同的相似性。关键是这个新的tok2vec 组件可以在随后的train 命令中使用和进一步微调(参见第3 项)

有没有办法仍然将它用于 OOV 单词?

这真的取决于你的“用途”是什么。正如https://stackoverflow.com/a/57665799/7961860 所提到的,您可以自己设置向量,或者您可以实现一个用户hook,它将decide 关于如何定义token.vector

我希望这会有所帮助。如果不了解您为什么想要 OOV 向量/您的用例是什么,我真的不能推荐您遵循的最佳方法。很高兴在 cmets 中进一步讨论!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-06-09
    • 2014-11-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-09
    • 1970-01-01
    相关资源
    最近更新 更多