阅读大概需要5分钟

跟随小博主,每天进步一丢丢

作者:刘宗林师兄

编辑:宋阳师姐

导读

本文对AAAI 2018(Association for the Advancement of Artificial Intelligence 2018)高分录用的一篇中文词向量论文(cw2vec: Learning Chinese Word Embeddings with Stroke n-gram Information)进行简述与实现,这篇论文出自蚂蚁金服人工智能部。本文将从背景知识、模型简介、c++实现、实验结果、结论等几个方面来进行阐述。

背景知识

目前已经存在很多的词向量模型,但是较多的词向量模型都是基于西方语言,像英语,西班牙语,德语等,这些西方语言的内部组成都是拉丁字母,然而,由于中文书写和西方语言完全不同,中文词语包含很少的中文字符,但是中文字符内部包含了很强的语义信息,因此,如何有效利用中文字符内部的语义信息来训练词向量,成为近些年研究的热点。

通过观察中文字符内部组成,发现中文字符包含偏旁部首、字符组件,笔画信息等语义信息特征(如下图),基于偏旁部首和汉字组件特征的中文词向量模型已经有人提出,并取得了较好的效果。

本篇论文采用笔画信息作为特征,由于每个字符包含很多的笔画,类似于一个英文单词包含很多的拉丁字母,在这个基础之上,提出了笔画的n-gram特征。这个思想来源于2016年facebook提出的论文(Enriching Word Vectors with Subword Information),目前facebook这篇论文已经被引用300多次,影响力很大,cw2vec可以称之为中文版本的fasttext。

模型简介

1、 词语分割

把中文词语分割为单个字符,为了获取中文字符的笔画信息。

词语:大人 分割为:(1)大 (2)人

2、 笔画特征

获取中文字符的笔画信息,并且把字符的笔画信息合并,得到词语的笔画信息。

大: 一ノ丶 
人: ノ丶
大人: 一ノ丶 ノ丶

3、 笔画特征数字化

为了方便,论文提及把笔画信息数字化,用数字代表每一种笔画信息,如下图。

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

大人: 一ノ丶 ノ丶
大人:13434

我从训练语料中获取到13354个汉字,并获取笔画信息,统计笔画种类和上图一致,只有5种笔画信息。

4、 N元笔画特征

提取词语笔画信息的n-gram特征。

3-gram:134、343、434
4-gram:1343、3434
5-gram:13434
……

上述4个步骤,如下图:

5、cw2vec模型

word2vec提出了CBOW和Skip-Gram两个模型(详解),cw2vec在Skip-Gram基础之上进行改进,把词语的n-gram笔画特征信息代替词语进行训练,cw2vec模型如下图。

短语:治理 雾霾 刻不容缓
中心词:雾霾
上下文词:治理,刻不容缓

论文中提及上下文词向量(context word embedding)为最终cw2vec模型的输出词向量。

C++实现

论文目前还没有公开代码,在这里,我提供一个c++版本的cw2vec。这份代码不仅仅实现了cw2vec模型,还包括word2vec的 CBOW 和 Skip-Gram 两个模型,以及FaceBook提出的fasttext。关于这版的CBOW和Skip-Gram的性能,可以看一下word2vec,有简单的性能测试,以下是四个模型。

./word2vec

skipgram  ------ train word embedding by use skipgram model

cbow      ------ train word embedding by use cbow model

subword   ------ train word embedding by use subword(fasttext skipgram)  model

substoke  ------ train chinses character embedding by use substoke(cw2vec) model

可以根据 -h 参数设置

./word2vec skipgram -h

The Following arguments are mandatory:

-input                   training file path

-infeature               substoke feature file path

-output                  output file path

......

subword是fasttext skipgram模型,substoke是cw2vec模型。substoke 需要笔画信息的特征文件,这里已经写好了一份脚本从汉典抽取笔画信息(extract_zh_char_stoke),具体使用查看README,特征文件类似于:

中 丨フ一丨

国 丨フ一一丨一丶一

庆 丶一ノ一ノ丶

假 ノ丨フ一丨一一フ一フ丶

期 一丨丨一一一ノ丶ノフ一一

......

cw2vec论文提出采用context word embedding 作为最终的词向量,在这份代码中,不仅仅考虑了context word embedding ,而且,根据fasttext提供的思路,把笔画信息的n-gram特征取平均作为最后的词向量,所以,substoke模型会输出两份词向量,vec代表context word embedding,avg代表笔画信息的n-gram特征取平均

需要包括的环境:

cmake
make
gcc

更多信息查看cw2vec-github。

实验结果

