Author Archives: admin

CS224N(2.19)Contextual Word Embeddings

今天介绍几种新的词向量学习方法,在此之前,建议大家看看我关于word2vec或GloVe等传统词向量的介绍:CS224N(1.8)Introduction and Word Vectors

传统词向量,比如word2vec,它在训练阶段学习到一个词的向量表示之后,在下游的各种NLP任务中,这个词向量不再变动了。也就是说传统词向量的特点是,对一个词只学习一个词向量,且在具体任务中固定不变。传统词向量有两个主要的不足:

1. 难以表达一词多义。一个词在不同的上下文语境中可能表示不同的含义,比如“苹果”在“苹果真好吃”和“苹果手机很好用”这两个句子中表示不同的含义,但word2vec学习到的“苹果”词向量只有一个,也就是说下游任务对于这两个句子用的是同一个词向量。虽然word2vec的词向量可能同时包含了这两个含义,但它把这两个含义糅合到一个向量中了,导致在“苹果真好吃”中可能引入了“苹果手机”的干扰因素,在“苹果手机很好用”中引入了“吃的苹果”的干扰因素。总之就是,word2vec学习到的词向量粒度较粗,向量固定不变,无法根据具体的上下文语境进行改变。

2. 难以表达不同的语法或语义信息。一个词,即使是同一个意思,在语法或语义上也可能充当不同的角色,比如“活动”这个词,既可以做名词、也可以做动词,既可以做主语、也可以做谓语等。但word2vec对一个词只给出一个词向量,无论这个词在句子中充当什么角色,词向量都是一样的。虽然word2vec训练时可能已经学到了一个词的不同语法或语义特征,但它把这些信息糅合到一个向量中了,也就是粒度较粗的问题。

其实上述两点暴露出来的word2vec的不足,本质上是同样的两个原因:1. 词向量是静态的,无法根据上下文进行调整;2. 词向量表示只有一个向量,糅合了太多信息,粒度较粗。

Continue reading

CS224N(2.14)Subword Models

今天介绍一下subword(子词)模型。之前介绍的NLP模型都是基于word的,对于英文来说是一个个单词,对于中文来说是一个个词语(需要分词)。不过,最近几年,subword模型多起来了,这就是我们今天要介绍的内容。

对于英文来说,文字的粒度从细到粗依次是character, subword, word,character和word都很好理解,subword相当于英文中的词根、前缀、后缀等,如unfortunately中的un、ly、fortun(e)等就是subword,它们都是有含义的。对于中文来说,只有两层,character和subword是同一层,表示单个的字,而word表示词语。

Continue reading

明朝那些事儿(伍)——帝国飘摇

严嵩倒台后,徐阶成为新的内阁首辅,把持朝政。某种程度上,徐阶和严嵩是一类人,也是独揽大权,但有一点不同的是,严嵩贪污不干活,而徐阶真的会干实事。徐阶入阁后,又推举了高拱入阁。高拱当时是嘉靖第三子朱载垕(裕王)的讲官,徐阶估计裕王未来会继承皇位,现在提拔高拱,等裕王上位后,自己退休后不至于会被清算。但是,高拱并不领情,他觉得裕王迟早要继承皇位,自己迟早要入阁,和徐阶的提拔没啥关系。高拱不但不感激徐阶,还跟徐阶对着干。于是,徐阶和高拱的斗争开始了。

Continue reading

明朝那些事儿(肆)——粉饰太平

朱厚熜继位后,改年号嘉靖,史称嘉靖皇帝。朱厚熜是明代最为聪明、心眼最多的一个皇帝。他本是湖北藩王兴献王的儿子,15岁的时候意外得知自己的堂兄死掉了,他要进京继承皇位。在这小小年纪,他通过两件事给满朝文武大臣一个狠狠的下马威。

