NLP——分布式语义 Distributional Semantics:Word Vectors;Word2Vec

news2025/1/28 1:17:47

文章目录

  • 传统语义数据集的缺点
  • 分布式语义
  • Word Vectors 词向量
    • Count-based 基于统计的方法
      • Document 作为上下文 —— 向量空间模型(VSM)
        • TF-IDF 更加有效的编码方式
        • 降维
          • Singular Value Decomposition
      • neighbor words 作为上下文
    • 基于深度学习的方法
      • Word2Vec
        • Skip-grams
  • Evaluation

传统语义数据集的缺点

传统的词汇数据库(Lexical Database),如WordNet,是自然语言处理中一种常见的资源,用于提供词汇的定义、词义关系(如同义词、反义词)和词汇层次结构(如上下位词)。虽然这些资源在许多任务中都非常有用,但它们也存在一些限制,这促使了分布式语义的发展。以下是一些主要的缺点:

  • 有限的覆盖范围:传统的词汇数据库通常只能覆盖有限的词汇和短语,特别是一些新出现的、特定领域的或者是非标准的词汇(如网络俚语)可能无法在词汇数据库中找到。

  • 无法捕获细微的语义差异:词汇数据库提供的信息通常是静态的和离散的,它们可能无法捕获词汇之间的细微语义差异。例如,虽然“猫”和“狗”在WordNet中都是“宠物”,但它们之间的具体差异无法通过这种方式来捕获。

  • 无法处理词义动态变化:语言是动态变化的,新的词汇和含义会不断出现,而传统的词汇数据库更新是一个复杂且耗时的过程,无法实时反映语言的变化。

  • 高成本:创建和维护词汇数据库需要大量的人力物力,特别是对于非英语的语言,可能没有足够的资源来创建和维护这样的数据库。

相比之下,基于分布式语义的方法可以通过从大规模的文本数据中自动学习词汇的语义,无需人工干预,可以处理大规模的词汇,捕获细微的语义差异,处理新出现的词汇,以及实时反映语言的变化。因此,分布式语义的方法在许多自然语言处理任务中,如词义消歧、文本分类、情感分析、机器翻译等,都取得了优于传统方法的效果

分布式语义

分布式语义(Distributional Semantics)是一种在自然语言处理(NLP)中用于表示和理解词汇语义的理论框架。其基本假设是:一个词的意义可以通过它在文本中的上下文来理解和表示,即“一个词的意思由它的邻居们定义”。这也被称为“分布假设”(Distributional Hypothesis),最早由 J.R. Firth 在1957年提出:“你将会知道一个词的含义,通过它所保持的公司(即上下文)”。
在这里插入图片描述
在这里插入图片描述

基于这个假设,我们可以通过分析大量文本数据,学习每个词在各种上下文中出现的模式,然后用这些模式来表示词的语义。这样的语义表示通常是一个高维的向量,这就是我们常说的词向量或者词嵌入(Word Embeddings)。

Word Vectors 词向量

在这里插入图片描述
在这里插入图片描述

词向量有许多优点,例如,它们可以捕获词汇之间的语义和语法关系,可以处理未知词汇,可以直接用于机器学习模型等。而且,随着大规模文本数据和计算资源的可用性,我们可以训练出非常大且精确的词向量模型,比如 Word2Vec、GloVe 和 BERT 等。

在这里插入图片描述

Count-based 基于统计的方法

在这里插入图片描述

Document 作为上下文 —— 向量空间模型(VSM)

在这里插入图片描述

  • 每个 document 被看做是一个向量,这个向量基于词表中的每个单词,例如,在上图中,425 这个文档中包含了 3 个 state,0 个 fun 和 0 个 heaven,这些词最终编码除了 document 的向量
  • 同样的,每个单词也被他们的 document 编码,每个列就是这个单词的编码
  • 假设我们有M个文档和N个词汇,那么我们可以构建一个M*N的矩阵,每一行代表一个文档,每一列代表一个词汇。矩阵中的每个元素表示对应的词汇在对应的文档中的权重,这个权重可以是词频(Term Frequency,TF),也可以是TF-IDF(Term Frequency-Inverse Document Frequency)等。

