查看原文
其他

送10本HanLP作者新书《自然语言处理入门》,人人都能看懂的NLP入门书

52nlp AINLP 2020-10-22

码农场博主,HanLP作者何晗的新书《自然语言处理入门》出版了,作为这本书半个牵线者,我必须在这里认真推荐一下。几年前,当我第一次得知HanLP的作者何晗是上外一名非科班同学时,我非常吃惊,要知道,即使科班出身,要开发一个如此完备的NLP工具都相当有挑战,更不用说HanLP在中文NLP开源领域是如此的成功。而今,何晗在美国埃默里大学就读CS领域的博士,他在课余时间坚持写作,结合自己的学习历程和HanLP的开发经验给大家呈现了一本不太一样的NLP入门书。个人觉得,跟着这本书,动手实现NLP的基础模块,这大概是最好的入门方式之一。另外,我已经拿到这本书的纸质版,印刷很精致,附赠的NLP思维导图也非常惊艳,有HanLP的背书,相信这本书会成为本年度最值得期待的NLP书籍之一。



以下是何晗制作的视频,关于HanLP,关于这本书:#自然语言处理入门#一个连续维护5年的开源项目HanLP的进化史, 感谢开源社区的每一位用户与贡献者!



这次我们送出10本《自然语言处理入门》给大家,5本直接抽奖,AINLP公众号回复"hanlp"获取抽奖信息,截止10月22号晚18点;另外5本留言赠书,说说你的NLP入门故事或者建议,同样截止10月22晚18点,我会从中选择5名认真撰写留言的同学赠书,到时候请注意留言中奖提示,特别提醒,留言中奖不以点赞为依据,等不及的同学可以直接点击下方链接下单,最后感谢图灵教育的赞助。


这是一本你一定能看懂的 NLP 图书:

  • 内容务实,图文并茂,算法、公式、代码相互印证,Java 与 Python 双实现
  • 学习路径清晰,尊重初学者认知规律,简单易懂好上手,双色印刷阅读体验佳

你有这些疑问吗?

这本书的作者何晗(@hankcs),曾经是上外一名日语专业的学生,如今是美国埃默里大学计算机博士生,研究方向是句法分析、语义分析与问答系统。

何晗写的自然语言处理类库 HanLP,截至 2019 年 10 月初,GitHub Star 数已达 15 K,超过了宾夕法尼亚大学的 NLTK、斯坦福大学的 CoreNLP、哈尔滨工业大学的 LTP。何晗的 “码农场”博客也是很多 NLP 领域朋友参考的学习资料。

何晗曾经跟你一样,在入门 NLP 的路上彷徨,跟天书般的术语与公式斗争,在迷宫般的教学代码中挣扎。幸运的是,他一路披荆斩棘走过来了。从门外汉到领域专业人士,他是如何做到的?《自然语言处理入门》一书汇集了他的学习经验与学习心得。

如果有更轻松的方式,作为一名普通入门 NLP 的学习者,你大可不必去走何晗走过的那些弯路。《自然语言处理入门》就是这些更轻松的方式中的一种,何晗在这本书的前言中讲到:

在我的开源自然语言处理项目 HanLP 流行起来后,我接触了大量 NLP 初学者,我看到不少人碰到了我当初苦苦思索的问题。许多用户不理解“统计自然语言处理”的设计理念,对 “语料”“训练”“模型”等概念十分陌生。同时,如果你缺乏自然语言处理基础的话,也无法掌握 HanLP 中的高级功能。还有部分学习热情高涨的用户尝试阅读 HanLP 的代码,却反应即便代码有注释,也看不懂为什么要这么写......
用户的问题和困惑越积越多,有些朋友建议我写一 本 HanLP 的书。然而我认为一本书不应当局限于代码,而应当让读者知其所以然,而彼时我觉得自己才疏学浅,写不出满意之作。后来经过几年的完善,HanLP 成为 GitHub 上最受欢迎的自然语言处理项目,我对自然语言处理的理解也系统化了一些。正巧图灵的王军花老师跟我约稿, 我想是时候将这些年的收获总结一下了。并且,最终,这是一本通用的 NLP 入门书,HanLP 只是作为案例展现。
我曾经也是一无所知的外行,自学时走过不少弯路,深知数学语言的艰深晦涩,并且痛恨罗列公式故作高深的文章,也不喜欢大而全的综述书籍。因此,我写了这本不太一样的入门书,将阅读体验排在学术规范之前。尽量用自然的语调讲几个具体算法,把每个算法讲清楚,力争做到让你在地铁上也能把书读完读懂。