第一件事是进京登基时,因为还不是皇帝,应该从东安门进宫,到文华殿暂住。他偏不,说要是不让从大明门进宫,直接去奉天殿,他就不当这个皇帝,回湖北老家去。群臣拿他没办法,只得照办。第二件事是明代著名的政治事件——“大议礼”事件。由于朱厚熜的父亲只是个藩王,并不是皇帝,朱厚熜登基之后,以杨廷和为首的老臣要求朱厚熜改爹,认上上个皇帝朱佑樘为爹,而改称亲爹为叔叔。朱厚熜顿时气炸了,当个皇帝还把自己亲爹当没了,岂有此理。于是,朱厚熜和杨廷和等人展开了激烈的辩论,由于涉及到古代礼仪制度的讨论,史称“大议礼”事件。在这起事件当中,杨廷和以退休威胁,一百多名政府高官在左顺门长跪示威;而嘉靖则派出礼部实习生张璁、桂萼等人写礼仪文书论战,并用武力解决长跪示威的群臣。经过一番折腾,嘉靖最终取得胜利,不但认了自己亲爹,还封亲爹为兴献皇帝。而杨廷和被准予退休,最后在老家去世,他的儿子杨慎被流放云南。此后三十余年,远离政治的杨慎,专心著书,研习学问,成为明代三才子之首,《三国演义》开篇的“滚滚长江东逝水”就出自杨慎之手。

Continue reading

明朝那些事儿(叁)——妖孽宫廷

朱祁镇凭借还乡团成员石亨、曹吉祥、张軏、徐有贞和李贤,成功复辟。朱祁镇复辟之后,还乡团成员自然不会忘记他们帮朱祁镇复辟的目的——杀于谦。于是,在徐有贞捏造的莫须有的罪名之后,北京保卫战第一大功臣于谦被下令斩首;内阁也被还乡团扫荡一空,朝廷上下全部换成了还乡团的人。

然而,还乡团成员并没有过上幸福生活,反而出现了内斗。原因是徐有贞是一个有追求、有理想的坏人,而石亨和曹吉祥除了有野心和贪欲,其他啥也没有。于是还乡团分为两派,一派是徐有贞和他提拔的李贤,另一派是石亨和曹吉祥,两派正式开始了内斗。事实上,这些人里面还有第三派,即李贤,他虽然是徐有贞提拔起来的,但他自成一派。自北京保卫战之后,李贤认识到,在这样一个污秽的地方,还有像于谦这样勇于任事,刚正不阿的人。在于谦被杀之后,李贤决定为于谦讨回公道。于是他的敌人是整个还乡团成员,包括石亨、曹吉祥和徐有贞,但表面上,李贤暂时和徐有贞一派。

内斗结果是,徐有贞最先被淘汰,充军云南后回到故乡,在人们的鄙视和谩骂中死去。接着,石亨的种种任人唯亲、贪污腐败的行为不断引起朱祁镇的反感,在李贤的推波助澜之下,石亨光荣入狱并惨死狱中。最后,曹吉祥也慌了,知道自己即将大难临头,他和养子曹钦居然密谋造反,最后造反失败,被凌迟处死。至此,历时五年,还乡团成员全军覆没,正义得到了伸张,李贤名留青史。

经历了无数的刀光剑影,权谋斗争,朱祁镇平静地走向了自己人生的终点。这位皇帝的一生并不光彩,他宠信过奸邪小人,打过败仗,当过俘虏,做过囚犯,杀过忠臣,要说他是好皇帝,真是鬼都不信。但他是一个好人,他几乎信任了身边每一个人,可事实证明,好人是做不了好皇帝的。在临死之前,朱祁镇废除了“皇帝驾崩,后宫殉葬”的制度,算是给他的人生添加了一抹亮色。朱祁镇死后,皇位传给了他的长子朱见深,由此开启了一个让人哭笑不得的朝代。

Continue reading

明朝那些事儿(贰)——万国来朝

朱棣夺取皇位之后,励精图治,发展经济,提倡文教,采取了许多措施大力发展经济,使得天下大治,国家富强,疆域辽阔,被称为永乐盛世。具体措施有以下几点:

