中文词向量训练-案例分析

在这里插入图片描述

1 数据预处理,解析XML文件并分词

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# process_wiki_data.py 用于解析XML,将XML的wiki数据转换为text格式
import logging
import os.path
import sys
from gensim.corpora import WikiCorpus
import jieba
import jieba.analyse
import codecs
def process_wiki_text(origin_file, target_file):with codecs.open(origin_file, 'r', 'utf-8') as inp, codecs.open(target_file,'w','utf-8') as outp:line = inp.readline()line_num = 1while line:# print('---- processing ', line_num, 'article----------------')line_seg = " ".join(jieba.cut(line))# print(len(line_seg))outp.writelines(line_seg)line_num = line_num + 1line = inp.readline()# if line_num == 101:#     breakinp.close()outp.close()
if __name__ == '__main__':# sys.argv[0]获取的是脚本文件的文件名称program = os.path.basename(sys.argv[0])# sys.argv[0]获取的是脚本文件的文件名称logger = logging.getLogger(program)# format: 指定输出的格式和内容,format可以输出很多有用信息,# %(asctime)s: 打印日志的时间# %(levelname)s: 打印日志级别名称# %(message)s: 打印日志信息logging.basicConfig(format='%(asctime)s: %(levelname)s: %(message)s')logging.root.setLevel(level=logging.INFO)# 打印这是一个通知日志logger.info("running %s" % ' '.join(sys.argv))# check and process input argumentsif len(sys.argv) < 3:print(globals()['__doc__'] % locals())sys.exit(1)inp, outp = sys.argv[1:3]# inp:输入的数据集# outp:从压缩文件中获得的文本文件space = " "i = 0output = open(outp, 'w', encoding='utf-8')wiki = WikiCorpus(inp, lemmatize=False, dictionary={})for text in wiki.get_texts():output.write(space.join(text) + "\n") i = i + 1if i % 200000 == 0:logger.info("Saved " + str(i) + " articles")# breakoutput.close()logger.info("Finished Saved " + str(i) + " articles")process_wiki_text('wiki.zh.txt', 'wiki.zh.text.seg')

2 模型训练,使用gensim工具训练词向量

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# train_word2vec_model.py用于训练模型
import logging
import os.path
import sys
import multiprocessing
import gensim
from gensim.models import Word2Vec
from gensim.models.word2vec import LineSentence
if __name__ == '__main__':if len(sys.argv) < 4:print(globals()['__doc__'] % locals())sys.exit(1)# inp:分好词的文本 # outp1:训练好的模型 # outp2:得到的词向量inp, outp1, outp2 = sys.argv[1:4]"""LineSentence(inp):格式简单:一句话=一行; 单词已经过预处理并被空格分隔。size:是每个词的向量维度; window:是词向量训练时的上下文扫描窗口大小,窗口为5就是考虑前5个词和后5个词; min-count:设置最低频率,默认是5,如果一个词语在文档中出现的次数小于5,那么就会丢弃; workers:是训练的进程数(需要更精准的解释,请指正),默认是当前运行机器的处理器核数。这些参数先记住就可以了。sg ({0, 1}, optional) – 模型的训练算法: 1: skip-gram; 0: CBOWalpha (float, optional) – 初始学习率 iter (int, optional) – 迭代次数,默认为5"""lineSentence = LineSentence(inp, max_sentence_length=10000)model = Word2Vec(lineSentence, size=100, window=5, min_count=5, workers=multiprocessing.cpu_count())model.save(outp1)model.wv.save_word2vec_format(outp2, binary=False)

4 使用模型,查看训练向量的结果

# coding:utf-8
import gensim
model = gensim.models.Word2Vec.load("wiki.zh.text.model")
count = 0
for word in model.wv.index2word:count += 1if count == 20:print(word, model[word])break
result = model.most_similar(u"分词")
for e in result:print(e)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/635611.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

phpStorm 设置终端为git bash

