参考https://www.cnblogs.com/pinard/p/7278324.html

计算词向量

gensim计算词向量需要执行三个步骤

model=gensim.models.Word2Vec()#建立模型对象

model.build_vocab(sentences) #遍历语料库建立词典

model.train(sentences) #建立模型

也可以直接调用gensim.models.Word2Vec()

其参数:

sg默认等于0,为CBOW算法,设置为1是Skip-gram算法

size是输出词向量的维数,值太小会导致词映射因为冲突而影响结果,值太大会耗内存并使算法计算变慢,一般取100到200之间

window=n是句子中当前词与目标词之间的最大距离,n表示在目标词前看n-b个词,后看b个词(b在0~n直接随机),默认3

sample表示更高频率的词被随机下采样到所设置的阈值,默认为1e-3

hs默认为0,即negative Sampling,是1的话并且负采样(negative)个数大于0,则是Hierarchical Softmax。

negative即使用negaative sampling时负采样的个数,默认是5。推荐在[3,10]之间

cbow_mean 仅用于CBOW在做投影的时候,为0,为1(默认)则为上下文的词向量的平均值。不推荐修改。

min_count 需要计算词向量的最小词频,默认是5,小语料可调低这个值。

iter 随机梯度下降法中迭代的最大次数,默认是5,大语料可增大这个值

alpha 在随机梯度下降法中迭代的初始步长,默认是0.025

min_alpha 由于算法支持在迭代的过程中逐渐减小步长,min_alpha给出了最小的迭代步长值。随机梯度下降中每轮的迭代步长可以由iter,alpha, min_alpha一起得出。对于大语料,需要对alpha, min_alpha,iter一起调参,来选择合适的三个值。

import gensim# 分词结果
sentences = ['传统 数据 基本 都是 结构 化 数据 每个 字 段 都是 有用 的 价值 密度 非常 高'.split(),'大 数据 时代 越来越 多 数据 都是 半 结构 化 和 非 结构 化 数据 比如 网站 访问 日志 里面 大量 内容 都是 没 价值 的 真正 有价值 的 比较 少 虽然 数据量 比 以前 大 了 N 倍 但 价值 密度 确实 低 了 很多'.split()]model = gensim.models.Word2Vec(sentences, sg=1, size=100, window=3,min_count=2, negative=3, sample=0.001, hs=1,workers=6)# 保存模型
word2vec_save = './word2vec_model.txt'
model.wv.save_word2vec_format(word2vec_save, binary=False)
# 读取模型
model = gensim.models.KeyedVectors.load_word2vec_format(word2vec_save,binary=False)print(model['数据'])

计算相似度

model.most_similar(positive=['word1','word2'],topn=10),找出近义词中最相似的topn个词

model.most_similar(negative=['word1','word2'],topn=10),找出反义词中最相似的topn个词

model.doesnt_match(['word1','word2','word3','word4']),找出不匹配的词语

model.similarity(['word1','word2']),计算两个词语的相似度

例:

# -*- coding: utf-8 -*-
"""
Created on Wed Feb 26 10:44:08 2020@author: catEyes
"""import pandas as pd
import jieba
import gensimfilename = '../网络新闻实体发现与情感识别/train.txt'
with open(filename,'r', encoding='utf-8') as f:data = (line.strip() for line in f)# 转换为标准json格式data_json="[{0}]".format(','.join(data))
f.close()
# 转换成dataframe格式
data = pd.read_json(data_json)# 将出现的实体添加进自定义词典
for Entity_list in data['coreEntityEmotions']:for obj in Entity_list:jieba.add_word(obj['entity'])# 分词
sentences = []
for sentence in list(data['title']+' '+data['content']):seg_list = jieba.cut(sentence, cut_all=False)sentences.append(" ".join(seg_list).split())# 去停用词
stopwordsFile = "D:\\NLP\\stopwords-master\\中文停用词表.txt"
stopwords = [line.strip() for line inopen(stopwordsFile, encoding='utf-8').readlines()]
out_sentences = []
for obj in sentences:ws = []for w in obj:if w not in stopwords:ws.append(w)if ws != []:out_sentences.append(ws)# 训练词向量
model = gensim.models.Word2Vec(out_sentences, sg=1, size=100, window=3,min_count=3, negative=3, sample=0.001, hs=1,workers=6)# 保存模型
word2vec_save = './word2vec_model.txt'
model.wv.save_word2vec_format(word2vec_save, binary=False)
# 读取模型
model = gensim.models.KeyedVectors.load_word2vec_format(word2vec_save,binary=False)# 相似度分析
# 近义词中最相似的词语
print(model.most_similar(positive=['有利于'], topn=2))
# 反义词中最相似的词语
print(model.most_similar(negative=['继续'], topn=2))
# 找出气质不合的词语
print(model.doesnt_match(['中国','美国','日本','明星']))
# 计算两词的相似度
print(model.similarity('黑寡妇','惊奇队长'))