编辑推荐

编辑推荐

适读人群 :对自然语言处理感兴趣的普通程序员、算法工程师,计算机专业本科生,低年级研究生。配套代码集成到广受欢迎的自然语言处理工具包 HanLP 中,Java 与 Python 代码双实现。


你一定能看懂的自然语言处理(NLP)入门教程!


这是一本把读者阅读体验放在首位的中文 NLP 图书,作者采用从问题到算法再到工程实现的写作思路,只允许必不可少的公式出现,降低了读者学习的门槛,通俗易懂、容易上手。是一本可以在地铁上也能学会 NLP 开发的图书。


全书有以下特点:

1. 图文并茂,算法、公式、代码相互印证,Java 与 Python 双实现。

2. 学习路径清晰,问题导向、算法实现、工程实战,简单易懂好上手,双色印刷阅读体验佳。

3. 业内专家——工业界周明、李航、刘群、王斌、杨攀,学术界宗成庆、刘知远、张华平 联合推荐。

4. 作者何晗(@hankcs)兼具一线实战经验与硬核学术背景。自然语言处理开源项目 HanLP 作者(GitHub Star 数远超宾夕法尼亚大学的 NLTK、斯坦福大学的 CoreNLP 以及哈工大的 LTP)埃默里大学计算机博士生,研究方向是句法分析、语义分析与问答系统。

5. 随书附赠大尺寸(60CM*74CM)思维导图,提供源码下载、 GitHub 答疑,为教师提供教学讲义 PPT。读者可到图灵社区本书页面下载。


内容简介

内容简介

这是一本务实的入门书,助你零起点上手自然语言处理。


HanLP 作者何晗汇集多年经验,从基本概念出发,逐步介绍中文分词、词性标注、命名实体识别、信 息抽取、文本聚类、文本分类、句法分析这几个热门问题的算法原理与工程实现。书中通过对多种算法的讲解,比较了它们的优缺点和适用场景,同时详细演示生产级成熟代码,助你真正将自然语言处理应用在生产环境中。


随着本书的学习,你将从普通程序员晋级为机器学习工程师,最后进化到自然语言处理工程师。


大咖推荐

精彩书评

近几年 NLP 的研究进入高潮。很多人都想学习 NLP 但是不知道如何开始,目前国内 NLP 领域急需更多入门好书,HanLP 作者何晗即将出版的这本《自然语言处理入门》值得一读。这本书比较系统地介绍了 NLP 的基础技术,深入浅出、容易理解,对初学者很有帮助。

——周明,微软亚洲研究院副院长,国际计算语言学会会长


自然语言处理是人工智能颇具挑战的领域,我衷心希望有更多的人能加入这个领域的技术研究、开发、应用之中。相信何晗的这本《自然语言处理入门》会对大家有很大的帮助。本书以 GitHub 开源项目 HanLP 的代码实现为基础,介绍了从分词到句法分析再到深度学习的自然语言处理基本技术。本书叙述简洁清晰,讲解透彻深入,非常适合初学者。强烈推荐!

——李航,字节跳动人工智能实验室总监,《统计学习方法》作者


作者从实践的角度用通俗易懂的语言解释自然语言处理的概念,用应用实例和类程序语言描述算法,有鲜明的特色和很强的实用性,我相信这本书会深受读者的欢迎。

——宗成庆,中国科学院自动化研究所研究员、博士生导师,《统计自然语言处理》作者


本书作者何晗原来也是一个自然语言的爱好者,现在已成为自然语言处理的专业人士,美国埃默里大学计算机科学专业的博士生。他自主开发了一套完全开放源代码的自然语言处理工具包 HanLP,受到使用者的好评。这本书依托于 HanLP 工具包,从基本的概念和原理出发,讲解了自然语言处理中一些常用的问题和算法。我相信这本书融入了作者对这个领域各项技术的深刻理解和切身体会,一定会是一本非常好的入门书。

