虽然早就对NLP有一丢丢接触,但是最近真正对中文文本进行处理才深深感觉到自然语言处理的难度,主要是机器与人还是有很大差异的,毕竟人和人之间都是有差异的,要不然不会讲最难研究的人嘞

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~不华丽的分割线~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

我了解的对词义理解毕竟优秀的当属word2vec了,在训练结束后能得到跟我们人类理解的相似词义很类似的结果,就像‘’男生‘’‘’女生‘’这些词的含义类似一样,网上已经有很多如何训练word2vec向量的方法及代码了,为了看起来完整,我把我自己的也贴上来吧(我的原数据存储在数据库中):

1.训练过程:

#训练词语为向量表示
def w2v_train(self):
#######数据获取####################################################
ques = self.cu.execute('select question from activity')#从数据库提取文本
da_all = []
for d in ques:
da_all.append(d[0])
sentences = self.get_text(da_all)#分词结果列表
#######训练的主要步骤######################################################
model = Word2Vec()
model.build_vocab(sentences)
model.train(sentences,total_examples = model.corpus_count,epochs = model.iter)
model.save("./tmp/user_w2corpus")#保存模型,之后使用该模型:model=gensim.models.Word2Vec.load('./tmp/user_w2corpus')
   model.wv.save_word2vec_format("./tmp/user_w2corpus_word_old.txt")#将训练好的词向量保存为TXT文档,之后使用该模型:
                                                                   #model = gensim.models.KeyedVectors.load_word2vec_format('./tmp/user_w2corpus_word_old.txt')
#注意两种读取词向量模型的方法是不同的。TXT文档的词向量可以不需要通过model['string']得到词向量,还可以通过循环一次将每个单词(或字符)的向量读出来
def get_text(self,text):#传入的text是一个句子存储在列表中的形式
import jieba
# 调用分词方法时执行这三行
f = open("./stopword.txt", 'r+', encoding="UTF-8")
stop_list = f.read()
txt = []
# 对空格,换行符、停用词进行处理
for i in text:
result = []
# 对文档进行分词处理,采用默认模式
seg_list = jieba.cut(i)
for seg in seg_list:
seg = ''.join(seg.split())
if (seg != '' and seg != "\n" and seg != "\n\n"):
if seg not in stop_list:
result.append(seg)
txt.append(result)
return txt
2.调用训练好的结果分析问题
import gensim
word_vectors=gensim.models.KeyedVectors.load_word2vec_format('./tmp/user_w2corpus',binary=False)
sim=word_vectors.most_similar(u'蛋白质',topn=10)
print ('\n蛋白质-top10:')
for item in sim:
print (item[0],item[1]) 注意!!!!!!写本文的初衷是感谢博客上的一位好人给出了自己训练好的word2vec向量,我们可以不需要亲自训练,拿来直接用,因为自己训练的很有可能会由于数据量不足而导致效果不太好
资源链接:http://pan.baidu.com/s/1dFeNNK9另外,该博客的链接也在此为大家贴出来,http://www.cnblogs.com/robert-dlut/p/6586621.html
最后的最后,我想声明我是最近才想着把自己遇到的问题都记录下来,所以如果侵权麻烦联系我删除,如果觉得有点用的话麻烦点个赞之类的,嘿嘿,在此谢过~~
 
 

