1

我正在使用 gensim 寻找与词汇外 OOV 词最相似的词。像这样的东西:

    def get_word_vec(self, model, word):
    try:
        if word not in model.wv.vocab:
            mostSimWord = model.wv.similar_by_word(word)
            print(mostSimWord)
        else:
            print( word )
    except Exception as ex:
        print(ex)

有没有办法实现这个任务?也欢迎使用 gensim 以外的选项。

4

1 回答 1

0

如果你训练一个FastText模型而不是一个Word2Vec模型,它本质上会学习除了完整单词之外的词片段(可配置大小范围)的向量。

在英语和许多其他语言(但不是全部)中,未知单词通常是拼写错误、替代形式,或者与已知单词的词根和后缀相关。因此,拥有子词的向量,然后使用这些向量来计算一个未知词的良好猜测向量,可以很好地值得尝试——比忽略这些词或使用完全随机或原点向量更好。

没有内置的方法可以尝试从不FastText基于 /subword 的现有词向量集中提取此类关系——但理论上是可行的。您可以计算与所有已知单词的编辑距离或共享子单词计数,并通过 N 个最接近单词的加权组合创建猜测向量。(这对于拼写错误和稀有的替代拼写可能非常有效,但对于真正不存在的新词则效果不佳。)

于 2020-05-22T18:21:24.737 回答