词向量算法是自然语言处理领域的基础算法,在序列标注、问答系统和机器翻译等诸多任务中都发挥了重要作用。词向量算法最早由谷歌在2013年提出的word2vec,在接下来的几年里。该算法也经历了不断的改进,但大多数仅适用于拉丁字符构成的单词(英文、法语。。。。),结合中文语言特性的词向量研究相对较少。由于中文语言的博大精深,一字一词都蕴含这丰富的语义,在自然语言处理的相关任务中对于中文语料很难处理。

惊喜的是在AAAI2018会议上,蚂蚁金服公开了其最新研究成果,被高分录用论文“cw2vec: Learning Chinese Word Embeddings with Stroke n-grams”提出了: cw2vec——基于汉字笔画信息的中文词向量算法研究,该方法揭示了隐藏在一笔一划之间的秘密

单个英文字符(character)是不具备语义的,而中文汉字往往具有很强的语义信息。不同于前人的工作,他们提出了“n元笔画”的概念。所谓“n元笔画”,即就是中文词语(或汉字)连续的n个笔画构成的语义结构。

图1 n元笔画生成的例子

如上图中,n元笔画的生成共有四个步骤。比如说,“大人”这个词语,可以拆开为两个汉字“大”和“人”,然后将这两个汉字拆分成笔画,再将笔画映射到数字编号,进而利用窗口滑动产生n元笔画。其中,n是一个范围,在上述例子中,我们将n取值为3, 4和5。在论文中提出了一种基于n元笔画的新型的损失函数,如下:

其中,W和C分别为当前词语和上下文词语,σ是sigmoid函数,T(w)是当前词语划窗内的所有词语集合,D是训练语料的全部文本。为了避免传统softmax带来的巨大计算量,这篇论文也采用了负采样的方式。C'为随机选取的词语,称为“负样例”,λ是负样例的个数,而 则表示负样例C'按照词频分布进行的采样,其中语料中出现次数越多的词语越容易被采样到。相似性sim(·,·)函数被按照如下构造:

其中, 为当前词语对应的一个n元笔画向量,而 是其对应的上下文词语的词向量。这项技术将当前词语拆解为其对应的n元笔画,但保留每一个上下文词语不进行拆解。S(w)为词语w所对应的n元笔画的集合。在算法执行前,这项研究先扫描每一个词语,生成n元笔画集合,针对每一个n元笔画,都有对应的一个n元笔画向量,在算法开始之前做随机初始化,其向量维度和词向量的维度相同

图2 算法过程的举例

如上图所示,对于“治理 雾霾 刻不容缓”这句话,假设此刻当前词语恰好是“雾霾”,上下文词语是“治理”和“刻不容缓”。首先将当前词语“雾霾”拆解成n元笔画并映射成数字编码,然后划窗得到所有的n元笔画,根据设计的损失函数,计算每一个n元笔画和上下文词语的相似度,进而根据损失函数求梯度并对上下文词向量和n元笔画向量进行更新。

数据
我们于2016年11月20日,下载了中文维基百科dump7 ,其中包含265K中文维基百科文章。我们使用gensim工具包中的脚本来转换数据从XML到文本格式8。 根据我们的观察,语料库由简体和繁体中文组成字符。 因此我们利用opencc toolkit 9进行标准化
所有字符都是简体中文。 所有Unicode字符落入在0x4E00和0x9FA5,该范围之间是汉字被保留。 我们使用ansj toolkit 10进行分词
我们扫描训练语料库并记录所有的字符以收集中n-gram。 之后,我们称之为Juhe Data11汉字信息检索服务API,从网上抓取新华字典笔画信息12

以上所用到数据来源:

7:https://dumps.wikimedia.org/zhwiki/20161120/
8:https://radimrehurek.com/gensim/corpora/wikicorpus.html
9:https://github.com/BYVoid/OpenCC
10:https://github.com/NLPchina/ansj seg
11:https://www.juhe.cn/docs/api/id/156
12:http://xh.5156edu.com/

为了验证这项研究提出的cw2vec算法的效果,在公开数据集上,与业界最优的几个词向量算法做了对比:

上图中包括2013年谷歌提出的word2vec的两个模型skipgram和cbow,2014年斯坦福提出的GloVe算法,2015年清华大学提出的基于汉字的CWE模型,以及2017年最新发表的基于像素和偏旁的中文词向量算法,可以看出cw2vec在word similarity,word analogy,以及文本分类和命名实体识别的任务中均取得了一致性的提升。同时,这篇文章也展示了不同词向量维度下的实验效果:

图4 不同词向量维度下的实验结果

上图为不同维度下在word analogy测试集上的实验结果,左侧为3cosadd,右侧为3cosmul的测试方法。可以看出这项算法在不同维度的设置下均取得了不错的效果。此外,也在小规模语料上进行了测试:

上图是仅选取20%中文维基百科训练语料,在word similarity下测试的结果,skipgram, cbow和GloVe算法由于没有利用中文的特性信息进行加强,所以在小语料上表现较差,而其余四个算法取得了不错的效果,其中cw2vec的算法在两个数据集上均取得的了最优效果

为了更好的探究不同算法的实际效果,这项研究专门选取了两个词语做案例分析。

第一个是环境相关的“水污染”,然后根据词向量利用向量夹角余弦(余弦定理)找到与其语义最接近的词语。GWE找到了一些和“污”字相关的词语,比如“污泥”,“污渍”和“污垢”,而JWE则更加强调后两个字“污染”GloVe找到了一些奇怪的相近词语,比如“循环系统”,“神经系统”。CWE找到的相近词语均包含“水”和“污”这两个字,猜测是由于其利用汉字信息直接进行词向量加强的原因。此外,只有cw2vec找到了“水质”这个相关词语,分析认为是由于n元笔画和上下文信息对词向量共同作用的结果。

