【发布时间】:2020-07-28 23:28:48
【问题描述】:
我正在使用一些特定领域的语言,其中包含很多 OOV 单词以及一些拼写错误。我注意到 Spacy 只会为这些 OOV 词分配一个全零向量,所以我想知道处理这个问题的正确方法是什么。如果可能的话,我很感激澄清所有这些要点:
- pre-train 命令具体做什么?老实说,我似乎无法正确解析网站上的解释:
使用近似的语言建模目标对管道组件的“token to vector”(tok2vec) 层进行预训练。具体来说,我们加载预训练的向量,并训练一个组件(如 CNN、BiLSTM 等)来预测与预训练的向量匹配的向量
tok2vec 不是生成向量的部分吗?那么这个命令不应该改变生成的向量吗? 加载预训练的向量然后训练一个组件来预测这些向量是什么意思?这样做的目的是什么?
--use-vectors 标志有什么作用? --init-tok2vec 标志有什么作用?这是否包含在文档中?
-
似乎 pretrain 不是我想要的,它不会改变给定单词的向量。生成一组包含我的 OOV 单词但仍包含该语言的一般知识的新向量集的最简单方法是什么?
-
据我所知,Spacy 的预训练模型使用快速文本向量。 Fasttext 网站提及:
一个不错的功能是您还可以查询未出现在数据中的单词!实际上,单词是由其子字符串的总和表示的。只要未知词是由已知子串组成的,就有它的表示!
但 Spacy 似乎没有使用此功能。有没有办法仍然将它用于 OOV 单词?
非常感谢
【问题讨论】:
-
也许这个答案可以帮助你:stackoverflow.com/questions/57658888/…
-
感谢 Anakin,它确实有助于澄清某些方面,但我仍然没有回答大多数问题。