向量语义

词汇语义

  • 语义概念(sense or concept)是单词含义(word sense)的组成部分,词原型可以是多义的。

  • 同义词是指:在某些或者全部的上下文中,单词之间有相同或近似含义

  • 可能没有完全相同含义的同义词例子!

    即使在很多情况下(上下文语境),单词间的含义是相同的。

    但仍然有可能因为礼貌(politeness),俚语(slang),流派(genre)等其他因素导致不会完全相同。

向量语义

  • 将语义定义为基于分布的一个空间向量

  • 一个单词 = 一个向量

    同义词定义为语义空间中相邻的词

    通过查看文本数据中的附近词来自动构建向量空间

  • 词向量可以称为词嵌入(embeddings),因为该向量嵌入在一个向量空间中。

  • 两种词嵌入

    • Tf-idf:

      主要用于信息检索的一种常用模型

      会生成较为稀疏的词向量

      单词由附近单词计数有关的简单函数来表示

    • Word2vec:

      会生成较为稠密的词向量

      通过训练一个分类器来预测一个单词出现在某一语境中的概率,来生成表示

相似度度量

  • 两个向量的点积是一个标量

    \[\text{dot product}(v,w)=v \cdot w=\sum_{i=1}^{N}v_iw_i
    \]
    • 点积的结果如果值越大,说明两个向量之间在相同维度上有较大的值。因此,点积可以作为一种向量之间相似度度量的方法。
    • 点积适合高纬度向量,如果向量维度越高,点积的结果值也会越高。
  • 余弦相似度

    \[\cos(v,w) = \frac{v \cdot w}{|v||w|} = \frac{\sum_{i=1}^{N}v_iw_i}{\sqrt{\sum_{i=1}^{N}v_i^2}\sqrt{\sum_{i=1}^{N}w_i^2}}
    \]
    • 基于向量a和b的点积:

      \[a \cdot b = |a||b| \cos{\theta}
      \]
    • \(-1\)表示两个向量在相反方向;\(+1\)表示两个向量方向一致;\(0\)表示两个向量正交。

TF-IDF

单词t在文档d中的\(tf-idf\)值表示为

\[w_{t,d} = tf_{t,d} \times idf_t
\]

\(tf_{t,d}\)有两中计算方式,一种是\(tf_{t,d} = count(t,d)\),但更常见的是用log函数对计数进行处理:

\[tf_{t,d} = \log_{10}(count(t,d)+1)
\]

\(df_t\)代表单词t在多少个文档中出现,N表示数据集中文档的总数,有

\[idf_t = \log_{10}(\frac{N}{df_t})
\]

word2vec

word2vec 的直觉是,我们不会计算每个单词 w 在例如杏子附近出现的频率,而是在二进制预测任务上训练分类器。

给定一组正采样和负采样,以及一组初始词向量,

算法的学习目标是将这些初始向量训练为:

•最大化目标词和上下文词对(w , cpos )的相似性,

•最小化反例中目标词与反例上下文词对 (w , cneg) 的相似性。

sigmoid函数

\[y = \sigma(z) = \frac{1}{1 + e^{-z}}
\]

值域为 \([0,1]\)

