[New Paper]A Joint Model for Word Embedding and Word Morphology

2024-01-08 13:50

本文主要是介绍[New Paper]A Joint Model for Word Embedding and Word Morphology,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

大家端午节快乐!本文将分享一篇关于词向量模型最新研究的文章,文章于6月8号提交到arxiv上,题目是A Joint Model for Word Embedding and Word Morphology,作者是来自剑桥大学的博士生Kris Cao。


本文最大的贡献在于第一次将词形联合词向量一同进行训练,从某种程度上解决了未登录词(OOV)的词向量表示问题,同时也得到了一个效果不错的词形分析器。


介绍本文模型之前先简单介绍下本文中采用的词向量训练方法,skip-gram with negative sampling(SGNS)。这个方法是word2vec中的一种方法,大概的思路是可参见下图:


640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=


通过用dog这个词来预测其上下文,比如cute、fluffy、barked、loudly,为了更快地收敛,增加负样本,即图中的bicycle和Episcopal这两个与dog无关的词。skip-gram的思路就是通过word来预测上下文context,而negative sampling则是根据当前词构造出一些与之无关的词,作为负样本加速收敛。


接下来介绍本文的模型Char2Vec,将字符作为最小的单元进行研究,因为对于字符这个层次来说,并不会出现OOV词的情况。具体看下图:


640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=


在每个单词的首和尾分别添加符号^和$作为标记,将词看作是一个字符序列。在这个序列上用一个正向LSTM和一个反向LSTM得到两组hidden state,每个位置上的字符都对应着两个hidden state,将其拼接起来,然后用一个单层前馈神经网络进行处理,得到该位置上的hidden state,记为h(i)。有了每个字符的表示,接下来用attention机制来构造出词的表示,即学习一个权重系数,来表明这个词的语义与哪个h(i)关系更大,一般来说词干所在的h(i)权重会大一些,词前缀或者后缀并不能表示语义,所以权重会小很多。见下图:


640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=


图中的单词malice、hatred、greed会与序列中的词干spit、spite,前缀^、后缀ful关系就会紧密一些,而与其他错误的字符串关系不大。


通过attention model我们得到了词向量f(w)。剩下的过程就是用skip-gram with negative sampling来训练词向量了。先前的工作都是用lstm处理字符序列来表示整个单词向量,本文并没有这样做,而是将直接使用attention model来获取每个h(i)中的信息,包括一个正向的lstm和反向的lstm,正向的lstm包含了词干和词前缀,反向的lstm包含了词后缀。当我们处理未知的词时,可以将这个词分解为已知的部分和未知的部分,这个模型就可以通过已知的部分来预测整个词的词向量,因此解决了OOV的问题。


实验中测试了该模型的词形分析的能力,尤其是在单词词形很丰富(包括词干、前缀、后缀)的情况下,效果优于一些成熟的分词器。看下图:


640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=


在词向量效果测试中,本文模型在semantic测试中表现很差,但在syntactic测试中表现非常好。看下图:


640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=


看得出来本文模型的优势非常明显,优势在于解决了大量处于长尾尾端的合成词的词向量表示问题,通过用未知词的已知部分(词干)来预测该词的词向量,从而解决了word2vec等一系列前人工作中未解决的问题,在英语语境中效果可能没那么好,如果换作是德语或者土耳其语这种词形非常丰富的语言会有更好的效果。在整个任务评测中,可以更好地解决syntactic相似问题,因为引入了词形这个feature可以很好地解决syntactic任务;而在semantic任务中却表现非常差,原因是char-level的词向量模型在捕捉语义上效果本身就不如word-level的模型。可以说,本文在传统词向量模型的基础上考虑加入feature来提升性能,是一种非常积极的尝试,虽然并没有在方方面面上都得到改善,但毕竟是一个探索性的、且非常有意义的工作,值得学习。


来源:paperweekly


原文链接

这篇关于[New Paper]A Joint Model for Word Embedding and Word Morphology的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/583663

相关文章

【生成模型系列(初级)】嵌入(Embedding)方程——自然语言处理的数学灵魂【通俗理解】

