相关推荐:

【自然语言处理】【Word2Vec(一)】Word2Vec之前的词表示和文本表示:one-hot_bag of words_TF-IDF_n-gram_Cocurrence matrix和NNLM
【自然语言处理】【Word2Vec(二)】超详细的原理推导(包含负采样和层次softmax)

import pandas as pd
import numpy as np
import jieba
from gensim.models import word2vec

一、加载数据

document = pd.read_csv("./Data/BYX.txt",encoding="GBK",header=None)
document.columns  = ['sentences'] # 重命名列名
document['sentences'] = document['sentences'].apply(lambda x: x.strip()) # 去除文本前后的空白
document['lens'] = document['sentences'].apply(len) # 统计文本长度
document = document[document['lens']>1] # 去除文本长度小于等于1的文本
document.index = np.arange(len(document))

二、去除特殊字符

当然也可以不做特殊字符处理

punct = "/-'?!.,#$%\'()*+-/:;<=>@[\\]^_`{|}~`" + '""“”’' + '∞θ÷α•à−β∅³π‘₹´°£€\×™√²—–&'
def clean_special_chars(text, punct):for p in punct:text = text.replace(p, ' ')return text
document['sentences'] = document['sentences'].apply(lambda x:clean_special_chars(x,punct))

三、分词

jieba.suggest_freq('桐原亮司',True)
jieba.suggest_freq('桐原洋介',True)
jieba.suggest_freq('笹垣润三',True)
jieba.suggest_freq('桐原弥生子',True)
jieba.suggest_freq('唐泽雪穗',True)
jieba.suggest_freq('雪穗',True)
jieba.suggest_freq('唐泽礼子',True)
jieba.suggest_freq('园村友彦',True)
jieba.suggest_freq('松浦勇',True)
jieba.suggest_freq('寺崎忠夫',True)
jieba.suggest_freq('田川敏夫',True)
jieba.suggest_freq('秋吉雄一',True)
jieba.suggest_freq('西口奈美江',True)
1
document['sentences'] = document['sentences'].apply(lambda x: ' '.join(jieba.cut(x)))

四、gensim和word2vec介绍

gensim是一个NLP的工具,其中关于word2vec的工具均在gensim.models.word2vec下。和算法有关的参数都在类gensim.models.word2vec.Word2Vec中。

sentences:我们要分析的语料,可以是一个列表,或者从文件中遍历读出。

size: 词向量的维度,默认值是100。如果语料库较大则应该将该值调大。

window:即词向量上下文最大距离,这个参数在我们的算法原理篇中标记为c,window越大,则和某一词较远的词也会产生上下文关系。默认值为5。

sg: 即我们的word2vec两个模型的选择了。如果是0, 则是CBOW模型,是1则是Skip-Gram模型,默认是0即CBOW模型。

hs: 即我们的word2vec两个解法的选择了,如果是0, 则是Negative Sampling,是1的话并且负采样个数negative大于0, 则是Hierarchical Softmax。默认是0即Negative Sampling。
negative:即使用Negative Sampling时负采样的个数,默认是5。推荐在[3,10]之间。这个参数在我们的算法原理篇中标记为neg。

min_count:需要计算词向量的最小词频。这个值可以去掉一些很生僻的低频词,默认是5。如果是小语料,可以调低这个值。

五、训练模型

sentences = [sentence.split() for sentence in document['sentences']]
model = word2vec.Word2Vec(size=20,window=3)
model.build_vocab(sentences)
model.train(sentences,total_examples=model.corpus_count,epochs=model.epochs*3)
(1705861, 2744595)

六、保存模型与加载模型

model.save('./mymodel') # 模型保存
model = word2vec.Word2Vec.load('./mymodel') # 加载模型,还可以train()函数继续训练
model.wv.save_word2vec_format('./word2vec.txt',binary=False) # 仅保存词向量,不保存模型

七、词向量的使用

1.获得某个词的词向量

model['警察']
array([ 0.5641069 ,  0.20711453,  1.2791238 , -0.46662605,  0.15338947,-0.8355605 , -0.31797206,  0.19973843,  0.7164703 , -0.136376  ,1.2019793 ,  0.7504985 ,  0.16553111, -0.14321175,  0.88424015,0.27199823, -0.22283189,  0.24914157,  0.6664467 , -0.6253866 ],dtype=float32)

2.计算近似词

model.wv.most_similar(['警察'],topn=5)
[('康晴', 0.8587027788162231),('老师', 0.8538543581962585),('菊池', 0.8275039196014404),('田川', 0.8126981258392334),('无聊', 0.7966194748878479)]

