【NLP实战】tensorflow词向量训练实战

自然语言处理 | (20) 中文词向量训练 完整代码 目录 1.基于gensim的中文文本词向量训练与相似度匹配 2. Tensorflow训练中文词向量 3.中文词向量可视化 1.基于gensim的中文文本词向量训练与相似度匹配 导入必要的包 #! pip install gensim #安装gensim from gensim.test.utils import common_texts,get_tmpfile from ... 阅读详情

实战是学习一门技术最好的方式,也是深入了解一门技术唯一的方式。因此,NLP专栏计划推出一个实战专栏,让有兴趣的同学在看文章之余也可以自己动手试一试。

本篇介绍自然语言处理中最基础的词向量的训练。

作者&编辑 | 小Dream哥

1 语料准备 

用于词向量训练的语料应该是已经分好词的语料,如下所示:

640?wx_fmt=png

2 词向量训练

(1) 读取语料数据

读取数据的过程很简单,就是从压缩文件中读取上面显示的语料,得到一个列表。

def read_data(filename):

(2) 根据语料,构建字典

构建字典几乎是所有NLP任务所必须的步骤。

def build_dataset(words):

(vocabulary_size - 1))

     dictionary = dict()

(3) 根据语料,获取一个batch的数据

这里需要解释一下,此次词向量的训练,采用的是skip gram的方式,即通过一个词,预测该词附近的词。generate_batch函数中,skip_window表示取该词左边或右边多少个词,num_skips表示总共取多少个词。最后生成的batch数据,batch是num_skips*batch_size个词,label是中间的batch_size个词。

def generate_batch(batch_size, num_skips, skip_window):

(4) 用tensforslow训练词向量

首先,构造tensorflow运算图,主要包括以下几个步骤:

1.用palceholder先给训练数据占坑;

2.初始化词向量表,是一个|V|*embedding_size的矩阵,目标就是优化这个矩阵;

3.初始化权重;

4.构建损失函数,这里用NCE构建;

5.构建优化器;

6.构建变量初始化器

graph = tf.Graph()   # input data# operations and variables# construct the variables for the NCE loss

      nce_biases = tf.Variable(tf.zeros([vocabulary_size]))

     ncs_loss_test=tf.nn.nce_loss(weights=nce_weights, biases=nce_biases,labels=train_labels, inputs=embed, num_sampled=num_sampled, num_classes=vocabulary_size)    

     loss = tf.reduce_mean(tf.nn.nce_loss(weights=nce_weights, biases=nce_biases, labels=train_labels, inputs=embed, num_sampled=num_sampled, num_classes=vocabulary_size))   # construct the SGD optimizer using a learning rate of 1.0 # compute the cosine similarity between minibatch examples and all embeddings

   # add variable initializer

然后,开始训练词向量:

num_steps = 1000 # we must initialize all variables before using them# loop through all training steps and keep track of loss  # generate a minibatch of training data # we perform a single update step by evaluating the optimizer operation (including it

(5) 保存词向量

将训练好的词向量写到文件中备用。

final_embeddings = normalized_embeddings.eval()

最后,我们将词向量写到了vector.txt里面,得到了一份很大的词向量表,我们看看它长成什么样子:

640?wx_fmt=png

可以看到,词向量就是将每个中文词用一个向量来表示,整个词表及其词向量构成了这份词向量表。

这里留一个作业,读者可以自己试一下,从表中读取出来几个词的向量,计算出来他们的相似度,看训练出来的词向量质量如何。

至此本文介绍了如何利用tensorflow平台自己写代码,训练一份自己想要的词向量,代码在我们有三AI的github可以

https://github.com/longpeng2008/yousan.ai/tree/master/natural_language_processing

找到word2vec文件夹,执行python3 w2v_skip_gram.py就可以运行,训练词向量了。

总结

这里讲述了词向量的具体训练过程,相关的原理在我之前的系列文章里有详细的讲述,感兴趣的同学可以好好看一下:

词向量是NLP开始迈进“现代化”的关键,是各种面试必问的基础,需重视。

我们也会在知识星球讨论代码的具体实现和优化,感兴趣扫描下面的二维码了解。

