博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
wordvec_词的相似度
阅读量:5840 次
发布时间:2019-06-18

本文共 2056 字,大约阅读时间需要 6 分钟。

import gensim from gensim.models import word2vec import logging import jieba import os import numpy as np def cut_txt(old_file):     import jieba     global cut_file     # 分词之后保存的文件名     cut_file = old_file + '_cut.txt'     try:         fi = open(old_file, 'r', encoding='utf-8')     except BaseException as e:  # 因BaseException是所有错误的基类,用它可以获得所有错误类型         print(Exception, ":", e)    # 追踪错误详细信息     text = fi.read()  # 获取文本内容     new_text = jieba.cut(text, cut_all=False)  # 精确模式     str_out = ' '.join(new_text).replace(',', '').replace('。', '').replace('?', '').replace('!', '') \         .replace('“', '').replace('”', '').replace(':', '').replace('…', '').replace('(', '').replace(')', '') \         .replace('—', '').replace('《', '').replace('》', '').replace('、', '').replace('‘', '') \         .replace('’', '')     # 去掉标点符号     fo = open(cut_file, 'w', encoding='utf-8')     fo.write(str_out) def model_train(train_file_name, save_model_file):  # model_file_name为训练语料的路径,save_model为保存模型名     from gensim.models import word2vec     import gensim     import logging     # 模型训练,生成词向量     logging.basicConfig(format='%(asctime)s : %(levelname)s : %(message)s', level=logging.INFO)     sentences = word2vec.Text8Corpus(train_file_name)  # 加载语料     model = gensim.models.Word2Vec(sentences, size=200,min_count=1)  # 训练skip-gram模型; 默认window=5     model.save(save_model_file)     model.wv.save_word2vec_format(save_model_name + ".bin", binary=True)   # 以二进制类型保存模型以便重用 if __name__=='__main__':     cut_txt('fenci.txt')  # 须注意文件必须先另存为utf-8编码格式     save_model_name = 'fenci.model'     if not os.path.exists(save_model_name):     # 判断文件是否存在         model_train(cut_file, save_model_name)     else:         print('此训练模型已经存在,不用再次训练')     # 加载已训练好的模型     model = word2vec.Word2Vec.load(save_model_name)     y1 = model.similarity("何太冲", "张无忌")     print(u"何太冲和张无忌的相似度为:", y1)     y2 = model.most_similar("张无忌", topn=10)  # 10个最相关的     print(u"和张无忌最相关的词有:\n")     for item in y2:         print(item[0], item[1])

转载于:https://www.cnblogs.com/hapyygril/p/9982307.html

你可能感兴趣的文章
winform实现拼图游戏
查看>>
OC weak strong __weak __strong copy retain assign nonatomic atomic等关键字的总结
查看>>
JVM堆大小的调整
查看>>
YARN(hadoop2)框架的一些软件设计模式
查看>>
HTTP协议基础
查看>>
【分布式系统工程实现】CAP理论及系统一致性
查看>>
如何将NSString字符串放入剪贴板
查看>>
【SICP练习】63 练习2.34
查看>>
美文共赏
查看>>
iOS XMPP研究探索:添加好友
查看>>
Spring中bean的scope
查看>>
DRC,为什么我们要走最难的路
查看>>
棱镜-分布式实时计算的跟踪校验系统
查看>>
使用go-swagger为golang API自动生成swagger文档
查看>>
bing Map 在vue项目中的使用
查看>>
前后端都需要知道的跨域
查看>>
Docker 入门操作
查看>>
Spring-奇怪的回滚
查看>>
初探Java类型擦除
查看>>
log4j2的使用总结
查看>>