Nlp 了解fasttext的get_Session_vector()和get_word_vector()

Nlp 了解fasttext的get_Session_vector()和get_word_vector(),nlp,word-embedding,fasttext,Nlp,Word Embedding,Fasttext,我想做的是得到一对单词或短语的嵌入,并计算相似度 我观察到,当我为一个单词在get_-station_-vector()和get_-word_-vector()之间切换时,相似性是相同的。例如,我可以在计算嵌入_2或嵌入_3时切换方法,但嵌入_2和嵌入_3不是euqal,这很奇怪: 从scipy.spatial.distance导入余弦 将numpy作为np导入 导入快速文本 导入fasttext.util #下载一个英文模型 fasttext.util.download_model('en',

我想做的是得到一对单词或短语的嵌入,并计算相似度

我观察到,当我为一个单词在get_-station_-vector()和get_-word_-vector()之间切换时,相似性是相同的。例如,我可以在计算嵌入_2或嵌入_3时切换方法,但嵌入_2和嵌入_3不是euqal,这很奇怪:

从scipy.spatial.distance导入余弦
将numpy作为np导入
导入快速文本
导入fasttext.util
#下载一个英文模型
fasttext.util.download_model('en',如果存在='ignore')#英语
model=fasttext.load\u model('cc.en.300.bin'))
#获取“一”和“二”的词向量。
嵌入\ 1=模型。获取\句子\向量(“小狗”)
嵌入\u 2=模型。获取\u单词\u向量('puppy')
嵌入3=模型。获取句子向量('puppy'))
def余弦_相似性(嵌入_1,嵌入_2):
#计算两个嵌入的余弦相似性。
sim=1-余弦(嵌入_1,嵌入_2)
打印('Cosine相似度:{.2}'。格式(sim))
#比较嵌入
余弦_相似性(嵌入_1,嵌入_2)
#比较嵌入
余弦_相似性(嵌入_1,嵌入_3)
#检查两种方法是否产生相同的结果。
is_equal=np.数组_equal(嵌入_2,嵌入_3)
#打印结果。
打印(是否相等)
如果我切换方法,相似性始终为0.76,但is_equal为false。我有两个问题:

(1) 我可能不得不用get_-sensition_-vector()来表示短语,但就单词而言,我应该用哪一个呢?当我为一个单词调用get_Session_vector()时会发生什么

(2) 我使用fasttext是因为它可以处理词汇表之外的内容,使用fasttext的嵌入进行余弦相似性比较是一个好主意吗

  • 你应该用
    get\u word\u vector
    来表示单词,用
    get\u句子\u vector
    来表示句子

    获取句子向量
    将每个词向量除以其范数,然后求平均值。如果您对更多细节感兴趣,请阅读

  • 由于fastText提供向量表示,因此最好使用此向量来比较单词和句子


  • 如果我的回答有用,请接受并投票表决。谢谢