注:

Unimelb Comp90042 NLP笔记

相关tutorial代码链接

词汇语义学

目录

  • 词汇语义学
    • 1 情感分析
    • 2 单词语义学
      • 2.1 词汇语义学是什么意思?
      • 2.2 词网(WordNet)
        • 2.2.1 同义词集(Synsets)
        • 2.2.2 WordNet中名词的关系
        • 2.2.3 上位词链表(Hypernymy Chain)
      • 2.3 单词相似度(Word Similarity)
        • 2.3.1 通过路径长度判断单词相似度
        • 2.3.2 通过父节点和深度判断
        • 2.3.3 通过信息内容(Information Content)判断相似度
      • 2.4 词义消歧(Word Sense Disambiguation)
        • 2.4.1 有监督WSD
        • 2.4.2 无监督方法
    • 3 总结

1 情感分析

  • 使用 BOWKNN 分类器:

    • 训练数据
    • 测试数据
      “This is a wonderful film.”
  • 会出现两个问题
    • 该模型不知道 " movie "和 " film "是
      同义词。由于 "film "只出现在负面的例子中,模型只会知道它是一个否定词。
    • 词汇表中没有 "wonderful "一词(属于OOV - Out-OfVocabulary)。

所以说直接对比单词没有用,那应该怎么去对比单词的词义
答案:把这些信息通过一个词库明确地添加。

2 单词语义学

可以实现单词词义的对比可以通过两种方式:

  • 词汇语义学 (也是这篇文章会讲到的)

    • 它能够展现单词和单词之间的意思是怎么相互链接的
    • 人工搭建词汇数据库,即人为地把每个单词之间的意思
  • 分布式语义学(下一篇会讲)
    • 在文本中,单词之间是怎么互相关联的
    • 自动从语料库中搭建资源(数据库)

2.1 词汇语义学是什么意思?

  • 可以指的是单词的字典定义

    • 但是字典定义可能会使循环
    • 只有当前单词意思能够被理解的前提,循环解释才能被理解
    • 以下图为例,字典中 red 的解释为 “红宝石或者血的颜色”,然而 blood 的解释却为 “在动物的心脏、动脉循环的红色液体”
  • 他们与其他单词的关系
    • 因为记录的是单词之间的关系,所以最终也会形成环。但对于文本分析会更有帮助。

定义: 词义描述了词语含义的一个方面。(当一个词有多个词义时,它就是多义词(polysemous))
mouse 为例:

  • 一个mouse可以控制电脑系统
  • 一个安静的动物比如说mouse

通过字典解释的词义

  • 术语:由词典提供的文本定义
  • Bank ,通过词含义解释
    • 一个bank可以在托管账户中持有投资
    • 农业在东边的bank蓬勃发展
  • Bank ,字典定义
    • 接受存款并将资金用于借贷活动的金融机构
    • 坡地(特别是水体旁的坡地)

通过关系解释的词义

  • 另一种定义词义的方式是看这个单词和别的单词是什么关系
  • 同义词(Synonymy):比如 biglargevomitthrow up
  • 反义词(Antonymy): longshortbiglittle
  • 上位词(Hypernymy):is-a 的关系
    • 比如 cat is an animalcatanimal 的子集
    • 比如 mango is a fruit
  • 整体部分关系(Meronymy):整体和部分关系
    • 比如 leg is part of a chair
    • 比如 wheel is part of car

