gensim实战01——word2vec

2023-10-30

介绍

搜狗语料库(http://www.sogou.com/labs/resource/list_yuliao.php)是可以免费获取的比较大的中文新闻语料库。可是最新的也就是更新到2012年的语料,后续并无放出更新的语料。除了搜狗语料,要获取其余领域相关的中文语料,可能就须要本身动手写个爬虫去相关网站上爬取。后面经过检索,发现可以使用免费的中文维基百科来进行词向量的训练,因而我也下载处理了最新的维基语料,使用word2vec工具进行了中文词向量的训练。

1使用维基百科训练简体中文词向量

1.1下载中文维基百科

wiki语料库下载网址:https://dumps.wikimedia.org/
最近的中文wiki语料:https://dumps.wikimedia.org/zhwiki/latest/spa
其中zhwiki-latest-pages-articles.xml.bz2文件包含了标题、正文部分。压缩包大概是1.3G,解压后大概是5.7G。相比英文wiki中文的仍是小了很多。
2021年的:https://dumps.wikimedia.org/zhwikisource/20211120/
在这里插入图片描述注意:文件名在网站中的结尾为xml.bz2

1.2 抽取wiki正文内容

1.2.1开源工具wikipedia extractor完成正文的提取

下载下来的wiki是XML格式,须要提取其正文内容。不过维基百科的文档解析有很多的成熟工具(例如gensim,wikipedia extractor等),我直接使用开源工具wikipedia extractor完成正文的提取。
Wikipedia extractor的网址为: http://medialab.di.unipi.it/wiki/Wikipedia_Extractor
Wikipedia Extractor 是一个简单方便的Python脚本,下载好WikiExtractor.py后直接使用下面的命令运行便可。

WikiExtractor.py -cb 1200M -o extracted zhwiki-latest-pages-articles.xml.bz2

-cb 1200M表示以 1200M 为单位切分文件,-o 后面接出入文件,最后是输入文件。

1.2.2 gensim提取

1.3 简繁转换

1.3.1厦门大学NLP实验室开发的简繁转换工具

中文wiki内容中大多数是繁体,这须要进行简繁转换。我使用了厦门大学NLP实验室开发的简繁转换工具,该工具使用简单方便效果也很不错。下载网址为:http://jf.cloudtranslation.cc/
下载单机版便可,在windos命令行窗口下使用下面命令行运行:

jf -fj file1.txt file2.txt -lm lm_s2t.txt

其中file1.txt为繁体原文文件,file2.txt为输出转换结果的目标文件名,lm_s2t.txt为语言模型文件。

1.3.2使用opencc将繁体txt转换为简体txt

下载地址:
https://bintray.com/package/files/byvoid/opencc/OpenCC
无需安装,解压便可使用
将咱们前面生成的wiki.zh.text拖动至opencc-1.0.1-win64文件夹中,打开cmd并在当前文件夹中输入以下指令:
opencc -i wiki.zh.text -o wiki.zh.jian.text -c t2s.json
这一步骤很是快,我只用了1分钟不到
而后能够看到目录中生成了wiki.zh.jian.text文件
打开后能够查看其中内容

能够看到已经成功所有转化为了简体字
可是作词向量训练以前仍缺乏最后一步,就是分词

1.4 处理空括号

因为 Wikipedia Extractor 抽取正文时,会将有特殊标记的外文直接剔除,最后造成一些空括号,本身去掉了这些空括号。

1.5 训练词向量

将前面获得的中文语料使用jieba分词工具(https://github.com/fxsjy/jieba)进行了分词,而后使用word2vec工具进行了训练,使用参数以下:

-cbow 0 -size 50 -window 10 -negative 5 -hs 1 -sample 1e-3 -threads 24 -binary 0 -iter 10

2基于gensim的word2vec实战

第一节获得了zhwiki_2017_03.clean这个文件

2.1读取数据

在这里插入图片描述
可以看出,数据样本为,关键字-详细解释,两个维度。共有92W条数据。

2.2数据预处理

先用正则去除文本中的标点符号,在结合结巴分词工具进行分词。
这里默认采用结巴的精准分词。也可以根据不同情况,采用全分词策略。

#先用正则去除文本中的标点符号
r = re.compile("[\s+\.\!\/_,$%^*(+\"\']+|[+——!;「」》::“”·‘’《,。?、~@#¥%……&*()()]+")

import pandas as pd
# 加载停用词
stopwords = pd.read_table('stopwords.txt',header = None).iloc[:,:].values
# 去除停用词
def stopword_filter(stopwords,seq_words):
    filter_words_list = []
    #停用词过滤
    for word in seq_words:
        if word not in stopwords:
            filter_words_list.append(word)
    
    return filter_words_list

head = ["分词结果"]
to_csv_content = []
# 遍历wiki_data的92万多条数据
for i in range(wiki_data.shape[0]):
    #以下两行过滤出中文及字符串以外的其他符号
    sentence = r.sub('',str(wiki_data.iloc[i,0])) #i行0列,关键字,注意iloc使用的是方括号
    seg_list = jieba.cut(sentence)
#     to_csv_content.append(" ".join(seg_list))
    seq_words = " ".join(seg_list).split(' ')
    #去除停用词
    to_csv_content.append(stopword_filter(stopwords,seq_words))

参考博主的这里,是将to_csv_content保存到csv文件中,我做这一步的时候,遇到了点错误,还不太理解,为了后续的操作,先暂时不保存了

2.3模型训练

word2vec总共有两种训练方法,cbow 和 skip-gram,以及两种方式的损失函数构造
有个值得注意的地方就是:

Make sure you have a C compiler before installing gensim, to use optimized (compiled) word2vec training

否则采用gensim框架训练模型的时候会事件会很长。

from gensim.models import word2vec 
model=word2vec.Word2Vec(content)

2.4 模型的加载与保存

#模型保存以及模型加载
model.save('word2vec_out/word2vec.model')
model = word2vec.Word2Vec.load('word2vec_out/word2vec.model')

2.5 预测

例如
在这里插入图片描述例如
在这里插入图片描述

关键词不存在,会报keyError错误

参考

使用维基百科训练简体中文词向量:http://www.noobyard.com/article/p-cogkoxjj-kq.html
【Python3】基于Gensim的维基百科语料库中文词向量训练:http://www.noobyard.com/article/p-xwtyiaci-ey.html
基于gensim的word2vec实战:https://www.jianshu.com/p/5f04e97d1b27

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

gensim实战01——word2vec 的相关文章

随机推荐

  • 前端页面之间的传值

    有两种方法cookie和localStorage sessionStorage cookie 工具方法封装 var operator function getCookieValue keyStr var value null var s w
  • C++图书馆管理系统源码

    define CRT SECURE NO DEPRECATE include
  • RSA公钥密码体制的简介及例题

    目录 传统密码体制 传统的对称密码体制 密钥管理 密钥分发 不支持 开放系统 公钥密码体制 主要思想 公钥密码体制的优势 密钥分发 密钥管理 开放系统 算法原理 练习 传统密码体制 传统的对称密码体制 对称密码体制 例如DES AES 允许
  • 服务器装ghost系统怎么安装系统教程,Ghost win7系统安装iis教程

    iis是一种可以使得在互联网上发布信息成一件很容易的事 iis就像是现在的网站服务器安装的操作系统服务器一样 但是我们应该如何来安装iis呢 如果你不知道 那接着我们就来详细的了解一下雨林木风Ghost win7系统纯净版安装iis的功能吧
  • vscode报错:babel : 无法加载文件 C:\Users\AppData\Roaming\npm\babel.ps1,因为在此系统上禁止运行脚本。

    报错背景 在使用命令babel es6 01 js o dist 001 js把es6文件转换成es5文件的时候 报错信息如下 babel 无法加载文件 C Users AppData Roaming npm babel ps1 因为在此系
  • document.getElementsByClassName与document.getElementById

    document getElementsByClassName 与document getElementById 大家应该对这两个方法都非常的不能再熟悉的js方法了 就是获取DOM元素嘛 有什么难的 今天我在这两个简单的方法上面犯了错误 我
  • Modbus通信从入门到精通_2_Modbus TCP通信详解及仿真(搭建ModbusTCP仿真环境:创建虚拟PLC并进行ModbusTCP通讯;寄存器与PLC中映射关系;适合理解如何编写上位机)

    本篇将会以西门子PLC软件搭建ModbusTCP仿真环境 并通过仿真环境 介绍基础知识及模拟实际应用中写一个简单的通信读取PLC数据方法 并简介了编写上位机的方法 文章目录 1 搭建ModbusTCP仿真环境 1 1 PLC仿真环境搭建 1
  • UE4 DMX和grandMA2 onPC 3.1.2.5的操作流程

    1 创建环回网络适配器 避免IP被占用 参考链接 UE4 Demo连接GrandMA2 onpc 2 创建show文件 参考链接 虚幻引擎舞美灯光设计教程 2 4虚幻引擎内部配接 2 5 GrandMA2onpc设置B 3 连接到环回网络I
  • 聚类五之总结

    1 聚类方法的选择 1 对于数据量较大的情况 k means 2 对于数据量较一般的情况 最大密度聚类 DBSCAN 3 对于数据量较少的情况 谱聚类 2 类别数目k未知 且数据有噪声 可使用密度聚类 如DBSCAN 最大密度聚类 DBSC
  • 数据库设计原则(积累)

    1 原始单据与实体之间的关系 可以是一对一 一对多 多对多的关系 在一般情况下 它们是一对一的关系 即一张原始单据对应且只对应一个实体 在特殊情况下 它们可能是一对多或多对一的关系 即一张原始单证对应多个实体 或多张原始单证对应一个实体 这
  • 再见2020

    纯属纪念一下 include
  • Dubbo与Zookeeper伪集群部署

    1 美图 官网 http dubbo apache org docs user preface background md lang zh cn 1 准备Zookeeper zookeeper伪集群模式 2 dubbo安装 git clon
  • Sui安全篇|详解零知识证明 (ZKP) Groth16的可塑性

    Sui Move允许用户使用Groth16进行高效验证任何非确定性多项式时间 Non deterministic Polynomial time NP 状态 Groth16是一种高效且广泛使用的零知识简洁非交互知识证明 Zero Knowl
  • GDB 调试指南

    00 介绍 GDB GNU Debugger 是 UNIX 及 UNIX like 下的强大调试工具 可以调试 ada c c asm minimal d fortran objective c go java pascal 等语言 这一份
  • envi查看影像中指定像素的经纬度

    目的是查看影像上某个像素点对应的经纬度信息 操作步骤 1 打开envi软件 把影像拖入进去 如下图 2 按快捷键ctrl i或者Display gt Cursor Value调出Cursor Value对话框 如下图 3 在最上面工具栏 齿
  • 有用的框架

    选择图片和拍照 implementation com github LuckSiege PictureSelector picture library v2 5 8 可能需要这个 compileOptions sourceCompatibi
  • 【JVM】最全笔记(黑马+尚硅谷+张龙整合笔记)

    本身整合了如下视频的笔记 并进行了整理 尚硅谷周阳 张龙 黑马程序员 黑马ppt非常好 https download csdn net download hancoder 12834607 本文及JVM系列笔记地址 https blog c
  • TestMe

    测试MD文件 TestMe TestMe 链接 link 链接 link 1 target testme
  • 常见前端浏览器兼容问题及解决方案

    常见前端浏览器兼容问题及解决方案 所谓的浏览器兼容性问题 是指因为不同的浏览器对同一段代码有不同的解析 造成页面显示效果不统一的情况 在大多数情况下 我们的需求是 无论用户用什么浏览器来查看我们的网站或者登陆我们的系统 都应该是统一的显示效
  • gensim实战01——word2vec

    介绍 搜狗语料库 http www sogou com labs resource list yuliao php 是可以免费获取的比较大的中文新闻语料库 可是最新的也就是更新到2012年的语料 后续并无放出更新的语料 除了搜狗语料 要获取