【通俗理解】嵌入(Embedding)方程——自然语言处理的数学灵魂 关键词提炼 #嵌入方程 #自然语言处理 #词向量 #机器学习 #神经网络 #向量空间模型 #Siri #Google翻译 #AlexNet 第一节:嵌入方程的类比与核心概念【尽可能通俗】 嵌入方程可以被看作是自然语言处理中的“翻译机”,它将文本中的单词或短语转换成计算机能够理解的数学形式,即向量。 正如翻译机将一种语言

C - Word Ladder题解

C - Word Ladder 题解 解题思路: 先输入两个字符串S 和t 然后在S和T中寻找有多少个字符不同的个数(也就是需要变换多少次) 开始替换时: tips: 字符串下标以0开始 我们定义两个变量a和b,用于记录当前遍历到的字符 首先是判断:如果这时a已经==b了,那么就跳过,不用管; 如果a大于b的话:那么我们就让s中的第i项替换成b,接着就直接输出S就行了。 这样

java线程深度解析(一)——java new 接口?匿名内部类给你答案

http://blog.csdn.net/daybreak1209/article/details/51305477 一、内部类 1、内部类初识 一般,一个类里主要包含类的方法和属性,但在Java中还提出在类中继续定义类(内部类)的概念。 内部类的定义:类的内部定义类 先来看一个实例 [html]  view plain copy pu

解决Office Word不能切换中文输入

我们在使用WORD的时可能会经常碰到WORD中无法输入中文的情况。因为,虽然我们安装了搜狗输入法,但是到我们在WORD中使用搜狗的输入法的切换中英文的按键的时候会发现根本没有效果,无法将输入法切换成中文的。下面我就介绍一下如何在WORD中把搜狗输入法切换到中文。

MVC(Model-View-Controller)和MVVM(Model-View-ViewModel)

1、MVC MVC(Model-View-Controller) 是一种常用的架构模式,用于分离应用程序的逻辑、数据和展示。它通过三个核心组件(模型、视图和控制器)将应用程序的业务逻辑与用户界面隔离,促进代码的可维护性、可扩展性和模块化。在 MVC 模式中,各组件可以与多种设计模式结合使用,以增强灵活性和可维护性。以下是 MVC 各组件与常见设计模式的关系和作用: 1. Model(模型)

string字符会调用new分配堆内存吗

gcc的string默认大小是32个字节,字符串小于等于15直接保存在栈上,超过之后才会使用new分配。

Excel和Word日常使用记录:

Excel使用总结 表格颜色填充: 合并单元格: 选中你要合并的单元格区域。按下快捷键 Alt + H,然后松开这些键。再按下 M,接着按 C。这个组合键执行的操作是:Alt + H:打开“主页”选项卡。M:选择“合并单元格”选项。C:执行“合并并居中”操作。 插入行: 在Excel中,插入一行的快捷键是:Windows:选择整行(可以点击行号)。按下 Ctrl + Sh

word转PDF后mathtype公式乱码以及图片分辨率降低等一系列问题|完美解决

word转PDF后mathtype公式乱码以及图片分辨率降低等一系列问题|完美解决 问题描述 最近在投一篇期刊论文,直接提交word文档,当时没有查看提交预览,一审审稿意见全是:公式乱码、公式乱码、乱码啊!!!是我大意了,第二次提交,我就决定将word文档转成PDF后再提交,避免再次出现公式乱码的问题。接着问题又来了,我利用‘文件/导出’或‘文件/另存为’的方式将word转成PDF后,发现公式

【信创建设】信息系统信创建设整体技方案(word原件完整版)

信创,即“信息技术应用创新”。我国自主信息产业聚焦信息技术应用创新,旨在通过对IT硬件、软件等各个环节的重构,基于我国自有IT底层架构和标准,形成自有开放生态,从根本上解决本质安全问题,实现信息技术可掌控、可研究、可发展、可生产。信创发展是一项国家战略,也是当今形势下国家经济发展的新功能。信创产业发展已经成为各行各业数字化转型、提升产业链发展的关键。 软件全套资料部分文档清单: 工作安排任

List list = new ArrayList();和ArrayList list=new ArrayList();的区别?

List是一个接口,而ArrayList 是一个类。 ArrayList 继承并实现了List。 List list = new ArrayList();这句创建了一个ArrayList的对象后把上溯到了List。此时它是一个List对象了,有些ArrayList有但是List没有的属性和方法,它就不能再用了。而ArrayList list=new ArrayList();创建一对象则保留了A