当前位置: 首页 > news >正文

Stanford CS224N - word2vec

最近在听Stanford放出来的Stanford CS224N NLP with Deep Learning这门课,弥补一下之前nlp这块基础知识的一些不清楚的地方,顺便巩固一下基础知识😁

关于word2vec:

1.为什么要把单词表示成向量

一开始人们造了一个类似于词典表的东西-wordnet:
在这里插入图片描述
但是这里面存在一些问题,大概有这么几个:

  • 例如,“proficient”被列为“good”的同义词,但这只在某些情境下是正确的。
  • WordNet在某些同义词组中列出了冒犯性的同义词,而没有涵盖单词的内涵或适用性。
  • WordNet缺少对单词新含义的收录,例如"wicked"、“badass”、“nifty”、“wizard”、“genius”、“ninja”、"bombest"等。
  • 难以保持最新
  • 存在主观性的问题
  • 需要耗费大量人力来创建和调整
  • 不能用于准确计算单词相似度
    在这里插入图片描述
    再后来就有了one-hot编码:
    在这里插入图片描述
    但是嘞,用了一段时间以后人们发现这里还是存在一些问题,这里教授举了这样一个例子:

在网络搜索中的例子中,如果用户搜索“西雅图汽车旅馆”,我们希望匹配包含“西雅图酒店”的文档。
但是: 汽车旅馆 = [0 0 0 0 0 0 0 0 0 0 1 0 0 0 0]
酒店 = [0 0 0 0 0 0 0 1 0 0 0 0 0 0 0] 这两个向量是正交的。
对于独热向量来说,没有自然的相似度概念

提出的解决方案:学习将相似度编码在向量中。
更具体的说,从 context words 中去学习某个单词的意思,这也是word2vec思想的重要部分
所以归纳起来,把单词表示成我们想要的这种向量的好处可以概括为以下三个方面:

  • 数值表示:计算机只能处理数值数据,而文本是一种非结构化的数据形式。把单词转化为向量,可以将文本转化为数值表示,使得计算机可以对其进行处理和分析。这样,我们可以利用数值计算的优势,如向量运算、相似度计算等。
    在这里插入图片描述

  • 特征表示:将单词转化为向量可以捕捉到单词之间的语义和语法关系。向量空间中的距离和角度可以表示单词之间的相似性和关联性。这样的向量表示可以作为特征输入到各种NLP任务中。通过将单词转化为向量,我们可以将文本转化为可计算的特征,从而进行更高级的文本分析和处理。如图,将单词转化为高维向量以后语义相近的单词挨得比较近。
    如图

  • 维度降低:传统的文本表示方法,如独热编码,会将每个单词表示为一个高维稀疏向量,其中大部分元素为0。这种表示方法会导致高维度的特征空间,浪费存储空间和计算资源。通过将单词转化为低维稠密向量,可以实现维度的降低,减少存储和计算的开销,同时保留了单词之间的语义信息。

2.何为word2vec

课上给的定义:Word2vec (Mikolov et al. 2013) is a framework for learning word vectors

按照我的理解,Word2Vec是一种用于将单词表示为连续向量的算法,他的目标是通过学习单词之间的语义和语法关系,将单词嵌入到一个连续的向量空间中
在这里插入图片描述

3.具体实现步骤

  • 构建训练样本:
    Word2Vec模型的训练样本由目标单词和其上下文单词组成。在Skip-gram模型中,每个目标单词会与其周围的上下文单词配对;在CBOW模型中,每个上下文单词会与其对应的目标单词配对。这样可以为每个配对样本创建一对输入和输出。上课给出的例子是从头到尾滑动计算第 t + j t+j t+j个词和第 t t t个词(中心词)同时出现的概率,图示里把 i n t o into into当作中心词, t = 2 t=2 t=2,然后计算其他context word和中心词一起出现的概率
    在这里插入图片描述

  • 训练模型:
    使用构建的训练样本和神经网络架构,开始训练Word2Vec模型。训练过程中,模型的目标是通过最大化或最小化特定的目标函数来优化模型的参数。课堂上举的例子是负对数似然函数。通过迭代优化过程,模型逐渐学习到单词的向量表示,以捕捉单词之间的语义和语法关系。

表示出目标函数:
在这里插入图片描述
然后训练
在这里插入图片描述

  • 学习到的向量表示:
    一旦模型训练完成,每个单词都会被表示为一个固定长度的向量。这些向量在向量空间中的距离和角度反映了单词之间的相似性和关联性。这些向量可以用于各种NLP任务,如计算单词相似度、文本分类、命名实体识别等。
http://www.lryc.cn/news/198881.html

相关文章:

  • 华为云云耀云服务器L实例评测|windows系统3389防爆破之安全加固教程
  • 零基础如何自学C#?
  • Spring5学习笔记之整合MyBatis
  • GO 语言的方法??
  • 【JavaEE】 多线程-初阶
  • 小程序OCR身份证识别
  • 【算法学习】归并算法Merge Sort总结
  • Swager如何使用
  • DHorse v1.4.2 发布,基于 k8s 的发布平台
  • Java使用JJWT令牌
  • “第四十四天”
  • Unity Mono和.Net平台浮点算法的区别
  • 【SA8295P 源码分析 (二)】64 - QNX 与 Android GVM 显示 Dump 图片方法汇总
  • shell命令以及运行原理和lLinux权限
  • 斯坦福JSKarel编程机器人使用介绍
  • SpringBoot中pom.xml不引入依赖, 怎么使用parent父项目的依赖
  • 基于vue3+ts5+vue-router4+pinia2的PC端项目搭建教程
  • 6个无版权、免费、高清图片素材库
  • 什么是响应式设计?响应式设计的基本原理是什么?如何兼容低版本的 IE?
  • LeetCode 2906. 构造乘积矩阵【前后缀分解,数组】中等
  • vue3+koa+axios实现前后端通信
  • Required MultipartFile parameter ‘file‘ is not present
  • vue3后台管理系统之layout组件的搭建
  • Minio 文件上传(后端处理同文件判断,同一文件秒传)
  • 模拟IIC通讯协议(stm32)(硬件iic后面在补)
  • 使用注解读取properties配置文件
  • Python---练习:求世界杯小组赛的总成绩(涉及:布尔类型转换为整型)
  • vue3学习源码笔记(小白入门系列)------KeepAlive 原理
  • 边写代码边学习之mlflow
  • 基于吉萨金字塔建造优化的BP神经网络(分类应用) - 附代码