word2vec训练好的词向量的更多相关文章

  1. 【word2vec】Distributed Representation——词向量

    Distributed Representation 这种表示,它最早是 Hinton 于 1986 年提出的,可以克服 one-hot representation 的缺点. 其基本想法是: 通过训 ...

  2. 基于word2vec训练词向量(二)

    转自:http://www.tensorflownews.com/2018/04/19/word2vec2/ 一.基于Hierarchical Softmax的word2vec模型的缺点 上篇说了Hi ...

  3. 开源共享一个训练好的中文词向量(语料是维基百科的内容,大概1G多一点)

    使用gensim的word2vec训练了一个词向量. 语料是1G多的维基百科,感觉词向量的质量还不错,共享出来,希望对大家有用. 下载地址是: http://pan.baidu.com/s/1boPm ...

  4. PyTorch基础——词向量(Word Vector)技术

    一.介绍 内容 将接触现代 NLP 技术的基础:词向量技术. 第一个是构建一个简单的 N-Gram 语言模型,它可以根据 N 个历史词汇预测下一个单词,从而得到每一个单词的向量表示. 第二个将接触到现 ...

  5. 斯坦福NLP课程 | 第2讲 - 词向量进阶

    作者:韩信子@ShowMeAI,路遥@ShowMeAI,奇异果@ShowMeAI 教程地址:http://www.showmeai.tech/tutorials/36 本文地址:http://www. ...

  6. 基于word2vec训练词向量(一)

    转自:https://blog.csdn.net/fendouaini/article/details/79905328 1.回顾DNN训练词向量 上次说到了通过DNN模型训练词获得词向量,这次来讲解 ...

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

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

  8. DNN模型训练词向量原理

    转自:https://blog.csdn.net/fendouaini/article/details/79821852 1 词向量 在NLP里,最细的粒度是词语,由词语再组成句子,段落,文章.所以处 ...

  9. CountVectorizer,Tf-idfVectorizer和word2vec构建词向量的区别

    CountVectorizer和Tf-idfVectorizer构建词向量都是通过构建字典的方式,比如在情感分析问题中,我需要把每一个句子(评论)转化为词向量,这两种方法是如何构建的呢?拿CountV ...

随机推荐

  1. 回忆:NVelocity--基于.NET的模板引擎

    相关网址: http://www.castleproject.org/others/nvelocity/index.html http://www.castleproject.org/castle/d ...

  2. 在MyEclipse中将Java Project转换成Web Project

    在MyEclipse中将Java Project转换成Web Project 此添加方法是针对MyEclipse中添加的: 编辑工程的.project文件: 添加 <nature>com. ...

  3. 前端开发神级IDE-sublime text

    汉化并自动带常用插件的版本下载地址:http://www.cr173.com/soft/55484.html 1.修改auto_complete快捷键:首选项>设置-默认>ctrl+f搜索 ...

  4. 利用Laplacian变换进行图像模糊检测

    检测图片是否模糊有很多方法(这篇文章review了36种),比如FFT和variation of Laplacian等,前者在操作到时候需要定义高频的量有多低和多高来区分图片是模糊的,操作起来比较麻烦 ...

  5. rem布局在react中的应用

    摘要: 前面给大家分享了一个react项目(http://www.cnblogs.com/xiyangbaixue/p/4751904.html),这次对这个项目做了一些改进,增加了rem布局和对is ...

  6. 09观察者模式ObServer

    一.什么是观察者模式 Observer模式是行为模式之一,它的作用是当 一个对象的状态发生变化时,能够自动通知其他 关联对象,自动刷新对象状态. Observer模式提供给关联对象一种同步通信的 手段 ...

  7. HighCharts-highcharts resetZoom点击事件

    场景:zoom缩放功能: 选中x轴的一段区域后,需要解除x轴已设定的max值对zoom缩放功能的影响: 点击'reset zoom'后,又需要将max值重新赋值给x轴. 查遍highcharts ap ...

  8. dokcer使用--link 让容器相连

    在使用Docker的时候我们会常常碰到这么一种应用,就是我需要两个或多个容器,其中某些容器需要使用另外一些容器提供的服务.比如这么一种情况:我们需要一个容器来提供MySQL的数据库服务,而另外两个容器 ...

  9. NUC972----最简单的驱动(转)

    1.新建文本文档,重命名为 hello_dev.c (驱动的开发同应用的开发一样,也是在文本文档下开发的). 2.包含头文件 内核模块需要包含内核相关头文件,不同模块根据功能的差异,所需要的头文件也不 ...

  10. Saltstack之通过grains在配置文件中赋值

    案例,使用salt给客户端安装zabbix agent时需要在配置文件中自动生成主机名信息 zabbix agent安装sls zabbix-agent-install: file.managed: ...