将点积转化为概率

  • \(P(+|w,c) = \sigma(c \cdot w) = \frac{1}{1 + \exp(-c \cdot w)}\)

  • \(P(-|w,c) = 1 - P(+|w,c) = \sigma(-c \cdot w) = \frac{1}{1 + \exp(c \cdot w)}\)

  • 假设上下文单词相互独立,并且将它们的概率相乘:

    \[\begin{aligned}
    P(+|w, c_{1:L}) = \Pi_{i=1}^{L} \sigma(c_i \cdot w)\\
    \log P(+|w, c_{1:L}) = \sum_{i=1}^{L} \log \sigma(c_i \cdot w)
    \end{aligned}
    \]
  • 将损失函数(公式6.34)各项偏导数进行求解,并使得推导结果分别为公式6.35,6.36,6.37。

    \[\begin{aligned}
    L_{CE} &= - \log{[P(+|w, c_{pos}) \Pi_{i=1}^k P(-|w, c_{neg_i})]} \\
    &= - [\log{P(+|w,c_{pos})}+\sum_{i=1}^k \log{P(-|w,c_{neg_i})}] \\
    &= -[\log{\sigma(c_{pos} \cdot w)} + \sum_{i=1}^k \log{\sigma(-c_{neg_i} \cdot w)}]
    \end{aligned}
    \tag{6.34}
    \]
    \[\frac{\partial L_{CE}}{\partial c_{pos}} = [\sigma(c_{pos} \cdot w)-1]w \tag{6.35}
    \]
    \[\frac{\partial L_{CE}}{\partial c_{neg}} = [\sigma(c_{neg} \cdot w)]w \tag{6.36}
    \]
    \[\frac{\partial L_{CE}}{\partial c_{w}} = [\sigma(c_{pos} \cdot w)-1]c_{pos}+\sum_{i=1}^k [\sigma(c_{neg_i} \cdot w)]c_{neg_i} \tag{6.37}
    \]

    We'll start by finding the partial derivative with respect to \(c_{pos}\):

    \[\frac{\partial L_{CE}}{\partial c_{pos}}=\frac{\partial}{\partial c_{pos}} = (-[\log{\sigma(c_{pos}·w)}+\sum_{i=1}^{k} \log{\sigma(-c_{neg_i}·w)}])
    \]

    Using the chain rule, we have:

    \[\frac{\partial L_{CE}}{\partial c_{pos}} = -\frac{1}{\sigma(c_{pos}·w)} \frac{\partial}{\partial c_{pos}} \sigma(c_pos·w)
    \]

    Recall that the derivate of the sigmoid function with respect to \(x\) is given by:

    \[\frac{\partial}{\partial x} \sigma(x) = \sigma(x)(1-\sigma(x))
    \]

    Applying this to our equation, we get:

    \[\frac{\partial L_{CE}}{\partial c_{pos}} = -\frac{1}{\sigma(c_{pos}·w)}·\sigma(c_{pos}·w)·(1-\sigma(c_{pos}·w))·w
    \]

    Simplifying further:

    \[\frac{\partial L_{CE}}{\partial c_{pos}} = [\sigma(c_{pos}·w)-1]w \tag{6.35}
    \]

    Next, we find the partial derivative with respect to \(c_{neg}\):

    \[\frac{\partial L_{CE}}{\partial c_{neg}}=\frac{\partial}{\partial c_{neg}} = (-[\log{\sigma(c_{pos}·w)}+\sum_{i=1}^{k} \log{\sigma(-c_{neg_i}·w)}])
    \]

    Using the chain rule and the derivative of the sigmoid function, we have:

    \[\frac{\partial L_{CE}}{\partial c_{neg}} = \sum_{i=1}^{k} \frac{1}{\sigma(-c_{neg_i}·w)} \frac{\partial}{\partial c_{neg}} \sigma(-c_{neg_i}·w)
    \]

    Simplifying further:

    \[\frac{\partial L_{CE}}{\partial c_{neg}} = [\sigma(c_{neg}·w)]w \tag{6.36}
    \]

    Using the chain rule and the derivative of the sigmoid function, we have:

    \[\frac{\partial L_{CE}}{\partial w} = - \frac{1}{\sigma(c_{pos}·w)} · \frac{\partial}{\partial w} \sigma(c_{pos}·w) - \sum_{i = 1}^{k} \frac{1}{\sigma(-c_{neg_i}·w)} \frac{\partial}{\partial w} \sigma(-c_{neg_i}·w)
    \]

    Using the derivative of the sigmoid function, we have:

    \[\frac{\partial}{\partial w} \sigma(c_{pos}·w) = \sigma(c_{pos}·w)·(1-\sigma(c_{pos}·w))·c_{pos}\]

    and

    \[\frac{\partial}{\partial w} \sigma(-c_{neg_i}·w) = \sigma(-c_{neg_i}·w)·(1-\sigma(-c_{neg_i}·w))·(-c_{neg_i})
    \]

    Simplifying further, we have

    \[\frac{\partial L_{CE}}{\partial w} = [\sigma(c_{pos}·w)-1]c_{pos}+\sum_{i=1}^{k}[\sigma(c_{neg_i}·w)]c_{neg_i} \tag{6.37}
    \]

