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在语料中构建种子词集同类词相关推荐

  1. 词集模型、词袋模型、词向量模型

    分词与统计 词集模型(set of words): 单词构成的集合,集合里面的元素不重复,有且只有一个.所以该模型仅仅考虑词是否在文本中出现,不考虑词频,只需一维. 不足:一个词在文本在文本中出现1次 ...

  2. 机器学习基础(二)——词集模型(SOW)和词袋模型(BOW)

    (1)词集模型:Set Of Words,单词构成的集合,集合自然每个元素都只有一个,也即词集中的每个单词都只有一个 (2)词袋模型:Bag Of Words,如果一个单词在文档中出现不止一次,并统计 ...

  3. Python使用wordnet工具计算词集与词条基本用法(三)

    这是一些其他的用法,包括 共同上位词 词集深度 词集相似度 相似词集 用法与示例 from nltk.corpus import wordnet as wnword = wn.synsets(&quo ...

  4. (一)利用Wikipedia中文语料训练词向量word2vec——获取Wikipedia简体中文语料库

    利用Wikipedia中文语料训练词向量一共分为两个篇章,这篇文章属于第一部分,包括下载Wikipedia语料库,并将其从繁体转换为简体. 目录 第一步 下载语料库 第二步 将下载好的bz2文件转换为 ...

  5. 词向量与词向量拼接_nlp中的词向量对比:word2vec/glove/fastText/elmo/GPT/bert

    本文以QA形式对自然语言处理中的词向量进行总结:包含word2vec/glove/fastText/elmo/bert. 2020年更新:NLP预训练模型的全面总结JayLou娄杰:史上最全!PTMs ...

  6. NLP之词向量:利用word2vec对20类新闻文本数据集进行词向量训练、测试(某个单词的相关词汇)

    NLP之词向量:利用word2vec对20类新闻文本数据集进行词向量训练.测试(某个单词的相关词汇) 目录 输出结果 设计思路 核心代码 输出结果 寻找训练文本中与morning最相关的10个词汇: ...

  7. 利用word2vec训练词向量

    利用word2vec训练词向量 这里的代码是在pycharm上运行的,文件列表如下: 一.数据预处理 我选用的数据集是新闻数据集一共有五千条新闻数据,一共有四个维度 数据集:https://pan.b ...

  8. 人为增加近义词 | Word2Vec的语料制作和训练

    第零步:介绍 终于弄明白了gensim.word2vec怎么玩,说到底word2vec就是用共现矩阵来判断两个词语是不是相关,从而得出两个词语相似度高不高,这话听起来有问题~ 但事实就是这样的,不管我 ...

  9. bert获得词向量_词向量详解:从word2vec、glove、ELMo到BERT

    目前,词向量(又叫词嵌入)已经成为NLP领域各种任务的必备一步,而且随着bert elmo,gpt等预训练模型的发展,词向量演变为知识表示方法,但其本质思想不变.学习各种词向量训练原理可以很好地掌握N ...

  10. 利用word2vec、textCNN、jieba对事故文本多分类及致因修复(三维向量)

    中文分词 + 数据集三维向量化 + TextCNN 一.背景 经过几天的测试及模拟建模训练,尝试了机器学习中的一些常用模型,例如Lasso.LR.SVM.XGBoost.GBTD等,发现效果并不如人意 ...

最新文章

  1. Python安装、配置图文详解
  2. wxWidgets:wxBannerWindow类用法
  3. SwiftUI之深入解析高级动画的时间轴TimelineView
  4. springmvc拦截器对请求参数解密_SpringMVC拦截器如何修改请求参数
  5. ORA-00997: 非法使用 LONG 数据类型
  6. 【AI视野·今日CV 计算机视觉论文速览 第218期】Fri, 11 Jun 2021
  7. c++折线平移算法_【MITA周刊】第十五周:聚类算法
  8. 小榕密码管家xp 绿色
  9. Mac安装jdk并配置环境变量
  10. U盘文件系统FAT32转为NTFS
  11. 基于STM32和ESP8266的智能灌溉系统【土壤湿度监测继电器OLED显示WIFI控制器APP水泵】
  12. 使用ffmpeg直播推流总结
  13. python中小写字母和数字用什么表示_Python – 检查数字,大写,小写字母和特殊字符的输入...
  14. 移动端项目总结 - DCloud-HBuilder打包
  15. 小程序的影响到底有多大?
  16. (附源码)springboot音乐播放器小程序 毕业设计 170900
  17. Python(分治算法)问题 A: 找出伪币_给你一个装有n枚硬币的袋子。n枚硬币中有一个是伪造的,并且那个伪造的硬币比真的硬币要轻一些。你的任务是找出这枚伪造的硬币。
  18. 01-HTML学习笔记
  19. Glide源码--执行流程
  20. 宏杉科技的第一,不是魔术变出来的

热门文章

  1. ecshop二次开发_Logo和版权信息
  2. ubuntu安装utorrent,以闪电的速度在六维空间下载东西!
  3. 独立站开发优化问题?
  4. CSS 3 颜色属性
  5. 技术人员如何创业(4)---打造超强执行力团队
  6. Direct3D透视教程,教你做出属于自己的透视
  7. 通信专业顶刊_通信类期刊排名_2016通信期刊排名_2016通信前沿新技术
  8. 金山打字通 官网 下载
  9. 「堡垒之夜」母公司Epic元宇宙蓝图:颠覆Facebook的社交媒体,拆除苹果的高墙花园...
  10. qq四国军旗2.1 beat03 builde018记牌器开发思路(四)