——刘群,华为诺亚方舟实验室语音语义首席科学家


这本书不仅介绍了 NLP 的任务及算法,也提供了可以实际运行的生产级代码,非常适合 NLP 初学者入门并快速布置到生产环境。本书的文字十分流畅,连标点符号都鲜有错误,展示了作者严谨的写作态度和极强的文字能力。虽然本书深度学习相关的篇幅不多,但是了解传统的 NLP 方法能够大大提升对问题的理解能力,推荐阅读!

——王斌,小米人工智能实验室主任、NLP 首席科学家


近年来人工智能技术应用日益广泛深入,自然语言处理(NLP)也随之成为一门“显学”。作为教计算机学习理解和使用人类语言的学科,NLP 在搜索引擎、推荐系统、社会计算、智能音箱、机器翻译等几乎所有与“语言”有关的方向发挥着重要作用。由于人类语言的复杂特点, NLP 所涉及的基础知识和技术非常多,虽然国内外有一些经典的教材,但与实际应用密切结合深入浅出讲授的著作凤毛麟角。本书作者是中文 NLP 工具包 HanLP 的开发者,本书结合 HanLP 细致讲解 NLP 的关键技术,是上手 NLP 不错的读物。我非常高兴将这本书推荐给对 NLP 感兴趣的朋友们。

——刘知远,清华大学副教授,MIT“35 岁以下科技创新 35 人”中国区榜单获得者


大数据与人工智能已经成为当今世界各国的战略必争之地,自然语言处理是人工智能科学皇冠上的明珠,大数据为自然语言处理的跨越式发展提供了算源与算力基础。HanLP 吸收了我所开源的汉语分词系统 ICTCLAS 的精髓,何晗跟我深入讨论过我发表的论文,其学习能力与勤奋严谨给我留下了深刻印象。何晗结合 HanLP 宝贵的开发经验与 NLP 领域研究成果所写的这本书,是一部难得的 NLP 启蒙之作,推荐阅读。

——张华平,北京理工大学副教授、NLPIR-ICTCLAS 创始人, 钱伟长中文信息处理科学技术奖一等奖获得者


目录


目录

第1章新手上路1


1.1自然语言与编程语言.2


1.1.1词汇量.2


1.1.2结构化.2


1.1.3歧义性.3


1.1.4容错性.3


1.1.5易变性.4


1.1.6简略性.4


1.2自然语言处理的层次.4


1.2.1语音、图像和文本..5


1.2.2中文分词、词性标注和命名实体识别.5


1.2.3信息抽取.6


1.2.4文本分类与文本聚类..6


1.2.5句法分析.6


1.2.6语义分析与篇章分析..7


1.2.7其他高级任务7


1.3自然语言处理的流派.8


1.3.1基于规则的专家系统..8


1.3.2基于统计的学习方法..9


1.3.3历史.9


1.3.4规则与统计.11


1.3.5传统方法与深度学习11


1.4机器学习..12


1.4.1什么是机器学习13


1.4.2模型..13


1.4.3特征..13


1.4.4数据集..15


1.4.5监督学习..16


1.4.6无监督学习.17


1.4.7其他类型的机器学习算法..18


1.5语料库19


1.5.1中文分词语料库19


1.5.2词性标注语料库19


1.5.3命名实体识别语料库20


1.5.4句法分析语料库20


1.5.5文本分类语料库20


1.5.6语料库建设.21


1.6开源工具..21


1.6.1主流NLP工具比较..21


1.6.2Python接口23


1.6.3Java接口.28


1.7总结.31


第2章词典分词32


2.1什么是词..32


2.1.1词的定义..32


2.1.2词的性质--齐夫定律..33


2.2词典.34


2.2.1HanLP词典.34


2.2.2词典的加载.34


2.3切分算法..36


2.3.1完全切分..36


2.3.2正向最长匹配.37


2.3.3逆向最长匹配.39


