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])
结果:
?
?
|