专访丨一学就会的自然语言处理系统书

管理员账号

2017-12-26

《自然语言处理技术入门与实战》

手把手教你搭建自然语言处理系统!

实用技术要点,完整解决方案

兰红云 编著

2017年11月出版

一本一学就会的自然语言处理系统书

避免繁琐和突兀的数学证明

没有复杂公式,也不教你写代码

这本书是如何做到的?小编也怀着这样的疑问请教了兰红云老师,让我们通过下面5个小问题来找一下答案吧!

问: 为什么写这本书?

在笔者学习的过程中,发现目前出版的一些书籍,存在两类,各有各的问题。

有点书过于偏理论性,会介绍很多自然语言处理技术发展的历史,比如符号逻辑的发展轨迹、语义网络的发展轨迹、语言学派和统计学派的“恩怨情仇”,会让初学者在学习的过程中抓不住重点,有时候又感觉他们好像就是一回事,为啥说是两种不同的方法呢?

有的书内容过于技术,开篇就把其中涉及到的一些数学知识全都介绍一遍,因为这其中有很多数学知识是比较高阶的,比如隐马尔科夫链、条件随机场、数理逻辑推理等,在介绍数学知识的过程中,又难免会涉及到相关的证明。本来其数学形式就比较复杂,再加上连环的证明就更难懂了,对于数学基础稍微薄弱一点的读者,就感觉没有学习的欲望和必要了。

但是在实际应用中,其实这些繁琐的证明根本不需要,有时候只需要记住一个结论,然后根据自己数据的情况,优化模型中的参数就可以了。所以笔者就想结合自己学习过程中和实际工作中的一些经验和教训,从应用的角度来对自然语言处理中的一些技术进行介绍。在介绍的时候,希望尽量的避免繁琐和突兀的数学证明,尽量从应用的角度尽可能简洁明了的对一个算法或者处理系统进行简要的介绍,先让大家对这个方法有一个直观感性的认识,然后再深入的了解其中的难点,进而深入学习和攻克。

问:谈谈这本书的诞生过程吗?

从计划开始写书,到真正完成整个书的写作,整个事情大概经过了一年的时间。这个过程现在回想起来真的是痛并快乐着,大概这就是充实做一件事的最普通的感受吧。

2016年

6月确定想写一本书。

7月开始梳理书的框架。这其中经过多次的修改和调整,到8月份算是最终确定。

9月份开始正式写,这其中又调整了几次书内容的组织形式。一个月就写完了一小节。

12月完成第一章全部小节的写作,这期间一边组织内容,一边修改自己的知识库,真是一个痛苦又充实的过程。经常是到了深夜突然梦到一个好的点子,自己会被自己帅醒,然后就想着明天一定要修改,结果到了第二天很难再想起来,就拼命的想啊想,有时候能想起来一点,大部分情况都想不起来了,然后就这样一点点的组织书的结构和内容的表达,一点点的完成书的创作。

2017年

3月基本完成了整本书内容的编写,因为时间原因书的章节也进行了细微的调整,有一部分内容就没有呈现出来,这个也算是一个小遗憾,希望以后有机会能将这个遗憾弥补上。

4月、5月进行了书的第一遍自审,自查。这个过程在我看来是非常痛苦的一个过程,因为审查的内容都是已经看过好几遍的:学习的时候看一遍,组织内容的时候又看一遍,真正落实到书上的时候又看一遍。现在审查又要看一遍,都有点视觉疲劳了,但是还要强迫自己去看,看看有没有新的好的内容组织方式,更好的展现这部分知识。所以就像压榨机一样,不断的挤压,直到没有新想法或者你放弃为止。不过经过这个过程会发现对知识的学习会有一个非常大的进步和改变,收获非常大。

到6月份的时候又完成了第二遍的自审、自查,经过了第一遍痛苦的过程后,第二遍就稍微好一些,同时在这一个过程又进行了内容的细小调整。

问:写书过程中对你印象深刻的事有哪些?

在写书的过程中,其实有很多印象深刻的事,比如加班加上了瘾:真的是除了被老板强制要求外,从没有这么有动力加班的时候;又比如会为了一个结构图看好几天的资料,看论文、博客、源代码等等。但是真正要写下来的时候,突然发现其实大部分都好像是应该做的,写出来的话就感觉有点矫情了。因为创作这本书的初衷是为了能更好的帮助自己,如果可能的话帮助他人能更轻松更容易的去学习一些内容所以。

就讲一个在学习的过程印象深刻的事情吧。记得在组织LSTM(Long Short-Term Memory)这一章节的内容的时候,原本以为自己已经理解的很好了,所以就想当然的开始“行云流水般”的把自己想写的内容写下来。但是后面发现写着写着就断了,因为发现有些点自己其实没有理解清楚,最可怕的是,有些点几乎是完全空白,只是人云亦云的经常那么说,但是到底是为什么,其实自己也不知道。所以,经过了这个过程后,对于“操千曲而后晓声,观千剑而后识器”这句话我又有了重新的认识:要真正学习掌握一个东西,一定要从模仿开始,一步一步的将原来的知识进行还原和验证。

