学界 | Yann LeCun新作,中日韩文本分类到底要用哪种编码?
https://www.wxwenku.com/d/102093756
AI科技评论按:前几天,Yann LeCun与其学生 张翔在arXiv上发表了一篇新作「Which Encoding is the Best for Text Classification in Chinese, English, Japanese and Korean?」。这篇文章做了一个包含473种模型的大型对比实验,实验的目的是对文本分类任务中不同语言(英语、汉语、韩语和日语)不同的level(utf-8 、字符等)和不同的encoding(bag-of-words等)在不同模型(linear models、fastText、ConvNets等)中组合使用的效果进行测试,得到了一系列有参考价值的结论。本文中 AI 科技评论将对这篇论文进行详细分析。
文本分类是自然语言处理中最普遍的一个应用,例如文章自动分类、邮件自动分类、垃圾邮件识别、用户情感分类等等,在生活中有很多例子。但是由于不同语言之间差别很大(例如像汉语、韩语、日语这样的CJK语言与英语这样的字母语言在处理上有很大不同)。例如最近有人使用字符级编码的神经网络(ConvNets)来处理语言中的单词分割问题,但是很不幸的是,用字符来处理CJK语言并不很好,因为这时候字符的数量会变得非常巨大。所以能否找到一种在处理所有这些自然语言上都表现优良的模型呢?作者的方法就是,列出一系列模型(473个), 然后比较它们的表现。
一、数据集(data sets)
这篇文章考虑了4种语言,分别为汉语、英语、日语和韩语。作者分别从大众点评(汉语,餐饮)、京东(汉语,网店)、Rakuten(网店,日语)、11st(网店,韩语)、Amazon(英语,网店)、凤凰网(汉语,新闻)、中国日报(汉语,新闻)、NYnews(英语,新闻)等八个网站爬取了8个情感分类数据集。其中京东、Rakuten、11st和Amazon的数据集又分为全五星分类和双分法类(1、2星为负,3星舍弃,4、5星为正)。另外因为这四个网站都是网店类型,所以可以用它们来组合成两个joint数据集(全五星和双分法),这两个数据集由于是混合了四种语言,所以可以用来检测模型处理不同语言的能力。综上共有14个情感分类的数据集。
二、编码级别(encoding level)
所谓编码级别,简单说就是考虑文本分析时的最小单位。在文中提及的编码级别包括:字符(characters)、UTF-8(byte)、罗马化字符(romanized characters)、词(words)、罗马化词(romanized words)等。
三、编码机制(encoding Mechanism)
本文选择的深度学习模型为卷积网络模型(ConvNets),根据网络层数分为large Net(12层)和small Net(8层)。在卷积网络模型训练中,必须对文本进行编码机器才能识别。在这篇文章中包含三种编码机制,分别为:字符字形编码(Character Glyph)、独热编码(One-hot Encoding)、嵌入编码(Embedding)。
1、字符字形编码(Character Glyph)
所谓字形就是在读写中可以识别的一个符号,例如汉字中的笔画“丿”或英语中的“a”,都是一个可识别的字形。在这篇文章中作者将每一个字形转化成一个16*16的像素点阵。很明显这种编码机制对于CJK语言(字符较为丰富)非常合适。不过这种方式只能在字符级进行,所以只能构建出一种卷积网络模型,称之为GlyphNet。
2、独热编码(One-hot Encoding)
独热码, 直观来说就是有多少个状态就有多少比特,而且只有一个比特为1,其他全为0的一种码制。例如,有6个状态的独热码状态编码为:000001,000010,000100,001000,010000,100000。如果是英文字母的编码,那么就需要状态码长度为26了。独热码编码的最大优势在于状态比较时仅仅需要比较一个位,从而一定程度上简化了译码逻辑。但是,很显然,如果字符数量非常多(CJK语言)的情况下,独热码的码长就会非常大。不过在这篇文章中,作者考虑了两种方式来解决这个问题:第一种是将所有的文本(UTF-8)看成是一个字节序列,在字节层次进行编码,构建的卷积网络模型称之为byte-level OnehotNet;第二种是将文本罗马化,也即用英语字母来编码(值得注意的是,这种方式等价于用罗马化文本在字节层次进行编码),构建的卷积网络模型称之为Romanization OnehotNet。字节级处理的优势在于,它们可以应用到任何一种语言当中,无论这种语言在字符或者字体级别有多少实体,所以它们也可以很容易地应用到CJK语言当中。
3、嵌入编码(Embedding)
所谓嵌入码,即将每一个实体用一个固定长度的向量来表示。比如,对于“A B A C B F G”这样的一个序列,也许我们最后能得到:A对应的向量为[0.1 0.6 -0.5],B对应的向量为[-0.2 0.9 0.7] (此处的数值只用于示意)。由于这种向量表示是随机的初始化的,它不像独热码那样严格,所以相比独热码它在内存中会更小。另外一个优点就是它可以应用到任何编码级别。所以在本文当中,作者使用嵌入编码从字节、字符、单词、罗马化字符、罗马化单词等不同的编码级别来分别编码比较,嵌入码向量长度都为256。
通过这种方式构建的卷积网络模型称之为EmbedNet。这种模型编码可以分别在characters、byte、romanized characters、words、romanized words五个级别进行,所以共有五种模型。
综上所述,共有(1+2+5)*2=16种卷积网络模型。
三、线形模型和fastText模型
除了卷积网络模型外,在这篇文章中作者还选取了线形模型(linear model)和fastText模型进行对比。
1、线形模型(linear model)
传统的文本分类方法的流程就是人工设计一些特征,从原始文档中提取特征,然后指定分类器如LR、SVM,训练模型对文本进行分类。比较经典的特征提取方法如频次法(文章中用plain表示)、TF-IDF等。所谓频次法顾名思义就是记录和统计每个文本中实体(例如character、word、romanized word)的次数分布,以此来分类。但是有些词如“的”“了”等虽然出现的次数比较多,但实际并没有意义。所以就提出了另一种线形模型TF-IDF。TF即term frequency,仍然表示项目在文本中出现的频次,但加入了IDF(inverse document frequency)的权重,在全部文档中出现频次越大,该term在样本中的IDF就越小。于是TF*IDF就可以作为一个项目的统计结果了,这要比简单的频率统计更为准确。
2、fastText模型
fastText模型是2016年Joulin等人提出的一个快速分类模型。该模型并入了分层softmax和特征散列等技巧,这种模型能够以ConvNets模型几个数量级的速度处理输入文本。本质上fastText模型就是一个没有非线性的2层全连接神经网络。
在以上这两个模型中,作者选择了character、word、romanized word三种编码级别,但是还有一个问题没有解决,即以多大的单位进行统计/判断?这就涉及到一个概念: n-gram。它的意思就是将给定文本转化为长度为n的项目(term)的序列。例如“你今天休假了吗”,它的2-gram依次是:“你今,今天,天休,休假,假了,了吗”。作者为线形模型选择了1-gram和5-gram两种,为fastText模型选择了1-gram、2-gram和5-gram。
综上所述,作者共构建了3*2*2=12种线形模型和3*3=9种fastText模型。
四、结果
针对以上四种语言,汉语、日语、韩语以及joint共11个数据集,每个数据集都有37个模型;英语的3个数据集,每个有22个模型。总计有473个模型参与到对比中。表格中的数据表示训练误差的百分比。
另外每一种模型所花费的时间也是不一样,其量级差别非常大。作者通过对joint 二分数据集的100万个样本进行训练得到下面这个对比数据。这个对比只是作为参考,具体情况会根据计算环境而变。
五、结论
通过比较以上表格中的误差率,作者得出以下结论:
1、fastText模型对中、日、韩文本(CJK语言文本)在character级编码的处理结果更好;而对英语文本则在word级编码的处理结果更好;
2、对于fastText和线性模型,CJK语言的word级编码在没有完美分割的情况下效果相当;
3、卷积网络的最佳编码机制是byte级独热编码(byte-level one-hot encoding)。 这表明卷积网络能够从低级别的表示中理解文本,并提供了一致的和统一的方式来处理多种语言。
4、fastText相比于卷积网络更倾向于过拟合,而相比于线形模型也并没有表现出更多的表示能力(representation capacity)。
当然,尽管作者在此列了473种模型进行对比,但仍不是全部。例如深度学习模型本文只用了卷积网络模型,但其实还有别的一些有意思的模型,例如周期性网络(recurrent networks)等。作者似乎计划在之后会对周期性网络进行研究,同时还会改进卷积网络模型,看会有什么样的效果。
AI 科技评论消息,据说论文中用到的源代码和数据集随后将全部公布。
论文下载:https://arxiv.org/pdf/1708.02657.pdf
学界 | Yann LeCun新作,中日韩文本分类到底要用哪种编码?的更多相关文章
- 《中日韩联合开发 - Asianux Server 3》(Asianux Server 3.0)[ISO]
中文名: 中日韩联合开发 - Asianux Server 3英文名: Asianux Server 3.0资源格式: 光盘镜像发行时间: 2007年制作发行: 红旗软件(中国)MiracleLinu ...
- 基于keras中IMDB的文本分类 demo
本次demo主题是使用keras对IMDB影评进行文本分类: import tensorflow as tf from tensorflow import keras import numpy a ...
- dnn文本分类
简介 文本分类任务根据给定一条文本的内容,判断该文本所属的类别,是自然语言处理领域的一项重要的基础任务.具体的,本任务是对文本quey进行分类,任务流程如下: 收集用户query数据. 清洗,标记. ...
- tensorflow实现基于LSTM的文本分类方法
tensorflow实现基于LSTM的文本分类方法 作者:u010223750 引言 学习一段时间的tensor flow之后,想找个项目试试手,然后想起了之前在看Theano教程中的一个文本分类的实 ...
- 一文详解如何用 TensorFlow 实现基于 LSTM 的文本分类(附源码)
雷锋网按:本文作者陆池,原文载于作者个人博客,雷锋网已获授权. 引言 学习一段时间的tensor flow之后,想找个项目试试手,然后想起了之前在看Theano教程中的一个文本分类的实例,这个星期就用 ...
- 学习世界模型,通向AI的下一步:Yann LeCun在IJCAI 2018上的演讲
https://baijiahao.baidu.com/s?id=1606296521706399213&wfr=spider&for=pc 机器之心整理,机器之心编辑部. 人工智能顶 ...
- DjVu、PDF中的隐藏文本
作者:马健邮箱:stronghorse_mj@hotmail.com发布:2012.06.11 目录一.背景二.DjVu中的隐藏文本三.PDF中的隐藏文本 一.背景 目前对于扫描电子文档,网上比较流行 ...
- Yann LeCun清华演讲:深度学习与人工智能的未来
2017年3月22日下午,Facebook人工智能研究院院长.纽约大学终身教授Yann LeCun在清华大学大礼堂为校内师生以及慕名而来的业内人士呈现了一场主题为<深度学习与人工智能的未来(De ...
- 对话Facebook人工智能实验室主任、深度学习专家Yann LeCun
对话Facebook人工智能实验室主任.深度学习专家Yann LeCun Yann LeCun(燕乐存),Facebook人工智能实验室主任,NYU数据科学中心创始人,计算机科学.神经科学.电子电气科 ...
随机推荐
- 【学习笔记】python的代码块(吐槽)
曾经我以为python是像pascal那样begin开始end结束, 直到今天…… 我才知道python是用缩进作为代码段标识的…… >>> def test(n): ... if ...
- 模板 倍增维护RMQ
倍增维护RMQ,nlogn预处理,O(1)查询 #include<bits/stdc++.h> using namespace std; const int maxn = 1e5+7; s ...
- Android签名详解
1.什么是签名? 如果这个问题不是放在Android开发中来问,如果是放在一个普通的版块,我想大家都知道签名的含义.可往往就是将一些生活中常用的术语放在计算机这种专业领域,大家就开始迷惑了. ...
- J-Link Version
"J-Link / Flasher Portable V1 " "J-Link ARM / Flasher ARM V2 " "J-Link ARM ...
- LPC1800 and LPC4300 MCUs
LPC1800 Series microcontrollers At 180 MHz, LPC1800 Series microcontrollers combine the industry's f ...
- 《Go语言实战》Go 类型:基本类型、引用类型、结构类型、自定义类型
Go 语言是一种静态类型的编程语言,所以在编译器进行编译的时候,就要知道每个值的类型,这样编译器就知道要为这个值分配多少内存,并且知道这段分配的内存表示什么. 提前知道值的类型的好处有很多,比如编译器 ...
- Word中如何从某一页重新开始页码
- 安装oracle环境变量path的值大于1023的解决办法
介绍解决安装oracle安装问题 方法/步骤 安装oracle 10g时遇到环境变量path的值超过1023字符,无法设置该值,如图: 安装oracle 10g时遇到环境变量path的值超 ...
- 再议ASP.NET MVC中CheckBoxList的验证
在ASP.NET MVC 4中谈到CheckBoxList,经常是与CheckBoxList的显示以及验证有关.我在"MVC扩展生成CheckBoxList并水平排列"中通过扩展H ...
- IOS 内存斗争小史之 对象、指针、内存的基本理解
1.指针和对象,都是内存块.一个大,一个小.一个在栈中,一个在堆中. 2.iOS中,我们可以生命一个指针,也可以通过alloc获取一块内存. 3.我们可以直接消灭掉一个指针,将其置为nil.但是我们没 ...