读者们可以留言,或者加入我们的NLP群进行讨论。感兴趣的同学可以微信搜索jen104,备注"加入有三AI NLP群"。

下期预告:贝叶斯文本分类介绍

知识星球推荐

640?wx_fmt=png

扫描上面的二维码,就可以加入我们的星球,助你成长为一名合格的自然语言处理算法工程师。

知识星球主要有以下内容:

(1) 聊天机器人。考虑到聊天机器人是一个非常复杂的NLP应用场景,几乎涵盖了所有的NLP任务及应用。所以小Dream哥计划以聊天机器人作为切入点,通过介绍聊天机器人的原理和实践,逐步系统的更新到大部分NLP的知识,会包括语义匹配,文本分类,意图识别,语义匹配命名实体识别、对话管理以及分词等。

(2) 知识图谱。知识图谱对于NLP各项任务效果好坏的重要性,就好比基础知识对于一个学生成绩好坏的重要性。他是NLP最重要的基础设施,目前各大公司都在着力打造知识图谱,作为一个NLP工程师,必须要熟悉和了解他。

(3) NLP预训练模型。基于海量数据,进行超大规模网络的无监督预训练。具体的任务再通过少量的样本进行Fine-Tune。这样模式是目前NLP领域最火热的模式,很有可能引领NLP进入一个全新发展高度。你怎么不深入的了解?

转载文章请后台联系

侵权必究

640?wx_fmt=png
640?wx_fmt=png
640?wx_fmt=png

往期精选

深度学习中文NLP任务实战(二):使用训练好的词向量 开篇 先放上我参考的一篇博客 tensorflow 使用预训练词向量 embedding层 我们使用预训练的词向量,最主要的目的就是为了生成embedding层的w W = tf.Variable(tf.constant(0.0, shape=[vocab_size, embedding_dim]), trainable=False, name="W"... 阅读详情

相关推荐

博客目录管理 :机器学习 深度学习 nlp

基于bert的知识库问答 使用pytorch 和gpu https://blog.youkuaiyun.com/qq_38735017/article/details/114919836?spm=1001.2014.3001.5501 显存 参数说明:nvidia-smi 参数说明 https://blog.youkuaiyun.com/qq_38735017/article/details/114886990?spm=1001.2014.3001.5501 py 基础 https://blog.youkuaiyun.com/..

3152

如何训练一个词向量

现在在NLP领域,词向量是一切自然语言处理的基础,有了词向量我们就可以进行数据分析,文本聚类分类的一系列操作了。接下来我们就开始学习如何训练词向量,之前我们有介绍关于 word2vec 的博文 word2vec算法理解和数学推导,这篇博文我们就一起来学习如何实现词向量的训练。 首先我们运用的语料是我之前爬取的京东小米9的好评,训练一个关于手机类的词向量。数据如下所示: 首先我们需要给数据进行分词...

深圳湾刘能的博客 3584

VMware vCenter 6.7证书过期急救指南:从503报错到完美修复的全流程

本文详细解析了VMware vCenter 6.7因STS证书过期导致503报错的根本原因,并提供了一套从诊断到修复的完整实战流程。内容包括使用checksts.py脚本检测STS证书状态,通过fixsts.sh脚本更新证书,以及利用Certificate-Manager全面重置所有过期证书,帮助管理员快速恢复服务并避免常见陷阱。

weixin_29234239的博客 773

详解nlp预训练词向量(上)——从word2vec到ELMO

长话短说 Bert具备广泛的通用性,就是说绝大部分NLP任务都可以采用类似的两阶段模式直接去提升效果。客观的说,把Bert当做最近两年NLP重大进展的集大成者更符合事实。 串起来这个故事的脉络就是自然语言的预训练过程,但是落脚点还是在Bert身上。要讲自然语言的预训练,得先从图像领域的预训练说起。 图像领域的预训练 预训练在图像领域的应用 1.训练数据小,不足以训练复杂网络 2.加快训...

咕噜咕噜 2739

STM32驱动LED矩阵:IS31FL3731与查理复用技术实践

LED矩阵显示是嵌入式系统中常见的人机交互方式,其核心在于高效的驱动技术。查理复用(Charlieplexing)作为一种创新的矩阵扫描方式,通过引脚复用技术,用N个引脚驱动N²-N个LED,大幅提升了硬件资源利用率。IS31FL3731驱动芯片集成了这一技术,配合STM32F410RB微控制器的强大性能,可实现144个LED的精准控制。这种组合在艺术装置、信息展示等场景中展现出独特优势,既能呈现丰富的视觉效果,又能通过内置PWM调光实现256级亮度控制。通过I2C接口通信,开发者可以轻松实现字符显示、图像

weixin_29193359的博客 280

伪傻瓜式安装sql server2008【附带安装包】

安装各式各样的软件无疑是学习过程中…较…为烦躁的一部分 木有醋 但还是开始吧 为什么这是伪呢? 因为刚开始天真无邪的我真的是傻瓜式安装(迷之自信),结果就B了(打开配置管理器的瞬间….一片空白) BaiduCloud分享 红领巾在何方?? Link链接:https://pan.baidu.com/s/1NZCxP0Y27dBPrgHoRWLDyQ...

EuniBoom的博客 6万+

深度学习与自然语言处理教程(2) - GloVe及词向量的训练与评估(NLP通关指南·完结)

本文介绍GloVe词向量、词向量内部与外部评估方法、类比任务中的词向量训练超参数影响、相关度评估任务中词向量与人工表现差异、基于上下文处理一词多义问题和窗分类。

ShowMeAI研究中心 1万+

卡尔曼滤波与目标追踪

卡尔曼滤波与目标追踪为什么要学卡尔曼滤波?卡尔曼滤波是什么?一些概率论的知识基础卡尔曼滤波完整推导状态估计计算卡尔曼增益预测和更新 卡尔曼滤波部分我打算分三节(三次博客的内容): 卡尔曼滤波与行人状态估计 扩展卡尔曼滤波(EKF)与传感器融合 过程模型,无损卡尔曼滤波(UKF)与车辆状态轨迹 为什么要学卡尔曼滤波? 卡尔曼滤波以及其扩展算法能够应用于目标状态估计,如果这个目标是行人,那么就是行人状态估计(或者说行人追踪),如果这个目标是自身,那么就是车辆自身的追踪(结合一些地图的先验,GPS等数据的话就

qq_43232556的博客 4176

NLP中文词向量训练:word2vec(Negative Sampling)

一.基于Hierarchical Softmax的word2vec模型的缺点 Hierarchical Softmax ,使用霍夫曼树结构代替了传统的神经网络,可以提高模型训练的效率。但是如果基于Hierarchical Softmax的模型中所以词的位置是基于词频放置的霍夫曼树结构,词频越高的词在离根节点越近的叶子节点,词频越低的词在离根节点越远的叶子节点。也就是说当该模型在训练到生僻词时,需...

jiaojiaolou的博客 1427

Python自动化车载测试:5分钟搞定CANoe COM接口调用(附完整代码)

本文详细介绍了如何使用Python快速实现CANoe COM接口调用,完成车载测试自动化。通过实战案例展示ECU信号测试框架搭建,包括环境配置、核心架构解析、信号读写封装及多线程安全方案,帮助开发者5分钟内掌握高效测试技巧。

vv45678的博客 1135

Unity Shader实战:用Matcap给你的低模角色快速换上‘次世代’材质(附完整Shader代码)

本文详细介绍了Unity中Matcap技术的实战应用,通过Shader代码实现低模角色的次世代材质表现。Matcap技术利用预烘焙光照贴图,显著提升材质质感同时保持极低性能消耗,特别适合移动游戏和独立开发。文章包含完整Shader代码、平面模型着色优化方案及动态环境反射增强技巧,帮助开发者快速提升低模视觉效果。

weixin_28718755的博客 385

如何快速掌握TensorFlow文本处理:NLP数据预处理完整教程

TensorFlow-Course是一个提供简单易用TensorFlow教程的开源项目,专为机器学习和深度学习初学者设计。无论你是想入门人工智能还是希望提升TensorFlow技能,这个项目都能为你提供实用的学习资源。本文将重点介绍TensorFlow在自然语言处理(NLP)中的文本处理技术,帮助你快速掌握数据预处理的核心方法。📚 ## 🔍 为什么需要专业的TensorFlow文本处理?

gitblog_00379的博客 793

硬件设计--DC/DC电源芯片详解

本文参考:http://www.elecfans.com/article/83/116/2018/20180207631874.html https://blog.youkuaiyun.com/wangdapao12138/article/details/79763343 第一次写博客,不喜勿喷,谢谢!!! DC/DC电源指直流转换为直流的电源,从这个定义上看,LDO(低压差线性稳压器)芯片也应该属于D...

weixin_30794499的博客 7877

NLP核心知识体系:从词向量到Transformer的演进与实战指南

自然语言处理(NLP)作为人工智能的关键分支,其核心在于如何让计算机理解和生成人类语言。从早期的符号表示方法,如词袋模型和TF-IDF,到革命性的分布式表示学习,如Word2Vec和GloVe词向量,NLP实现了从离散符号到连续语义空间的跨越。这一演进解决了传统方法无法捕捉语义关联和词序信息的局限。其技术价值在于为后续复杂的序列建模任务提供了高质量的语义表示基础。在工程实践中,预训练词向量常作为模型初始化的标准操作,能有效提升下游任务的性能。随着注意力机制和Transformer架构的出现,NLP进入了预训

weixin_30247781的博客 459

【技能】OpenClaw Skills学习及手搓一个极简skill

本文介绍了OpenClaw Skills的基础概念与使用方法。Skills是OpenClaw代理使用工具的核心载体,通过SKILL.md文件定义技能属性和执行方式。技能加载遵循"工作区>本地>内置>自定义目录"的优先级规则。用户可通过ClawHub一键安装现成技能,也可自定义开发技能:创建技能目录,编写包含YAML元数据和执行指令的SKILL.md文件,放置于工作区skills目录进行测试。文章还介绍了多代理场景下的技能共享、插件集成以及安全注意事项,包括沙箱使用和敏感

海兰 3977

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

【NLP】word2vec词向量模型训练——基于tensorflow

前言   维基百科中文数据训练word2vec词向量模型——基于gensim库   上文我们使用了 gensim 库中的 Word2vec 模块训练词向量模型,现在我们来用 tensorflow 自己手写代码来训练模型。主要步骤大体如下: 数据准备(此部分可参考基于 gensim 库的那个,我们使用相同的数据集) tensorflow 训练模型的构建、训练(图的构建、初始化操作、会话开启、训练模...

Daycym的博客 2932

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

【TensorFlow深度学习】预训练词向量在NLP任务中的应用与价值

预训练词向量不仅是一门技术,更是NLP进步的推手,它以简洁的方式蕴含了语言的复杂性,为机器理解人类语言开辟了新的道路。随着BERT等更高级预训练模型的出现,词向量的潜能还在不断被挖掘,预示着NLP的未来充满无限可能。实践是检验真理的标准,通过本文的代码示例,希望你能亲身体验预训练词向量的魔力,开启属于你的NLP探索之旅。

沐风—云端行者 1448

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

TensorFlow与NLP(词向量:skip-gram)

开篇 前面已经讲了两种表示文本特征的向量化方法了,到这里也可以进入我们的词向量了,词向量是近几年来NLP领域最重要的研究成果之一,我们现在再看一些基本的NLP任务也基本上再也离不开词向量的身影,今天我们就用代码的层面来看看它到底是什么? word2vec...

Ding_xiaofei的博客 3866

tensorflow : 使用预训练词向量

目前使用深度网络进行文本任务模型训练时,第一步应该是将文本转为词向量进行处理。但一般词向量的效果跟语料的大小有关,而处理任务的语料不足支持我们的实验,这时就需要使用网上公开的大规模语料训练词向量。 1、下载 网上公开的词向量下载地址:https://github.com/xgli/word2vec-api glove的文件说明如何使用预训练词向量,文件格式如下:每行为一个单词和其对应的词

xgli的博客 3万+

NLP学习(十三)-NLP实战之LSTM三分类文本情感分析-tensorflow2+Python3

背景介绍 文本情感分析作为NLP的常见任务,具有很高的实际应用价值。本文将采用LSTM模型,训练一个能够识别文本postive, neutral, negative三种情感的分类器。 本文的目的是快速熟悉LSTM做情感分析任务,所以本文提到的只是一个baseline,并在最后分析了其优劣。对于真正的文本情感分析,在本文提到的模型之上,还可以做很多工作,以后有空的话,笔者可以再做优化。 理论介绍 RNN应用场景 RNN相对于传统的神经网络,它允许我们对向量序列进行操作:输入序列、输出序列、或大部分的输入输出序

qq_30868737的博客 1万+

【机器学习】用 TensorFlow 实现词向量训练全流程

在自然语言处理(NLP)的世界里,词向量是连接离散文本与连续数值计算的桥梁。Word2Vec 作为经典的词向量生成模型,以其简洁高效的特点至今仍被广泛应用。本文将基于 TensorFlow,从数据预处理到模型训练、评估,从零实现一个完整的 Word2Vec 模型。

L10131的博客 905

tensorflow使用预训练词向量

目前使用深度网络进行文本任务模型训练时,第一步应该是将文本转为词向量进行处理。但一般词向量的效果跟语料的大小有关,而处理任务的语料不足支持我们的实验,这时就需要使用网上公开的大规模语料训练词向量。1、下载网上公开的词向量下载地址:https://github.com/xgli/word2vec-api glove的文件说明如何使用预训练词向量,文件格式如下:每行为一个单词和其对应的词向量,以空格分...

fkyyly的专栏 6587

大模型书籍丨非常牛X的NLP书籍!自然语言处理+HuggingFace自然语言处理详解 (附PDF)

大模型书籍丨非常牛X的NLP书籍!自然语言处理+HuggingFace自然语言处理详解 (附PDF)

2301_81888214的博客 1982

TensorFlow自然语言处理教程:从基础到高级的NLP实践指南

这个TensorFlow NLP教程是由GitHub用户ukairia777创建的开源项目。它使用TensorFlow 2.0+框架,涵盖了从文本预处理到最新的深度学习模型的各种NLP任务。文本预处理基础词袋模型和TF-IDF词向量和词嵌入RNN和CNN文本分类序列标注Seq2Seq模型Transformer架构BERT、GPT-2等预训练语言模型主题建模文本摘要记忆网络大语言模型微调这个教程的一大特色是结合了理论讲解和代码实践。

Nifc666的博客 890

莫烦nlp——词向量—CBOW

由于不是第一次接触,本文只摘录莫烦关于词向量的观点。更多的关注代码。 上一次系统学习莫烦教程已经一年半了,时间过得太快了。 转载:https://mofanpy.com/tutorials/machine-learning/nlp/intro-w2v/ 自然语言处理 学会语言,往往是从学会词语的意思开始,将词组成话,才让语言有了意义。 计算机识别图片就是在这些图片背后的数字上寻找规律。那么在语言上怎样用数字表达呢? 答:计算机之所以能看懂字里行间的感情,理解文字,处理文字,并不是因为它理解的我们普罗万象的人

ronghwa_lu 1156

词向量之word2vec及Tensorflow实现

Word2Vec已经几乎成为NLP任务中,肯定会用到的模型,当然现在我们有了更新的Elmo和Bert,但是Word2Vec作为基本的词向量,仍然需要弄明白。 1. 词的Onehot表示: 当我们处理文本的时候,我们首先需要将这些文本进行表示,以前大家常用的就是onehot编码。首先对整个文档建立一个字典,每个字/词和索引一一对应。对于文档中的一句话,比如,“可爱的你喜欢吃面包。”。我们就可以根据词...

林夕 1635
上一篇: 【完结】16篇图像分类干货文章总结,从理论到实践全流程大盘点!
下一篇: 【NLP-ChatBot】搜索引擎的最终形态之问答系统(FAQ)详述
言有三
言有三 领域专家: 人工智能技术领域 领域专家: 人工智能技术领域
博客等级 码龄15年 3635粉丝 976原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

言有三

三人行必有AI

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值