2.2 词网(WordNet)

  • 是一个存储词义关系的数据库
  • 英语词网包括大约120,000的名词,大约12,000的动词,大约21,000的形容词和大约4,000的副词。
  • 平均下来,一个名词会有 1.23 的词义,动词有 2.16 个词义
  • 大部分主要语言都有词网(www.globalwordnet.org, https://babelnet.org/)
  • 英语词网可以免费使用(之间通过nltk即可)

WordNet 例子
在WordNet中,名词 bass 有8中解释,但其实5个都比较类似,和声音有关,另外3个都和水生动物有关。

2.2.1 同义词集(Synsets)

  • WordNet的节点不是词或词干,而是词义
  • 它们由一组同义词,或称synsets来代表
  • bass 的 synsets(同一个单词不同的词义都会组成自己不同的synsets):
    • {bass1, deep6}
    • {bass6, bass voice1, basso2}
  • 其他 synset:
    • {chump1, fool2, gull1, mark9, patsy1, fall guy1, sucker1, soft touch1, mug2}
    • 上面的词义大致解释为:容易受骗,容易被人利用的人

nltk中使用wordnet
>>> nltk.corpus.wordnet.synsets(‘bank’)
找出了 bank 所有的Synsets。

[Synset('bank.n.01'), Synset('depository_financial_institution.n.01'), Synset('bank.n.03'),
Synset('bank.n.04'), Synset('bank.n.05'), Synset('bank.n.06'), Synset('bank.n.07'),爱他
Synset('savings_bank.n.02'), Synset('bank.n.09'), Synset('bank.n.10'), Synset('bank.v.01'),
Synset('bank.v.02'), Synset('bank.v.03'), Synset('bank.v.04'), Synset('bank.v.05'), Synset('deposit.v.02'),
Synset('bank.v.07'), Synset('trust.v.01')]

>>> nltk.corpus.wordnet.synsets(‘bank’)[0].definition()
找到 bank 第一个Synset的解释是什么

u'sloping land (especially the slope beside a body of water)‘

>>> nltk.corpus.wordnet.synsets(‘bank’)[1].lemma_names()
找到 bank 第二个同义词集中单词的词干

[u'depository_financial_institution', u'bank', u'banking_concern', u'banking_company']

2.2.2 WordNet中名词的关系

2.2.3 上位词链表(Hypernymy Chain)

bass 的第三个词义和第七个词义为例,他们不断往上找父集,就可以看到最终会在 whole, unit 处相较,也就是这两种词义都是 whole, unit 的子集

2.3 单词相似度(Word Similarity)

  • 同义词: filmmovie 是同义词
  • showfilm 怎么说? operafilm 呢?他们也很像,但不能说是同义词。
  • 所以说单词相似度不能仅仅通过判断单词是否是同义词(这种二元关系)来决定。单词相似度是一个谱(spectrum), 对于两个单词是否相似的结果是连续的。
  • 我们可以使用词义库(如WordNet)或词典来估计词的相似性。

2.3.1 通过路径长度判断单词相似度

  • 给定一个词网,通过两个单词之间的路径长度判断相似度
  • pathlen(c1,c2)pathlen(c_1,c_2)pathlen(c1​,c2​) = 1 + c1c_1c1​和c2c_2c2​之间的最短路径的边长度(注意这里的 c 是一个词义(或者一个同义词集),并不是一个单词)
  • 因此两个同义词的相似度公式可以写成:simpath(c1,c2)=1pathlen(c1,c2)simpath(c_1,c_2)=\frac{1}{pathlen(c_1,c_2)}simpath(c1​,c2​)=pathlen(c1​,c2​)1​,即越长,相似度越低
  • 那么单词的相似度的公式:wordsim(w1,w2)=maxc1∈senses(w1),c2∈senses(w2)simpath(c1,c2)wordsim(w_1,w_2)=\underset{c_1\in senses(w_1),c_2\in senses(w_2)}{max}simpath(c_1,c_2)wordsim(w1​,w2​)=c1​∈senses(w1​),c2​∈senses(w2​)max​simpath(c1​,c2​)

即遍历这两个单词所有的词义,查看每个词义之间的相似度,拿出最大的作为单词相似度。

例子
这里每个节点都是一个同义词集合,但为了方便,我们用单词来表示。

根据 simpath(c1,c2)=1pathlen(c1,c2)=11+edgelen(c1,c2)simpath(c_1,c_2)=\frac{1}{pathlen(c_1,c_2)} = \frac{1}{1+edgelen(c_1,c_2)}simpath(c1​,c2​)=pathlen(c1​,c2​)1​=1+edgelen(c1​,c2​)1​,这里之所以 + 1 是为了避免两个单词的某一个词义在同一个同义词集合里面,这样会导致分母为 0.
simpath(nickel,currency)=1/4=0.25simpath(nickel,money)=1/6=0.17simpath(nickel,Richterscale=1/8=0.13)simpath(nickel,currency) = 1/4 = 0.25\\ simpath(nickel,money) = 1/6=0.17 \\ simpath(nickel,Richter\ scale = 1/8=0.13)simpath(nickel,currency)=1/4=0.25simpath(nickel,money)=1/6=0.17simpath(nickel,Richter scale=1/8=0.13)
nickel 是五分美金的意思,所以它和currency货币 还有 money钱 的相似度比较高可以理解。

2.3.2 通过父节点和深度判断

问题nickelRichter scale 里氏震级 的相似度也没比 nickelmoney 低太多,毕竟Richter scale 都已经是另外一个大分支下的单词了。所以说,越靠近顶层的跳跃会产生更大的差距
解决:将深度(depth)也考虑进来(Wu & Palmer)

  • 找到最小的公共祖先(LCS,lowest common subsumer,也可以理解为二叉树里面的最小公共节点吧)
  • 然后看这个公共祖先的节点深度,以及两个同义词集合的深度:simwup(c1,c2)=2×depth(LCS(c1,c2))depth(c1)+depth(c2)simwup(c_1,c_2)=\frac{2 \times depth(LCS(c_1,c_2))}{depth(c_1)+depth(c_2)}simwup(c1​,c2​)=depth(c1​)+depth(c2​)2×depth(LCS(c1​,c2​))​,当有 较高值的时候, 以为着父节点很深,词义很浅。

例子
还是那上面的那张图,此时 simwup(nickel,money)=2∗2/(6+3)=0.44simwup(nickel,money) = 2*2/(6+3)=0.44simwup(nickel,money)=2∗2/(6+3)=0.44,simwup(nickel,Richterscale)=2∗1/(6+3)=0.22simwup(nickel,Richter\ scale) = 2*1/(6+3)=0.22simwup(nickel,Richter scale)=2∗1/(6+3)=0.22
区别没有我们想象的那么大,所以深度也不是一个很理想的用来做语义区分的方法。

  • 那些在层级中靠近顶端的节点(词义)通常是非常抽象或者通俗的。我们怎么才能更好地抓住这个特性,帮助我们进一步完善语义相似度?

2.3.3 通过信息内容(Information Content)判断相似度

首先了解一个概念:概念概率(Concept Probability)

一个节点的概念概率
概念概率(Concept Probability)用来表示这个节点有多么抽象,多么概念。

  • 通俗的节点 就会有较高的概念概率,比如说 object (物体)
  • 窄一点的节点 会有较低的概念概率,比如说 vocalist (声乐家)
  • 概念概率 是通过把它孩子节点的unigram概率求和而得到的。P(c)=∑s∈child(c)count(s)NP(c)=\frac{\sum_{s \in child(c)}count(s)}{N}P(c)=N∑s∈child(c)​count(s)​,其中 NNN 为总的同义词集合数量。
  • child(c)child(c)child(c)表示 ccc的子同义词集合
  • child(geological−informationa)={hill,ridge,grotto,coast,naturalelevation,cave,shore}child(geological-informationa)=\{hill, ridge, grotto, coast, natural\ elevation, cave, shore\}child(geological−informationa)={hill,ridge,grotto,coast,natural elevation,cave,shore}
  • child(naturalelevation)={hill,ridge}child(natural\ elevation) = \{hill, ridge\}child(natural elevation)={hill,ridge}

例子
所以在顶层越抽象的节点会有更高的概率。

然后通过计算信息内容(Information Content) 来判断相似(见下图):
当 P(c)P(c)P(c) 概念概率越大,则 ICICIC 越小,说明这个词义包含的信息越少。
然后用 ICICIC 替代之前的 depthdepthdepth,当 simlinsimlinsimlin的值越高,说明它父节点的概念越窄(内容越详细),待判断的词义的概念越广泛。
假如 现在有两个完全不搭边的词义,他们两个的公共祖先就是 entity ,分子则会变得很小,从而使得相似度变低。

2.4 词义消歧(Word Sense Disambiguation)

  • 任务: 为句子中的词语选择正确的意义
  • Baseline:假设最流行的词义
  • 良好的WSD可能对许多任务有用
    • 比如说 了解句子中使用的是哪种意义的mouse很重要
    • WSD 现在不那么流行了,因为词义会通过上下文表现而隐含地抓取到(后面篇幅会讲)。

2.4.1 有监督WSD

  • 应用标准的机器分类器
  • 特征向量通常是目标周围的单词和句法
    • 但上下文也是含糊不清的(ambiguous)
    • 上下文窗口应该有多大?(通常很小)。
  • 需要已经词义标记的语料库
    • 敏感度评估(SENSEVAL),SEMCOR(NLTK中提供)等。
    • 创建非常耗费时间

2.4.2 无监督方法

Lesk

  • Lesk:选择其WordNet注解中与上下文最重合的词义。
  • 比如说一句话是 “The bank can guarantee deposits will eventually cover future tuition costs because it invests in adjustable-rate mortgage securities” (银行可以保证存款最终能支付未来的学费,因为它投资于可调整利率的抵押贷款证券)
  • 通过在 WordNet中寻找 bank 的所有解释,我们发现在 bank1 注解中出现了两个与上下文重复的单词 depositsmortgage;但是 bank2 里没有任何重叠的词。
  • 所以这句话中 bank 的词义就是 bank1 的意思。

    Clustering
  • 把一个单词的所有使用都聚集在一起:
  • 然后在这些文字中使用聚类,以学习到不同的词义
    • 合理性:如果词义相同那么它的上下文按理说也是差不多的。
    • 缺点:但聚类出来的词义并不容易解释(只知道他们是一起的,但不知道是什么意思);需要配合词典进行解释

3 总结

  • 词库的创建涉及专家策划(语言学家)。
  • 最前沿的方法是试图从语料库中直接得出语义,不需要人工干预

【NLP基础理论】 08 词汇语义学 Lexical Semantics相关推荐

  1. 【NLP基础理论】 09 分布语义学(Distributional Semantics))

    注: Unimelb Comp90042 NLP笔记 相关tutorial代码链接 分布语义学 目录 分布语义学 1 分布语义学 1.1 分布假设 1.2 根据上下文猜意思 1.3 词向量 2 构建词 ...

  2. 【NLP基础理论】01 数据预处理

    注: Unimelb Comp90042 NLP笔记 相关tutorial代码链接 目录 1 Preprocessing Steps(预处理步骤) 1.1 Sentence Segmentation( ...

  3. 【NLP基础理论】03 文本分类

    注: Unimelb Comp90042 NLP笔记 相关tutorial代码链接 Text Classification(文本分类) 目录 Text Classification(文本分类) 1 分 ...

  4. 【NLP基础理论】02 N-grams语言模型和Smoothing

    注: Unimelb Comp90042 NLP笔记 相关tutorial代码链接 N-grams Language Model (N-grams语言模型) 目录 N-grams Language M ...

  5. 向量语义与静态词嵌入——从tf-idf到GloVe

    目录 Chapter6 向量语义与嵌入 (Vector Semantics and Embeddings) 6.1 词汇语义学 (Lexical Semantics) 6.2 向量的语义 (Vecto ...

  6. 资源 | 盘点国外NLP领域40大高校及相关知名学者

    向AI转型的程序员都关注了这个号☝☝☝ 本文译自Quora话题:Which are the best schools for studying natural language processing( ...

  7. Chapter 6 Vector Semantics

    Chapter 6 Vector Semantics Speech and Language Processing ed3 读书笔记 Words that occur in similar conte ...

  8. 【NLP】经典分类模型朴素贝叶斯解读

    贝叶斯分类器在早期的自然语言处理任务中有着较多实际的应用,例如大部分的垃圾邮件处理都是用的贝叶斯分类器.贝叶斯分类器的理论对于理解后续的NLP模型有很大的进益,感兴趣的小伙伴一定要好好看看,本文会详细 ...

  9. 深圳招聘 | 元象唯思:决策AI研发工程师、NLP算法工程师(可实习)

    合适的工作难找?最新的招聘信息也不知道? AI 求职为大家精选人工智能领域最新鲜的招聘信息,助你先人一步投递,快人一步入职! 元象唯思 元象(XVerse)将前沿科技,特别是人工智能.云渲染.视频编解 ...

  10. Interview之NLP:人工智能领域求职岗位—自然语言处理NLP算法工程师职位的简介、薪资介绍、知识结构之详细攻略

    Interview之NLP:人工智能领域求职岗位-自然语言处理NLP算法工程师职位的简介.薪资介绍.知识结构之详细攻略 目录 自然语言处理NLP算法工程师的职位简介 1.资讯指数 2.各大公司的具体职 ...

最新文章

  1. Android ImageView图片代码实现按屏幕宽度等比例缩放
  2. C函数数组元素初始化
  3. GCD and LCM Aizu - 0005(辗转相除)+GCD LCM Inverse POJ - 2429(java或【Miller Rabin素数測试】+【Pollar Rho整数分解】)
  4. 利用.dSYM和.app文件准确定位Crash位置
  5. FreeRTOS队列集
  6. 40岁从零开始学习软件开发,四年后我成了首席研发
  7. iOS多线程:『pthread、NSThread』详尽总结
  8. 信息学奥赛一本通C++语言——1104:计算书费
  9. 线上讲座——全国海关中心架构师王翔畅谈设计模式
  10. Flutter InkWell 动画浅析
  11. 图神经网络总结(GCN/GAT/GraphSAGE/DeepWalk/TransE)
  12. c语言程序设计题怎么写,C语言程序设计题库1(最新整理)
  13. mac使用之必备神器
  14. c++---------虚函数及继承(一)
  15. DNA甲基化数据分析专题
  16. 老广人为粤语---广州话写篇文章
  17. WZOI-277白细胞计数
  18. 删除Management Data Warehouse (MDW) job失败
  19. 想要转行产品经理,可是社招都要有产品经理相关经验的,该如何转行呢?
  20. No IDEA annotations attached to the JDK 1.8 问题

热门文章

  1. Windows XP修改CHM字体大小
  2. swot分析模板_学生个人生涯规划报告模板
  3. JavaScript正则表达式大全
  4. SqlServer2008创建用户及授予权限
  5. ThinkPad E450 10.11 驱动HD4400的注意即解决方法_s芃成_新浪博客
  6. et200s模块接线图讲解_西门子S7-1500使用ET200S 1SI模块实现自由口通信
  7. Wallpaper透视效果的C++实现(含源文件)
  8. 通信专业顶刊_通信类期刊排名_2016通信期刊排名_2016通信前沿新技术
  9. 软件工程导论—可行性研究
  10. 通信软件开发与应用结业报告