就像我们在学习数学或者其他学科的定理和定义的时候,其实我们是先把前人已经证明过的结论再原原本本的验证一遍,通过这个过程对其中包含的基本知识达到真正的理解。在之后遇到新的问题的时候 ,再用自己学习到的知识去解决新的问题,达到学以致用的目的。这个或许是学习的最普通的道理吧,只是我之前没有理解到。

问: 本书内容的特色定位有哪些?

(1)本书采用以应用为主,算法和实现为辅的形式对自然语言处理中的一些技术进行介绍。对于算法数学原理的介绍,都是穿插在每一个应用的介绍中,对每一部分的数学知识进行分别介绍和讲解,没有开篇对所涉及的数学知识进行一个全面的介绍,这样大家就不会因为某一个部分的数学知识不完备,或者掌握起来有困难而放弃整个知识体系的学习,这样大家就可以独立学习和掌握。同时因为知识遗忘的必然性,将数学知识融入到应用中进行介绍,又更容易让大家记住。否则前后脱节之后,就忘记了之前讲解的数学原理,在应用中又要重新学习,也并不一定能够知道具体的应用原理。

(2)同时我们纯粹从应用的角度来进行各个内容的组织,没有涉及太多的处理技术起源、变革、发展等历史信息。一方面各个技术都有自己的长处和缺点,这个是理论学派争论的焦点,但是不是应用层面应该关心或者需要标明立场的地方,另一方面作为主要介绍应用实战的书,这里更多的是想让大家了解对于同一个问题目前的一些处理的方法,以及这些方法之间的优劣,以及相互的关联。以便找到解决问题更好的方法,这样也更有利于整个事情的发展。

所以从做事情的本身来说,我们需要关心的是事情怎么能做起来,没有做起来是因为什么,所以更多的关心的是术的事情,而对于道的层面更多的是了解,是取众家之长,来“集大成”。而不能剑走偏锋。随着源工具的不断增加,大家对底层应用的开发需求在逐渐降低,所以本书先从上层应用介绍入手,让大家能够直接用起来,这样也更有利于大家边实践边学习。这样可以避免大家因为学习底层技术太难而阻碍后期应用的学习。从企业的角度出发,缺的也不是底层通用的处理技术和能力,更多的是缺少对实际业务的处理能力,业务跑起来之后,整个系统会随着业务的发展而不断发展。所以本书采用以应用贯串始终的方式进行相关技术的介绍和说明。

问:本书的学习建议有吗?

本书在写作过程中力求普及并与实践相结合,尽可能地照顾到不同层次不同专业的读者。

另外,本书是以应用场景来组织各个内容的,每一个章节都包含一个完整的应用解决方案:问题解决的原理、实现的算法原理、具体算法的实现,所以读者可以根据自己的需要独立地学习各个章节的内容。在各个章节的学习过程中,笔者强烈建议读者在学习具体方法之前,一定要认真地理解所要解决问题的具体场景。要理解当前场景的输入是什么、输出是什么,为什么会是这样的结构,只有弄明白了这些,才会对算法有更深入的理解,也才能更好地使用所学习的算法,做到举一反三。因为算法本身是一种数据处理逻辑,所以只要具有相同处理逻辑的问题都可以用同样的算法,比如最大熵模型发挥了巨大的作用是人们找到了其适用的场景,而不是对模型进行各种变形以让其去适合具体的应用

问:最后还有什么想分享的吗?

本书在写作的过程中参考了很多国内外学者的论文和著作。如果没有他们的出色工作,没有他们极为宝贵的研究成果,本书是写不出来的。在本书出版之际,谨向他们表示衷心的感谢。

在本书写作过程中,笔者常为自己的学识不足而苦恼、自然语言处理作为一门交叉性边缘性学科,涉及语言学、计算机科学、数学等各个方面的知识,笔者学识浅陋,论述之中倘有不当,恳请读者批评指正。有任何意见和建议请发到392071814@qq.com,不胜感激。

最后,谨向帮助、支持和鼓励我完成本书的我的家人、同事、领导、朋友以及出版社的领导、编辑致以深深的敬意和真挚的感谢!

————

作者简介

兰红云,湖北襄阳人。曾任职于猎豹移动,现为阿里影业数据挖掘专家,拥有多年的算法和数据挖掘的工作经验,申请过多项算法专利。研究方向包括自然语言处理和机器学习。

读者评论

相关专题

相关博文

  • 基于语义的统计语言模型实现关键词抽取

    基于语义的统计语言模型实现关键词抽取

    管理员账号 2017-11-30

    小编说:关键词提取能让我们快速地了解一篇文章。在信息爆炸的时代,能够有效提取文本的关键词,对于快速、及时、高效地获取信息是非常有帮助的。本文介绍一种能够体现文本语义关系的关键词提取算法。本文选自《自然语言处理技术入门与实战》一书。 ...

    管理员账号 2017-11-30
    1649 0 0 0