Word2Vec的原理是什么,如何用训练Word2Vec

2023-09-14 17:40:54

Word2Vec是一种基于神经网络的词向量生成模型,通过训练预测上下文单词或中心单词来生成词向量。它包含两种不同的架构:跳字模型(Skip-gram)和连续词袋模型(Continuous Bag-of-Words, CBOW),它们在训练方式和结果表现上略有不同。

1跳字模型(Skip-gram):

在跳字模型中,模型的目标是根据中心单词预测周围的上下文单词。

例如,在句子"I enjoy playing football with my friends"中,对于中心单词"playing",跳字模型会尝试预测周围的上下文单词"enjoy"、"football"、"with"和"my"。
模型的输入是一个中心词向量,然后通过一个隐藏层来预测周围单词的概率分布。这个隐藏层通常称为投影层或投影矩阵。
使用反向传播算法,通过最大化词汇表中下一个单词的条件概率来更新模型参数,以优化模型的性能。

2连续词袋模型(CBOW):

在连续词袋模型中,模型的目标是根据上下文单词预测中心单词。例如,在句子"I enjoy playing football with my friends"中,对于上下文单词"enjoy"、"playing"、"with"和"friends",连续词袋模型会尝试预测中心单词"football"。
模型的输入是上下文词向量的平均值,然后通过一个隐藏层来预测中心单词。与跳字模型不同,连续词袋模型更关注整体的语义信息而不是局部的顺序关系。
同样,使用反向传播算法来更新模型参数,以优化模型的性能。

3Word2Vec的训练过程通常涉及以下步骤:

收集大规模的语料库,例如新闻文章、维基百科等。
对语料库进行预处理,包括分词、去除停用词、转换为小写等。
构建跳字模型或连续词袋模型,并定义网络结构、参数和超参数。
使用训练数据(上下文单词和中心单词)来训练模型。对于每个训练样本,通过前向传播计算预测值,并使用损失函数度量预测值与实际值之间的误差。
使用反向传播算法更新模型的参数,以减小损失函数的值。这个过程反复进行多个迭代,直到模型收敛或达到预定义的停止条件。
训练完成后,提取训练好的词向量,将其用于其他NLP任务,如文本分类、相似度计算等。
需要注意的是,Word2Vec的训练过程可以得到词向量表征,但它本身并不关注词语的语义含义。生成的词向量在向量空间中的相对位置可以反映出词之间的语义关系,例如语义相似性和词语类比。这使得词向量在各种自然语言处理任务中具有广泛应用的潜力。

from gensim.models import Word2Vec
from gensim.utils import simple_preprocess

# Example sentences for training
sentences = [
    "I enjoy playing football with my friends",
    "I love to read books",
    "Football is a popular sport"
]

# Preprocess the sentences
preprocessed_sentences = [simple_preprocess(sentence) for sentence in sentences]

# Train the Word2Vec model
model = Word2Vec(preprocessed_sentences, min_count=1)

# Get word vector for a specific word
word = "football"
vector = model.wv[word]
print(f"Word '{word}' vector: {vector}")

# Find most similar words
similar_words = model.wv.most_similar(positive=["football"])
print(f"Similar words for 'football': {similar_words}")

preprocessed_sentences: [['enjoy', 'playing', 'football', 'with', 'my', 'friends'], ['love', 'to', 'read', 'books'], ['football', 'is', 'popular', 'sport']]
vector shape: (100,)
Word 'football' vector: [-5.3622725e-04  2.3643016e-04  5.1033497e-03  9.0092728e-03
 -9.3029495e-03 -7.1168090e-03  6.4588715e-03  8.9729885e-03
 -5.0154282e-03 -3.7633730e-03  7.3805046e-03 -1.5334726e-03
 -4.5366143e-03  6.5540504e-03 -4.8601604e-03 -1.8160177e-03
  2.8765798e-03  9.9187379e-04 -8.2852151e-03 -9.4488189e-03
  7.3117660e-03  5.0702621e-03  6.7576934e-03  7.6286553e-04
  6.3508893e-03 -3.4053659e-03 -9.4640255e-04  5.7685734e-03
 -7.5216386e-03 -3.9361049e-03 -7.5115822e-03 -9.3004224e-04
  9.5381187e-03 -7.3191668e-03 -2.3337698e-03 -1.9377422e-03
  8.0774352e-03 -5.9308959e-03  4.5161247e-05 -4.7537349e-03
 -9.6035507e-03  5.0072931e-03 -8.7595871e-03 -4.3918253e-03
 -3.5099984e-05 -2.9618264e-04 -7.6612402e-03  9.6147414e-03
  4.9820566e-03  9.2331432e-03 -8.1579182e-03  4.4957972e-03
 -4.1370774e-03  8.2453492e-04  8.4986184e-03 -4.4621779e-03
  4.5175003e-03 -6.7869616e-03 -3.5484887e-03  9.3985079e-03
 -1.5776539e-03  3.2137157e-04 -4.1406299e-03 -7.6826881e-03
 -1.5080094e-03  2.4697948e-03 -8.8802812e-04  5.5336617e-03
 -2.7429771e-03  2.2600652e-03  5.4557943e-03  8.3459523e-03
 -1.4537406e-03 -9.2081428e-03  4.3705511e-03  5.7178497e-04
  7.4419067e-03 -8.1328390e-04 -2.6384138e-03 -8.7530091e-03
 -8.5655687e-04  2.8265619e-03  5.4014279e-03  7.0526553e-03
 -5.7031228e-03  1.8588186e-03  6.0888622e-03 -4.7980524e-03
 -3.1072616e-03  6.7976285e-03  1.6314745e-03  1.8991709e-04
  3.4736372e-03  2.1777629e-04  9.6188262e-03  5.0606038e-03
 -8.9173913e-03 -7.0415614e-03  9.0145587e-04  6.3925339e-03]
