word2vec 如何用于识别看不见的单词并将它们与已经训练的数据相关联

数据挖掘 nlp 深度学习 词嵌入 无监督学习
2021-09-26 02:28:05

我正在研究 word2vec gensim 模型,发现它真的很有趣。我有兴趣找到一个未知/看不见的单词在与模型检查时如何能够从训练好的模型中获得相似的术语。

这可能吗?可以为此调整 word2vec 吗?或者训练语料库需要包含我想要找到相似度的所有单词。

4个回答

每个处理文本数据的算法都有一个词汇表。在 word2vec 的情况下,词汇表由输入语料库中的所有单词组成,或者至少是那些高于最小频率阈值的单词。

算法倾向于忽略超出其词汇量的单词。但是,有一些方法可以重新构建您的问题,这样基本上就没有超出词汇量的单词。

请记住,单词只是 word2vec 中的“标记”。它们可以是 ngram,也可以是字母。定义词汇表的一种方法是说每个出现至少 X 次的单词都在你的词汇表中。然后将最常见的“音节”(字母的 ngrams)添加到您的词汇表中。然后,您将单个字母添加到您的词汇表中。

通过这种方式,您可以将任何单词定义为

  1. 你的词汇表中的一个词
  2. 词汇表中的一组音节
  3. 词汇表中的一组字母和音节

训练语料库需要有所有你想找到相似度的词。

word2vec 将单词视为原子。要为未知单词获取有意义的向量,您要么必须

  • 改变这些原子是什么,例如切换到 jamesmf 的答案中的字母 n-gram,或者
  • 使用一个不同的模型来明确地查看你的话中的内容,例如CWE 模型很容易使用。

如果单词不在词汇表中,则 word2Vec 和 FastText 会失败。引发错误。它给出了相关单词的分数列表但是一个看不见的单词不会出现在词汇表中,不是吗?那么,它是如何解决看不见的单词问题的呢?