环境&#xff1a; windows , PhpStorm 2022 为自己的终端配置git样式的使用&#xff0c; 默认终端样式 一、打开设置&#xff0c;选择git bin 二、重新打开终端 不加--login -i 的终端 加了--login -i 的终端 最重要的一点是什么&#xff0c;他可以像mac一样支持 ctrlv 复…

【Vue3+Ts项目】硅谷甄选 — 菜单权限+按钮权限

一、菜单权限 1.1 路由拆分 将项目路由拆分为&#xff1a; 静态路由&#xff1a;login、404、home、screen异步路由&#xff1a;权限管理&#xff08;包含三个子路由&#xff09;、商品管理&#xff08;包含四个子路由&#xff09;任意路由&#xff1a;任意路由 src/router/r…

「优选算法刷题」:有效三角形的个数

一、题目 给定一个包含非负整数的数组 nums &#xff0c;返回其中可以组成三角形三条边的三元组个数。 示例 1: 输入: nums [2,2,3,4] 输出: 3 解释:有效的组合是: 2,3,4 (使用第一个 2) 2,3,4 (使用第二个 2) 2,2,3示例 2: 输入: nums [4,2,3,4] 输出: 4二、思路解析 这道…

扎克伯格宣布将购买35万个GPU

Meta公司马克.扎克伯格1月18日在Instagram上发表文章称&#xff0c;该公司正在加强人工智能研究团队的力量&#xff0c;并在充实AI基础设施“弹药库“&#xff0c;计划在今年年底前向芯片设计商英伟达购买35万个H100 GPU芯片&#xff0c;从而使该公司的GPU总量达到约60万个&…

迪菲赫尔曼密钥交换详细介绍

由于这个问题涉及到一个“原根”的概念&#xff0c;首先先简单介绍一下原根是什么&#xff1a; 原根是数论中的一个概念&#xff0c;它在模运算中具有特殊性质。假设有一个正整数m和另一个整数a&#xff0c;如果a与m互质&#xff08;即它们的最大公约数为1&#xff09;&#x…

利用预训练模型SKEP进行情感分析

项目地址&#xff1a;文本情感分析 - 飞桨AI Studio星河社区 (baidu.com) baidu/Senta: Baidus open-source Sentiment Analysis System. (github.com) 本项目将详细全面介绍情感分析任务的两种子任务&#xff0c;句子级情感分析和目标级情感分析。 同时演示如何使用情感分析…

线性规划案例分享

今天想写一个最优传输的简单实现&#xff0c;结果学歪了&#xff0c;学到线性规划去了&#xff0c;这里我发现了一个宝藏网站 虽然是讲计量经济的&#xff0c;但是里面提供的公式和代码我很喜欢&#xff0c;有时间可以好好读一下 https://python.quantecon.org/lp_intro.html …

【Guava笔记01】Guava Cache本地缓存的常用操作方法

这篇文章,主要介绍Guava Cache本地缓存的常用操作方法。 目录 一、Guava Cache本地缓存 1.1、引入guava依赖 1.2、CacheBuilder类 1.3、Guava-Cache使用案例

如何一键部署本地Java项目到服务器上

一、背景 我开发了一个Java代码&#xff0c;现在想部署到服务器上&#xff0c;当然可以使用Jenkins部署&#xff0c;但是Jenkins配置和维护成本比较高&#xff0c;所以我今天分享的是轻量级的一键部署脚本 演示&#xff1a;本地Window的Java代码 -> Vmware虚拟机Centos7上…

面试题:RabbitMQ 有哪几种消息模式?

文章目录 前言核心组成Rabbitmq 消息模式3.1 Simple 模式ProductorCustomer 3.2 Fanout 模式ProductorCustomer 3.3 Direct 模式Productor 3.4 Topic 模式Productor 3.5 Work 模式3.5.1 轮询分发ProductorWorker1 3.5.2 公平分发Worker1 防止消息丢失机制4.1 消息确认4.2 持久化…

在WIN从零开始在QMUE上添加一块自己的开发板(一)

文章目录 一、前言二、源码编译&#xff08;一&#xff09;安装Msys2&#xff08;二&#xff09;配置GCC工具链&#xff08;三&#xff09;安装QEMU构建依赖&#xff08;四&#xff09;下载编译QEMU源码 二、QUME编程基础&#xff08;一&#xff09;QOM机制&#xff08;二&…

