Gensim构造词向量模型

2023-10-26

1、下载维基百科data

https://dumps.wikimedia.org/zhwiki/20190820/
zhwiki-20190820-pages-articles.xml.bz2
也可以下下面的小的
在这里插入图片描述

2、将bz2内容提取出来

确保安装了gensim pip install gensim

#!/usr/bin/env python
# -*- coding: utf-8  -*-
#将xml的wiki数据转换为text格式

import logging
import os.path
import sys

from gensim.corpora import WikiCorpus

if __name__ == '__main__':
    program = os.path.basename(sys.argv[0])#得到文件名
    logger = logging.getLogger(program)

    logging.basicConfig(format='%(asctime)s: %(levelname)s: %(message)s')
    logging.root.setLevel(level=logging.INFO)
    logger.info("running %s" % ' '.join(sys.argv))

    if len(sys.argv) < 3:
        #print globals()['__doc__'] % locals()
        sys.exit(1)

    inp, outp = sys.argv[1:3]
    space = " "
    i = 0

    output = open(outp, 'w',encoding='utf-8')
    wiki =WikiCorpus(inp, lemmatize=False, dictionary=[])#gensim里的维基百科处理类WikiCorpus
    for text in wiki.get_texts():#通过get_texts将维基里的每篇文章转换位1行text文本,并且去掉了标点符号等内容
        output.write(space.join(text) + "\n")
        i = i+1
        if (i % 10000 == 0):
            logger.info("Saved "+str(i)+" articles.")

    output.close()
    logger.info("Finished Saved "+str(i)+" articles.")
    #python process.py zhwiki-latest-pages-articles.xml.bz2 wiki.zh.txt

进入该目录输入(重命名一下确保名字是一样的)
python process.py zhwiki-latest-pages-articles.xml.bz2 wiki.zh.txt
得到wiki.zh.txt
可以用test测试一下(文件比较大,直接打开比较慢)

import codecs,sys

f = codecs.open('wiki.zh.txt','r',encoding="utf-8")
line = f.readline()
print(line)
#python test.py

3、将繁体转为简体

默认为繁体字,转为简体字自己找一个opencc1.0.1吧
链接:https://pan.baidu.com/s/1e_qPxWzAZS74s4aIEEQWSA
提取码:by1b
解压后将wiki.zh.txt放进去,进入该目录
cd /d X:\opencc-1.0.1-win64
输入
opencc -i wiki.zh.txt -o wiki.zh.simp.txt -c t2s.json
可以得到简体中文版wiki.zh.simp.txt可以使用test.py检验一下。

4、分词

使用jieba分词器pip install jieba
进入wiki.zh.simp.txt所在目录

#jieba.py
import jieba
import jieba.analyse
import jieba.posseg as pseg
import codecs,sys

def cut_words(sentence):
    return " ".join(jieba.cut(sentence)).encode('utf-8')
f = codecs.open('wiki.zh.simp.txt','r',encoding='utf-8')
target = codecs.open('wiki.zh.simp.seg.txt','w',encoding='utf-8')
print('open files')
line_num = 1
line = f.readline()
while line:
    print('----processing',line_num,'article--------------------')
    line_seg = " ".join(jieba.cut(line))
    target.writelines(line_seg)
    line_num = line_num+1
    line = f.readline()
f.close()
target.close()
exit()
#python jieba.py

得到分好词的wiki.zh.simp.seg.txt

5、生成Model

import logging
import multiprocessing
import os.path
import sys
 
from gensim.models import Word2Vec
from gensim.models.word2vec import PathLineSentences
 
if __name__ == '__main__':
    program = os.path.basename(sys.argv[0])
    logger = logging.getLogger(program)
    logging.basicConfig(format='%(asctime)s: %(levelname)s: %(message)s')
    logging.root.setLevel(level=logging.INFO)z
    logger.info("running %s" % ' '.join(sys.argv))
    #check and process input arguments
    if len(sys.argv) < 4:
        print(globals()['__doc__'] % locals())
        sys.exit(1)
    input_dir, outp1, outp2 = sys.argv[1:4]
 
    model = Word2Vec(PathLineSentences(input_dir),
                     size=256, window=10, min_count=5,
                     workers=multiprocessing.cpu_count(), iter=10)
    model.save(outp1)
    model.wv.save_word2vec_format(outp2, binary=False)
#python word2vec_model.py wiki.zh.simp.seg.txt wiki.zh.text.model wiki.zh.text.vector

生成4个文件
在这里插入图片描述

6、测试Model

from gensim.models import Word2Vec

en_wiki_word2vec_model = Word2Vec.load('wiki.zh.text.model')

testwords = ['鼠标','编程','杯子','实验室','牛奶']

for i in range(5):
    res = en_wiki_word2vec_model.most_similar(testwords[i])
    print (testwords[i])
    print (res)

在这里插入图片描述
可以得到相关的词以及关联度。

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

Gensim构造词向量模型 的相关文章

  • [1218]hive之Map Join使用方法

    文章目录 介绍 mapjoin的使用方法 介绍 MAPJION会把小表全部加载到内存中 在map阶段直接拿另外一个表的数据和内存中表数据做匹配 由于在map端是进行了join操作 省去了reduce运行的时间 算是hive中的一种优化 如上

