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

这篇具有很好参考价值的文章主要介绍了NLP——分布式语义 Distributional Semantics:Word Vectors;Word2Vec。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

传统语义数据集的缺点

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

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

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

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

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

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

分布式语义

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

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

Word Vectors 词向量

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

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

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

Count-based 基于统计的方法

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

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

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

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

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

  • 在原有的 VSM 基础上进行操作,可以构建更加有效的编码 以及 更加稠密的向量(因为原本的向量空间太稀疏)
TF-IDF 更加有效的编码方式
  • 原本的向量空间模型中像 the 这种在每个 document 中都会出现的词,TF-IDF 会非常大程度降低其在向量表示中的重要性,可以看到 TFIDF 表示完之后,the43 -> 0

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

降维

进行降维的原因如下:

  • 原本的向量空间太稀疏,很多地方的值都为 0
  • 向量空间太大在进行很多后续操作的时候非常消耗计算资源
  • 降维后,可以减小很多数据噪声,使得模型更加不容易过拟合。
    NLP——分布式语义 Distributional Semantics:Word Vectors;Word2Vec
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 对词-文档矩阵进行分解,从而获得词汇和文档在潜在语义空间中的表示。

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

neighbor words 作为上下文

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

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

  • 点互信息(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 发生的概率。

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

如果 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 的缺点:
NLP——分布式语义 Distributional Semantics:Word Vectors;Word2Vec

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

基于深度学习的方法

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

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

Word2Vec

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

Skip-gram 通过以下方式工作:
NLP——分布式语义 Distributional Semantics:Word Vectors;Word2Vec

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

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

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

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

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

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

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

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

Evaluation

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

NLP——分布式语义 Distributional Semantics:Word Vectors;Word2Vec
NLP——分布式语义 Distributional Semantics:Word Vectors;Word2Vec文章来源地址https://www.toymoban.com/news/detail-478530.html

到了这里,关于NLP——分布式语义 Distributional Semantics:Word Vectors;Word2Vec的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【分布式】分布式ID

    分布式场景下,一张表可能分散到多个数据结点上。因此需要一些分布式ID的解决方案。 分布式ID需要有几个特点: 全局唯一(必要) :在多个库的主键放在一起也不会重复 有序(必要) :避免频繁触发索引重建 信息安全 :ID连续,可以根据订单编号计算一天的单量,造成

    2024年02月07日
    浏览(37)
  • 【分布式】分布式存储架构

    说到分布式存储,我们先来看一下传统的存储是怎么个样子。 传统的存储也称为集中式存储, 从概念上可以看出来是具有集中性的,也就是整个存储是集中在一个系统中的,但集中式存储并不是一个单独的设备,是集中在一套系统当中的多个设备,比如下图中的 EMC 存储就需

    2024年02月10日
    浏览(37)
  • 分布式 - 谈谈你对分布式的理解,为什么引入分布式?

    不啰嗦,我们直接开始! 真正了解分布式系统的概念,日后工作中具有分布式系统设计思想。 能否在设计中对系统稳定性方面考虑周全。 能构建高 QPS 健壮的系统架构。 问题分析: 各种分布式框架层出不穷,Spring Cloud,阿里的 Dubbo,无论使用哪一个,原理都相同,考察下基

    2024年02月15日
    浏览(34)
  • 高级分布式系统-第15讲 分布式机器学习--分布式机器学习算法

    高级分布式系统汇总:高级分布式系统目录汇总-CSDN博客 按照通信步调,大致可以分为同步算法和异步算法两大类。 同步算法下,通信过程中有一个显式的全局同步状态,称之为同步屏障。当工作节点运行到 同步屏障 ,就会进入等待状态,直到其工作节点均运行到同步屏障

    2024年01月18日
    浏览(38)
  • 分布式系统面试全集通第一篇(dubbo+redis+zookeeper----分布式+CAP+BASE+分布式事务+分布式锁)

    什么是分布式 一个系统各组件分别部署在不同服务器。彼此通过网络通信和协调的系统。 也可以指多个不同组件分布在网络上互相协作,比如说电商网站 也可以一个组件的多个副本组成集群,互相协作如同一个组件,比如数据存储服务中为了数据不丢失而采取的多个服务备

    2024年04月11日
    浏览(38)
  • 分布式爬虫架构-对等分布式(2)

    前言 本文是该专栏的第45篇,后面会持续分享python爬虫干货知识,记得关注。 在面对海量数据的采集需求时,使用分布式爬虫是非常有必要的。继上一篇,详细介绍主从分布式爬虫架构,对主从分布式相关知识感兴趣的同学,可往前翻阅。而本文,笔者再单独来详细介绍分布

    2023年04月25日
    浏览(41)
  • Redis与分布式-分布式锁

    接上文 Redis与分布式-集群搭建 为了解决上述问题,可以利用分布式锁来实现。 重新复制一份redis,配置文件都是刚下载时候的不用更改,然后启动redis服务和redis客户。 redis存在这样的命令:和set命令差不多,但是它有一个机制,当指定的key不存在的时候,才能进行插入,实

    2024年02月07日
    浏览(37)
  • 【分布式】分布式共识算法 --- RAFT

    CAP原则又称CAP定理,指的是在一个分布式系统中,一致性(Consistency)、可用性(Availability)、分区容错性(Partition tolerance) It states, that though its desirable to have Consistency, High-Availability and Partition-tolerance in every system, unfortunately no system can achieve all three at the same time. 在分布式系

    2024年02月06日
    浏览(33)
  • 【分布式】分布式事务:2PC

    分布式事务的问题可以分为两部分: 并发控制 concurrency control 原子提交 atomic commit 分布式事务问题的产生场景:一份数据被分片存在多台服务器上,那么每次事务处理都涉及到了多台机器。 可序列化(并发控制): 定义了事务执行的正确性 真正地并行执行事务,获得真正的

    2024年02月09日
    浏览(35)
  • (快手一面)分布式系统是什么?为什么要分布式系统?分布式环境下会有哪些问题?分布式系统是如何实现事务的?

    《分布式系统原理与泛型》中这么定义分布式系统: “ 分布式系统是若干独立计算机的集合, 这些计算机对于用户来说就像单个相关系统 ”, 分布式系统(distributed system)是建立在网络之上的软件系统。 就比如:用户在使用京东这个分布式系统的时候,会感觉是在使用一

    2024年02月08日
    浏览(54)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包