HanLP《自然语言处理入门》笔记--1.新手上路
1. 新手上路
自然语言处理(Natural Language Processing,NLP)是一门融合了计算机科学、人工智能及语言学的交叉学科,它们的关系如下图所示。这门学科研究的是如何通过机器学习等技术,让计算机学会处理人类语言,乃至实现终极目标--理解人类语言或人工智能。
美国计算机科学家Bill Manaris在《计算机进展》( Advances in Computers)第47卷的《从人机交互的角度看自然语言处理》一文中曾经给自然语言处理提出了如下的定义:
“自然语言处理可以定义为研究在人与人交际中以及在人与计算机交际中的语言问题的一门学科。自然语言处理要研制表示语言能力和语言应用的模型,建立计算框架来实现这样的语言模型,提出相应的方法来不断地完善这样的语言模型,根据这样的语言模型设计各种实用系统,并探讨这些实用系统的评测技术。”
1.1 自然语言与编程语言的比较
比较 | 不同 | 例子 |
---|---|---|
词汇量 | 自然语言中的词汇比编程语言中的关键词丰富,我们还可以随时创造各种类型的新词 | 蓝瘦、香菇 |
结构化 | 自然语言是非结构化的,而编程语言是结构化的 | |
歧义性 | 自然语言含有大量歧义,而编程语言是确定性的 | 这人真有意思:没意思 |
容错性 | 自然语言错误随处可见,而编程语言错误会导致编译不通过 | 的、地的用法错误 |
易变性 | 自然语言变化相对迅速嘈杂一些,而编程语言的变化要缓慢得多 | 新时代词汇 |
简略性 | 自然语言往往简洁、干练,而编程语言就要明确定义 | “老地方”不必指出 |
1.2 自然语言处理的层次
语音、图像和文本
自然语言处理系统的输入源一共有3个,即语音、图像与文本。语音和图像这两种形式一般经过识别后转化为文字,转化后就可以进行后续的NLP任务了。
中文分词、词性标注和命名实体识别
这3个任务都是围绕词语进行的分析,所以统称词法分析。词法分析的主要任务是将文本分隔为有意义的词语(中文分词),确定每个词语的类别和浅层的歧义消除(词性标注),并且识别出一些较长的专有名词(命名实体识别)。对中文而言,词法分析常常是后续高级任务的基础。
信息抽取
词法分析之后,文本已经呈现出部分结构化的趋势,根据分析出来的每个单词和附有自己词性及其他标签的数据,抽取出一部分有用的信息,关键词、专业术语等,也可以根据统计学信息抽取出更大颗粒度的文本。
文本分类与文本聚类
将文本拆分为一系列词语之后,就可以对文本进行分类和聚类操作,找出相类似的文本。
句法分析
词法分析只能得到零散的词汇信息,计算机不知道词语之间的关系。在一些问答系统中,需要得到句子的主谓宾结构,这就是句法分析得到的结果,如下图所示:
不仅是问答系统或搜索引擎,句法分析还经常应用有基于短语的机器翻译,给译文的词语重新排序。
语义分析与篇章分析
相较于句法分析,语义分析侧重语义而非语法。它包括词义消歧(确定一个词在语境中的含义,而不是简单的词性)、语义角色标注(标注句子中的谓语与其他成分的关系)乃至语义依存分析(分析句子中词语之间的语义关系)。
其他高级任务
自动问答、自动摘要、机器翻译
注意,一般认为信息检索(Information Retrieve,IR)是区别于自然语言处理的独立学科,IR的目标是查询信息,而NLP的目标是理解语言。
1.3 自然语言处理的流派
基于规则的专家系统
规则,指的是由专家手工制定的确定性流程。专家系统要求设计者对所处理的问题具备深入的理解,并且尽量以人力全面考虑所有可能的情况。它最大的弱点是难以拓展。当规则数量增加或者多个专家维护同一个系统时,就容易出现冲突。
基于统计的学习方法
人们使用统计方法让计算机自动学习语言。所谓“统计”,指的是在语料库上进行的统计。所谓“语料库”,指的是人工标注的结构化文本。
统计学习方法其实是机器学习的别称,而机器学习则是当代实现人工智能的主要途径。
历史
1.4 机器学习
什么是机器学习
美国工程院院士 Tom Mitchell 给过一个更明确的定义,机器学习指的是计算机通过某项任务的经验数据提高了在该项任务上的能力。
模型
模型是对现实问题的数学抽象,由一个假设函数以及一系列参数构成。以下就是最简单的模型公式:
\[f(x)=w*x+b
\]其中,w 和 b 是函数的参数,而 x 是函数的自变量。不过模型并不包括具体的自变量x,因为自变量是由用户输入的。自变量 x 是一个特征向量,用来表示一个对象的特征。
特征
- 特征指的是事物的特点转化的数值。
- 如何挑选特征,如何设计特征模板,这称作特征工程。特征越多,参数就越多;参数越多,模型就越复杂。
数据集
样本的集合在机器学习领域称作数据集,在自然语言处理领域称作语料库。
监督学习
如果数据集附带标准答案 y,则此时的学习算法称作监督学习。学习一遍误差还不够小,需要反复学习、反复调整。此时的算法是一种迭代式的算法,每一遍学习称作一次迭代。这种在有标签的数据集上迭代学习的过程称作训练。
无监督学习
如果我们只给机器做题,却不告诉它参考答案,机器仍然可以学到知识吗?可以,此时的学习称作无监督学习,而不含标准答案的数据集被称作无标注的数据集。无监督学习一般用于聚类和降维,降维指的是将样本点从高维空间变换成低维空间的过程。
其他类型的机器学习算法
- 半监督学习:如果我们训练多个模型,然后对同一个实例执行预测,会得到多个结果。如果这些结果多数一致,则可以将该实例和结果放到一起作为新的训练样本,用力啊扩充训练集。这样的算法被称为半监督学习。
- 强化学习:现实世界中的事物之间往往有很长的因果链:我们要正确地执行一系列彼此关联的决策,才能得到最终的成果。这类问题往往需要一边预测,一边根据环境的反馈规划下次决策。这类算法被称为强化学习。
1.5 语料库
中文分词语料库
中文分词语料库指的是,由人工正确切分的句子集合。以著名的1998年《人民日报》语料库为例:
先 有 通货膨胀 干扰,后 有 通货 紧缩 叫板。
词性标注语料库
它指的是切分并为每个词语制定一个词性的语料。依然以《人民日报》语料库为例:
迈向/v 充满/v 希望/n 的/u 新/a 世纪/n --/w 一九九八年/t 新年/t 讲话/n
这里每个单词后面用斜杠隔开的就是词性标签。
命名实体识别语料库
这种语料库人工标注了文本内部制作者关心的实体名词以及实体类别。比如《人民日报》语料库中-共含有人名、地名和机构名3种命名实体:
萨哈夫/nr 说/v ,/w 伊拉克/ns 将/d 同/p [联合国/nt 销毁/v 伊拉克/ns 大规模/b 杀伤性/n 武器/n 特别/a 委员会/n] /nt 继续/v 保持/v 合作/v 。/w
这个句子中的加粗词语分别是人名、地名和机构名。中括号括起来的是复合词,我们可以观察到:有时候机构名和地名复合起来会构成更长的机构名,这种构词法上的嵌套现象增加了命名实体识别的难度。
句法分析语料库
汉语中常用的句法分析语料库有CTB(Chinese Treebank,中文树库),其中一个句子可视化后如下图所示:
中文单词上面的英文标签标示词性,而箭头表示有语法联系的两个单词,具体是何种联系由箭头上的标签标示。
文本分类语料库
它指的是人工标注了所属分类的文章构成的语料库。
语料库的建设
语料库建设指的是构建一份语料库的过程,分为规范制定、人员培训与人工标注这三个阶段。针对不同类型的任务,人们开发出许多标注软件,其中比较成熟的一款是brat,它支持词性标注、命名实体识别和句法分析等任务。
1.6 开源工具
主流NLP工具比较
另外,也研究过其他开源项目的原理,借鉴了其中优秀的设计。但毕竟还是自己写的代码讲得最清楚,所以综合以上各种考虑,最后选取了HanLP作为本书的实现。
Python接口
HanLP 的 Python 接口由 pyhanlp 包提供,其安装只需一句命令:
$ pip install pyhanlp
1.7 总结
本章给出了人工智能、机器学习与自然语言处理的宏观缩略图与发展时间线。机器学习是人工智能的子集,而自然语言处理则是人工智能与语言学、计算机科学的交集。这个交集虽然小,它的难度却很大。为了实现理解自然语言这个宏伟目标,人们尝试了规则系统,并最终发展到基于大规模语料库的统计学习系统。
在接下来的章节中,就让我们按照这种由易到难的发展规律去解决第一个NLP问题一中文分词。我们将先从规则系统人手,介绍一些快而不准的算法,然后逐步进化到更加准确的统计模型。
1.8 GitHub项目
HanLP何晗--《自然语言处理入门》笔记:
https://github.com/NLP-LOVE/Introduction-NLP
项目持续更新中......
目录
章节 |
---|
第 1 章:新手上路 |
第 2 章:词典分词 |
第 3 章:二元语法与中文分词 |
第 4 章:隐马尔可夫模型与序列标注 |
第 5 章:感知机分类与序列标注 |
第 6 章:条件随机场与序列标注 |
第 7 章:词性标注 |
第 8 章:命名实体识别 |
第 9 章:信息抽取 |
第 10 章:文本聚类 |
第 11 章:文本分类 |
第 12 章:依存句法分析 |
第 13 章:深度学习与自然语言处理 |
HanLP《自然语言处理入门》笔记--1.新手上路的更多相关文章
- vue入门笔记(新手入门必看)
一.什么是Vue? 1. vue为我们提供了构建用户界面的渐进式框架,让我们不再去操作dom元素,直接对数据进行操作,让程序员不再浪费时间和精力在操作dom元素上,解放了双手,程序员只需要关心业 ...
- HanLP《自然语言处理入门》笔记--2.词典分词
2. 词典分词 中文分词:指的是将一段文本拆分为一系列单词的过程,这些单词顺序拼接后等于原文本. 中文分词算法大致分为基于词典规则与基于机器学习这两大派. 2.1 什么是词 在基于词典的中文分词中,词 ...
- HanLP《自然语言处理入门》笔记--3.二元语法与中文分词
笔记转载于GitHub项目:https://github.com/NLP-LOVE/Introduction-NLP 3. 二元语法与中文分词 上一章中我们实现了块儿不准的词典分词,词典分词无法消歧. ...
- HanLP《自然语言处理入门》笔记--5.感知机模型与序列标注
笔记转载于GitHub项目:https://github.com/NLP-LOVE/Introduction-NLP 5. 感知机分类与序列标注 第4章我们利用隐马尔可夫模型实现了第一个基于序列标注的 ...
- HanLP《自然语言处理入门》笔记--6.条件随机场与序列标注
笔记转载于GitHub项目:https://github.com/NLP-LOVE/Introduction-NLP 6. 条件随机场与序列标注 本章介绍一种新的序列标注模型条件随机场.这种模型与感知 ...
- 9. HanLP《自然语言处理入门》笔记--9.关键词、关键句和短语提取
笔记转载于GitHub项目:https://github.com/NLP-LOVE/Introduction-NLP 9. 信息抽取 信息抽取是一个宽泛的概念,指的是从非结构化文本中提取结构化信息的一 ...
- awk 新手入门笔记
转自:http://www.habadog.com/2011/05/22/awk-freshman-handbook/ awk新手入门笔记 @作者 : habadog@邮箱 : habadog1203 ...
- Hanlp中文自然语言处理入门介绍
自然语言处理定义: 自然语言处理是一门计算机科学.人工智能以及语言学的交叉学科.虽然语言只是人工智能的一部分(人工智能还包括计算机视觉等),但它是非常独特的一部分.这个星球上有许多生物拥有超过人类的视 ...
- 每天成长一点---WEB前端学习入门笔记
WEB前端学习入门笔记 从今天开始,本人就要学习WEB前端了. 经过老师的建议,说到他每天都会记录下来新的知识点,每天都是在围绕着这些问题来度过,很有必要每天抽出半个小时来写一个知识总结,及时对一天工 ...
随机推荐
- web.config修改文件修改上传大小
老是要修改上传文件大小的限制,先记在这里. <httpRuntime maxRequestLength= "1048576 " //最大长度 executionTimeout ...
- 第三阶段:3.Web端产品设计:1.以用户为中心的产品设计2
从功能到体验.提供不同的附加值.
- Java8 Date API
一 .Clock 时钟 Clock类提供了访问当前日期和时间的方法,Clock是时区敏感的,可以用来取代 System.currentTimeMillis() 来获取当前的微秒数.某一个特定的时间点也 ...
- codefoce 782c
好久没有更新了,特地来水一水 简单的涂色问题,大佬说基本都是贪心 #include<cstdio> #include<iostream> #include<vector& ...
- centos curl命令post携带body json数据
1,接口链接 https://xxx.com/xqAppServer/api/APPBizRest/idfaDuplicateRemove/v1/?sysIdfa=661743D1-A76E-498A ...
- linux技巧---创建应用快捷方式
linux中启动或关闭应用有时候比较麻烦,你必须cd到该应用的可执行脚本的目录中再执行该脚本,不能在任意目录下开启或关闭应用..当然,设置了环境变量path可以解决在任意目录下开启应用的问题,但是每个 ...
- Linux常用命令大全(二)
Linux常用命令大全(二) cp命令 将源文件或目录复制到目标文件或目录中 注:如果是目录,需要使用-r选项 -d 复制时保留文件链接 -f 如果现存的目标文件不能打开,则删除并重试 -i 在覆盖目 ...
- MicroPython TPYBoard v702实现HTTP应用功能
[Micropython]TPYBoard v702 HTTP应用功能 转载请注明文章来源,更多教程可自助参考docs.tpyboard.com,QQ技术交流群:157816561,公众号:Micro ...
- 从头学pytorch(十四):lenet
卷积神经网络 在之前的文章里,对28 X 28的图像,我们是通过把它展开为长度为784的一维向量,然后送进全连接层,训练出一个分类模型.这样做主要有两个问题 图像在同一列邻近的像素在这个向量中可能相距 ...
- 小小知识点(四十九)——SCMA
SCMA的实现基于两步: 1.实现码本资源到物理频域资源映射的映射矩阵(matrix mapping): 2.实现二进制比特流到码本映射的复数域星座图(complex domain constella ...