1、训练数据

训练数据采用最新的中文维基百科训练语料(处理过程),利用jieba分词工具对语料进行分词处理,最终得到1.2G的训练数据,根据论文,我们从1.2G的训练语料中获取前20%数据,用这份数据在Word Similarity任务上进行了评测。

2、参数设置

在对比实验中,几个模型的参数设置如下所示:

设置参数如下:

词向量维度:100

窗口大小:5

负采样数目:5

迭代次数:5

最小词频:10

学习率:skipgram(0.025),cbow(0.05),substoke(0.025)

n-gram特征:minn=3, maxn=18

3、实验结果

中文word similarity任务上进行了评测,评测文件是 wordsim-240 和 wordsim-296,这两份文件来自于Chen et al. 2015; Xu et al. 2016,基于上述两份文件,我已经写好了一份中文词相似度评测脚本(Chinese-Word-Similarity-and-Word-Analogy),方便大家使用,详细信息看README,下面是实验结果。

下图和表中的substoke-average代表使用的词向量是笔画信息的n-gram特征取平均substoke-context代表使用的词向量是context word embedding

4、结果分析

从上面的实验结果来看,在word similarity任务上,总体来看,substoke模型要比skipgram,cbow两个模型结果要好。其中在wordsim-240上,substoke的两份词向量都要比word2vec的好,在wordsim-296上,substoke-context表现的相对差一些,但是substoke-average要好很多。

由于时间原因,目前仅在相似度任务上进行了评测,后续可能会在词汇类比,词性标注,命名实体识别,文本分类等多个任务上进行评测。

结论

中文字符内部结构包含了丰富的语义信息,这篇论文提出的思路,挖掘了中文字符笔画特征信息,上述实验证明是有效的,推动了中文词向量的工作进展,后续研究者可以在此基础之上进行实验,更加深层次的挖掘中文字符内部信息。

附:github链接

https://github.com/bamtercelboo/cw2vec

References

[1] Cao, Shaosheng, et al. “cw2vec: Learning Chinese Word Embeddings with Stroke n-gram Information.” (2018).
[2] Bojanowski, Piotr, et al. “Enriching word vectors with subword information.” arXiv preprint arXiv:1607.04606 (2016).
[3] Chen, Xinxiong, et al. “Joint Learning of Character and Word Embeddings.” IJCAI 2015.
[4] Sun, Yaming, et al. “Radical-enhanced Chinese character embedding.” ICNIP 2014.
[5] Li, Yanran, et al. “Component-enhanced Chinese character embeddings.” arXiv preprint arXiv:1508.06669 (2015).
[6] Yu, Jinxing, et al. “Joint Embeddings of Chinese Words, Characters, and Fine-grained Subcharacter Components.” EMNLP 2017.
[7] Mikolov, Tomas, et al. “Efficient estimation of word representations in vector space.” arXiv preprint arXiv:1301.3781 (2013).

IELTS a bit

scarce adj. 缺乏的,不足的;稀有的

adv. 仅仅;几乎不;几乎没有

homeopathy n. [临床]顺势疗法;同种疗法

surplus n. 剩余;[贸易]顺差;盈余;过剩

adj. 剩余的;过剩的

guarantee n. 保证;担保;保证人;保证书;抵押品

vt. 保证;担保

congested adj. 堵塞的,拥挤的

v. 挤满;超负荷

推荐阅读:

精彩知识回顾

【珍藏版】长文详解python正则表达式

这些神经网络调参细节,你都了解了吗

谈谈我在自然语言处理入门的一些个人拙见

大数定律和中心极限定理的区别和联系

深度学习之激活函数详解

深度学习之卷积神经网络CNN理论与实践详解

深度学习之RNN、LSTM及正向反向传播原理

TreeLSTM Sentiment Classification

基于attention的seq2seq机器翻译实践详解

【干货】基于注意力机制的seq2seq网络


欢迎关注深度学习自然语言处理公众号,我会每天更新自己在机器学习深度学习NLPlinuxpython以及各种数学知识学习的一点一滴!再小的人也有自己的品牌!期待和你一起进步!

长按识别二维码

点个赞呗

点击阅读原文

