为什么要写这本书
这是一本关于中文自然语言处理(简称NLP)的书,NLP是计算机科学领域与人工智能领域中的一个重要方向。它研究能实现人与计算机之间用自然语言进行有效通信的各种理论和方法。NLP是一门融语言学、计算机科学、数学于一体的科学。本书偏重实战,不仅系统介绍了NLP涉及的知识点,同时也教会读者如何实际应用与开发。围绕这个主题,本书从章节规划到具体的讲述方式,具有以下两个特点:
第一个特点是本书的主要目标读者定位为高校相关专业的大学生(统计学、计算机技术)、NLP爱好者,以及不具备专业数学知识的人群。NLP是一系列学科的集合体,其中包含了语言学、机器学习、统计学、大数据以及人工智能等方面,尤其依赖数学知识才能深入理解其原理。因此本书对专业知识的讲述过程必须绕过复杂的数学证明,从问题的前因后果、创造者思考的过程、概率或几何解释代替数学解释等一系列迂回的路径去深入模型的本源,这可能多少会牺牲一些严谨性,但是却能换来对大多数人更为友好的阅读体验。
第二个特点是本书是一本介绍中文自然语言处理的书,中文分词相对于英文分词来说更为复杂,读者将通过例子来学习,体会到能够通过实践验证自己想法的价值,我们提供了丰富的来自NLP领域的案例。在本书的内容编制上,从知识点背景介绍到原理剖析,辅以实战案例,所有的代码会在书中详细列出或者上传Github方便读者下载与调试,帮助读者快速上手掌握知识点,同时可以应用到后续实际的开发项目中。在实际项目章节中,选取目前在NLP领域中比较热门的项目,将之前的知识点进行汇总,帮助读者巩固与提升。本书难度适中属于入门和扩展级读物。
读者将学到什么
如何用NLP 与语言学的关键概念来描述和分析语言
NLP 中的数据结构和算法是怎样的
自然语言处理目前主流的技术与方法论
信息检索技术与大数据应用
读者对象
1)统计学或相关IT专业学生
本书的初衷是面向相关专业的学生——大量基于理论知识的认知却缺乏实战经验的人员,让其在理论的基础上深入了解。通过本书,学生可以跟随本书的教程一起操作学习,达到对自己使用的人工智能工具、算法和技术知其然亦知其所以然的目的。
2)信息科学和计算机科学爱好者
本书是一部近代科技的历史书,也是一部科普书,还可以作为一部人工智能思想和技术的教科书去阅读。通过本书可以了解到行业先驱们在探索人工智能道路上所做出的努力和思考,理解他们不同的观点和思路,有助于开拓自己的思维和视野。
3)人工智能相关专业的研究人员
本书具体介绍了NLP相关知识。通过本书可以了解理论知识,了解哪些才是项目所需的内容以及如何在项目中实现,能够快速上手。
如何阅读本书
本书内容针对NLP从以下几个方面进行阐述:
第一部分的内容包括第1、2、11章,主要介绍了NLP所需要了解的Python科学包、正则表达式以及Solr检索。
第二部分的内容包括第5~10章的内容,主要是介绍NLP相关的各个知识点。分别是:
第3~5章主要介绍了词法分析层面的一些技术,这一部分是NLP技术的基础,需要读者熟练掌握。
第6章介绍了句法分析技术,该部分目前理论研究较多,工程实践中使用门槛相对较高,且效果多是依赖结合业务知识进行规则扩展,因此本书未做深入探讨,读者了解即可。
第7章介绍了常用的向量化方法。这些方法常用于各种NLP任务的输入,读者需重点掌握。
第8章介绍了情感分析相关的概念、场景以及一般做情感分析的流程,情感分析在很多行业都有应用,所以需要读者熟练掌握。
第9章介绍了机器学习的一些基本概念,重点突出NLP常用的分类算法、聚类算法,同时还介绍了几个案例,这章是NLP的基础内容,需要重点掌握。
第10章介绍了NLP中常用的深度学习算法,这些方法比较复杂,但是非常实用,需要读者耐心学习。
除了以上内容外,以下信息是在本书中涉及特定内容的解释和说明:
内容延伸。本书每个章节都有一定的内容延伸章节,其内容是对于有兴趣深入研究的读者推荐的资料或进一步了解的知识点,由于每个主题都涵盖很多内容,因此本书仅在内容延伸中抛砖引玉,有兴趣的读者可以加以了解和学习。
相关知识点。本书很多章节中都有“相关知识点”的内容介绍,其对特定工具、知识、算法、库等方面做了较为详细的介绍,它们是本书的知识堡垒。
本章小结。每章的结尾都有“本章小结”,在小结中包含4部分内容。
内容小结。内容小结是有关本章内容的总结。
重点知识。重点知识是本章重点需要读者掌握的知识和内容。
外部参考。外部参考是本章提到过但是无法详细介绍的内容,都在外部参考中列出,有兴趣的读者可以基于比构建自己的知识图谱。
应用实践。基于本章内容推荐读者在实践中落地的建议。
提示。对于知识点的重要提示和应用技巧,相对“相关知识点”而言,每条提示信息的内容量较少,一般都是经验类的总结。
注意。特定需要引起注意的知识,这些注意点是应用过程中需要避免的“大坑”。
关于附件的使用方法
除了第1章外,本书的每一章都有对应源数据和完整代码,该内容可在本书中直接找到,有些代码需要从Github下载,地址是https://github.com/nlpinaction/learning-nlp。需要注意的是,为了让读者更好地了解每行代码的含义,笔者在注释信息中使用了中文标注,且每个程序文件的编码格式都是UTF-8。
勘误和支持
由于笔者水平有限,书中难免会出现一些错误或者不准确的地方,恳请读者批评指正。读者可通过以下途径联系并反馈建议或意见:
即时通讯。添加个人微信(kennymingtu)反馈问题。
电子邮件。发送E-mail到kenny_tm@hotmail.com。
致谢
在本书的撰写过程中,得到了来自多方的指导、帮助和支持。
首先要感谢的是机械工业出版社华章公司的杨福川编辑,他在本书出版过程中给予我极大的支持和鼓励,并为此书的撰写提供了方向和思路指导。
其次要感谢黄英和周剑老师在自然语言处理项目和工作中提供的宝贵经验和支持。
再次要感谢全程参与审核、校验等工作的张锡鹏、孙海亮编辑以及其他背后默默支持的出版工作者,是他们的辛勤付出才让本书得以顺利面世。
最后感谢我的父母、家人和朋友,使得我有精力完成本书的编写。
谨以此书献给热爱数据工作并为之奋斗的朋友们,愿大家身体健康、生活美满、事业有成!
涂铭
2018年1月于上海
书籍初成,感慨良多。
在接受邀请撰写本书时,从未想到过程如此艰辛。
感谢我的女友和家人的理解与支持,陪伴我度过写书的漫长岁月。
感谢我的合著者——涂铭和刘树春,与他们合作轻松愉快,给予我很多的理解和包容。
感谢参与审阅、校验等工作的孙海亮老师等出版社工作人员,是他们在幕后的辛勤付出保证了本书的出版成功。
再次感谢一路陪伴的所有人!
刘祥
2018年1月于北京
首先要感谢我的两位合作者——涂铭和刘祥,能够相聚在一起写书是缘分。当初聊到出版NLP入门书籍的想法时我们一拍即合,然而真正开始执笔才发现困难重重,业余时间常常被工作挤占,进度一拖再拖,在伙伴们的支持下,克服了拖延症,顺利完成本书。
特别感谢我的爱人和家人的悉心照料和支持。
感谢孙海亮老师、张锡鹏老师等出版社工作人员,没有他们的辛劳付出就没有本书保质保量的完成。
最后感谢帮我校稿的林博、谢雨飞、陈敏,谢谢他们在生活和工作上给我的支持与帮助。
最后,祝大家学习快乐。
刘树春
2018年1月于上海