我在用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以外的其他方法。
如果你训练一个 FastText
模型,而非 Word2Vec
模型,除了学习完整的单词外,它还固有地学习单词片段的向量(可配置大小范围)。
在像英语这样的语言中,许多其他语言(但不是所有语言),未知的单词通常是错别字,备用形式,或在根和后缀方面与knowwon单词相关。因此,拥有子词的向量,然后用这些向量来统计一个未知词的好的猜测向量,可以起到很好的作用,值得一试--比忽略这些词,或者使用一个完全随机的或原点的向量要好。
没有内置的方法可以尝试从现有的词向量集合中提取这样的关系,这不是 FastText
基于子词--但理论上是可能的。你可以计算所有已知词的编辑距离,或与所有已知词的共享子词计数,&;通过N个最接近的词的加权组合创建一个猜测向量。(这可能对错别字& 罕见的交替拼写非常有效,但对真正不存在的新词就不那么有效了。)