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

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

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

机器学习AI算法工程  公众号:datayx

全国知识图谱与语义计算大会(CCKS2018)8月14日至17日在天津举行,凭借出色的专业能力,阿里健康团队在中文电子病历命名实体识别评测任务中夺冠。

一、背景知识

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

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

可以看出,“木材”和“森林”是两个语义很相关的词语,但是当我们拆解到汉字粒度的时候,“木”和“材”这两个字对比“森”和“材”没有一个是相同的(一般会用一个下标去存储一个词语或汉字),因此对于这个例子而言,汉字粒度拆解是不够的。我们所希望得到的是:

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

“木”和“材”可以分别拆解出“木”和“木”(来源于“材”的左半边)结构,而“森”和“林”分别拆解得到多个“木”的相同结构。此外,可以进一步将汉字拆解成偏旁、字件,对于以上例子可以有效提取出语义结构信息,不过我们也分析到:

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

可以看出,“智”的偏旁恰好是“日”,而“日”不能表达出“智”的语义信息。实际上,偏旁的设计是为了方便在字典中查询汉字,因此结构简单、出现频率高变成了首要原则,并不一定恰好能够表达出该汉字的语义信息。此外,将“智”拆分到字件粒度,将会得到“失”,“口”和“日”三个,很不巧的是,这三个字件也均不能表达其汉字语义。我们需要设计出一种新的方法,来重新定义出词语(或汉字)具有语义 的结构:

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

这里,“知”是可以表达出“智”语义的模块,如何得到这样的亚词结构,并结合句子上下文设计模型的优化目标,生成出更好的中文词向量,将是后文要探索的内容。

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

思想来源于2016年facebook提出的论文(Enriching Word Vectors with Subword Information),目前facebook这篇论文已经被引用300多次,影响力很大,cw2vec可以称之为中文版本的fasttext。

cw2vec模型

cw2vec 一个c++版本的cw2vec  github代码、论文

关注微信公众号 datayx  然后回复 笔画  即可获取。

AI项目体验地址 https://loveai.tech

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

短语:治理 雾霾 刻不容缓

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

n-grams特征构建的流程

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

那么“大人”这个词的笔画信息就可以表示为:

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

更多算法对比内容请阅读原来的paper.

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

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

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


阅读过本文的人还看了以下:

不断更新资源

深度学习、机器学习、数据分析、python

 搜索公众号添加: datayx  

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

长按图片,识别二维码,点关注

AI项目体验

https://loveai.tech

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

可以看出,“木材”和“森林”是两个语义很相关的词语,但是当我们拆解到汉字粒度的时候,“木”和“材”这两个字对比“森”和“材”没有一个是相同的(一般会用一个下标去存储一个词语或汉字),因此对于这个例子而言,汉字粒度拆解是不够的。我们所希望得到的是:可以看出,“木材”和“森林”是两个语义很相关的词语,但是当我们拆解到汉字粒度的时候,“木”和“材”这两个字对比“森”和“材”没有一个是相同的(一般会用一个下标去存储一个词语或汉字),因此对于这个例子而言,汉字粒度拆解是不够的。我们所希望得到的是: