Word Embeddings And Word Sense

最近在学习2019版的CS224N,把所听到的知识做成笔记,以便自己不时地回顾这些知识,另外还希望可以方便没有时间看课程的朋友们用来做个快速的overview(当然,亲自上课是最好的选择)。我也尽量地把所有课程的知识细节都写出来,以及一些相关的知识都牵扯进来。


近年来NLP领域发展变化得比较大,语言模型已经开始大行其道,词嵌入技术差不多变成了只是一个稀疏向量的稠密化过程。尽管如此,我认为词嵌入技术仍然还是NLP发展历程中重要的里程碑,因为这个技术让人们可以用数字来描述词义,并且在很多领域都取得了比之前更好的表现。

Discrete Representation

文本是非结构化数据,该如何表达以适合用于分析是一个比较有挑战的问题。One-Hot编码是解决这个问题的最简单也是最直接的办法。
接下来用一段话简单描述一下One-Hot编码。假设我们词表(vocabulary)有V个单词,我们对每个单词都赋予一个下标i(i属于0…V-1),每个单词由一个长度为V的向量表示,其中只有对应下标的元素为1,其他元素均为0。借用Tensorflow官方的一个图:

图一 One-Hot编码示例

One-Hot编码虽然简单易用,但是缺点也很明显:

  1. 词向量长度等于词表长度,而且词向量是及其稀疏的,当词表很大时计算复杂度会很大;
  2. 任意两个词都是正交的,意味着无法从One-Hot编码中获取词与词之间的关系
  3. 任意两个词的距离都是相等的,无法从距离上反应两个词的语义相关度

顺带一提,针对缺点1,其实早期已经有一些解决办法,其中比较简单的办法是Hash Trick。Hash Trick是将每个词通过一个哈希函数计算得出各自的哈希值,然后让哈希值作为这个词在词表中的index。这么一顿操作的结果是,词向量变成了一个可人为指定长度的向量,极大地降低了稀疏性带来的额外计算。另外这种方法也面临着哈希冲突的问题(即不止一个词映射到同一个哈希值)。不管怎样,这种方法很直接,很暴力,但也被实践证实了是很有效的。不过这个trick仍然无法给词义计算带来帮助。

图二 Hash Trick

Distributional Representation

说实话其实我一直理解不了Distributional这个词(可能是有什么渊源?或者是相对于只有一个非零元素的离散性词向量而言?欢迎各位大神指教),我的理解就是分布式表述是用连续性的稠密向量来表示词语。分布式表述的好处在于它能更好地表达词的意思,而且通过稠密向量也可以很容易的计算出词与词的关系(词与词之间不再两两正交),而且有新词语来的时候我们不需要扩展向量的维度,只需要将词语映射到维度远小于词表长度的向量就好了。

顺带提一下,后续的很多方法都是基于这句富含哲学意义的话:

You shall know a word by the company it keeps.

人们明白了一个指导思想:语义是由上下文赋予的,于是,人们开始利用上下文来计算词的语义。

Word2Vec

Word2Vec是谷歌研究员在2013年提出来的方法,我觉得它是里程碑式的诞生,因为它不仅仅可以用于捕获词义,还可以用来辅助解决其他NLP领域的问题。接下来,我先介绍它大概的算法原理,具体实现细节会放到后面(按课程顺序)。
这里归纳一下:

  1. Word2Vec需要用大量的语料来实现自监督学习(self-supervise learning)。其中,语料是NLP中对用来训练的文本数据的称呼,自监督学习是指训练方法是监督学习,只是这个label是来自于自身(回顾一下那句富含哲学意义的名言)。
  2. 在计算时采用固定大小的采样窗口,使用中间词c(center word)去预测环境词o(context words)(图三),或者反过来使用环境词预测中间词。在遍历语料的过程中,下文我们默认采用中间词预测环境词这种方法,即P(o|c)

图三 中间词预测上下文(来自https://www.jianshu.com/p/af8f20fe7dd3)

  1. 使用中间词预测环境词,即在输入中间词的时候需要使对应环境词的预测概率尽可能的大,即要最大化P(o|c),而预测函数则定义为:
    P ( o ∣ c ) = e x p ( u o ′ ⋅ v c ) ∑ w e x p ( u w ′ ⋅ v c ) P(o|c) = \dfrac{exp(u_o^{\prime}\cdot{v_c})}{\sum_w{exp(u_w^{\prime}\cdot{v_c})}} P(oc)=wexp(uwvc)exp(uovc)
  2. 模型参数即为词向量(注:在上例中每个模型中都有两个向量:u和v)。
  3. 求偏导(以对v为例):
    ∂ ∂ v c l o g P ( o ∣ c ; θ ) = ∂ ∂ v c l o g [ e x p ( u o T ⋅ v c ) ] − ∂ ∂ v c l o g [ ∑ w e x p ( u w T ⋅ v c ) ] = u o − ∑ x ∣ V ∣ e x p ( u x T ⋅ v c ) ∑ w e x p ( u w T ⋅ v c ) ⋅ u x = u o − ∑ x ∣ V ∣ P ( x ∣ c ) ⋅ u x \begin{aligned} \frac{\partial}{\partial{v_c}}{logP(o|c;\theta)} & =\frac{\partial}{\partial{v_c}}{log[exp(u_o^{T}\cdot{v_c})]}-\frac{\partial}{\partial{v_c}} {log[\sum_w{exp(u_w^{T}\cdot{v_c})}]}\\ & =u_o-\sum_x^{|V|}{\frac{ {exp(u_x^{T}\cdot{v_c})}}{\sum_wexp(u_w^{T}\cdot{v_c})}\cdot{u_x}}\\ & =u_o-\sum_x^{|V|}{P(x|c)}\cdot{u_x} \end{aligned} vclogP(oc;θ)=vclog[exp(uoTvc)]vclog[wexp(uwTvc)]=uoxV
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
回答: Word sense是指一个词语在不同上下文中所具有的不同含义。在自然语言处理中,词义消歧是一项重要的任务,旨在确定多义词在不同上下文中的正确含义,以消除歧义。\[2\]分布式表述方法如Word2Vec可以用于捕获词义,通过将词语映射到稠密向量空间中,可以更好地表达词的意思,并且可以计算词与词之间的关系。\[1\]\[3\]通过使用神经网络模型,如基于Bi-LSTM的模型,可以实现词义消歧,通过比较相似度来确定正确的词义项。\[2\]因此,分布式表述方法和词义消歧模型可以帮助我们理解和处理词语的不同含义。 #### 引用[.reference_title] - *1* *3* [Word Embeddings And Word Sense](https://blog.csdn.net/sinat_29819401/article/details/90669304)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [【论文阅读】Word Sense Disambiguation Model based on Bi-LSTM](https://blog.csdn.net/weixin_47936614/article/details/124982956)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值