【深度学习】最强算法之:Word2Vec

Word2Vec

  • 1、引言
  • 2、Word2Vec
    • 2.1 定义
    • 2.2 原理
    • 2.3 实现方式
    • 2.4 算法公式
    • 2.5 代码示例
  • 3、总结

1、引言

小屌丝:鱼哥, help ,help
小鱼: 你这是在鱼塘里面无法呼吸了?
小屌丝:… 别闹,鱼哥,
小鱼:你平时问我问题,可都是说中文的, 只有一种情况,说的事英文.
小屌丝:…这…这 … 唉
小鱼:所以,我说你在鱼塘里面…
小屌丝:唉~~ 可不能这么说, 我这是正儿八经的求助
小鱼:那你说说, 要问啥呢?
小屌丝:就是 ,Word
小鱼:啊? Word还问?
小屌丝: 我没说完呢, Word2Vec
小鱼:这整的,我还以为你问Word呢,Word2Vec咋了?
小屌丝:我不会啊
小鱼:不会就学啊
小屌丝:我这不向你请教了嘛
小鱼: 那…楼下的烟火味挺浓啊
小屌丝:啊… 好说好说, 我这就给老板娘打电话,留桌。
小鱼:这… 多不好意思啊。
在这里插入图片描述

2、Word2Vec

2.1 定义

Word2Vec 是一种用于学习词向量表示的自然语言处理(NLP)技术。其核心思想是将文本中的单词映射到高维空间中的向量,使得这些向量能够捕捉单词之间的语义和语法关系。

Word2Vec 的两种主要模型是 Skip-GramContinuous Bag of Words (CBOW)

2.2 原理

  • CBOW:连续词袋模型通过上下文(即周围的词)来预测当前词。其核心思想是通过上下文的词向量的平均值来预测当前词。

  • Skip-Gram:与CBOW相反,Skip-Gram模型通过当前词来预测上下文。这种方式在处理较小数据集时表现更好,尤其是在捕捉稀有词上。

这两种模型都是通过构建一个神经网络,并通过训练来优化网络权重,从而得到词向量
在这里插入图片描述

2.3 实现方式

Word2Vec的实现主要依赖于两种技术:负采样(Negative Sampling)和层序softmax(Hierarchical Softmax)。

  • 负采样通过随机选择少量的“负”样本来更新权重,以此加速训练过程;
  • 层序softmax则是通过构建一棵哈夫曼树来减少计算复杂度。

在这里插入图片描述

2.4 算法公式

Word2Vec算法的核心是最大化对数似然函数,对于Skip-Gram模型,目标函数可以表示为:

[ L ( θ ) = ∑ t = 1 T ∑ − c ≤ j ≤ c , j ≠ 0 log ⁡ p ( w t + j ∣ w t ; θ ) ] [L(\theta) = \sum_{t=1}^{T}\sum_{-c \leq j \leq c, j \neq 0} \log p(w_{t+j}|w_t;\theta)] [L(θ)=t=1Tcjc,j=0logp(wt+jwt;θ)]

其中, ( w t ) (w_t) (wt)是目标词, ( w t + j ) (w_{t+j}) (wt+j)是上下文词, ( c ) (c) (c)是上下文窗口大小, ( θ ) (\theta) (θ)是模型参数。

2.5 代码示例

# -*- coding:utf-8 -*-
# @Time   : 2024-05-07
# @Author : Carl_DJfrom gensim.models import Word2Vec
from nltk.tokenize import word_tokenize
from nltk.corpus import stopwords
import nltk
nltk.download('punkt')
nltk.download('stopwords')# 示例文本数据,实际应用中你可能会加载一个更大的文本数据集
texts = ["Word2Vec is a group of related models that are used to produce word embeddings.","These models are shallow, two-layer neural networks that are trained to reconstruct linguistic contexts of words.","Word2Vec takes as its input a large corpus of text and produces a vector space.","Each unique word in the corpus is assigned a corresponding vector in the space."]# 分词和去除停用词
stop_words = set(stopwords.words('english'))
sentences = []
for text in texts:words = [w for w in word_tokenize(text.lower()) if w.isalpha() and w not in stop_words]sentences.append(words)# 训练Word2Vec模型
model = Word2Vec(sentences, vector_size=100, window=5, min_count=1, workers=4)# 使用模型
# 寻找与'word2vec'最相似的词
similar_words = model.wv.most_similar('word2vec', topn=5)
print("与'word2vec'最相似的词有:")
for word, similarity in similar_words:print(f"{word}: {similarity}")# 获取某个词的词向量
word_vector = model.wv['embedding']
print("\n'embedding'的词向量:")
print(word_vector)# 计算两个词的相似度
similarity = model.wv.similarity('word2vec', 'embedding')
print(f"\n'word2vec'与'embedding'的相似度为:{similarity}")# 寻找不匹配的词
odd_word = model.wv.doesnt_match("word2vec neural corpus embedding".split())
print(f"\n在'word2vec', 'neural', 'corpus', 'embedding'中,不匹配的词是:{odd_word}")

