主页

统计自然语言处理之美:从 NNLM 到 Bert

要不要让机器理解语言? 自然语言处理六十多年的发展历程,基本可以分为两个阶段。第一阶段从 20 世纪 50 年代到 70 年代,人们对计算机处理自然语言的认识都局限在人类学习语言的方式上,用了二十年时间苦苦探寻让计算机理解语言的方法,最终却一无所获。当时学术界普遍认为,要让机器完成翻译等自然语言处理任务,首先必须让机器理解语言,因此分析语句和获取语义成为首要任务,而这主要依靠语言学家来人工总结文法规则。特别是 20 世纪 60 年代基于乔姆斯基形式语言的编译器得到了很大的发展,更加鼓舞了人们通过概括自然语言语法来解决自然语言处理问题的决心。但是人类的自然语言既复杂又灵活,仅靠手工编写的文法规则根本无法覆盖(这还不考虑规则之间存在的矛盾),而且与规范严谨的程序语言不同,自然语言是一种复...

阅读更多

中东百年往事:欺骗、斩首、革命

转载自《中东百年往事:欺骗、斩首、革命》,作者:奥特快,数据支持:远川研究 1998年5月28日,美国广播公司记者约翰·米勒(John Miller)开始了他职业生涯中最危险的一次采访。 从美国出发,经漫长飞行后,米勒落地巴基斯坦,随后驱车直奔巴基斯坦最北部的村庄并在那里等候接应。到村庄后,武装人员光是核验米勒的身份就花了3天,问了无数问题。之后他们被要求换上阿拉伯长袍,于黄昏出发进入阿富汗,顺着干涸的河床走了好几个小时才遇到前来接应的卡车。 卡车在山谷中沿着崎岖不平的石子路前行,一路都是检查站,到处都是闪烁的枪口,所有电子设备都要被没收,以防美军定位空袭。第二天夜里,他们被安排坐上一辆完全封闭的小货车车厢,周围什么都看不到。隔三差五就有武装人员突然打开车厢门,用枪顶着他们要求...

阅读更多

依存句法分析在深度学习中的应用:从 Tree-LSTM 到 GCN

本文魔改自《依存句法分析在深度学习中的应用》,原作者:何晗 句法分析是一项核心的 NLP 任务,目标是获取句子的主谓宾等句法结构。在传统机器学习方法中,我们通常是在给定的依存句法树上,利用规则手工提取句法树的特征。随着神经网络方法的兴起,这种特征工程方法已经不再适用,那么我们应该如何提取树的向量表示呢?本文简单地通过 7 种模型来介绍依存句法分析在深度学习中的应用,涵盖 Tree-LSTM、DCNN 和 GCN 等。 Tree-LSTM 最著名的方法当属 Tree-LSTM (Tai et al., 2015),它扩展了经典的 LSTM 模型,使得原本的序列化模型可以处理树形结构。下图中左边就是标准的线性结构 LSTM,右边就是树形结构 LSTM。 与标准的 LSTM 单...

阅读更多

从 Word Embedding 到 Bert 模型:自然语言处理中的预训练技术发展史

转载自《从WordEmbedding到Bert模型—自然语言处理中的预训练技术发展史》,作者:张俊林 Bert 最近很火,应该是最近最火爆的 AI 进展,网上的评价很高,那么 Bert 值得这么高的评价吗?我个人判断是值得。那为什么会有这么高的评价呢?是因为它有重大的理论或者模型创新吗?其实并没有,从模型创新角度看一般,创新不算大。但是架不住效果太好了,基本刷新了很多 NLP 的任务的最好性能,有些任务还被刷爆了,这个才是关键。另外一点是 Bert 具备广泛的通用性,就是说绝大部分 NLP 任务都可以采用类似的两阶段模式直接去提升效果,这个第二关键。客观的说,把 Bert 当做最近两年 NLP 重大进展的集大成者更符合事实。 本文的主题是自然语言处理中的预训练过程,会大致说下 N...

