虽然早就对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. 【转】ELK到底是什么鬼?辣么多公司用!

    Sina.饿了么.携程.华为.美团.freewheel.畅捷通 .新浪微博.大讲台.魅族.IBM...... 这些公司都在使用ELK!ELK!ELK! ELK竟然重复了三遍,是个什么鬼?     一. ...

  2. 飞鱼48小时游戏创作嘉年华_厦门Pitch Time总结与收获

    一.48小时游戏开发前期准备 1,策划 明确美术队友和程序队友的水平,提需求的过程中尝试做减法,在保留核心玩法的基础上,看队友水平和时间判断是否添加需求. 策划是整个游戏团队的灵魂,也是开发的上限所在 ...

  3. Java如何将每个单词的第一个字符转为大写?

    在Java编程中,如何将每个单词的第一个字符转为大写? 以下示例演示如何使用toUpperCase(),appendTail()方法将字符串中每个单词的第一个字母转换为大写字母. package co ...

  4. src引入js时添加时间戳参数方法

    代码如下: <script>document.write('<script src="js/judgeLogin.js?t=' + new Date().getTime() ...

  5. react中实现搜索结果中关键词高亮显示

    网上看到很多js实现的关键词高亮显示,方法都是一个道理,先获取要替换的文字区域,然后在用正则匹配到关键词,并进行替换. react中实现起来似乎更简单一些. 我这里的需求是通过搜索框搜索出新闻列表,在 ...

  6. 利用反射将Model转化为sql

    public string GetInsertSqlByModel(Object o) { StringBuilder sbStart = new StringBuilder(); StringBui ...

  7. 理解PEP333-WSGI

    声明:这篇文章只是为了整体理解WSGI,会忽略很多细节,要详细了解请参看文后的参考资料 WSGI概述 WSGI全称是Python Web Server Gateway Interface(Python ...

  8. MyBatis limit分页设置

    错误的写法: <select id="queryMyApplicationRecord" parameterType="MyApplicationRequest&q ...

  9. oracle的存储过程

    plsql中执行无参数存储过程格式: begin tttttttttttttt;end; 在执行记录表中 select *from v$sqlarea t where t.sql_text like ...

  10. POJ 1488 - TEX Quotes

    Description TEX is a typesetting language developed by Donald Knuth. It takes source text together w ...