⾃然语⾔处理⼊门何晗读书笔记第1章新⼿上路
第1章新⼿上路
⾃然语⾔处理是⼀门融合了计算机科学、⼈⼯智能以及语⾔学的交叉学科。这门学科研究的是如何通过机器学习等技术,让计算机学会处理⼈类语⾔,乃⾄实现终极⽬标----理解⼈类语⾔或⼈⼯智能。
⾃然语⾔处理这个术语没有被⼴泛的定义,注重语⾔学结构的学者喜欢使⽤计算语⾔学(CL),强调最终⽬的的学者更偏好⾃然语⾔理解(NLU)。
1.1 ⾃然语⾔与编程语⾔
1.1.1 词汇量
⾃然语⾔中的词汇⽐编程语⾔中的关键词丰富。编程语⾔中,能使⽤的关键词数量有限且确定,⽐如,C语⾔⼀共有32个关键词,Java语⾔则有50个。但在⾃然语⾔中,我们可以使⽤的词汇量是⽆穷⽆尽的。
1.1.2 结构化
⾃然语⾔是⾮结构化的,⽽编程语⾔是结构化的。结构化是指信息具有明确的结构关系,⽐如编程语⾔中的类与成员、数据库的表与字段,⽽⾃然语⾔中则不存在这样的显式结构。
⼈类觉得很简单的⼀句话,要让计算机理解起来并不简单。
1.1.3 歧义性
⾃然语⾔含有⼤量歧义,⽽在编程语⾔中,则不存在歧义性。
1.1.4 容错性
⾃然语⾔中允许有错误,哪怕⼀句话错得再离谱,⼈们还是可以猜出它想表达的意思。⽽编程语⾔必须保证拼写绝对正确、语法绝对规范。
1.1.5 易变性
⾃然语⾔不是由某个个⼈或组织发明或制定标准的。编程语⾔由某个个⼈或组织发明并且负责维护。
1.1.6 简略性
⼈类语⾔往往简洁、⼲练。这也给⾃然语⾔处理带来了障碍。
1.2 ⾃然语⾔处理的层次
1.2.1 语⾳、图像和⽂本
⾃然语⾔处理系统的输⼊源⼀共有3个,即语⾳、图像与⽂本。语⾳和图像受制于存储容量和传输速度,它们的信息总量还是没有⽂本多。
1.2.2 中⽂分词、词性标注和命名实体识别
这3个任务都是围绕词语进⾏的分析,所以统称词法分析。
1.2.3 信息抽取
1.2.4 ⽂本分类与⽂本聚类
⽂本分类:有时我们想知道⼀段话是褒义还是贬义的,判断⼀封邮件是否是垃圾邮件,想把许多⽂档分门别类地整理⼀下,此时的任务称作⽂本分类。
⽂本聚类:有时只想把相似的⽂本归档到⼀起,或者排除重复的⽂档,⽽不关⼼具体类别。此时的任务称作⽂本聚类。
1.2.5 句法分析
1.2.6 语义分析与篇章分析
语义分析侧重语义⽽⾮语法。它包括词义消歧、语义⾓⾊标注乃⾄语义依存分析。本书不会涉及
1.2.7 其他⾼级任务
⾃动问答:微软的Cortana和苹果的Siri
⾃动摘要:为⼀篇长⽂档⽣成简短的摘要
机器翻译:将⼀句话从⼀种语⾔翻译到另⼀种语⾔。
1.3 ⾃然语⾔处理的流派
1.3.1 基于规则的专家系统
规则,指的是由专家⼿⼯制定的确定性流程。专家系统要求设计者对所处理的问题具备深⼊的理解,并且尽量以⼈⼒全⾯考虑所有可能的情况。最⼤的弱点是难以拓展。
1.3.2 基于统计的学习⽅法
为了降低对专家的依赖,⼈们使⽤统计⽅法让计算机⾃动学习语⾔。所谓“统计”,指的是在语料库上进⾏的统计。语料库则是⼈⼯标注的结构化⽂本。
1.3.3 历史
1950基础研究----1980规则系统----1990统计⽅法------2010深度学习
1.3.4 规则与统计
随着机器学习的⽇渐成熟,领域专家的作⽤越来越⼩了。
本书尊重⼯程实践,以统计为主、规则为辅的⽅式介绍实⽤型NLP系统的搭建。
1.3.5 传统⽅法与深度学习
深度学习在⾃然语⾔处理领域中的基础任务上发⼒并不⼤。
1.4 机器学习
1.4.1 什么是机器学习
⼈⼯智能领域的先驱Arthur Samuel在1959年给出的机器学习定义是:不直接编程却能赋予计算机提⾼能⼒的⽅法。
机器学习是让机器学会算法的算法。机器学习算法则可以称作“元算法”,它指导机器⾃动学习出另⼀个算法,这个算法被⽤来解决实际问题。
1.4.2 模型
模型是对现实问题的数学抽象,由⼀个假设函数以及⼀系列参数构成。
假设需要预测中国⼈名对应的性别,假设中国⼈名由函数f(x)输出的符号决定,负数表⽰⼥性,⾮负数表⽰男性。
f(x) = w* x + b
w和b是函数的参数,⽽x是函数的⾃变量。
1.4.3 特征
特征指的是事物的特点转化的数值,⽐如⽜的特征是4条腿、0双翅膀,⽽鸟的特征是2条腿、1双翅膀。
特征⼯程:如何挑选特征,如何设计特征模版。
1.4.4 数据集
如何让机器⾃动学习,以得到模型的参数呢?⾸先得有⼀本习题集。这本习题集在机器学习领域称作数据集,在⾃然语⾔处理领域称作语料库。
1.4.5 监督学习
如果习题集附带标准答案y,则此时的学习算法称作监督学习。这种在有标签的数据集上迭代学习的过程称为训练,训练⽤到的数据集称作训练集。
1.4.6 ⽆监督学习
如果只给机器做题,不告诉它参考答案,此时的学习称作⽆监督学习。⽆监督学习⼀般⽤于聚类和降维,两者都不需要标注数据。
1.4.7 其他类型的机器学习算法
半监督学习:训练多个模型,然后对同⼀个实例进⾏预测,会得到多个结果。如果这些结果多数⼀致,
则可以将该实例和结果放到⼀起作为新的训练样本,⽤来扩充数据集。强化学习:⼀边预测,⼀边根据环境的反馈规划下次决策。
1.5 语料库
1.5.1 中⽂分词语料库
语料规范很难制定,规范很难执⾏。
1.5.2 词性标注语料库
1.5.3 命名实体识别语料库
1.5.4 句法分析语料库
1.5.5 ⽂本分类语料库
1.5.6 语料库建设
1.6 开源⼯具
1.6.1 主流NLP⼯具⽐较
HanLP开发者写的书,你懂得,HanLP是发展最迅猛的!
1.6.2 Python接⼝
HanLP的安装:
pip install pyhanlp
1.7 总结
本章给出了⼈⼯智能、机器学习与⾃然语⾔处理的宏观缩略图与发展时间线。在接下来的章节中,将由易到难去解决第⼀个NLP问题----中⽂分词。
写⼀下运⾏书上代码踩到的坑,试了好久终于跑通了。。。。
系统:win10,软件:Eclipse,java版本jdk1.8
/*
* <author>Han He</author>
编程语言下载* <email>me@hankcs</email>
* <create-date>2018-05-18 下午5:38</create-date>
*
* <copyright file="HelloWord.java">
* Copyright (c) 2018, Han He. All Rights Reserved, www.hankcs/
* This source is subject to Han He. Please contact Han He for more information.
* </copyright>
*/
package com.hankcs.book.ch01;
import com.hankcs.hanlp.HanLP;
/**
* 《⾃然语⾔处理⼊门》1.6 开源⼯具
* 配套书籍:nlp.hankcs/book.php
* 讨论答疑:bbs.hankcs/
*
* @author hankcs
* @see <a href="nlp.hankcs/book.php">《⾃然语⾔处理⼊门》</a>
* @see <a href="bbs.hankcs/">讨论答疑</a>
*/
public class HelloWord
{
public static void main(String[] args)
{
ableDebug(); // ⾸次运⾏会⾃动建⽴模型缓存,为了避免你等得⽆聊,开启调试模式说点什么:-)
System.out.println(HanLP.segment("王国维和服务员"));
}
}
在图灵社区下载的源码
下载后解压,在Eclipse 中创建项⽬,项⽬名称为nlp,到项⽬⽬录,将解压出的 com ⽂件夹复制进src ⽬录中,解压路径为《⾃然语⾔处理⼊门》随书代码\hanlp-java\HanLP\src\main\java\com
将解压出的data ⽂件夹复制到与src 的同级⽬录,解压路径为
《⾃然语⾔处理⼊门》随书代码\hanlp-java\HanLP\data
bin ⽂件夹中放⼊hanlp.properties 配置⽂件,下载地址:,配置hanlp.properties 第⼀⾏为data ⽂件夹路径,不要写data
刷新项⽬,若出现中⽂乱码问题则右键项⽬,properties--resource--Text file encoding改为UTF-8,运⾏成功
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论