Word2Vec模型的引入介绍与相关概念

一 、Word2Vec模型的背景引入

1.1 One-hot模型

One-hot模型是是用N位的状态寄存器对N个状态进行编码
在这里插入图片描述
如下所示,是有4个样本,每个样本都有三个特征,特征1表示当前样本的性别。

我们喂给算法怎么样的数据,算法就会给我们一个怎么样的结果。

假设如果用1表示女性,2表示男性。那么将相当于还没有进行算法的计算的时候,已经有数据的倾向性,间接认为男性比女性重要。如果我们用这种带着偏见的数据,喂给模型,那么模型也会认为男性比女性重要。所以这样的数据会很大因素影响最后的预测结果。这是我们不希望看到的。

所以我们就需要对这样的数据进行改进,让每个一个数据的重要性都一致。就可以进行One-Hot的编码。

N个寄存器,表示当前数据的N个状态,不同的位置表示不同的状态, 这样就表示数据之间的重要性是一致的,如下所示。
在这里插入图片描述
优缺点分析:
在这里插入图片描述
通过One-Hot 模型确实会,解决数据过于离散的问题,并且会扩充特征,但是同时也会带来维度灾难的问题。
在这里插入图片描述

1.2 One-Hot编码的手动实现

import numpy as np

samples = ['我 毕业 于 北京理工大学','我 就职 于 中国 研究院']
#构建字典索引
token_index = {}
for sample in samples:
    for word in sample.split():
        if word not in token_index:
            token_index[word] = len(token_index) + 1
print(token_index)
#对每个词进行编号