随机推荐

  • 开放原子训练营(第三季)inBuilder低代码开发实验室之探秘

    一 活动介绍 以开放原子训练营为主办方的inBuilder低代码实验室活动现已开启 参与者无论身居计算机业界 偏好低代码开发抑或是普通用户 均可在社区版inBuilder低代码开发平台 一款基于UBML开源项目的广泛适用的发行版 中尝试向导
  • ECMAScript2020 可选链操作符(?.)的应用

    一 前言 const programmer user lin department name 技术部 getSite return 在以前的语法中 想要获得深层次的属性或方法 如果不做前置校验的话 那么就很容易出现这种错误 这可能会导致你整
  • MFC 之 重绘按键Cbutton

    上次我们学习了如何美化对话框的界面 这次我们为上次的对话框添加两个按钮 一个是关闭按钮 另一个是最小化按钮 好 现在我们先看一下效果 是不是很难看 因为我们的对话框美化了 所以我们的按钮也要美化 因为采用贴图的方式来美化 所以 我先给出这两
  • 笔试面试算法经典--矩阵的最短路径和(Java)

    题目 给定一个矩阵m 从左上角开始每次只能向右或者向下走 最后到达右下角的位置 路径上所有的数字累加起来就是路径和 返回所有路径中最小的路径和 例子 给定m如下 1 3 5 9 8 1 3 4 5 0 6 1 8 8 4 0 路径1 3 1
  • 信号去噪 - 基于SVD实现数字信号降噪含Matlab源码

    信号去噪 基于SVD实现数字信号降噪含Matlab源码 介绍 信号处理中的一个重要问题是如何降噪 这在各种应用领域中都有非常重要的作用 奇异值分解 SVD 是一种广泛使用的信号处理技术 可以用于有效地降低信号噪声 本文将介绍如何使用SVD进
  • Elasticsearch 安装及启动【Windows】

    一 下载 Elasticsearch 官网下载地址 https www elastic co cn downloads past releases elasticsearch 选择自己所需版本进行下载 这里以Elasticsearch 8
  • 【操作系统】王道考研 p64-66 IO软件层次结构、IO核心子系统、假脱机技术(SPOOLing技术)

    IO软件层次结构 IO核心子系统 假脱机技术 SPOOLing技术 以下是IO软件层次结构的内容 知识总览 用户层软件 实现了与用户交互的接口 将用户的请求翻译为格式化的IO请求 并通过 系统调用 请求操作系统内核的服务 设备独立性软件 又
  • PyQt5 QTableWidget内容复制功能

    为了更快速的将QTableWidget的内容复制到剪贴板 只需重写这个控件的keyPressEvent event 废话不多说 直接上代码 复制功能 def keyPressEvent self event Ctrl C复制表格内容 if
  • 大语言模型浅探一

    目录 1 前言 2 GPT模型解码 3 InstructGPT 4 基于RWKV微调模型 4 1 RWKV简介 4 2 增量预训练 4 3 SFT微调 4 4 RM和PPO 5 测试 6 总结 1 前言 近来 人工智能异常火热 ChatGP
  • 如何把“自己的”网络中的conv2d替换为dcnv2

    1 dcnv2的实现测试了两种 一种是官方版dcnv2 git链接 https github com CharlesShang DCNv2 git 编译直接cd到DCNv2 然后 make sh即可 第二种是mmcv ops modulat
  • redis单机版部署

    目录 1 下载版本 2 上传解压 3 安装依赖包 4 进入redis目录 执行编译 5 创建相应目录 6 配置redis conf 7 启动redis 8 配置redis开机自启 1 下载版本 以下是我使用的版本 redis 4 0 1 链
  • 黑盒测试用例设计方法案例与练习题

    1 等价类 案例 登录功能 用户名和密码登录 以在线考试系统为例 年龄字段输入 2 网站注册页面年龄输入要求 某网站前台用户注册页面 其中有年龄字段的输入 要求输入1 150之间的正整数 输入条件 有效等价类 取值 编号 无效等价类 取值
  • 4.1.2 到底在规划、设计什么

    最后更新2021 08 19 以最简单 最朴素的语言说 规划 设计就是在拼凑一个框架 虚拟填补小说的事实 让最后一切发生的合情合理 顺乎自然 没有例外 规划 不能将悲剧的结局变成喜剧收尾 但依靠编剧的功底 能够将剧情玩弄于股掌之间 让每位观
  • 天梯赛省赛选拔赛复盘

    很可惜的一场比赛 两小时调H题没调出来T T 如果调出来就能被选上了 无限Sad 意难平 希望蓝桥杯不留遗憾 文章目录 A题 蜗牛与井 签到 B题 火力覆盖 贪心 数学 C题 ZZ的函数 D题 自然溢出 思维 数学 E题 小y的棋子 F题
  • Groovy语言详解

    一 Groovy 概述 Groovy是一种基于Java平台的面向对象语言 Groovy 1 0于2007年1月2日发布 其中Groovy 2 4是当前的主要版本 Groovy通过Apache License v 2 0发布 Groovy中有
  • apt-get

    问题 如何查看已经安装的软件 如何确定一个软件是否已经安装 目前常用的 更新本机中的数据库缓存 sudo apt get update 查找包含部分关键字的软件包 sudo apt cache search lt 你要查找的name gt
  • 【AI视野·今日NLP 自然语言处理论文速览 第三十六期】Tue, 19 Sep 2023

    AI视野 今日CS NLP 自然语言处理论文速览 Tue 19 Sep 2023 showing first 100 of 106 entries Totally 106 papers 上期速览 更多精彩请移步主页 Daily Comput
  • 数据分析综述

    欢迎来到我的博客 作者 秋无之地 简介 CSDN爬虫 后端 大数据领域创作者 目前从事python爬虫 后端和大数据等相关工作 主要擅长领域有 爬虫 后端 大数据开发 数据分析等 欢迎小伙伴们点赞 收藏 留言 关注 关注必回关 了解过数据分
  • Python random.seed() random.sample()函数使用

    random seed 0 作用 使得随机数据可预测 即只要seed的值一样 后续生成的随机数都一样 一 不设置seed import random list 1 2 3 4 5 6 7 8 9 10 a random sample lis
  • Gensim构造词向量模型

    1 下载维基百科data https dumps wikimedia org zhwiki 20190820 zhwiki 20190820 pages articles xml bz2 也可以下下面的小的 2 将bz2内容提取出来 确保安