从利用gensim 训练好的word2vec模型中取出向量并计算余弦相似度,Levenshtein distance 计算

1、Levenshtein distance

表示两个字符串之间,由一个转成另一个所需的最少编辑次数,允许的操作有:替换、插入和删除

导入包:

import Levenshtein
#Levenshtein distance 两个字符串之间,由一个转成另一个所需的最少编辑次数,允许的操作有:替换、插入和删除

计算:

#Name Lexical Similarity
api_reference = "The offset argument"
candidate_api = "the offset"
leven_dis = Levenshtein.distance(api_reference,candidate_api)

2、Cosine Similarity

导入包:

代码中 tool 为自己写的分词工具,也可以用其他的分词工具,如spacy、jieba、hanlp等等

from sklearn.metrics.pairwise import cosine_similarity
#m和c向量表示的余弦相似度,word2vec生成的单词向量平均得到
from gensim.models import Word2Vec
import word2vec.Domain_Spacy_tool.Domain_Token_Spacy as tool

加载模型:

file_name为保存文件模型路径

model = Word2Vec.load(file_name)

处理:

包括分词,将一句话切割成词之后分别取出向量相加取平均

m = "The offset argument"
c = "the offset"
m_words_vec = []
c_words_vec = []
#分词,取向量相加
for i,words in enumerate(tool.word_token(m)):
    if i==0:
        temp = model[words]
    else:
        temp = temp+model[words]

for i,words in enumerate(tool.word_token(c)):
    if i==0:
        temp1 = model[words]
    else:
        temp1 = temp1+model[words]
        
#取平均
temp = temp/len(tool.word_token(m))
temp = list(temp)

temp1 = temp1/len(tool.word_token(c))
temp1 = list(temp1)
all_vec = [temp,temp1]

计算:

#计算
cos_similarity = cosine_similarity(all_vec)
print(cos_similarity[0][1])

结果:

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值