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

自然语言处理-词向量模型-Word2Vec

目录

一、前言

二、词向量

三、词向量的实际意义

四、模型的整体框架

五、构建输入数据

六、不同模型的对比

七、负采样方案

八、总结 


一、前言

        计算机只认识数值数字,那么怎么认识自然语言呢???答案就是将自然语言转换转换成数值,就词向量。

        先来考虑一个问题,如何能将文本向量化呢???看起来比较抽象,可以先从人的角度来观察。

        如何来描述一个人呢???只用身高或者体重,还是,综合其各项指标呢??

        例如:Kevin Durant 身高211cm, 体重90kg,这能完全描述他吗???当然不能,还有NBA超巨,全明星,死神,等等描述。

二、词向量

        词向量(Word Embedding)是自然语言处理(NLP)中的一种技术,它可以将词汇表中的单词或短语映射到实数向量空间。以下是关于词向量的详细介绍:

  • 词向量的核心在于将每个单词表示为高维空间中的一个点,这些点不仅代表了单词的语义信息,还可以通过计算向量之间的距离来分析词语之间的关联性和相似性。
  • 词向量的生成方法包括神经网络、单词共生矩阵降维、概率模型等,这些方法使词向量能够捕捉到语言数据中的分布属性,从而量化语言项之间的语义相似性。
  • 词向量已被广泛应用于各种NLP任务中,如语法分析、情感分析、命名实体识别、同义词寻找、词性标注、语义角色标注、句法分析和短语识别。

词向量的一个重要优势是它们能够捕获单词之间的细微差别和语义关系,例如,“king”和“queen”之间的向量差异可以反映出性别差异。尽管词向量技术已经相当成熟,但它们仍面临一些限制,比如可能将单词的多个含义混合在一个单一的向量中,这限制了对具有多重含义单词的精确表达。未来的研究可能会集中在如何改进词向量技术,以更准确地表示单词的含义和用法。

        例如:Kevin Durant生成的词向量

0.023230.33452-0.978651.35533-9.234432.23344...3.99457

        那么这个向量在我们人看来,不能理解为什么是这样,但是计算机可以认出来,这个就是Kevin Durant,包括他所有的描述。而且这个向量的维度50~300维(google得出的)。

        只要有了向量就可以用不同的方法来计算相似度。

        通常用欧氏距离,余弦距离等等。

                cosine\_ similarity([-0.4,0.8],[-0.3,0.2])=0.87\;yes

                cosine\_ similarity([-0.4,0.8],[-0.5,-0.4])=-0.20\;no

        如果我们用一个二维的向量空间来表达词向量,可以吗???

        

        虽然可以表达,但是表达的信息太少了。 

        通常,数据维度越高,能够提供的信息越多,从而计算的结果的可靠性就更值得信赖。

        那么词向量真真的有实际意义吗?或者说能表达出词的意思吗?

三、词向量的实际意义

        我们先看这样的图

   

        其实King和Queen他们又有实际意义,而且两个词都相似,所以在词向量表达中,有相同的部分。 

        光看数字我们难以观察到,把数字转换成热度图。

        假如,我们已经训练好了一个词的向量

   

四、模型的整体框架

        在词向量模型中输入和输出分别是什么???

         

        让模型学到一个词用什么样的向量表达最为合适。

        如果用神经网络来训练模型,就是让神经网络学到前后文的一个逻辑关系。

                 

        我们可以看到,输入单词进入模型,然后模型训练,前向传播得到损失值,反向传播,更新参数,更新embeddings表。

        这里 embeddings表 指的是语料库的一个大表,它装有所有的词。而且是用词向量来表达。在开始的时候对于这个表进行一个类似于神经网络权重参数的初始化操作。而且与神经网络不同的是不仅仅要更新权重参数,还要跟新此表,达到让模型学到一个词用什么样的向量表达最为合适的目的。

        查找输入的词,得到词向量,在经过向量矩阵计算得到一个结果值,类似于做一个分类任务,看那个词的概率最大。这样达到预测到下一个词是什么,让神经网络学到前后文的一个逻辑关系的目的

五、构建输入数据

        数据从哪里来?

        everywhere,只要符合自然语言的上下文逻辑即可。

        如何构建训练数据

         

        可以自己构建数据集,在一篇文章中,采用滑动窗口策略。

         这样其实来看,输入数据集是很好构建的。