2.3.4双向最长匹配.40


2.3.5速度评测..43


2.4字典树46


2.4.1什么是字典树.46


2.4.2字典树的节点实现47


2.4.3字典树的增删改查实现..48


2.4.4首字散列其余二分的字典树.50


2.4.5前缀树的妙用.53


2.5双数组字典树55


2.5.1双数组的定义.55


2.5.2状态转移..56


2.5.3查询..56


2.5.4构造*57


2.5.5全切分与最长匹配60


2.6AC自动机..60


2.6.1从字典树到AC自动机61


2.6.2goto表61


2.6.3output表..62


2.6.4fail表63


2.6.5实现..65


2.7基于双数组字典树的AC自动机.67


2.7.1原理..67


2.7.2实现..67


2.8HanLP的词典分词实现71


2.8.1DoubleArrayTrieSegment72


2.8.2AhoCorasickDoubleArrayTrie-Segment.73


2.9准确率评测.74


2.9.1准确率..74


2.9.2混淆矩阵与TP/FN/FP/TN..75


2.9.3精确率..76


2.9.4召回率..76


2.9.5F1值..77


2.9.6中文分词中的P、R、F1计算..77


2.9.7实现..78


2.9.8第二届国际中文分词评测..79


2.9.9OOVRecallRate与IVRecallRate.81


2.10字典树的其他应用.83


2.10.1停用词过滤..83


2.10.2简繁转换87


2.10.3拼音转换90


2.11总结.91


第3章二元语法与中文分词.92


3.1语言模型..92


3.1.1什么是语言模型92


3.1.2马尔可夫链与二元语法..94


3.1.3n元语法..95


3.1.4数据稀疏与平滑策略96


3.2中文分词语料库.96


3.2.11998年《人民日报》语料库PKU.97


3.2.2微软亚洲研究院语料库MSR98


3.2.3繁体中文分词语料库98


3.2.4语料库统计.99


3.3训练.100


3.3.1加载语料库..101


3.3.2统计一元语法..101


3.3.3统计二元语法..103


3.4预测..104


3.4.1加载模型104


3.4.2构建词网107


3.4.3节点间的距离计算111


3.4.4词图上的维特比算法.112


3.4.5与用户词典的集成115


3.5评测..118


3.5.1标准化评测..118


3.5.2误差分析118


3.5.3调整模型119


3.6日语分词122


3.6.1日语分词语料..122


3.6.2训练日语分词器.123


3.7总结..124


第4章隐马尔可夫模型与序列标注.125


4.1序列标注问题.125


4.1.1序列标注与中文分词.126


4.1.2序列标注与词性标注.127


4.1.3序列标注与命名实体识别128


4.2隐马尔可夫模型..129


4.2.1从马尔可夫假设到隐马尔可夫模型129


4.2.2初始状态概率向量.130


4.2.3状态转移概率矩阵.131


4.2.4发射概率矩阵..132


4.2.5隐马尔可夫模型的三个基本用法..133


4.3隐马尔可夫模型的样本生成133


4.3.1案例--医疗诊断.133


4.3.2样本生成算法..136


4.4隐马尔可夫模型的训练..138


4.4.1转移概率矩阵的估计.138


4.4.2初始状态概率向量的估计139


4.4.3发射概率矩阵的估计.140


4.4.4验证样本生成与模型训练141


4.5隐马尔可夫模型的预测..142


4.5.1概率计算的前向算法.142


4.5.2搜索状态序列的维特比算法..143


4.6隐马尔可夫模型应用于中文分词.147


4.6.1标注集148


4.6.2字符映射149


4.6.3语料转换150


4.6.4训练151


4.6.5预测152


4.6.6评测153


4.6.7误差分析154


4.7二阶隐马尔可夫模型*154


4.7.1二阶转移概率张量的估计155


4.7.2二阶隐马尔可夫模型中的维特比算法156


4.7.3二阶隐马尔可夫模型应用于中文分词158


4.8总结..159


第5章感知机分类与序列标注.160


5.1分类问题160


5.1.1定义160


5.1.2应用161


5.2线性分类模型与感知机算法161


