Python 名称错误:名称';dot';使用word2vec计算相似度时未定义

Python 名称错误:名称';dot';使用word2vec计算相似度时未定义,python,tensorflow2.0,word2vec,tf.keras,Python,Tensorflow2.0,Word2vec,Tf.keras,我使用此函数使用word2vec计算相似性 我用了keras和tensorflow def cosine_distance (model, word,target_list , num) : cosine_dict ={} word_list = [] a = model[word] for item in target_list : if item != word : b = model [item]

我使用此函数使用word2vec计算相似性 我用了keras和tensorflow

def cosine_distance (model, word,target_list , num) :
    cosine_dict ={}
    word_list = []
    a = model[word]
    for item in target_list :
        if item != word :
            b = model [item]
            cos_sim = dot(a, b)/(norm(a)*norm(b))
            cosine_dict[item] = cos_sim
    dist_sort=sorted(cosine_dict.items(), key=lambda dist: dist[1],reverse = True) ## in Descedning order 
    for item in dist_sort:
        word_list.append((item[0], item[1]))
    return word_list[0:num]

# only get the unique Maker_Model
Maker_Model = list(df.Maker_Model.unique()) 

# Show the most similar Mercedes-Benz SLK-Class by cosine distance 
cosine_distance (model,'Mercedes-Benz SLK-Class',Maker_Model,5)
并收到此错误:

NameError                                 Traceback (most recent call last)
<ipython-input-29-584408bf6259> in <module>
     17 
     18 # Show the most similar Mercedes-Benz SLK-Class by cosine distance
---> 19 cosine_distance (model,'Mercedes-Benz SLK-Class',Maker_Model,5)

<ipython-input-29-584408bf6259> in cosine_distance(model, word, target_list, num)
      6         if item != word :
      7             b = model [item]
----> 8             cos_sim = dot(a, b)/(norm(a)*norm(b))
      9             cosine_dict[item] = cos_sim
     10     dist_sort=sorted(cosine_dict.items(), key=lambda dist: dist[1],reverse = True) ## in Descedning order

NameError: name 'dot' is not defined
namererror回溯(最近一次调用)
在里面
17
18#通过余弦距离显示最相似的梅赛德斯-奔驰SLK车型
--->19余弦距离(型号,“梅赛德斯-奔驰SLK级”,制造商型号,5)
余弦距离(型号、单词、目标列表、数值)
6如果项目!=字:
7 b=型号[项目]
---->8 cos_sim=dot(a,b)/(范数(a)*范数(b))
9余弦dict[项目]=余弦sim
10 dist_sort=按描述顺序排序(余弦dict.items(),key=lambda dist:dist[1],reverse=True)
名称错误:未定义名称“dot”
我尝试更新tensorflow和keras,正如网站上的一个答案所建议的那样,但无法修复。我该如何解决这个问题?
请帮帮我。

基本上,
dot
不被认为是一种方法

要解决此问题,您需要执行以下操作之一:

  • 指定您尝试使用的模块的
    dot
    方法。像这样:
  • 将numpy导入为np
    ...
    np.dot(a,b)/(范数(a)*范数(b))
    
  • 定义一个自定义
    dot
    方法
  • def点(x,y):
    ...
    
  • 导入要使用的
    dot
    方法
  • 这与第一个选项类似,只是您不需要在
    dot
    方法调用前面加上模块名,因为您要导入的是方法,而不是模块

    来自numpy导入点
    
    这里,我使用numpy作为示例库,但它可以是包含
    dot
    方法的任何库:


    a和b是两个一维numpy阵列?