使用模型比较名字和姓氏



我把员工的名字保存在一个文本文件中。我处理了文件并比较了一个已经存在的名称。当我使用most_similar方法检查时,我发现即使语料库中存在完全相同的名称,它也返回完全不相关的名称。

import gensim
training_file='todel.txt'
mylist=list()
with open(training_file, encoding="iso-8859-1") as f:
    for i, line in enumerate(f):
        mylist.append(gensim.models.doc2vec.TaggedDocument(gensim.utils.simple_preprocess(line), [i]))
model = gensim.models.doc2vec.Doc2Vec(vector_size=50, min_count=2, epochs=55)
model.build_vocab(mylist)
inferred_vector=model.infer_vector(['aakash', 'prakash', 'patel'])
sims = model.docvecs.most_similar([inferred_vector])
' '.join(mylist[sims[0][0]].words)

如何正确训练数据以返回(紧密(匹配的名称?

您根据编辑距离来定义相似性,即两个字符串的相似程度。

x2vec模型根据语义接近性来定义相似性,即通过机器学习和共现统计计算的两个含义的相似程度。

换句话说,你正在用大锤杀死一只苍蝇。改为研究用于计算字符串距离的工具:

from Levenshtein import distance
string1 = 'aakash'
string2 = 'akash'
string3 = 'konstantinos'
print(distance(string1, string2))
1
print(distance(string1, string3))
11

最新更新