六、不同模型的对比

         1. CBOW模型

              

        如图,采用滑动窗口策略,Jay was hit by a 框起来,那么输入就是Jay was by a 输出就是 hit。 

  2. Skipgram模型

        同样的,采用滑动窗口策略, Jay was hit by a 框起来,那么输入就是 hit  输出就是  Jay was by a。

        

七、负采样方案

        问题:一个语料库很大,5W,10W,100W,那么在做得分计算,损失计算,概率计算,SoftMax归一化的时候,计算量可想而知的大。那么如何去处理这样的一个问题呢???

        初始方案:输入两个单词看看他们是不是前后文对应的输入和输出,也就相当于一个二分类任务了。

        出发点很好,但此时训练集构建出来的标签按照二分类标准来说就全是1了,无法进行较好的训练。

 改进方法:

        负采样方案

        

        意思就是在构造数据集时,加入一些不对应上下文的词,并且标签设置为0。上图以Skipgram模型为例,一般加入5个负采样的样本。

八、总结 

        1. 初始化磁向量矩阵

        

        input word和output word都是输入数据,且input word在Embedding里找,output word在Context里找。

        2. 通过神经网络反向传播来计算更新,不光更新权重矩阵W,也要更新输入数据。

 

        3. 得到最有可能的值。 

         

         

       

        

      

         

        

        

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 如何从应用商店Microsoft Store免费下载安装HEVC视频扩展插件
  • 华为OD机试 - 堆栈中的剩余数字(Java JS Python C C++)
  • 【进阶版】基于KubeAdm搭建多节点K8S集群,并使用Rancher导入K8S集群
  • JavaScript中如何理解堆栈溢出和内存泄漏
  • 漫谈:C、C++字符串的困局
  • 【go从入门到精通】作用域,包详解
  • Macos 部署自己的privateGpt(2024-0404)
  • python 08Pandas
  • 想做产品经理,应该选择什么专业?
  • 【汇编】_Visual Studio2019写32位汇编
  • 解码AAC裸流为PCM写入文件
  • [数据结构]双向带头循环链表制作
  • rust-tokio发布考古
  • 少儿编程 2024年3月电子学会图形化编程等级考试Scratch二级真题解析(判断题)
  • 函数重载和引用【C++】
  • Android 控件背景颜色处理
  • axios 和 cookie 的那些事
  • - C#编程大幅提高OUTLOOK的邮件搜索能力!
  • Codepen 每日精选(2018-3-25)
  • Docker容器管理
  • Node项目之评分系统(二)- 数据库设计
  • 浮动相关
  • 基于Android乐音识别(2)
  • 面试遇到的一些题
  • 数据科学 第 3 章 11 字符串处理
  • 我感觉这是史上最牛的防sql注入方法类
  • FaaS 的简单实践
  • gunicorn工作原理
  • 阿里云服务器购买完整流程
  • 昨天1024程序员节,我故意写了个死循环~
  • ​2020 年大前端技术趋势解读
  • ​人工智能书单(数学基础篇)
  • # 利刃出鞘_Tomcat 核心原理解析(八)-- Tomcat 集群
  • #window11设置系统变量#
  • (02)Unity使用在线AI大模型(调用Python)
  • (4) openssl rsa/pkey(查看私钥、从私钥中提取公钥、查看公钥)
  • (C++20) consteval立即函数
  • (C语言)逆序输出字符串
  • (C语言版)链表(三)——实现双向链表创建、删除、插入、释放内存等简单操作...
  • (Demo分享)利用原生JavaScript-随机数-实现做一个烟花案例
  • (Mirage系列之二)VMware Horizon Mirage的经典用户用例及真实案例分析
  • (二)七种元启发算法(DBO、LO、SWO、COA、LSO、KOA、GRO)求解无人机路径规划MATLAB
  • (附源码)php新闻发布平台 毕业设计 141646
  • (附源码)spring boot智能服药提醒app 毕业设计 102151
  • (附源码)springboot 个人网页的网站 毕业设计031623
  • (附源码)springboot 智能停车场系统 毕业设计065415
  • (附源码)springboot“微印象”在线打印预约系统 毕业设计 061642
  • (附源码)springboot人体健康检测微信小程序 毕业设计 012142
  • (附源码)计算机毕业设计SSM保险客户管理系统
  • (算法)Travel Information Center
  • (学习日记)2024.03.25:UCOSIII第二十二节:系统启动流程详解
  • (原創) 如何動態建立二維陣列(多維陣列)? (.NET) (C#)
  • (转)详解PHP处理密码的几种方式
  • .cfg\.dat\.mak(持续补充)
  • .net core 6 集成和使用 mongodb