【深度学习】最强算法之: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极速里面兼容模式——黑屏如图: 极速模式:进度条走不满,在谷歌浏览器里面的红色报错文字不出现。 然后打开谷歌浏览器,报如下错:…

Android 上传aar文件到maven仓库 失败问题

之前使用的是maven插件,导致自己的sdk 引用其他远程aar库,找不到类 后期换成maven-publish就解决了 apply plugin: maven-publishdef POM_VERSION 1.0.22 def POM_ARTIFACTID "downloadLibrary"//项目名称id def POM_GROUPID xxxx //项目…

蓝桥杯备战8.快乐的跳

P1152 欢乐的跳 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 刚开始看错题了&#xff0c;没看见要相邻的差 #include<bits/stdc.h> #define endl \n #define int long long using namespace std; const int N 2e710,M 1e310; int a[N],b[N]; signed main() {std::…

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

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

企业微信创建应用(一)

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

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

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

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

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

能聚合各站热点的DailyHot

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

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

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

bestvike--study7之进项目

自学 1.Ajax Ajax (Asynchronous JavaScript and XML) 是一种用于创建动态网页的技术。通过使用 HTML、JavaScript 与服务器端编程语言&#xff0c;Ajax 能够在不需要重新加载整个页面的情况下&#xff0c;更新网页的某部分内容。这使得网页能够更快地响应用户的操作&#xf…

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

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

一看就会,liunx中redis 启动并支持远程控制

API对接平台一键对接ChatGPT3.5/4.0&#xff0c;Claude3&#xff0c;文心一言等AI模型&#xff0c;无需翻墙&#xff0c;国外信用卡&#x1f449;AI模型聚合API-海鲸AI 要启动Redis服务并使其支持远程控制&#xff0c;您需要执行以下步骤&#xff1a; 启动Redis服务&#xff1a…

判断对象属性是否存在

前言&#xff1a;在项目的业务逻辑中&#xff0c;有些场景会用到对象属性是否存在的判断。那么就需要我们选择适合业务的判断逻辑。 1. obj.name 通过 obj.name 判断属性是否存在&#xff0c;有个缺陷&#xff0c;就是当属性为 "", undefined, null, 0 时&#xff0…

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;重启刷新服务

Dockerfile 实战题目1:基础Web服务器

实战题目1&#xff1a;基础Web服务器 任务描述 创建一个Docker镜像&#xff0c;该镜像基于官方的nginx镜像&#xff0c;将本地的一个名为my-website的目录挂载为容器内的/usr/share/nginx/html&#xff0c;用于托管静态网站内容。 学习目标 基础Dockerfile结构使用FROM指令继…

Linux防火墙iptalbes

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

【C++】std::queue 标准库队列的使用

在C中&#xff0c;std::queue 是一个模板类&#xff0c;它提供了队列这种数据结构的实现&#xff0c;遵循先进先出&#xff08;FIFO&#xff09;的原则。 1. 定义队列 根据要存储的数据类型&#xff0c;你可以定义不同类型的队列。例如&#xff0c;如果要存储整数&#xff0c…