在这里插入图片描述

  • 在原有的 VSM 基础上进行操作,可以构建更加有效的编码 以及 更加稠密的向量(因为原本的向量空间太稀疏)

TF-IDF 更加有效的编码方式

  • 原本的向量空间模型中像 the 这种在每个 document 中都会出现的词,TF-IDF 会非常大程度降低其在向量表示中的重要性,可以看到 TFIDF 表示完之后,the43 -> 0

在这里插入图片描述

降维

进行降维的原因如下:

  • 原本的向量空间太稀疏,很多地方的值都为 0
  • 向量空间太大在进行很多后续操作的时候非常消耗计算资源
  • 降维后,可以减小很多数据噪声,使得模型更加不容易过拟合。
    在这里插入图片描述
Singular Value Decomposition

奇异值分解(Singular Value Decomposition,简称SVD)是一种在线性代数中的常用技术,它可以把一个 非负实数矩阵分解为三个矩阵的乘积,表达式如下:

A = U Σ V T A = U\Sigma V^T A=UΣVT

这里, A A A 是一个 m × n m\times n m×n 的矩阵, U U U 是一个 m × m m\times m m×m 的矩阵, Σ \Sigma Σ 是一个 m × n m\times n m×n 的对角矩阵, V T V^T VT 是一个 n × n n\times n n×n 的矩阵。

  • 这三个矩阵有如下的性质:

  • U U U V T V^T VT 都是 正交矩阵,也就是它们的逆矩阵就是它们的转置

  • Σ Σ Σ 的对角线上的元素就是 A A A奇异值,非对角线上的元素都是0。奇异值是非负实数,且按照从大到小的顺序排列。

SVD 在许多领域都有广泛的应用,包括信号处理、统计分析、计算机视觉、自然语言处理等。在自然语言处理中,SVD 常常用于降维和提取特征。例如,在潜在语义分析(Latent Semantic Analysis,LSA)中,就使用 SVD 对词-文档矩阵进行分解,从而获得词汇和文档在潜在语义空间中的表示。

在这里插入图片描述
在这里插入图片描述

neighbor words 作为上下文

  • 下图中列出的是两个词联合出现的次数,例如 thestate 共同出现了 1973
    在这里插入图片描述
  • 同样的这种 neighbor words 作为上下文表示的方法也存在 document 作为上下文中的问题,即:the 这种词就是会和其他的词频繁的共同出现,但我们在这里却不能使用 TFIDF,其原因是,在文档中,我们可以使用 “逆文档频率” 来表示一个词在当前文档中出现了很多次,而在其他文档中出现很少的概念,但是在当前情境下,就没有这种概念了。 因此,我们采用另外一种方式:Point-wise Mutual Information逐点互信息

在这里插入图片描述

  • 点互信息(Pointwise Mutual Information,简称PMI)是一种度量两个事件之间相互关联程度的统计量。给定两个事件 x x x y y y,PMI定义为它们共同发生的概率与它们分别发生的概率的乘积之比的对数。用数学公式表示就是:

P M I ( x , y ) = l o g 2 P ( x , y ) P ( x ) P ( y ) PMI(x, y) = log_2\frac{P(x,y)}{P(x)P(y)} PMI(x,y)=log2P(x)P(y)P(x,y)

其中, P ( x , y ) P(x, y) P(x,y) x x x y y y 同时发生的概率, P ( x ) P(x) P(x) P ( y ) P(y) P(y) 分别是 x x x y y y 发生的概率。

在这里插入图片描述
在这里插入图片描述

如果 x x x y y y是独立的,那么 P ( x , y ) P(x,y) P(x,y) 将等于 P ( x ) P(x) P(x) P ( y ) P(y) P(y) P M I PMI PMI 将为 0 0 0。如果 x x x y y y 不是独立的,那么 P M I PMI PMI 将反映它们之间的相互关联程度