NLP复习之向量语义的更多相关文章

  1. NLP︱高级词向量表达(一)——GloVe(理论、相关测评结果、R&python实现、相关应用)

    有很多改进版的word2vec,但是目前还是word2vec最流行,但是Glove也有很多在提及,笔者在自己实验的时候,发现Glove也还是有很多优点以及可以深入研究对比的地方的,所以对其进行了一定的 ...

  2. NLP︱高级词向量表达(三)——WordRank(简述)

    如果说FastText的词向量在表达句子时候很在行的话,GloVe在多义词方面表现出色,那么wordRank在相似词寻找方面表现地不错. 其是通过Robust Ranking来进行词向量定义. 相关p ...

  3. NLP︱高级词向量表达(二)——FastText(简述、学习笔记)

    FastText是Facebook开发的一款快速文本分类器,提供简单而高效的文本分类和表征学习的方法,不过这个项目其实是有两部分组成的,一部分是这篇文章介绍的 fastText 文本分类(paper: ...

  4. NLP之词向量

    1.对词用独热编码进行表示的缺点 向量的维度会随着句子中词的类型的增大而增大,最后可能会造成维度灾难2.任意两个词之间都是孤立的,仅仅将词符号化,不包含任何语义信息,根本无法表示出在语义层面上词与词之 ...

  5. NLP获取词向量的方法(Glove、n-gram、word2vec、fastText、ELMo 对比分析)

    自然语言处理的第一步就是获取词向量,获取词向量的方法总体可以分为两种两种,一个是基于统计方法的,一种是基于语言模型的. 1 Glove - 基于统计方法 Glove是一个典型的基于统计的获取词向量的方 ...

  6. 深度学习之NLP获取词向量

    1.代码 def clean_text(text, remove_stopwords=False): """ 数据清洗 """ text = ...

  7. [Algorithm & NLP] 文本深度表示模型——word2vec&doc2vec词向量模型

    深度学习掀开了机器学习的新篇章,目前深度学习应用于图像和语音已经产生了突破性的研究进展.深度学习一直被人们推崇为一种类似于人脑结构的人工智能算法,那为什么深度学习在语义分析领域仍然没有实质性的进展呢? ...

  8. NLP︱词向量经验总结(功能作用、高维可视化、R语言实现、大规模语料、延伸拓展)

    R语言由于效率问题,实现自然语言处理的分析会受到一定的影响,如何提高效率以及提升词向量的精度是在当前软件环境下,比较需要解决的问题. 笔者认为还存在的问题有: 1.如何在R语言环境下,大规模语料提高运 ...

  9. nlp语义理解的一点儿看法

    nlp领域里,语义理解仍然是难题! 给你一篇文章或者一个句子,人们在理解这些句子时,头脑中会进行上下文的搜索和知识联想.通常情况下,人在理解语义时头脑中会搜寻与之相关的知识.知识图谱的创始人人为,构成 ...

  10. NLP点滴——文本相似度

    [TOC] 前言 在自然语言处理过程中,经常会涉及到如何度量两个文本之间的相似性,我们都知道文本是一种高维的语义空间,如何对其进行抽象分解,从而能够站在数学角度去量化其相似性.而有了文本之间相似性的度 ...

随机推荐

  1. 8.2 BeingDebugged

    BeingDebugged 是Windows系统PEB结构体中的一个成员,它是一个标志位,用于标识当前进程是否正在被调试.BeingDebugged的值为0表示当前进程未被调试,值为1表示当前进程正在 ...

  2. 带宽优化新思路:RoCE网卡聚合实现X2增长

    本文分享自华为云社区<2个RoCE网卡Bond聚合,实现带宽X2>,作者: tsjsdbd . 我们知道操作系统里面,可以将2个实际的物理网卡,合体形成一个"逻辑网卡" ...

  3. 算法——AcWing算法提高课中代码和题解

    文章目录 第一章 动态规划 (完成情况:64/68) 数字三角形模型 最长上升子序列模型 背包模型 状态机模型 状态压缩DP 区间DP 树形DP 数位DP 单调队列优化DP 斜率优化DP 第二章 搜索 ...

  4. CSS 多行文本超链接下划线动效

    先看效果 乍一看,是不是感觉很简单,仔细一瞅发现事情好像没有那么简单. 如果十分钟还没想出怎么实现,那就把简历上的"精通css"改成"了解css"-- 大部分人 ...

  5. 【信创】 JED on 鲲鹏(ARM) 调优步骤与成果

    项目背景 基于国家对信创项目的大力推进,为了自主可控的技术发展,基础组件将逐步由国产组件替代,因此从数据库入手,将弹性库JED部署在 国产华为鲲鹏机器上(基于ARM架构)进行调优,与Intel (X8 ...

  6. 传纸条 luoguP1006

    题目描述 小渊和小轩是好朋友也是同班同学,他们在一起总有谈不完的话题.一次素质拓展活动中,班上同学安排坐成一个 mm 行 nn 列的矩阵,而小渊和小轩被安排在矩阵对角线的两端,因此,他们就无法直接交谈 ...

  7. go 流程控制之switch 语句介绍

    go 流程控制之switch 语句介绍 目录 go 流程控制之switch 语句介绍 一.switch语句介绍 1.1 认识 switch 语句 1.2 基本语法 二.Go语言switch语句中cas ...

  8. client-go实战之八:更新资源时的冲突错误处理

    欢迎访问我的GitHub 这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos 本篇概览 本文是<client-go实战> ...

  9. 程序是如何在计算机上被执行的?(下篇:cpu工作原理)

    本文接上文程序是如何在计算机上被执行的?(上篇:软件部分),主要内容是机器语言如何在计算机硬件上运行,关于逻辑门,加法器,布尔运算,亦即,cpu的工作原理. 1.逻辑门 以下图片是<三体> ...

  10. Python Web UI自动化报错 :ResourceWarning: Enable tracemalloc to get the object allocation traceback

    ResourceWarning资源警告解决方案 原因:在执行线性脚本完毕时,没有及时释放相应资源,导致内存堆积,从而造成内存溢出(如关闭浏览器等操作),此时,Python将会做出提醒: 在百度吸取 网 ...