word2vec文本相似度找出相似的文本,计算与之相似文本个数,语料库

首先,建立自己的语料库

def ylk(x):
    seg = jieba.cut(x, cut_all=False)
    with open('D://listTwo.txt', 'a',encoding='utf-8')as f:
        for word in seg:
            f.write(word+" ")
        f.write('\n')

训练模型

from gensim.models.word2vec import LineSentence, Word2Vec
#加载语料库
sentences = LineSentence("D://listTwo.txt")
model = Word2Vec(sentences, min_count=1, iter=1000)
model.save("D://w2v.mod")

比较相似

target = "D:/listTwo.txt"
model ="D://w2v.mod"
model_w2v = Word2Vec.load(model)

candidates = []
with open(target, encoding='utf-8')as f:
    for line in f:
        candidates.append(line.strip().split()) #将语料放到列表中便于操作
        
def xsd(text):
    words = list(jieba.cut(text.strip())) #分词
    flag = False
    res = []
    index = 0
    for candidate in candidates:
        # print("candidate", candidate)
        for c in candidate:
            if c not in model_w2v.wv.vocab:
                print("candidate word %s not in dict. skip this turn" % c)
                flag = True
        if flag:
            break
        score = model_w2v.n_similarity(words, candidate)
    
            res.append(index)
        index += 1
    return (len(res),res)
    #返回列表中与这句话形似的文本的个数和相似的有哪些
  • 4
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值