results = np.zeros(shape = (len(samples),len(token)+1,max(token_index.values()) +1 )

for i, sample in enumerate(samples):
    for j, word in list(enumerate(sample.split())):
        index = token_index.get(word)
        print(j,index,word)
        results[i,j,index] = 1

print(result)

fi_results = np.zeros(shape=(len(samples), max(token_index.values())+1))
for i, sample in enumerate(samples):
    for _,word in list(enumerate(sample.split())):
        index = token_index.get(word)
        fi_results[i,index] = 1

print(fi_results)

array([[[0., 1., 0., 0., 0., 0., 0.],
[0., 0., 1., 0., 0., 0., 0.],
[0., 0., 0., 1., 0., 0., 0.],
[0., 0., 0., 0., 1., 0., 0.],
[0., 0., 0., 0., 0., 0., 0.],
[0., 0., 0., 0., 0., 0., 0.],
[0., 0., 0., 0., 0., 0., 0.]],
[[0., 1., 0., 0., 0., 0., 0.],
[0., 0., 0., 0., 0., 1., 0.],
[0., 0., 0., 1., 0., 0., 0.],
[0., 0., 0., 0., 0., 0., 1.],
[0., 0., 0., 0., 0., 0., 0.],
[0., 0., 0., 0., 0., 0., 0.],
[0., 0., 0., 0., 0., 0., 0.]]])
array([[0., 1., 1., 1., 1., 0., 0.],
[0., 1., 0., 1., 0., 1., 1.]])

1.3 Keras中one-hot编码的实现

from keras.preprocessing.text import Tokenizer

samples = ['我 毕业 于 北京理工大学','我 就职 于 中科院']

#构建单词索引
tokenizer = Tokenizer()
tokenizer.fit_on_texts(samples)
word_index = tokenizer.word_index
print(word_index)
print(len(word_index))

sequences = tokenizer.texts_to_sequences(samples)
print(sequences)

#直接构建one-hot
one_hot_results = tokenizer.texts_to_matrix(samples)
print(one_hot_results)

[[ 0. 1. 1. 1. 1. 0. 0.]
[ 0. 1. 1. 0. 0. 1. 1.]]

2. Word2vec的相关概念与知识

2.1 Word2vec介绍

Word2Vec的作者的相关文章

在这里插入图片描述

我们希望引入一个模型,能后减小表示每个词的维度,并且可以将每个词的相互的关系也能表达出来。

就引入了词向量,把所以的词放在一个向量空间当中。
在这里插入图片描述
将每个词从一个非常稀疏的向量空间,嵌入到一个向量空间,这个过程就是词嵌入的过程。
在这里插入图片描述
Word2Vec的注意点

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

2.2 Sigmoid函数与Softmax函数

Sigmoid函数

将取值范围映射到0,1区间的一个功能函数
在这里插入图片描述
定义域和值域
在这里插入图片描述

Softmax函数

实现将向量中所以的元素归一化为一个概率分布,向量中所有的元素取值范围在0,1,之间,且或有元素的和为1,相当与一个归一化。
在这里插入图片描述

2.3 二叉树相关概念

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
树1,按层次编号5结点没有左子树,有右子树,10结点缺失。树2由于3结点没有字数,是的6,7位置空挡了。树3中结点5没有子树。

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

2.4 哈夫曼树Huffman

路径长度就是,从根结点往下走的路径长值

结点的权,是指的是给结点赋予一个权重

带权路径长度是指的是从路径长度与节点的权的乘积之和。

哈夫曼树就是帯权路径长度最小的二叉树
在这里插入图片描述
哈夫曼树的构建过程,即为要选中权重最小的两个节点,将这两个节点进行合并,逐步重下向上何必,最终只剩下一棵树。
构建出来的哈夫曼二叉树,权重值越大的离根节点,越近,权重值越小,就离根节点越远。

2.5 哈夫曼编码

在信息通信领域哈夫曼编码的使用

等长编码,对于哪些不经常使用的字符,就会造成浪费,所以需要一个不等长的编码,进行优化整个流程。
在这里插入图片描述
将每个字符的出现频率作权重,将编码问题转为哈夫曼树问题。
在这里插入图片描述

文本领域的哈夫曼编码

在这里插入图片描述

通过映射可以发现,词之间 相互关系,词之间可以进行相互的计算。
在这里插入图片描述
在这里插入图片描述

3. 生成词向量的两种方式

Word2Vec的模型架构包括3个部分,one-hot输入层,中间的隐藏层,softmax输出层。

中间的隐藏层,没有激活函数,只是全连接的结构。

通过正向传播和反向传播,最终需要保留前面的输入的向量和隐藏层的参数。
在这里插入图片描述
通过原有的one—hot形式,通过隐藏层的计算,最后得到的是当前词向量。
在这里插入图片描述

模型的输入和输出

在这里插入图片描述
在这里插入图片描述
两者的比较,CBOW在小的数据库中比较合适,Skip—Gram在大型的语料中比较合适。

CBOW,相当于四个学生被一个老师带,学习的效果比不过 Skip—gram(一个学生四个老师带)
在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

学习笔记——IP地址网络协议——网络层(IP)协议

一、网络层(IP)协议 网络层(被称为IP层)但网络层协议并不只是IP协议,还包括ICMP(Internet Control Message Protocol)协议、IPX(Internet Packet Exchange)协议等。 1、IP协议 IP(Internet Protocol)本身是一个协议文件的名称,该协议文件的内容非常少&…

使用python统计word文档页数

使用python统计word文档页数 介绍效果代码 介绍 使用python统计word文档的页数 效果 代码 import os import comtypes.clientdef get_word_page_count(docx_path):try:# Initialize the COM objectword comtypes.client.CreateObject(Word.Application)word.Visible False…

【Qt】探索Qt绘图世界:自定义控件与视觉效果的全面指南

文章目录 前言:1. 绘图基本概念2. 绘制各种形状3. 绘制文字(显示文字)、设置画笔4. 画刷5. 绘制图片6. 特殊的绘图设备总结: 前言: 在软件开发中,图形用户界面(GUI)的设计是至关重要…

【面试题】CAP理论、BASE理论及其注册中心选型

1.CAP理论 CAP:指的是在一个分布式系统中,Consistency(一致性)、Availability(可用性)、Partition Tolerance(分区容错性),三者不可同时获得 一致性(C&#x…

成功解决“IndexError: pop index out of range”错误的全面指南

成功解决“IndexError: pop index out of range”错误的全面指南 引言 在Python编程中,处理列表(list)、双端队列(deque)或其他可迭代对象时,我们经常使用pop()方法来移除并返回指定索引处的元素。然而&am…

图解 Python 编程(10) | 错误与异常处理

🌞欢迎来到Python的世界 🌈博客主页:卿云阁 💌欢迎关注🎉点赞👍收藏⭐️留言📝 🌟本文由卿云阁原创! 📆首发时间:🌹2024年6月2日&…

图解 IPv6 地址范围

1、 IPv6 多播地址范围 2、1 - 接口本地<2 - 链路本地<5 - 站点本地<8 - 组织本地<E - 全局 3、Well-Known Multicast Addresses

TiDB-从0到1-部署篇

TiDB从0到1系列 TiDB-从0到1-体系结构TiDB-从0到1-分布式存储TiDB-从0到1-分布式事务TiDB-从0到1-MVCCTiDB-从0到1-部署篇 一、TiUP TiUP是TiDB4.0版本引入的集群运维工具,通过TiUP可以进行TiDB的日常运维工作,包括部署、启动、关闭、销毁、弹性扩缩容…

U-boot、linux内核、根文件系统移植以及程序

终于这几天把这个移植的流程过了一遍,所以特此回来总结。 U-boot移植 首先是U-boot移植。Linux 系统要启动就必须需要一个 bootloader 程序,也就说芯片上电以后先运行一段bootloader 程序。这段bootloader程序会先初始化DDR等外设,然后将Li…

linux sed命令替换文件端口

1、需求描述&#xff1a;因sed -i ‘s/旧端口/新端口/g’ 文件&#xff0c;替换会直接增加端口导致端口直接追加后面&#xff0c;因此需要修改 要求&#xff1a;2300替换为23003&#xff0c;23001替换为23004 <value>192.168.1.133</value></constructor-arg>…

【学习Day4】计算机基础

✍&#x1f3fb;记录学习过程中的输出&#xff0c;坚持每天学习一点点~ ❤️希望能给大家提供帮助~欢迎点赞&#x1f44d;&#x1f3fb;收藏⭐评论✍&#x1f3fb;指点&#x1f64f; ❤️学习和复习的过程是愉快嘚。 1.7.3 流水线 流水线&#xff08;pipeline&#xff09;技术…

考研数学考到110+分,到底有多难?

很难&#xff01; 大家平时在网上上看到很多人说自己考了130&#xff0c;其实这些人只占参加考研数学人数的极少部分&#xff0c;有个数据可以展示出来考研数学到底有多难&#xff1a; 在几百万考研大军中&#xff0c;能考到120分以上的考生只有2%。绝大多数人的分数集中在30…

数字经济中的哪些行业或领域最依赖云服务器?

数字经济是互联网发展的产物&#xff0c;近几年随着网络发展&#xff0c;有好些个行业或领域那可真是对云服务器“爱得深沉” 以电子商务为例&#xff0c;典型的如亚马逊、阿里巴巴等电商巨头&#xff0c;它们所面对的是海量且繁杂的商品信息&#xff0c;涵盖从商品的详细规格…

01 - 嵌入式之软件的安装

1 - 首先我们需要安装keil5软件&#xff0c;我们可以在官网找到进行下载~ ![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/29f87fa21a4744af9ce288a1bc607c20.png)2 - 下载后就得到如下这个exe文件&#xff1a; 3 - 右击管理员运行 4 - 安装步骤 安装的过程…

浏览器运行原理:网页被解析过程、script元素和页面解析的关系、defer和async使用;V8引擎执行原理(执行js)

一、浏览器渲染页面的流程 1.如何找到服务器 2.找到服务器如何下载对应的静态资源 输入完服务器地址&#xff0c;下载下来的一般是html文件&#xff0c;在解析html文件过程中&#xff0c;遇到link引用了css文件&#xff0c;就下载对应的css文件&#xff0c;js文件同理 3.一个…

飞书API(11):阿里云MaxCompute分区表入库

一、引入 前面入库阿里云 MaxCompute 的数据都是读取之后直接写入&#xff0c;保留数据最新的状态&#xff0c;如果我要保留历史的状态&#xff0c;怎么办呢&#xff1f;MaxCompute 表有一个分区功能&#xff0c;可以自行定义分区。我们可以使用 MaxCompute 表的分区功能&…

01背包变式例题

传送门——P2370 yyy2015c01 的 U 盘 题解&#xff1a;题目意思很好理解&#xff0c;就是说&#xff0c;当能够达到预期的U盘的最小接口&#xff08;接口越大&#xff0c;能传递的文件越大&#xff09;&#xff0c;然后我们就需要先看题目了&#xff0c;有n个文件&#xff0c;每…

Spring 中如何控制 Bean 的加载顺序?

如果你脱口而出说添加 Order 注解或者是实现 Ordered 接口&#xff0c;那么恭喜&#xff0c;你掉坑了。 一 Order 注解和 Ordered 接口 在 Spring 框架中&#xff0c;Order 是一个非常实用的元注解&#xff0c;它位于 spring-core 包下&#xff0c;主要用于控制某些特定上下文…

适合技术小白学习的项目1863java在线视频网站系统 Myeclipse开发mysql数据库web结构java编程计算机网页项目

一、源码特点 java在线视频网站系统 是一套完善的web设计系统&#xff0c;对理解JSP java编程开发语言有帮助采用了java设计&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统采用web模式&#xff0c;系统主要采用B/S模式开发。 开发环境为TOMCAT7.0,Myeclipse8.5开发…

简单、免费、强大的高效率截图工具神器——Snipaste(下载安装+常用快捷键教学)

一、简介 Snipaste是一款功能强大的截图和贴图工具&#xff0c;它允许用户快速截取屏幕上的任意区域&#xff0c;并将截图以浮窗形式显示在屏幕上。用户可以自由调整浮窗的位置和大小&#xff0c;甚至将浮窗设置为半透明&#xff0c;以便在查看屏幕内容时不会遮挡视线。此外&a…