3.计算两个词之间的相似度

model.wv.similarity('雪穗','美佳')
0.8242445

【自然语言处理】【Word2Vec(三)】使用gensim学习word2vec相关推荐

  1. 用gensim学习word2vec

    20211224 输入为分词列表 import gensim # Train Word2Vec model model = gensim.models.Word2Vec(all_data_test[' ...

  2. gensim学习-word2vec model

    word2vec model 1.介绍 2.原理 2.1 Skip-gram 2.2 CBOW 3.训练参数 3.1 min_count 3.2 size 3.3 workers 4.实例 4.1 对 ...

  3. 自然语言处理库——Gensim之Word2vec

    Gensim(http://pypi.python.org/pypi/gensim)是一款开源的第三方Python工具包,用于从原始的非结构化的文本中,无监督地学习到文本隐层的主题向量表达. 主要用于 ...

  4. 自然语言处理库—Gensim之Word2vec

    1. gensim概述 Gensim(http://pypi.python.org/pypi/gensim)是一款开源的第三方Python工具包,用于从原始的非结构化的文本中,无监督地学习到文本隐层的 ...

  5. 深度学习 | Word2vec原理及应用

    聊聊Word2vec 1 前言 2 什么是Word2vec? 2.1 定义 2.1.1 分词的原理介绍 2.1.2 文本向量化的方式 2.2 数学原理 2.2.1 CBOW(Continuous Ba ...

  6. gensim中word2vec

    用gensim学习word2vec 在word2vec原理篇中,我们对word2vec的两种模型CBOW和Skip-Gram,以及两种解法Hierarchical Softmax和Negative S ...

  7. Word2vec原理浅析及gensim中word2vec使用

    本文转载于以下博客链接:Word2vec原理浅析:https://blog.csdn.net/u010700066/article/details/83070102: gensim中word2vec使 ...

  8. gensimAPI学习——word2vec

    models.word2vec – Word2vec embeddings 0介绍 该模块使用高度优化的C例程.数据流和Python接口实现word2vec算法系列. word2vec算法包括skip ...

  9. 基于gensim实现word2vec模型(附案例实战)

    目录 什么是word2vec? Word2Vec的原理 gensim实现word2vec模型(实战) 什么是word2vec? Word2Vec是google在2013年推出的一个NLP工具,它的特点 ...

最新文章

  1. filco linux 蓝牙,挖矿知识普及(一)Filcoin是怎么被挖出来的?
  2. TermCriteria模板类
  3. [NC14301]K-th Number
  4. HDU 2157 How many ways?? 临接矩阵+快速幂
  5. 多文件编程 【多文件编程】(26)
  6. angular项目打包发布流程
  7. SAP Spartacus和product相关的标准normalizer
  8. jsp实现仿QQ空间新建多个相册名称,向相册中添加照片
  9. linux端口混杂模式,linux端口混杂模式简介~
  10. java 动态数据源切换,Java+Spring+MyBatis实现多数据源的动态切换
  11. std::atomic_thread_fence
  12. 2.ansible中常用模块
  13. cpu功耗排行_AMD、Intel CPU处理器性能、功耗及性价比排行(更新中)
  14. 由浅入深:自己动手开发模板引擎——解释型模板引擎(一)
  15. 免费好用的APP你值得一试
  16. linux网桥--简介
  17. js 微信公众号开发chooseWXPay:fail, the permission value is offline verifying
  18. CEF 、chromium源码下载前相关代理配置
  19. 英雄联盟里,为什么要打一下,走一下
  20. 我的第一个Chrome插件:天气预报应用

热门文章

  1. 网页常用的新闻栏目+列表样式
  2. 小区门禁MATLAB的指纹识别仿真
  3. 弄丢的对我来说最重要的人,我还能找回来吗?
  4. HIVE中,cluster by有什么意义
  5. 常用CSS与Flex布局、媒体查询、JS事件控制css、VUE对象语法、Gride布局(待补全) CSS权重 页面适配笔记本缩放
  6. 我的算法之狼追兔子问题之Java(while)
  7. 余额提醒:截至今天,本年地球资源额度已用完
  8. 百度网盘好友发来的文件手动输入JS选择代码批量保存
  9. algorithm第三周作业 Collinear Points
  10. 苹果更新系统服务器,苹果发布紧急公告:11月3日前部分设备不更新系统将停止部分服务...