输出:

可以打印词向量查看:

数据来源--CCF赛题网络新闻实体发现与情感识别

Gensim:word2vec(jieba分词,去停用词)相关推荐

  1. [Python3] 简单的jieba分词以及停用词去除

    本文主要为[爬取百度搜索内容页广告均数]提供关键词文件,主要做输入文件的分词功能,并写入key_word.txt文件,以供下一模块使用. https://blog.csdn.net/qq_367913 ...

  2. 结巴分词----去停用词

    目前的课题需要用结巴分词处理一下数据,其中要去掉其中的停用词,以下是代码: import jieba import os import pymysqldef fun(filepath): # 遍历文件 ...

  3. 贪心NLP——jieba分词、停用词过滤、词的标准化,词袋模型

    基于结巴(jieba)的分词. Jieba是最常用的中文分词工具 import jiebaset_list=jieba.cut('中南财经政法大学在茶山刘',cut_all=False) print( ...

  4. 文本分析——分词并去停用词返回嵌套列表并保存到本地

    文章目录 文本分析分词并去停用词返回嵌套列表 读取文件并进行分词去停用词操作 保存结果到本地 从本地读取结果 文本分析分词并去停用词返回嵌套列表 此代码块用于分词并去停用词(从csv文件转成了txt分 ...

  5. (3.2)将分词和去停用词后的评论文本基于“环境、卫生、价格、服务”分类...

    酒店评论情感分析系统(三)-- 将分词和去停用词后的评论文本基于"环境.卫生.价格.服务"分类 思想: 将进行了中文分词和去停用词之后得到的词或短语按序存在一个数组(iniArra ...

  6. Python借助jieba包对中文txt文档去停用词、分词

    Python借助jieba包对中文txt文档去停用词.分词` import jieba# 创建停用词list def stopwordslist(filepath):stopwords = [line ...

  7. 用python对单一微博文档进行分词——jieba分词(加保留词和停用词)

    当爬取完所需微博保存在一个csv文件中后,可用如下代码对其进行分词.保留所需词.去除停用词操作,并将分词结果放在新的文档中. 停用词和保留词网上都能搜到,我们也可以另外对停用词表进行编辑,也可以在保留 ...

  8. 分词并去停用词自定义函数:seg_word(sentence)

    分词并去停用词自定义函数:seg_word(sentence). import jieba def seg_word(sentence):"""使用jieba对文档分词& ...

  9. 『NLP自然语言处理』中文文本的分词、去标点符号、去停用词、词性标注

    利用Python代码实现中文文本的自然语言处理,包括分词.去标点符号.去停用词.词性标注&过滤. 在刚开始的每个模块,介绍它的实现.最后会将整个文本处理过程封装成 TextProcess 类. ...

最新文章

  1. How to get pure json data by ajax request
  2. 程序员的一个爬虫,把估值175亿的马蜂窝给捅了
  3. 8.程序什么时候应该使用线程,什么时候单线程效率高?
  4. php windows 操作文件,Windows开启审核功能来记录文件删除操作的详解
  5. python subprocess popen 无法打开_使用subprocess.Popen()在python脚本中设置PYTHONPATH失败...
  6. 入门Python,限时1元!
  7. android 开发 短信,Android开发之短信发送
  8. 代码分享h5-sessionStorage,提示app下载代码块
  9. php通过ajax下载文件,通过Ajax如何请求下载Execl文件
  10. 一款简单实用的桌面电子邮件客户端
  11. springboot mybatis sqlite3
  12. 产品设计思维工具(2019年做产品的一点总结)
  13. 打造黑苹果(二)制作黑mac系统安装U盘
  14. 彻底删除win10易升
  15. 中金易云:为出版社找到下一本《解忧杂货店》
  16. java html转pdf 无法支持中文_java转pdf(html转为pdf),解决中文乱码,标签不规范等问题...
  17. 启动fiddler导致浏览器无法上网的解决方法
  18. [BZOJ 3653] 谈笑风生
  19. 购买Apple移动硬盘
  20. VMware虚拟机运行时报The CPU has been disabled by the guest operating system错误的解决方法

热门文章

  1. HTTP请求携带用户密码验证
  2. 打cf提示计算机内存不足怎么办,玩cf游戏提示内存不足的解决方法
  3. ZOJ 3557 (插板法+Lucas定理)
  4. 1696C. Fishingprince Plays With Array【思维题 + 中间状态 + 优化存储】
  5. 学计算机网络技术遇到问题,维护计算机网络教室的常见问题及解决方案
  6. 调试心得plc做主站(客户端)
  7. Photoshop快速复制图层的几种方法和技巧
  8. 台式计算机怎么强制关机,台式电脑怎么强制关机
  9. 【转】贾佳亚港中文团队冠军技术分享:最有效的COCO物体分割算法
  10. Android单应用开多进程与单进程跑多应用