在自然语言处理中, P M I PMI PMI 经常被用来度量两个词之间的关联程度。例如,如果两个词经常一起出现(比如"New"和"York"),那么它们的 P M I PMI PMI 值就会很高。 P M I PMI PMI 也经常用于各种统计语言模型中,包括主题模型和词向量模型。

PMI 的缺点:
在这里插入图片描述

  • 数据稀疏性问题: 如果语料库的大小不够大,或者某些词组合很少出现,那么有可能遇到数据稀疏性的问题。因为PMI是基于事件共同发生的频率计算的,如果某些词组合在语料库中从未出现过,那么这种方法就无法有效地计算这些词组合的相关性。 这是所有基于统计的自然语言处理方法都要面临的问题。
  • 高频词偏差: PMI对高频词有偏好,它可能会过度强调那些常见词的重要性。例如,像“的”、“和”这样的词在任何文本中都会频繁出现,因此它们可能会和很多词有高的PMI值,但这并不意味着它们之间有强烈的语义关联。
  • 没有考虑词序和句法信息: PMI以及更一般的"word as context"方法通常忽略了词序和句法信息。然而,词序和句法信息在许多自然语言处理任务中是非常重要的。
  • 缺乏对语义信息的捕捉
  • 扩展性问题: PMI矩阵的大小取决于语料库中的词汇量,这意味着对于大型语料库,PMI矩阵可能会非常大,导致存储和计算都非常困难。
    在这里插入图片描述

基于深度学习的方法

在这里插入图片描述

  • 专门用于学习 word embedding 的模型

Word2Vec

  • 这是Google在2013年提出的一种用于学习词嵌入的模型,其主要思想是“你能知道一个词的含义,是通过看它的上下文”。
    在这里插入图片描述
  • Word2Vec模型有两种变体:一种是Skip-gram 模型,它预测上下文词汇给定中心词的概率;另一种是CBOW(Continuous Bag of Words) 模型,它预测中心词给定上下文词汇的概率
    在这里插入图片描述

Skip-grams

Skip-gram 通过以下方式工作:
在这里插入图片描述

  • 输入和输出:对于每个词(我们称之为中心词),我们看看在其周围的窗口(通常大小是5-10个词)内的词(我们称之为上下文词)。Skip-gram 的任务就是,给定中心词,预测这些上下文词。

  • 模型结构:Skip-gram 是一个简单的神经网络,它有一个输入层(用于接收中心词的 one-hot 编码)、一个隐藏层(这就是我们最后得到的词嵌入)和一个输出层(输出每个词是上下文词的概率)。

  • 训练:通过最大化给定中心词时上下文词出现的对数概率来训练模型,即最大化对数似然函数。这样做会使模型更偏向于生成真实的上下文词。

  • 获取词嵌入:一旦模型训练完毕,我们就可以把隐藏层的权重作为词的向量表示。这些向量捕捉了词的语义信息,因为在相似的上下文中出现的词会有相似的向量。

在这里插入图片描述

  • 在真实训练 skip-gram 模型的时候通常构建一个二分类任务,例如:现在使用的上下文窗口长度 window=5,那么对于 window 范围内出现的词,我们认为他们是正样本,而负样本,则从 vocabulary 中随机取词构造:
    在这里插入图片描述
  • 可以看到在下图中,一句话中的窗口 [tablespoon of apricot jam, a]apricot 为中心,因此我们将这 window 范围内的词作为输入的时候,输出都是 1 表示当前的输入序列是 “真实的上下文”,而同样的,我们再从 vocabulary 中随机抽取一些词汇与 apricot 组成输入,这时候的输出应该是 0 表示并不是真实的上下文
    在这里插入图片描述
  • skip-gram 的损失设计如下:
    在这里插入图片描述
  • 通常实际操作中,我们针对一个 positive 的样本,通常会采样 k 个负样本,来保证训练效果
    在这里插入图片描述

