如何使用word2vec识别看不见的单词并将其与已训练的数据关联


11

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

这可能吗?可以对word2vec进行调整吗?或者,训练语料库需要具有我想找到相似之处的所有单词。

Answers:


9

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

算法往往会忽略词汇量之外的单词。但是,有一些方法可以重新构造您的问题,从而基本上没有词汇量不足的单词。

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

这样,您可以将任何单词定义为

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

3

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

  • 更改这些原子的含义,例如,如jamesmf的答案中那样转换为字母n-gram,或
  • 使用另一个可以显式查看您的单词内在内容的模型,例如,https://github.com/Leonard-Xu/CWE上的CWE模型易于使用。


是的,我尝试过,但是在形态分割等任务上效果不佳。
gaurus


0

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.