【精华版】cw2vec理论及其实现相关推荐

  1. 三支一扶计算机公共基础知识,三支一扶公共基础知识教材(精华版).doc

    公共基础知识教材 (精华版) 第一部分 马克思主义哲学 哲学和马克思主义哲学 知识点结构图: 具体内容: 第一节 哲学及其基本问题 一.哲学.世界观.方法论 1.哲学.世界观.方法论的含义 哲学是系统 ...

  2. 卓越领导者的智慧(精华版)

    <卓越领导者的智慧(精华版)> 基本信息 作者: 陈树文 [作译者介绍] 出版社:清华大学出版社 ISBN:9787302279433 上架时间:2012-5-18 出版日期:2012 年 ...

  3. c语言精华版课件,C语言课件精华版).ppt

    C语言课件精华版) 计算机基础教学系列课程;课程性质: 大学生公共基础课程 (必修课) 学时: 讲课 34课时; 实验 64 (课内32/课外32) 学分: 2学分总评成绩 = 平时成绩 40%+ 期 ...

  4. 视频教程-网络工程师入门CCNA 0基础学网络视频课程【精华版】-思科认证

    网络工程师入门CCNA 0基础学网络视频课程[精华版] 新任帮主,双CCIE(CCIE R&S,CCIE Security):2011年前在国内知名培训机构担任CCIE R&S讲师:因 ...

  5. JEECG 3.7跨时代重构精华版发布,企业级JAVA快速开发平台

    为什么80%的码农都做不了架构师?>>>    JEECG 3.7 跨时代重构精华版发布,企业级J2EE快速开发平台 -------------------------------- ...

  6. 国家开放大学本科计算机应用基础,【(精华版)最新国家开放大学电大本科《计算机应用基础》网络课网考形考作业一及三试题答案】.docx...

    [(精华版)最新国家开放大学电大本科<计算机应用基础>网络课网考形考作业一及三试题答案] (精华版)最新国家开放大学电大本科<计算机应用基础>网络课网考形考作业一及三试题答案 ...

  7. sublime php快捷键,分享Sublime Text 3快捷键精华版!

    下面由sublime教程栏目给大家介绍Sublime Text 3 快捷键精华版,希望对需要的朋友有所帮助! Ctrl+Shift+P:打开命令面板 Ctrl+P:搜索项目中的文件 Ctrl+G:跳转 ...

  8. CSDN又力推一优秀开源项目jeecg,跨时代重构精华版发布

    JEECG 3.7 跨时代重构精华版发布,企业级J2EE快速开发平台 ----------------------------------------  Version:  Jeecg_3.7 项 目 ...

  9. 三小时学会css(菜鸟教程精华版)【中】

    三小时学会css 上期传送门 CSS 盒子模型(Box Model) CSS盒模型本质上是一个盒子,封装周围的HTML元素,它包括:边距,边框,填充,和实际内容. 盒模型允许我们在其它元素和周围元素边 ...

  10. 三小时学会css(菜鸟教程精华版)【上】

    三小时学会css 三小时学会HTML传送门 <!DOCTYPE html> <html> <head> <meta charset="utf-8&q ...

最新文章

  1. matlab绘制图形hold on_matlab 中 hold on 和hold off的使用
  2. GCD 容易让人迷惑的几个小问题
  3. spring aop记录日志方案设计
  4. python具体应用过程_python公开课|Python for循环的具体应用就是python流程控制的核心,想学会就来看看...
  5. sklearn朴素贝叶斯分类器_python机器学习:方法链和朴素贝叶斯分类器
  6. 原生JS去除二维数组中重复了的一维数组
  7. (转)淘淘商城系列——使用maven构建工程
  8. 三层架构之初识庐山真面目
  9. JAVA反射中的getFields()方法和getDeclaredFields ()方法的区别
  10. 迪文屏DMT12800K070_A2WTC踩坑实录(一)
  11. php在word中生成表格,word创建表格的三种方法分别是什么
  12. 机器人学与OROCOS-KDL(一)简介
  13. 在线一元二次方程式计算器 源码
  14. 标准柯西分布_柯西分布的随机数
  15. 今日头条2018校招编程题
  16. 面试官:什么是虚拟DOM?如何实现一个虚拟DOM?
  17. python基础教程网易云_Python爬虫教程:网易云音乐歌词
  18. xpath 准确匹配 跟 模糊匹配属性
  19. Unity两点距离计算
  20. IDM关于某些应用程序阻止了IDM集成到浏览器中

热门文章

  1. 函数指针,函数指针数组,函数返回值为函数指针
  2. UML 结构图之包图 总结
  3. Linux CentOS修改网卡IP/网关设置
  4. jsp页面加载时自动执行action
  5. java day31【web概念概述 、HTML】
  6. ansible基本模块-copy
  7. Swift 3必看:新的访问控制fileprivate和open
  8. php curl 伪造IP来源的代码分享
  9. POJ1068 Parencodings(模拟)
  10. 关于中断和异常的几点认识