总的来说,Skip-gram 模型是通过学习预测上下文来获得词的向量表示的,这种方法能有效地捕捉词的语义信息,并且生成的词嵌入可以在各种 NLP 任务中用作预训练的词向量,大大提高模型的性能。

然而,词向量也有一些局限性,例如,它们通常忽略了词汇的多义性(一个词可能有多种意义),并且对于特定任务,可能需要大量的训练数据和计算资源。

Evaluation

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

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

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

相关文章

highlight clock tree 高亮时钟树的方法

当分析clock tree需要在图形界面highlight clock tree时,最朴实无华的方法就是贴报告,除此之外这里也分享一下用命令的方法。 1.Imported Path Pins 1)Highlight > Color By > Imported Path Pins 2)report_timing icc2…

【MySQL 数据库】9、存储过程

目录 一、存储过程是什么二、存储过程的基本语法三、MySQL 中的变量(1) 系统变量(2) 用户自定义变量(3) 局部变量 四、if 判断五、参数传递和返回值六、case 语句七、while 循环八、repeat 循环九、loop 循环十、游标十一、条件处理程序 一、存储过程是什么 🌱 存储…

Linux进程间通信【消息队列、信号量】

✨个人主页: 北 海 🎉所属专栏: Linux学习之旅 🎃操作环境: CentOS 7.6 阿里云远程服务器 文章目录 🌇前言🏙️正文1、消息队列1.1、什么是消息队列?1.2、消息队列的数据结构1.3、消…

交通物流模型 | Python实现基于张量分解的交通流量时空模式挖掘(出租车车载GPS数据、公交卡刷卡数据、POI的分布数据)

文章目录 效果一览文章概述研究内容源码设计参考资料效果一览 文章概述 一般出行行程通常都由某种明确目的驱使,例如上班、购物或娱乐,出行的起始区域因其承担功能的不同,通常能够反映出用户的出行目的,于此同时,从宏观来看,区域之间的交通流量在一天内的变化规律也能够反…

【数据结构与算法】03 队列(顺序队列--循环队列--优先级队列--链队列)

一、概念1.1 队列的基本概念1.2 队列的顺序存储结构1.21 顺序队列(静态队列)1.22 循环队列1.23 优先级队列 1.3 队列的链式存储结构 二、C语言实现2.1 顺序存储2.11 顺序队列2.12 循环队列2.13 优先级队列 2.2 链式存储 一、概念 1.1 队列的基本概念 队…

【python】—— python的基本介绍并附安装教程

前言: 今天,我将给大家讲解关于python的基本知识,让大家对其有个基本的认识并且附上相应的安装教程以供大家参考。接下来,我们正式进入今天的文章!!! 目录 前言 (一)P…

【Linux】互斥量原理的实现

深刻理解互斥锁 文章目录 前言一、demo版的线程封装二、demo版的锁封装总结 前言 为了实现互斥锁操作 , 大多数体系结构都提供了 swap 或 exchange 指令 , 该指令的作用是把寄存器和内存单元的数据相交换, 由于只有一条指令 , 保证了原子性 , 即使是多处理器平台 , 访问内存的总…

第10讲:深入剖析 Agent 插件原理,无侵入性埋点

AbstractClassEnhancePluginDefine 核心实现 在开始之前,先简单回顾上一课时中关于 AbstractClassEnhancePluginDefine 的一个核心知识点:AbstractClassEnhancePluginDefine 是所有插件的父类,SkywalkingAgent.Transformer 会通过其 enhance…

信号完整性:反射

反射是怎么形成的 信号的反射和互连线的阻抗密切相关。反射的最直接原因是互连线的阻抗发生了突然变化,只要互连线的阻抗不连续的点,该处就会发生反射。 信号是以电磁波的形式在走线中传播的,如果从传统的电路理论角度去看,是无…

