• 中文语料预处理

采用维基百科里的中文网页作为训练语料库,下载地址为: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训练与相似度计算相关推荐

  1. Google开源word2vec,文本相似度计算工具

    Google开源word2vec,文本相似度计算工具 谷歌已经使用Deep Learning技术开发了许多新方法来解析语言,目前,谷歌开源了一款基于Deep Learning的学习工具--word2v ...

  2. NLP-文本向量训练及相似度计算

    目录 一.准备语料库 二.代码 1.词向量的训练及词语相似度 2.段落向量的训练及文档相似度 3.word2vec计算网页相似度 4.doc2vec计算网页相似度 一.准备语料库 首先下载wiki中文 ...

  3. Python基于word2vec的词语相似度计算

     词语相似度计算 在商品搜索的过程中,可以计算用户输入的关键字与数据库中商品名间的相似度,在商品数据库中找出相似度最大的商品,推荐给用户.比如"凳子"跟"椅子" ...

  4. word2vec词向量训练及中文文本类似度计算

    本文是讲述怎样使用word2vec的基础教程.文章比較基础,希望对你有所帮助! 官网C语言下载地址:http://word2vec.googlecode.com/svn/trunk/ 官网Python ...

  5. 基于预训练词向量的文本相似度计算-word2vec, paddle

    文章目录 0. 前言 1. 余弦相似度算子 2. 示例代码并验证 3. 基于词向量的文本相似度 3.1 读取word2vec文件 3.2 定义模型 3.3 运行模型 3.4 根据分数降序排列 3.5 ...

  6. word2vec相似度计算_文档相似度助力搜索引擎

    几种简单相似度算法: 1.简单共有词判断 假设现有文本A和B,将A.B经过分词.去停用词之后形成集合A={a1,a2,...,an}和集合B={b1,b2,...,bn}.用NUM(A∩B)表示集合A ...

  7. 基于word2vec的疾病和手术相关词语的相似度计算

    项目需要预测是否患有骨质疏松,患者做过的手术类型是其中的一维特征,因此需要得到骨质疏松或骨量减少和手术之间的关系,此处选择用word2vec得到词语之间的相似度. 一.文本预处理 原始数据为csv格式 ...

  8. gensim词向量Word2Vec安装及《庆余年》中文短文本相似度计算 | CSDN博文精选

    作者 | Eastmount 来源 | CSDN博文精选 (*点击阅读原文,查看作者更多精彩文章) 本篇文章将分享gensim词向量Word2Vec安装.基础用法,并实现<庆余年>中文短文 ...

  9. word2vec相似度计算_AAAI-2016 | 使用孪生递归网络的句子语义相似度计算方法

    本文<Siamese Recurrent Architectures for Learning Sentence Similarity>提出了一种使用孪生递归网络来计算句子语义相似度的方法 ...

  10. [Python人工智能] 九.gensim词向量Word2Vec安装及《庆余年》中文短文本相似度计算

    从本专栏开始,作者正式开始研究Python深度学习.神经网络及人工智能相关知识.前一篇详细讲解了卷积神经网络CNN原理,并通过TensorFlow编写CNN实现了MNIST分类学习案例.本篇文章将分享 ...

最新文章

  1. [js高手之路]打造通用的匀速运动框架
  2. GDIDrawing3——GDI+绘图(三)
  3. IOS15之JSON的解析字典转模型
  4. Mysql进阶索引篇02——InnoDB存储引擎的数据存储结构
  5. android安卓字体下载,安卓Android简中综艺手机字体
  6. HTML基础编程——简介及第一行代码
  7. c语言二fseek从文件头移动_C语言fseek函数
  8. HAL库配置 ADF4351 pll锁相环
  9. 【Chatbot】2:中文聊天机器人的实现
  10. 大作家超级写作软件_大作家都是极度自律的人,你也可以
  11. 方差分析表和回归分析表的那些浆糊糊
  12. 宝塔面板搭建WordPress网站完整教程
  13. C#:BackgroundWorker的简单使用
  14. android q状态栏,用腻了导航栏?在一加Android Q beta中强行开启全面屏手势
  15. 手机使用计算机网络打印机,手机也可连接打印机 NETGEAR WNDR4700 无线打印
  16. Windows 2003访问https失败
  17. 洛谷P2698 [USACO12MAR]Flowerpot S
  18. iOS开发中MD5加密算法的实现
  19. python 查找字符串
  20. 微信小程序糟心开发过程

热门文章

  1. 9-4-插值查找-查找-第9章-《数据结构》课本源码-严蔚敏吴伟民版
  2. 题目1471: A+B without carry
  3. Windows下如何远程连接Linux图形化桌面-教你两招
  4. 群体智能优化算法之猫群算法(Cat Swarm Optimization)
  5. 【Prison Break】第三天(3.29)
  6. 【OpenCV学习笔记】【编程实例】三(将一个图像中的指定区域拷贝到另一个图像的指定区域
  7. 智能优化算法:野狗优化算法 - 附代码
  8. arcgis 画图问题
  9. 遥感数据共享(一)珠海一号数据
  10. Ubuntu14.04 64位配置XAMPP服务器