5.2.1特征向量与样本空间.162


5.2.2决策边界与分离超平面164


5.2.3感知机算法..167


5.2.4损失函数与随机梯度下降*169


5.2.5投票感知机和平均感知机171


5.3基于感知机的人名性别分类174


5.3.1人名性别语料库.174


5.3.2特征提取174


5.3.3训练175


5.3.4预测176


5.3.5评测177


5.3.6模型调优178


5.4结构化预测问题..180


5.4.1定义180


5.4.2结构化预测与学习的流程180


5.5线性模型的结构化感知机算法..180


5.5.1结构化感知机算法.180


5.5.2结构化感知机与序列标注182


5.5.3结构化感知机的维特比解码算法..183


5.6基于结构化感知机的中文分词..186


5.6.1特征提取187


5.6.2多线程训练..189


5.6.3特征裁剪与模型压缩*.190


5.6.4创建感知机分词器.192


5.6.5准确率与性能..194


5.6.6模型调整与在线学习*.195


5.6.7中文分词特征工程*.197


5.7总结..199


第6章条件随机场与序列标注.200


6.1机器学习的模型谱系200


6.1.1生成式模型与判别式模型201


6.1.2有向与无向概率图模型202


6.2条件随机场..205


6.2.1线性链条件随机场.205


6.2.2条件随机场的训练*207


6.2.3对比结构化感知机.210


6.3条件随机场工具包.212


6.3.1CRF++的安装212


6.3.2CRF++语料格式213


6.3.3CRF++特征模板214


6.3.4CRF++命令行训练215


6.3.5CRF++模型格式*216


6.3.6CRF++命令行预测217


6.3.7CRF++代码分析*218


6.4HanLP中的CRF++API220


6.4.1训练分词器..220


6.4.2标准化评测..220


6.5总结..221


第7章词性标注.222


7.1词性标注概述.222


7.1.1什么是词性..222


7.1.2词性的用处..223


7.1.3词性标注223


7.1.4词性标注模型..223


7.2词性标注语料库与标注集.224


7.2.1《人民日报》语料库与PKU标注集..225


7.2.2国家语委语料库与863标注集.231


7.2.3《诛仙》语料库与CTB标注集..234


7.3序列标注模型应用于词性标注..236


7.3.1基于隐马尔可夫模型的词性标注..237


7.3.2基于感知机的词性标注238


7.3.3基于条件随机场的词性标注..240


7.3.4词性标注评测..241


7.4自定义词性..242


7.4.1朴素实现242


7.4.2标注语料243


7.5总结..244


第8章命名实体识别.245


8.1概述..245


8.2基于规则的命名实体识别.246


8.3命名实体识别语料库..250


8.4基于层叠隐马尔可夫模型的角色标注框架252


8.5基于序列标注的命名实体识别..260


8.6自定义领域命名实体识别.266


8.7总结..268


第9章信息抽取.270


9.1新词提取270


9.2关键词提取..276


9.3短语提取283


9.4关键句提取..284


9.5总结..287


第10章文本聚类.288


10.1概述..288


10.2文档的特征提取291


10.3k均值算法293


10.4重复二分聚类算法..300


10.5标准化评测..303


10.6总结..305


第11章文本分类.306


11.1文本分类的概念306


11.2文本分类语料库307


11.3文本分类的特征提取.308


11.4朴素贝叶斯分类器..312


11.5支持向量机分类器..317


11.6标准化评测..320


11.7情感分析321


11.8总结..323


第12章依存句法分析.324


12.1短语结构树..324


12.1.3宾州树库和中文树库.326


12.2依存句法树..327


12.3依存句法分析.333


12.4基于转移的依存句法分析..334


12.5依存句法分析API340


12.6案例:基于依存句法树的意见抽取..342


12.7总结..344


第13章深度学习与自然语言处理345


13.1传统方法的局限345


13.2深度学习与优势348


13.3word2vec..353


13.4基于神经网络的高性能依存句法分析器.360


13.5自然语言处理进阶..363


自然语言处理学习资料推荐.365





Modified on

    您可能也对以下帖子感兴趣

    文章有问题?点此查看未经处理的缓存