十种较流行的网络安全框架及特点分析

文章目录 前言一、CIS关键安全控制二、COBIT三、CSA云控制矩阵&#xff08;CCM&#xff09;四、NIST网络安全框架&#xff08;CSF&#xff09;五、TARA六、SOGP七、OCTAVE八、ISO / IEC 27001:2022九、HITRUST CSF十、PCI DSS 前言 网络安全框架主要包括安全控制框架&#xff…

LabVIEW振动筛螺栓松动故障诊断

LabVIEW振动筛螺栓松动故障诊断 概述&#xff1a;利用LabVIEW解决振动筛螺栓松动的故障诊断问题。通过集成的方法&#xff0c;不仅提高了故障检测的准确性&#xff0c;还优化了维护流程&#xff0c;为类似的机械设备故障提供了可靠的解决方案。 由于工作条件复杂&#xff0c;…

Linux系统安装NFS服务器

NFS是一种网络文件系统&#xff0c;英文全称Network File System&#xff0c;通过NFS可以让不同的主机系统之间共享文件或目录。通过NFS&#xff0c;用户可以直接在本地NFS客户端读写NFS服务端上的文件&#xff0c;是非常好的共享存储工具。本篇文章将介绍如何在CentOS7上安装N…

android 开发 W/TextToSpeech: speak failed: not bound to TTS engine

问题 笔者使用TTS(TextToSpeech)对于文本内容进行语音播报&#xff0c;控制台报错 android 开发 speak failed:not bound to TTS engine详细问题 笔者核心代码&#xff1a; import android.os.Bundle; import android.speech.tts.TextToSpeech; import android.speech.tts.…

git rev-parse v406 ‘v4.0.4‘^{} master什么意思?

git rev-parse 是一个 Git 命令&#xff0c;用于解析出 git 对象&#xff08;如分支、标签、提交等&#xff09;的完整 SHA-1 哈希值。这个命令对于理解 git 中各种引用的内部表示非常有用。 让我们一步步分析 git rev-parse v406 v4.0.4^{} master 这条命令&#xff1a; v406…

[嵌入式软件][入门篇][仿真平台] STM32F103实现LED、按键

上一篇&#xff1a;[嵌入式软件][入门篇] 搭建在线仿真平台(STM32) 文章目录 一、点亮LED灯(1) 简介(2) 示例代码(3) 仿真效果&#xff08;闪烁&#xff09; 二、按键检测(1) 简介1. 按键原理2. 检测按键端口3. 消抖 (2) 示例代码1 &#xff08;按下点亮&#xff0c;松开熄灭&a…

微信小程序海报插件Painter 2.0(canvas画图)使用并保存图片到相册案例

一、下载与引入 Painter通过 json 数据形式&#xff0c;来进行动态渲染并绘制出图片。 Painter 的优势 功能全&#xff0c;支持文本、图片、矩形、qrcode 类型的 view 绘制布局全&#xff0c;支持多种布局方式&#xff0c;如 align&#xff08;对齐方式&#xff09;、rotate&…

一个简单的Web程序(详解创建一个Flask项目后自带的一个简单的Web程序)

程序代码截图如下&#xff1a; 1.应用初始化 在创建 Flask 程序时&#xff0c;通常需要先创建一个应用实例进行应用初始化。 from flask import Flask # 应用的初始化 app Flask(__name__) 上述代码中&#xff0c;使用 Flask 类创建了一个应用实例 app。 __name__ 参数用…

理解 Stable Diffusion、模型检查点(ckpt)和变分自编码器(VAE)

前言 在探索深度学习和人工智能领域的旅途中&#xff0c;理解Stable Diffusion、模型检查点(ckpt)以及变分自编码器(VAE)之间的关系至关重要。这些组件共同构成了当下一些最先进图像生成系统的基础。本文将为初学者提供一个详细的概述&#xff0c;帮助您理解这些概念以及它们是…