word2vec训练与相似度计算
中文语料预处理
采用维基百科里的中文网页作为训练语料库,下载地址为:https://dumps.wikipedia.org/zhwiki/20190301/zhwiki-20190301-pages-articles.xml.bz2
维基百科提供的语料是xml格式的,因此需要将其转换为txt格式。由于维基百科中有很多是繁体中文网页,故需要将这些繁体字转换为简体字。另外,在用语料库训练词向量之前需要对中文句子进行分词,这里采用Jieba中文分词工具对句子进行分词。
from gensim.corpora import WikiCorpus
import jieba
from opencc import OpenCCopencc = OpenCC('t2s')def preprocess():space = ' 'i = 0l = []zhwiki_name = './data/zhwiki-20190301-pages-articles.xml.bz2'with open('./data/reduce_zhiwiki.txt', 'w') as f: # xml转换为txtwiki = WikiCorpus(zhwiki_name, lemmatize=False, dictionary={}) # 读取训练语料for text in wiki.get_texts(): # 文本for temp_sentence in text: # 段落temp_sentence = opencc.convert(temp_sentence) # 繁体转简体seg_list = list(jieba.cut(temp_sentence)) # 分词for temp_term in seg_list:l.append(temp_term) # 组合成列表f.write(space.join(l) + '\n') # 写入txt文件l = []i = i + 1if i % 200 == 0:print('Saved ' + str(i) + ' articles')if __name__ == '__main__':import timebefore = time.time()preprocess()after = time.time()print(str((after - before) / 60) + ' minutes')
处理后的语料如图:
向量化训练
利用gensim模块训练词向量,Word2Vec函数的参数如下:
# sg=0:使用CBOW模型训练词向量 # sg=1:使用skip-gram训练词向量 # size:词向量维度 # windows:当前词和预测词可能的最大距离 # min_count:最小出现次数,如果一个词出现的次数小于min_count,直接忽略该词 # workers:训练词向量时使用的线程数
from gensim.models import Word2Vec
from gensim.models.word2vec import LineSentencedef train():wiki_news = open('./data/reduce_zhiwiki.txt', 'r')model = Word2Vec(LineSentence(wiki_news), sg=0, size=192, window=5, min_count=5, workers=8) # 训练词向量model.save('zhiwiki_news.word2vec')if __name__ == '__main__':train()
训练好的词向量存在下列文件中:
计算词语的相似度
# coding=utf-8
import gensimdef simularity():model = gensim.models.Word2Vec.load('./data/zhiwiki_news.word2vec')print(model.similarity('数据', '人工智能')) # 相似度为0.29print(model.similarity('滴滴', '摩拜')) # 相似度为0.39word = '北航'if word in model.wv.index2word:print(model.most_similar(word)) # 最相近的词if __name__ == '__main__':simularity()
得到数据与人工智能的相似度为0.29,滴滴与摩拜的相似度为0.39,与北航最相近的词有:
[('天津大学', 0.708594799041748), ('哈工大', 0.7071467638015747), ('同济大学', 0.6879477500915527), ('浙大', 0.6827788949012756), ('湖南大学', 0.6754754185676575), ('水利系', 0.6699927449226379), ('深圳大学', 0.6659466624259949), ('西北工业大学', 0.6655755043029785), ('北京航空航天大学', 0.6644810438156128), ('上海大学', 0.663300633430481)]
word2vec训练与相似度计算相关推荐
- Google开源word2vec,文本相似度计算工具
Google开源word2vec,文本相似度计算工具 谷歌已经使用Deep Learning技术开发了许多新方法来解析语言,目前,谷歌开源了一款基于Deep Learning的学习工具--word2v ...
- NLP-文本向量训练及相似度计算
目录 一.准备语料库 二.代码 1.词向量的训练及词语相似度 2.段落向量的训练及文档相似度 3.word2vec计算网页相似度 4.doc2vec计算网页相似度 一.准备语料库 首先下载wiki中文 ...
- Python基于word2vec的词语相似度计算
词语相似度计算 在商品搜索的过程中,可以计算用户输入的关键字与数据库中商品名间的相似度,在商品数据库中找出相似度最大的商品,推荐给用户.比如"凳子"跟"椅子" ...
- word2vec词向量训练及中文文本类似度计算
本文是讲述怎样使用word2vec的基础教程.文章比較基础,希望对你有所帮助! 官网C语言下载地址:http://word2vec.googlecode.com/svn/trunk/ 官网Python ...
- 基于预训练词向量的文本相似度计算-word2vec, paddle
文章目录 0. 前言 1. 余弦相似度算子 2. 示例代码并验证 3. 基于词向量的文本相似度 3.1 读取word2vec文件 3.2 定义模型 3.3 运行模型 3.4 根据分数降序排列 3.5 ...
- word2vec相似度计算_文档相似度助力搜索引擎
几种简单相似度算法: 1.简单共有词判断 假设现有文本A和B,将A.B经过分词.去停用词之后形成集合A={a1,a2,...,an}和集合B={b1,b2,...,bn}.用NUM(A∩B)表示集合A ...
- 基于word2vec的疾病和手术相关词语的相似度计算
项目需要预测是否患有骨质疏松,患者做过的手术类型是其中的一维特征,因此需要得到骨质疏松或骨量减少和手术之间的关系,此处选择用word2vec得到词语之间的相似度. 一.文本预处理 原始数据为csv格式 ...
- gensim词向量Word2Vec安装及《庆余年》中文短文本相似度计算 | CSDN博文精选
作者 | Eastmount 来源 | CSDN博文精选 (*点击阅读原文,查看作者更多精彩文章) 本篇文章将分享gensim词向量Word2Vec安装.基础用法,并实现<庆余年>中文短文 ...
- word2vec相似度计算_AAAI-2016 | 使用孪生递归网络的句子语义相似度计算方法
本文<Siamese Recurrent Architectures for Learning Sentence Similarity>提出了一种使用孪生递归网络来计算句子语义相似度的方法 ...
- [Python人工智能] 九.gensim词向量Word2Vec安装及《庆余年》中文短文本相似度计算
从本专栏开始,作者正式开始研究Python深度学习.神经网络及人工智能相关知识.前一篇详细讲解了卷积神经网络CNN原理,并通过TensorFlow编写CNN实现了MNIST分类学习案例.本篇文章将分享 ...
最新文章
- [js高手之路]打造通用的匀速运动框架
- GDIDrawing3——GDI+绘图(三)
- IOS15之JSON的解析字典转模型
- Mysql进阶索引篇02——InnoDB存储引擎的数据存储结构
- android安卓字体下载,安卓Android简中综艺手机字体
- HTML基础编程——简介及第一行代码
- c语言二fseek从文件头移动_C语言fseek函数
- HAL库配置 ADF4351 pll锁相环
- 【Chatbot】2:中文聊天机器人的实现
- 大作家超级写作软件_大作家都是极度自律的人,你也可以
- 方差分析表和回归分析表的那些浆糊糊
- 宝塔面板搭建WordPress网站完整教程
- C#:BackgroundWorker的简单使用
- android q状态栏,用腻了导航栏?在一加Android Q beta中强行开启全面屏手势
- 手机使用计算机网络打印机,手机也可连接打印机 NETGEAR WNDR4700 无线打印
- Windows 2003访问https失败
- 洛谷P2698 [USACO12MAR]Flowerpot S
- iOS开发中MD5加密算法的实现
- python 查找字符串
- 微信小程序糟心开发过程
热门文章
- 9-4-插值查找-查找-第9章-《数据结构》课本源码-严蔚敏吴伟民版
- 题目1471: A+B without carry
- Windows下如何远程连接Linux图形化桌面-教你两招
- 群体智能优化算法之猫群算法(Cat Swarm Optimization)
- 【Prison Break】第三天(3.29)
- 【OpenCV学习笔记】【编程实例】三(将一个图像中的指定区域拷贝到另一个图像的指定区域
- 智能优化算法:野狗优化算法 - 附代码
- arcgis 画图问题
- 遥感数据共享(一)珠海一号数据
- Ubuntu14.04 64位配置XAMPP服务器