YOLOv5使用自定义数据集实验

上一篇博文中介绍了YOLOv7训练自定义数据集,在这篇文章中,我们主要记录YOLOv5模型的实验过程,用于对比实验。 YOLOv5与YOLOv7毕竟一母同胞,因此部署起来也是极为类似。 数据集 数据集使用的与YOLOv7的实验数据集一样,…

windows服务器自带IIS搭建网站并发布公网访问

文章目录 1.前言2.Windows网页设置2.1 Windows IIS功能设置2.2 IIS网页访问测试 3. Cpolar内网穿透3.1 下载安装Cpolar3.2 Cpolar云端设置3.3 Cpolar本地设置 4.公网访问测试5.结语 转载自远程源码文章:【IIS搭建网站】本地电脑做服务器搭建web站点并公网访问「内网…

VS2019生成和使用lib、dll文件

叠甲:本文非常简略,方法非常朴素,仅供参考。 目录 lib文件 生成lib文件 使用lib文件 dll文件 生成dll文件 使用dll文件 lib文件 生成lib文件 新建项目libTest。 右键项目→属性→配置属性→常规→配置类型,选择“静态库…

【Java】表白墙终章-飞流直下的“甜言蜜语”-瀑布流式布局

飞流直下三千尺! 文章目录 【Java】表白墙终章-飞流直下的“甜言蜜语”-瀑布流式布局1. 效果前后对比2. 瀑布流式布局原理思想3. 约定前后端接口4. 后端代码4.1 修改Love类的定义4.2 修改doPost方法4.3 修改save方法4.4 修改doGet方法4.5 修改load方法 5. 前端瀑布流…

面试总结个人版

一、面试题 java 集合 , spring springmvc springboot springcloud 数据库相关的, redis 相关 ,mq 相关 ,结合业务的场景题 1、part one 集合 HashMap底层原理 HashMap是基于哈希表的Map接口的非同步实现。元素以键值对的形式存…

asp.net教师调课系统VS开发sqlserver数据库web结构c#编程Microsoft Visual Studio

一、源码特点 asp.net教师调课管理系统 是一套完善的web设计管理系统,系统具有完整的源代码和数据库,系统主要采用B/S模式开发。开发环境为vs2010,数据库为sqlserver2008,使用c#语言开发 asp.net教师调课系统VS开发sqlser…

deadline用WebService提交Job

官方文档 网站链接 进入rest API,点击jobs,找到submit job 这里可以看到消息体需要用到JobInfo和PluginInfo这两个关键的字典(json object) 拿到对应的键值对 为了填写url请求的消息体 我们需要拿到必须参数的键值对 点击双击…

如何延长电脑硬盘的使用寿命?

在日常使用电脑过程中,一定要做好硬盘的保养和维护,一旦硬盘损坏,保存在硬盘上的数据就会丢失,而且找回数据也是一件很费功夫的事情,甚至有可能永远也找不回来。所以日常工作中定期对资料进行备份,做好电脑…

【算法与数据结构】24、LeetCode两两交换链表中的节点

文章目录 一、题目二、解法三、完整代码 所有的LeetCode题解索引,可以看这篇文章——【算法和数据结构】LeetCode题解。 一、题目 二、解法 思路分析:题目要求两两交换节点。在链表当中非常重要就是下一个节点,一旦丢失,这个节点后…

IDL基础语法

1 创建变量 命名规则:变量名必须以字母开头。它们可以包括其它字母,数字,下划线,美元符号。 以下是创建不同数据类型的方法,我们只需了解即可,知道如何创建整型【16位有符号长整型】和浮点型 PRO learn;创…

RedisGraph的整体架构

The architecture of RedisGraph 本文关注RedisGraph的整体架构,分别从图存储模型、索引、并发控制、和执行计划四个方面简要阐述。下图为RedisGraph的整体架构图。 1 图存储模型 了解一个图数据库的架构,最重要的就是其图存储模型,即其中的…