代码解析

  • 首先下载了必要的nltk数据包,
  • 然后定义了一组文本数据作为输入。
  • 对每个文本进行了分词和去除停用词的预处理步骤,然后使用Word2Vec模型进行训练。
  • 模型训练完成后,使用这个模型来找到与某个词最相似的词、获取特定词的词向量、计算两个词之间的相似度以及寻找不匹配的词。

在这里插入图片描述

3、总结

Word2Vec是深度学习和自然语言处理领域的里程碑算法。

通过将词转换为向量,它能够有效地捕捉到词之间的语义关系,极大地推动了文本相关应用的发展,如情感分析、文本分类和机器翻译等。

尽管它已经有几年的历史,但Word2Vec仍然是自然语言处理领域非常重要的工具之一。

我是小鱼

  • CSDN 博客专家
  • 阿里云 专家博主
  • 51CTO博客专家
  • 企业认证金牌面试官
  • 多个名企认证&特邀讲师等
  • 名企签约职场面试培训、职场规划师
  • 多个国内主流技术社区的认证专家博主
  • 多款主流产品(阿里云等)测评一、二等奖获得者

关注小鱼,学习【机器学习】&【深度学习】领域的知识。

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

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

相关文章

Dread Hunger 海上狼人杀服务器开服教程

1、购买后登录服务器,百度莱卡云 1.1、第一次购买服务器会安装游戏端,大约5分钟左右,如果长时间处于安装状态请联系客服 2、创建端口 点击网络创建第二个端口作为副端口(副端口的作用是用于第二局游戏,因为游戏BUG&am…

Unity导出的webgl包在浏览器下报错:Unable to parse Build/导出的项目名称.framework.js.gz

先根据链接Unity WebGL项目打包后本地打开报错问题解决方法_unity 打包webgl报错:webassembly.instantiate()-CSDN博客文档操作一番后,在360极速里面兼容模式——黑屏如图: 极速模式:进度条走不满,在谷歌浏览器里面的红色报错文字不出现。 然后打开谷歌浏览器,报如下错:…

如何把握人力RPO的蓝海机遇?实战策略分享!

随着企业间竞争的日益激烈,人力资源管理的重要性愈发凸显。在众多人力资源管理策略中,招聘流程外包(RPO)作为一种新兴的服务模式,逐渐受到业界的关注。那么,人力RPO是否是蓝海项目?我们又该如何实施RPO呢? 一、人力RPO&#xff…

企业微信创建应用(一)

登录到企业微信后台管理(https://work.weixin.qq.com/)进入自建应用(应用管理-应用-创建应用) 3.查看参数AgentId和 Secret 4.企业微信查看效果

极氪速度:70亿市值登陆纽交所,这家纯电豪华品牌开启弹射模式

作者 |老缅 编辑 |德新 北京时间5月10日晚,极氪智能科技在美国纽交所挂牌上市,股票代码为「ZK」。 因获超额认购,极氪扩大了IPO规模,以每股21美元的价格累计发行2100万股美国存托股票(每份ADS 对应 10 份普通股&…

【人民网注册_登录安全分析报告】

前言 由于网站注册入口容易被黑客攻击,存在如下安全问题: 暴力破解密码,造成用户信息泄露短信盗刷的安全问题,影响业务及导致用户投诉带来经济损失,尤其是后付费客户,风险巨大,造成亏损无底洞 …

能聚合各站热点的DailyHot

什么是 DailyHot ? 今日热榜(DailyHot)是一个获取各大热门网站热门头条的聚合网站,能追踪全网热点、实现简单高效阅读。项目分为前、后端,其中后端提供了一个聚合热门数据的 API 接口。 🚩 后端 API 特性 极快响应&a…

中仕公考:应届生身份是怎样界定的?

应届毕业生指在应该毕业的年份即将毕业或者已经毕业学生,应届生参加公务员考试有更大的优势,部分岗位也只对应届生开放。 对应届毕业生的界定: 国家统一招生的高校毕业生离校时和在择业期内未落实工作单位,其户口、档案、组织关…

# 从浅入深 学习 SpringCloud 微服务架构(十七)--Spring Cloud config(2)

从浅入深 学习 SpringCloud 微服务架构(十七)–Spring Cloud config(2) 一、springcloudConfig 入门案例:搭建 config 服务端 1、登录 码云:https://gitee.com/ 1)点击右上角 【】 再点击【新…

Java | Leetcode Java题解之第73题矩阵置零

题目&#xff1a; 题解&#xff1a; class Solution {public void setZeroes(int[][] matrix) {int m matrix.length, n matrix[0].length;boolean flagCol0 false;for (int i 0; i < m; i) {if (matrix[i][0] 0) {flagCol0 true;}for (int j 1; j < n; j) {if (…

浮点数的由来及运算解析

数学是自然科学的皇后&#xff0c;计算机的设计初衷是科学计算。计算机的最基本功能是需要存储整数、实数&#xff0c;及对整数和实数进行算术四则运算。 但是在计算机从业者的眼中&#xff0c;我们知道的数学相关的基本数据类型通常是整型、浮点型、布尔型。整型又分为int8&a…

Kerberos修改协议为TCP

部署前 修改模板/home/cloud-setup/deploy-forklift/mids/forklift-basic/kde/v1.0/impl/plays/roles/krb5-client/templates/krb5.conf.j2 添加如下参数 udp_preference_limit 1 部署后 界面修改 添加如下参数&#xff0c;并勾选下发配置按钮&#xff0c;重启刷新服务

Linux防火墙iptalbes

1 iptalbes 1.1 概念 防火墙(Firewall)是一种隔离技术&#xff0c;用于安全管理与筛选的软件和硬件设备&#xff0c;使计算机内网和外网分开&#xff0c;可以防止外部网络用户以非法手段通过外部网络进入内部网络&#xff0c;保护内网免受外部非法用户的侵入。 1.2 SELinux …

pywinauto,一款Win自动化利器!

pywinauto&#xff0c;一款Win自动化利器&#xff01; 1.安装 pywinauto是一个用于自动化Python模块&#xff0c;适合Windows系统的软件&#xff08;GUI&#xff09;&#xff0c;可以通过Pywinauto遍历窗口&#xff08;对话框&#xff09;和窗口里的控件&#xff0c;也可以控…

前端动态旋转地球背景

效果图 贴下源码 <template><div class"map-bg"><div class"canvas" id"canvs"></div><canvas class"canvasxk" id"canv"></canvas></div> </template><script setup …

栈的实现与OJ括号匹配

今日备忘录: "不破不立. " 本文索引 1. 前言2. 顺序表与链表的区别3. 什么是栈4. 栈的实现5. OJ括号匹配6. 总结 1. 前言 人总是在坍塌中重建, 有些东西必须摧毁, 才能迎来新生, 不管是那些消耗你的人, 还是令你感到焦虑的事情, 还是一份你觉得毫无意义并且又不喜欢…

(车载)毫米波雷达信号处理中的恒虚警检测(CFAR)技术概述

说明 恒虚警检测(Constant False-Alarm Rate, CFAR)是雷达目标(信号)检测中很重要的一个概念&#xff0c;从事雷达相关科研或工程研发的或多或少应该都接触过。CFAR这项技术在工程实践上其实是比较简单的(至少在我了解的车载雷达领域)&#xff0c;不过这项技术也有很多可以深挖…

Ansys ACT的一个例子

由XML和IronPython文件组成&#xff0c;文件结构如下&#xff1a; ExtSample.xml <extension version"1" name"ExtSample1"><guid shortid"ExtSample1">2cc739d5-9011-400f-ab31-a59e36e5c595</guid><script src"sam…

10分钟了解Flink SQL使用

Flink 是一个流处理和批处理统一的大数据框架&#xff0c;专门为高吞吐量和低延迟而设计。开发者可以使用SQL进行流批统一处理&#xff0c;大大简化了数据处理的复杂性。本文将介绍Flink SQL的基本原理、使用方法、流批统一&#xff0c;并通过几个例子进行实践。 1、Flink SQL基…

【Linux】17. 进程间通信 --- 管道

1. 什么是进程间通信(进程间通信的目的) 数据传输&#xff1a;一个进程需要将它的数据发送给另一个进程 资源共享&#xff1a;多个进程之间共享同样的资源。 通知事件&#xff1a;一个进程需要向另一个或一组进程发送消息&#xff0c;通知它&#xff08;它们&#xff09;发生了…