郑和下西洋。朱棣进驻南京之后,没有发现朱允炆的踪迹,于是派出两队人马寻找朱允炆的下落,一路是郑和从海路出发,另一路是胡濙从陆路出发。郑和,原名马三保,是云南一个虔诚的伊斯兰教徒。洪武年间,朱元璋军队远征云南,俘虏并阉割了幼小的马三保。后来燕王朱棣挑选马三保作为自己的贴身侍卫。马三保在靖难之役中与朱棣出生入死,立下大功,被朱棣赐姓郑,马三保遂改姓名为郑和。郑和一生七下西洋,远航西太平洋和印度洋,沿海拜访30多个国家和地区,包括伊斯兰教圣地麦加。郑和下西洋虽然没有找到朱允炆的下落,但七下西洋不但宣扬了国威,还大力开拓了海外交流,带来了一大批西洋各国使者,开创了万国来朝的局面。

另一路胡濙的工作就不像郑和那样光明正大了,因为胡濙没有郑和下西洋明面上的任务,他的任务只有一条,就是寻找朱允炆。但寻找朱允炆又不能明说,因为这样无异于告诉所有的人,建文帝还活着,心中别有企图的人必然会蠢蠢欲动,这个皇位注定是坐不稳了。所以胡濙一个人隐匿在平民老百姓中间,在江浙一带晃悠,打探朱允炆的下落。经过十六年的苦苦寻觅,在朱棣远征蒙古的时候,胡濙带着答案来到朱棣的营帐。史料并没有明确记录朱允炆的下落,但当年明月推断胡濙找到了朱允炆,而且两个人进行了亲切友好的会谈,朱允炆表示他不想和朱棣争这个皇位了,只想好好过平民老百姓的日子。朱棣悬了十六年的心终于放下了,他终于可以安心做他的皇帝了,不用担心哪天冒出个朱允炆要和他抢皇位。

Continue reading

明朝那些事儿(壹)——洪武大帝

朱元璋,外号朱重八,1328年生于安徽凤阳。元朝取名字的习惯是父母年龄相加,所以推测此时朱元璋的父母年龄相加为88岁。元朝末年,朝廷腐败,苛捐杂税导致民不聊生。另外,1344年黄河泛滥、淮河流域遭遇严重瘟疫和干旱。朱元璋出生贫农,在这种天灾人祸的情况下,朱元璋的父、母、大哥、大哥长子等相继饿死,家里除了二哥,已经没有其他成员了。在这种情况下,朱元璋为了活下去,去附近的皇觉寺当和尚,主要工作是讨饭。

Continue reading

CS224N(2.12)Convolutional Networks for NLP

今天我们介绍如何使用CNN解决NLP问题。截止目前,我们学习了很多RNN模型来解决NLP问题,由于NLP是序列的问题,使用RNN这种循环神经网络是很符合直觉的,而且也取得了不错的效果。但是,由于RNN速度较慢,而且梯度消失问题比较严重,人们就想借用CV领域的CNN,看是否能解决NLP的问题。

我们在之前的博客中已经详细介绍过卷积神经网络CNN,这里不再详细介绍。下面我们以一篇paper中使用CNN对句子进行情感分类为例,简要介绍下怎样将CNN应用到NLP中。

Continue reading

CS224N(2.7)Question Answering

这节课的内容比较简单,是问答系统(Question Answering, QA)的入门介绍。

首先,为什么需要QA?目前各大搜索引擎对于一个查询,给出的都是一个结果列表。但是很多查询是一个问题,答案也往往比较确定,比如“现任美国总统是谁?”,此时,返回一堆结果列表就显得太过啰嗦了,尤其是在手机等移动设备上搜索时,简单的给出回答也许会更好一些。另一方面,智能手机上的助手如Siri、Google Now之类的,用户期望的也是简洁的答案,而不是一堆网页列表。

QA系统的组成主要有两个部分,一部分是根据问题检索到相关的文档,这部分是传统的信息检索的内容;另一部分是对检索到的文档进行阅读理解,抽取出能回答问题的答案,这部分就是本文要介绍的QA系统。

QA的历史可追溯到上世纪七十年代,但真正取得突破性进展也就是最近几年。2015/2016年,几个大规模QA标注数据集的发表,极大的推动了这个领域的发展。这其中比较有名的数据集是斯坦福大学发布的Stanford Question Answering Dataset (SQuAD)。

Continue reading