Similar words for 'football': [('my', 0.21617144346237183), ('enjoy', 0.0931011363863945), ('love', 0.09291724115610123), ('playing', 0.07963486015796661), ('with', 0.06285081058740616), ('friends', 0.0270574688911438), ('to', 0.0161347147077322), ('sport', -0.010839186608791351), ('books', -0.027750365436077118), ('popular', -0.052346765995025635)]

更多推荐

nginx反向代理

nginx反向代理8.反向代理8.1实现http反向代理8.1.1反向代理配置参数8.1.2反向代理单台web服务器8.1.2.1端口号后加"/"8.1.2.2端口号后不加"/"8.1.3指定location实现反向代理,动静分离8.1.4反向代理实例:缓存功能8.1.4.1举例8.1.5实现反向代理客户端IP透传8.

2024得物校招面试真题汇总及其解答(一)

1.有哪些查找优化算法查找优化算法是指可以提高查找效率的算法。常见的查找优化算法包括:二分查找:二分查找是一种基于分治思想的查找算法。它首先将查找范围缩小一半,然后再在缩小后的范围内进行查找,以此类推,直到找到目标元素或判断目标元素不存在。二分查找的平均时间复杂度为O(logn),其中n是数据集的大小。哈希表:哈希表是

Java常见面试题

目录1、mysql并发事务会带来哪些问题,如何解决?2、请详细描述Redis持久化机制?3、简述Redis缓存雪崩和缓存穿透的问题和解决方案?4、RabbitMQ消息丢失及对应解决方案5、什么叫线程安全?举例说明6、举例说明常用的加密算法7、synchronized和ReentrantLock有什么区别?8、synch

【Python 基础篇】Python环境搭建

文章目录一、Python环境的下载二、Python环境变量的安装及配置三、Python编译器的选择一、Python环境的下载Python官方网站:www.python.org这个是Python的官方网站,Python下载以及相关文档都能在里面找到如果下载慢的话,可以在各大电脑应用市场下载(自己是在联想应用商店下载的)…

01-安装

1、安装前准备1.1、集群IP分布主机名IP地址角色备注kube-master192.168.168.60kube-master管理节点kube-node1192.168.168.61kube-node计算节点kube-node2192.168.168.62kube-node计算节点kube-node3192.168.

压缩算法---以golang/snappy为例

压缩,典型的时间换空间用到LRU,首选hashicorp/golang-lru,不过不知道啥时候,Go官方悄不溜整了一个groupcache,也提供了lru的实现…顺道瞟了一眼,发现github.com/golang下除去有go,还有一整套配套的常用组件。比如vscode/sublime的插件,有性能测试工具perf,

对不起,是我“造谣传谣”了

前天发布了一篇推文,传递了一条错误的信息:不连接VPN也可以访问Obsidian插件市场了。没想到一石激起千层浪,很多朋友留言反馈说:然后我慌了。自己竟“沦为”一个“造谣传谣”者,为此陷入“不知该如何处理”的慌乱之中。于是求助外援:然而,最让我感动的是,在纠结于“删”与“不删”期间,陆续收到很多朋友友善的留言。他们没有

【机组】计算机系统组成课程笔记 第二章 计算机中的信息表示

2.1无符号数和有符号数2.1.1无符号数没有符号的数,其实就是非负数。在计算机中用字节码表示,目前最常用的是八位和十六位的。2.1.2有符号数将正负符号数字化,0代表+,1代表-,并把代表符号的数字放在有效数字前,就组成了有符号数。1.机器数和真值我们接下来要用到的真值都指的是带符号的二进制数。机器数是相对于真值而言

activemq学习笔记

传统的request/response在客户端提交请求后必须等待服务端处理完毕给于反馈,这期间客户端完全处于空闲等待状态,甚至有可能超时;·基于消息中间件的request/response客户端提交请求,不必等待服务器处理,客户端可以继续进行其它操作,而服务端形成命令的消息列队,在空闲的时候进行处理,客户端可以异步接收

修改和完成SpringSecurity的登录功能

1、配置SpringSecurity改变默认表单页面但是流程不变添加loginPage、loginProcessingUrl方法//做拦截@Overrideprotectedvoidconfigure(HttpSecurityhttp)throwsException{//请求授权http.formLogin().log

【python爬虫】爬虫所需要的爬虫代理ip是什么?

目录前言一、什么是爬虫代理IP二、代理IP的分类1.透明代理2.匿名代理3.高匿代理三、如何获取代理IP1.免费代理网站2.付费代理服务四、如何使用代理IP1.使用requests库2.使用scrapy库五、代理IP的注意事项1.代理IP可能存在不稳定性2.代理IP可能存在安全问题3.代理IP可能存在限制六、代理IP的

热文推荐