阅读更多

寻找中国毒枭:芬太尼是如何从中国流向美国的?

转载自《重磅调查:尋找中國毒梟》,作者:吴婧。 本文由端传媒记者和《纽约时报》(The New York Times)特约撰稿人Alex W. Palmer合作报道,材料共享,独立成文。美国当地采访皆由Alex W. Palmer完成。 瑞恩·詹森(Ryan Jensen)做“生意”有个规矩——每位顾客每次只能购买一次剂量的芬太尼(fentanyl)。这名北达科他州(North Dakota)不满18岁的毒贩深知芬太尼的危险。作为一种鸦片(opium)类止痛药,芬太尼的效力比吗啡高50至100倍,按药效折算,1g芬太尼相当于40g海洛因。 10美金,10毫克,就可以让你high一整天——詹森的一位常客说。詹森只卖给信得过的人,并在顾客使用时留在他们身边,以防意外发生。只有一次,...

阅读更多

从语言模型到 Seq2Seq:Transformer 如戏,全靠 Mask

转载自《从语言模型到Seq2Seq:Transformer如戏,全靠Mask》,作者:苏剑林。 相信近一年来(尤其是近半年来),大家都能很频繁地看到各种 Transformer 相关工作(比如 Bert、GPT、XLNet 等等)的报导,连同各种基础评测任务的评测指标不断被刷新。同时,也有很多相关的博客、专栏等对这些模型做科普和解读。 俗话说,“外行看热闹,内行看门道”,我们不仅要在“是什么”这个层面去理解这些工作,我们还需要思考“为什么”。这个“为什么”不仅仅是“为什么要这样做”,还包括“为什么可以这样做”。比如,在谈到 XLNet 的乱序语言模型时,我们或许已经从诸多介绍中明白了乱序语言模型的好处,那不妨更进一步思考一下: 为什么 Transformer 可以实现乱序语言模...

阅读更多

使用 Keras 搭建模型识别验证码:通过 Web API 提供识别服务

最近因为项目上的需求,需要开发一个识别 4 位数字字母验证码的接口。想到自己虽然在科研上使用 Keras 已经有很长时间,但从来没有真正地将这些模型运用起来,或者说以 Web API 的形式对外提供过服务。因此借着这次机会,我正好完整地进行了一次从训练模型到最终包装成网络服务的开发。 准备工作 获取标注数据 无论什么类型的任务,只要希望通过机器学习方法来解决,那么必不可少的就是数据,可以说数据是烹饪“机器学习模型”这道菜必不可少的原料。我们项目的实际需求是识别一个网站上查询数据时需要输入的验证码,因此任务本身非常地简单,只是爬虫的一个中间环节。 虽然每一次刷新网页都可以获得新的验证码,但这些获得的图片都是没有标注的数据,因此无法直接用于我们的监督学习任务,而如果人工标注,则需要...

阅读更多

Seq2Seq 模型入门

转载自《玩转Keras之seq2seq自动生成标题》和《seq2seq之双向解码》,作者:苏剑林,部分内容有修改。 所谓 seq2seq,就是指一般的序列到序列的转换任务,比如机器翻译、自动文摘等等,这种任务的特点是输入序列和输出序列是不对齐的,如果对齐的话,那么我们称之为序列标注,这就比 seq2seq 简单很多了。所以尽管序列标注任务也可以理解为序列到序列的转换,但我们在谈到 seq2seq 时,一般不包含序列标注。 要自己实现 seq2seq,关键是搞懂 seq2seq 的原理和架构,一旦弄清楚了,其实不管哪个框架实现起来都不复杂。早期有一个第三方实现的Keras的seq2seq库,现在作者也已经放弃更新了,也许就是觉得这么简单的事情没必要再建一个库了吧。可以参考的资料还有...

阅读更多