第二个例子,特别选择了“孙悟空”这个词语,该角色出现在中国的名著《西游记》和知名日本动漫《七龙珠》中,cw2vec找到的均为相关的角色或著作名称。


作为一项基础研究成果,cw2vec在蚂蚁和阿里的诸多场景上也有落地。在智能客服、文本风控和推荐等实际场景中均发挥了作用。此外,不单单是中文词向量,对于日文、韩文等其他语言也进行类似的尝试,相关的发明技术专利已经申请近二十项


我们希望能够在基础研究上追赶学术界、有所建树,更重要的是,在具体的实际场景之中,能够把人工智能技术真正的赋能到产品里,为用户提供更好的服务。

注:以上相关图片来自《cw2vec: Learning ChineseWord Embeddingswith Stroke n-gram Information》所有。

至此,对蚂蚁金服提出的词向量新理论进行了大致学习,具体想做进一步研究的可以看

paper:https://github.com/ShelsonCao/cw2vec/blob/master/cw2vec.pdf

词向量算法—【AAAI2018】蚂蚁金服公开的基于笔画的中文词向量算法相关推荐

  1. AAAI 2018 论文 | 蚂蚁金服公开最新基于笔画的中文词向量算法

    导读:词向量算法是自然语言处理领域的基础算法,在序列标注.问答系统和机器翻译等诸多任务中都发挥了重要作用.词向量算法最早由谷歌在2013年提出的word2vec,在接下来的几年里,该算法也经历不断的改 ...

  2. cw2vec:蚂蚁金服公开最新基于笔画的中文词向量算法

    向AI转型的程序员都关注了这个号

  3. SOFABoot是蚂蚁金服开源的基于Spring Boot的研发框架

    前言 SOFABoot是蚂蚁金服开源的基于Spring Boot的研发框架,它在Spring Boot的基础上,提供了诸如 Readiness Check,类隔离,日志空间隔离等等能力.在增强了 Sp ...

  4. 云原生时代,蚂蚁金服公开了新的金融混合云架构

    蚂蚁金服在过去十五年重塑支付改变生活,为全球超过十二亿人提供服务,这些背后离不开技术的支撑.在 2019 杭州云栖大会上,蚂蚁金服将十五年来的技术沉淀,以及面向未来的金融技术创新和参会者分享.我们将其 ...

  5. 【笔记】蚂蚁金服公开基于笔画的中文词向量算法

    案例来源:@安和林 案例地址: https://yq.aliyun.com/articles/376139 (以下为案例的简要概述,便于之后能快速检索到相关内容.部分文字与图片可能直接来自原文,如有侵 ...

  6. 基于笔画中文分词算法---蚂蚁金服

    原标题:AAAI 2018 | 蚂蚁金服公开最新基于笔画的中文词向量算法 转载自蚂蚁金服科技 查看全文 http://www.taodudu.cc/news/show-5808302.html 相关文 ...

  7. 《MIT科技评论》全球十大突破性技术之一,蚂蚁金服刷脸支付的算法和难点

    <麻省理工科技评论>发布了2017年全球十大突破性技术榜单,其中刷脸支付上榜."在中国,人脸识别系统现在应用于授权支付.设备访问以及罪犯追踪."该项技术被认为是在&qu ...

  8. AI在蚂蚁金服产品线中的大规模应用

    近日,蚂蚁金服副总裁兼首席数据科学家漆远博士发表了主题为<金融智能的发展与应用>的演讲.漆远表示,蚂蚁金服今年的两个关键词,一个是"开放",一个是"AI(人工 ...

  9. 蚂蚁金服开源增强版 Spring Boot 的研发框架!

    点击上方蓝色"方志朋",选择"设为星标" 回复"666"获取独家整理的学习资料! 来源:gitee.com/sofastack/sofa-b ...

最新文章

  1. 怎么自学python软件-Python入门学习难吗,新手如何学习
  2. 面向对象4(匿名对象、内部类、包、修饰符、代码块)
  3. git分支feature和hotfix分支
  4. 条件渲染-v-if // v-else // v-else if // v-show
  5. 游戏开发引擎 Cryengine 在 GitHub 上公开全部源代码
  6. Outlook 2003解除附件下载限制
  7. linux6.4添加源,RHEL6.4更改为CentOS源
  8. 原生js添加class
  9. 单词播放器5.10发布
  10. 通过蓝牙连接进行ActiveSync同步
  11. matlab插值拟合
  12. phpstudy本地快速搭建网站,并外网访问【无公网IP】
  13. 数论概论笔记 第3章 勾股数组与单位圆
  14. DNS,FTP,HTTP,DHCP,TFTP,SMTP详解
  15. G.652光纤各个子类的主要区别及应用
  16. 如何查看计算机操作过程,如何查看电脑使用记录?详细方法奉上
  17. Jstack查询线程堆栈
  18. Android -- 在线播放歌曲 1 -- 搜索歌曲
  19. 汽车销售管理系统 c语言版 课程设计,汽车销售管理系统c语言版.docx
  20. C++上机实验3-个人所得税计算器

热门文章

  1. js单例模式——创建弹窗
  2. 设置iPhone书签图标
  3. 汤姆大叔JavaCript系列3阅读笔记
  4. apache服务器的配置
  5. 算法实验二 【八皇后问题】(回溯算法)
  6. MyBatis 延迟加载,一级缓存(sqlsession级别)、二级缓存(mapper级别)设置
  7. 售前技术支持的工作步骤
  8. 伪静态规则写法RewriteRule-htaccess详细语法使用
  9. JavaScript基础知识总结(基础篇)
  10. PowerManagerService源码分析