我正在寻找与两个不同的单词相似的单词。我知道我可以找到与FastText最相似的单词,但我想知道是否有一种方法可以找到与两个关键字相似的关键字。例如,"苹果";类似于"orange"也类似于"kiwi"。所以,我想做的是如果我有两个词,"器官"one_answers"猕猴桃",那么我想听听关键词"苹果"的建议。或者其他水果。有办法做到这一点吗?
我认为这个功能没有现成的功能。
在任何情况下,您都可以考虑这个简单方法:
- 加载预训练的嵌入(在这里可用)
- 为每个感兴趣的单词获得相当数量的最近邻居
- 搜索两个单词 的最近邻居的交集
一个小提示:这是一个粗糙的方法。如有必要,可以使用相似度余弦来执行更复杂的操作。
代码示例:
import fasttext
# load the pretrained model
# (in the example I use the Italian model)
model=fasttext.load_model('./ml_models/cc.it.300.bin')
# get nearest neighbors for the interested words (100 neighbors)
arancia_nn=model.get_nearest_neighbors('arancia', k=100)
kiwi_nn=model.get_nearest_neighbors('kiwi', k=100)
# get only words sets (discard the similarity cosine)
arancia_nn_words=set([el[1] for el in arancia_nn])
kiwi_nn_words=set([el[1] for el in kiwi_nn])
# compute the intersection
common_similar_words=arancia_nn_words.intersection(kiwi_nn_words)
意大利语输出示例:
{'agrume',
'agrumi',
'ananas',
'arance',
'arancie',
'arancio',
'avocado',
'banana',
'ciliegia',
'fragola',
'frutta',
'lime',
'limone',
'limoni',
'mandarino',
'mela',
'mele',
'melograno',
'melone',
'papaia',
'papaya',
'pera',
'pompelmi',
'pompelmo',
'renetta',
'succo'}
我已经使用Gensim W2V实现进行此类计算多年了,但Gensim也有FastText实现:https://radimrehurek.com/gensim/models/fasttext.html