利用Word2Vec在语料中构建种子词集同类词
nlp小白努力探索的第n天......
今天记录和分享利用gensim.model.word2vec.Word2Vec在语料中构建种子词集同类词
先说明任务情况:
全量语料数据中包含:已打标语料,未打标语料。从已打标语料中提取出关键词,我们将这部分词汇成为种子词集。现需要从全量语料数据中找到种子词集的同类词。
步骤:
1)对语料库建立word2vec词向量模型;
2)利用 gensim.model 联动的词汇相似度计算方法,以种子词集作为研究对象在语料库中找出同类词。
数据展示:
文件名:userdic
可以发现,userdic中的词汇其实应该叫做phrase(短语),分词处理后会出现无效词,比如“了”,因此需要进行去停用词和去除干扰词的处理。
代码:
导入所需的库文件
# -*- coding: utf-8 -*-import mathimport jieba
import jieba.posseg as psg
from gensim import corpora, models
from jieba import analyse
import functools
停用词表加载
# 停用词表加载方法
def get_stopword_list():# 停用词表存储路径,每一行为一个词,按行读取进行加载# 进行编码转换确保匹配准确率stop_word_path = './data/stopword.txt'stopword_list = [sw.replace('\n', '') for sw in open(stop_word_path,encoding='utf-8').readlines()]return stopword_list
去除干扰词
# 去除干扰词
def word_filter(seg_list, pos=False):stopword_list = get_stopword_list()filter_list = []# 根据POS参数选择是否词性过滤## 不进行词性过滤,则将词性都标记为n,表示全部保留for seg in seg_list:if not pos:word = segflag = 'n'else:word = seg.wordflag = seg.flagif not flag.startswith('n'):continue# 过滤停用词表中的词,以及长度为<2的词if not word in stopword_list and len(word) > 1:filter_list.append(word)return filter_list
数据处理
model 是之前训练好的全量语料为w2v_model
(具体可参考使用gensim.models.word2vec.LineSentence之前的语料预处理_Papaya沐的博客-CSDN博客)
model.wv.most_similar()中 topn = k 参数为取相似度最高的前k个词汇。
def dic_more(file_path,reduce_path):# load data:dicdicfile_read = open(file_path,'rb') #open filedic = dicfile_read.read() #read filedicfile_write = open(reduce_path,'w+')seg_dic = jieba.lcut(dic,cut_all = False) #cut dic#去除停用词pos = Falseseg_dic = word_filter(seg_dic, pos) #load w2v modelmodel = gensim.models.Word2Vec.load('model_corpus_w2v.word2vec')# using dic-words to find similar words and vectors in w2c-model which has been trained advance (model's traning uses corpus)i =0 #word's numberfor word in seg_dic:if model.wv.__contains__(word): #判断训练好的词向量模型中是否有包含待寻找词汇i+=1print(i,".",word,file = dicfile_write)print(model.wv.most_similar(word,topn = 5),file = dicfile_write)dicfile_read.close()dicfile_write.close()#try
path_userdic = "./data/userdic.txt"
path_0_userdic = "./data/0_userdic.txt"
path_userdic_more = "./data/userdic_more.txt"
path_0_userdic_more = "./data/0_userdic_more.txt"dic_more(path_userdic,path_userdic_more)
dic_more(path_0_userdic ,path_0_userdic_more)
结果展示:
原创不易,引用请注明出处!
利用Word2Vec在语料中构建种子词集同类词相关推荐
- 词集模型、词袋模型、词向量模型
分词与统计 词集模型(set of words): 单词构成的集合,集合里面的元素不重复,有且只有一个.所以该模型仅仅考虑词是否在文本中出现,不考虑词频,只需一维. 不足:一个词在文本在文本中出现1次 ...
- 机器学习基础(二)——词集模型(SOW)和词袋模型(BOW)
(1)词集模型:Set Of Words,单词构成的集合,集合自然每个元素都只有一个,也即词集中的每个单词都只有一个 (2)词袋模型:Bag Of Words,如果一个单词在文档中出现不止一次,并统计 ...
- Python使用wordnet工具计算词集与词条基本用法(三)
这是一些其他的用法,包括 共同上位词 词集深度 词集相似度 相似词集 用法与示例 from nltk.corpus import wordnet as wnword = wn.synsets(&quo ...
- (一)利用Wikipedia中文语料训练词向量word2vec——获取Wikipedia简体中文语料库
利用Wikipedia中文语料训练词向量一共分为两个篇章,这篇文章属于第一部分,包括下载Wikipedia语料库,并将其从繁体转换为简体. 目录 第一步 下载语料库 第二步 将下载好的bz2文件转换为 ...
- 词向量与词向量拼接_nlp中的词向量对比:word2vec/glove/fastText/elmo/GPT/bert
本文以QA形式对自然语言处理中的词向量进行总结:包含word2vec/glove/fastText/elmo/bert. 2020年更新:NLP预训练模型的全面总结JayLou娄杰:史上最全!PTMs ...
- NLP之词向量:利用word2vec对20类新闻文本数据集进行词向量训练、测试(某个单词的相关词汇)
NLP之词向量:利用word2vec对20类新闻文本数据集进行词向量训练.测试(某个单词的相关词汇) 目录 输出结果 设计思路 核心代码 输出结果 寻找训练文本中与morning最相关的10个词汇: ...
- 利用word2vec训练词向量
利用word2vec训练词向量 这里的代码是在pycharm上运行的,文件列表如下: 一.数据预处理 我选用的数据集是新闻数据集一共有五千条新闻数据,一共有四个维度 数据集:https://pan.b ...
- 人为增加近义词 | Word2Vec的语料制作和训练
第零步:介绍 终于弄明白了gensim.word2vec怎么玩,说到底word2vec就是用共现矩阵来判断两个词语是不是相关,从而得出两个词语相似度高不高,这话听起来有问题~ 但事实就是这样的,不管我 ...
- bert获得词向量_词向量详解:从word2vec、glove、ELMo到BERT
目前,词向量(又叫词嵌入)已经成为NLP领域各种任务的必备一步,而且随着bert elmo,gpt等预训练模型的发展,词向量演变为知识表示方法,但其本质思想不变.学习各种词向量训练原理可以很好地掌握N ...
- 利用word2vec、textCNN、jieba对事故文本多分类及致因修复(三维向量)
中文分词 + 数据集三维向量化 + TextCNN 一.背景 经过几天的测试及模拟建模训练,尝试了机器学习中的一些常用模型,例如Lasso.LR.SVM.XGBoost.GBTD等,发现效果并不如人意 ...
最新文章
- Python安装、配置图文详解
- wxWidgets:wxBannerWindow类用法
- SwiftUI之深入解析高级动画的时间轴TimelineView
- springmvc拦截器对请求参数解密_SpringMVC拦截器如何修改请求参数
- ORA-00997: 非法使用 LONG 数据类型
- 【AI视野·今日CV 计算机视觉论文速览 第218期】Fri, 11 Jun 2021
- c++折线平移算法_【MITA周刊】第十五周:聚类算法
- 小榕密码管家xp 绿色
- Mac安装jdk并配置环境变量
- U盘文件系统FAT32转为NTFS
- 基于STM32和ESP8266的智能灌溉系统【土壤湿度监测继电器OLED显示WIFI控制器APP水泵】
- 使用ffmpeg直播推流总结
- python中小写字母和数字用什么表示_Python – 检查数字,大写,小写字母和特殊字符的输入...
- 移动端项目总结 - DCloud-HBuilder打包
- 小程序的影响到底有多大?
- (附源码)springboot音乐播放器小程序 毕业设计 170900
- Python(分治算法)问题 A: 找出伪币_给你一个装有n枚硬币的袋子。n枚硬币中有一个是伪造的,并且那个伪造的硬币比真的硬币要轻一些。你的任务是找出这枚伪造的硬币。
- 01-HTML学习笔记
- Glide源码--执行流程
- 宏杉科技的第一,不是魔术变出来的
热门文章
- ecshop二次开发_Logo和版权信息
- ubuntu安装utorrent,以闪电的速度在六维空间下载东西!
- 独立站开发优化问题?
- CSS 3 颜色属性
- 技术人员如何创业(4)---打造超强执行力团队
- Direct3D透视教程,教你做出属于自己的透视
- 通信专业顶刊_通信类期刊排名_2016通信期刊排名_2016通信前沿新技术
- 金山打字通 官网 下载
- 「堡垒之夜」母公司Epic元宇宙蓝图:颠覆Facebook的社交媒体,拆除苹果的高墙花园...
- qq四国军旗2.1 beat03 builde018记牌器开发思路(四)