写点什么

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

  • 2019-09-09
  • 本文字数:2375 字

    阅读完需:约 8 分钟

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

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


导读:词向量算法是自然语言处理领域的基础算法,在序列标注、问答系统和机器翻译等诸多任务中都发挥了重要作用。词向量算法最早由谷歌在 2013 年提出的 word2vec,在接下来的几年里,该算法也经历不断的改进,但大多是仅适用于拉丁字符构成的单词(比如英文),结合中文语言特性的词向量研究相对较少。本文介绍了蚂蚁金服人工智能部与新加坡科技大学一项最新的合作成果:cw2vec——基于汉字笔画信息的中文词向量算法研究,用科学的方法揭示隐藏在一笔一划之间的秘密。


AAAI 大会(Association for the Advancement of Artificial Intelligence),是一年一度在人工智能方向的顶级会议之一,旨在汇集世界各地的人工智能理论和领域应用的最新成果。该会议固定在每年的 2 月份举行,由 AAAI 协会主办。


第 32 届 AAAI 大会-AAAI 2018 将于 2 月 2 号-7 号在美国新奥尔良召开,其中蚂蚁金服人工智能部和新加坡科技大学合作的一篇基于汉字笔画信息的中文词向量算法研究的论文“cw2vec: Learning Chinese Word Embeddings with Stroke n-grams”被高分录用(其中一位审稿人给出了满分,剩下两位也给出了接近满分的评价)。我们将在 2 月 7 日在大会上做口头报告(Oral),欢迎大家一起讨论交流。


单个英文字符(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 元笔画向量进行更新。


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



图 3 实验结果


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



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


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



图 5 小训练数据下的实验结果


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



图 6 案例分析结果


为了更好的探究不同算法的实际效果,这项研究专门选取了两个词语做案例分析。第一个是环境相关的“水污染”,然后根据词向量利用向量夹角余弦找到与其语义最接近的词语。GWE 找到了一些和“污”字相关的词语,比如“污泥”,“污渍”和“污垢”,而 JWE 则更加强调后两个字“污染”GloVe 找到了一些奇怪的相近词语,比如“循环系统”,“神经系统”。CWE 找到的相近词语均包含“水”和“污”这两个字,猜测是由于其利用汉字信息直接进行词向量加强的原因。此外,只有 cw2vec 找到了“水质”这个相关词语,分析认为是由于 n 元笔画和上下文信息对词向量共同作用的结果。第二个例子,特别选择了“孙悟空”这个词语,该角色出现在中国的名著《西游记》和知名日本动漫《七龙珠》中,cw2vec 找到的均为相关的角色或著作名称。


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


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


本文转载自公众号蚂蚁金服科技(ID:Ant-Techfin)。


原文链接:


https://mp.weixin.qq.com/s/cu0vUuY1meRyTy9wtKMmnw


2019-09-09 09:251831
用户头像

发布了 150 篇内容, 共 37.0 次阅读, 收获喜欢 38 次。

关注

评论

发布
暂无评论
发现更多内容

计算机揭秘之:网络分类和性能分析

程序那些事

TCP 计算机网络 网络协议 计算机基础 udp

防止数据重复提交的6种方法(超简单)!

王磊

Java

区块链加持的家用摄像头能拯救你的隐私吗?

CECBC

Python的四种作用域及调用顺序

BigYoung

Python 局部作用域 全局作用域

Week 06学习总结

Jeremy

解决问题 1474 个,Flink 1.11 究竟有哪些易用性上的改善?

Apache Flink

flink

企业架构框架之TOGAF

冯文辉

企业架构

如何进行需求梳理及埋点方案设计

易观大数据

第六周总结

腾志文(清样)

CAP原理

jason

Week 06 命题作业

Jeremy

《北京市政务服务领域区块链应用创新蓝皮书(第一版)》正式发布

CECBC

寻找握剑的手,青睐懂行的人

脑极体

数十家技术社区联名推荐的GeekOnline来了!

Geek_116789

第六周作业

腾志文(清样)

以中立性的立场看Severless的目标和流派

韩超

云原生 serverles

MQTT的搭建、测试、应用及小程序的集成!

诸葛小猿

物联网 IoT mqtt broker

林左鸣 史瑞华:人类应鼎力进行的探索

CECBC

我想模糊删除redis key🤔

山中兰花草

Java lua redis 面试 批量任务

平价又好用的学习电脑小轩PRO来啦,为孩子创造超强学习体验

最新动态

聊聊Dubbo(二):简单入门

猿灯塔

可读代码编写炸鸡六 - 控制流尽量向前奔涌就好,不要分心

多选参数

代码 代码优化 代码规范 可读代码编写 可读代码

可读代码编写炸鸡七 - 表达式太长就拆

多选参数

代码质量 代码组织 代码规范 可读代码编写 可读代码

【API进阶之路】老板给我涨薪30%!如何通过SDK接口搞定千万级流量直播

华为云开发者联盟

运维 服务器 直播 云服务 华为云

毕业半年的憨憨,将公司的代码上传到GitHub上了

诸葛小猿

GitHub 代码上传

Flask-Restful 中 fileds.DateTime 不支持 strftime 格式

Leetao

Python flask web开发 Python框架 flask-restful

如何帮助技术员工高效成长?这几家企业的做法值得借鉴

极客时间企业版

研发管理 研发团队培训

单例模式的几种写法你用的哪种?

Java小咖秀

Java 设计模式 23种设计模式

朱嘉明:区块链成为经济转型、形成产业新业态的技术手段

CECBC

图解:如何实现最小生成树

淡蓝色

Java 数据结构 算法

LeetCode题解:141. 环形链表,JavaScript HashMap,详细注释

Lee Chen

大前端 LeetCode

蚂蚁金服公开最新基于笔画的中文词向量算法_文化 & 方法_Geek_cb7643_InfoQ精选文章