专栏首页机器学习技术分享HanLP《自然语言处理入门》笔记--1.新手上路

HanLP《自然语言处理入门》笔记--1.新手上路

文章目录

1. 新手上路

自然语言处理(Natural Language Processing,NLP)是一门融合了计算机科学、人工智能及语言学的交叉学科,它们的关系如下图所示。这门学科研究的是如何通过机器学习等技术,让计算机学会处理人类语言,乃至实现终极目标–理解人类语言或人工智能。

美国计算机科学家Bill Manaris在《计算机进展》( Advances in Computers)第47卷的《从人机交互的角度看自然语言处理》一文中曾经给自然语言处理提出了如下的定义:

“自然语言处理可以定义为研究在人与人交际中以及在人与计算机交际中的语言问题的一门学科。自然语言处理要研制表示语言能力和语言应用的模型,建立计算框架来实现这样的语言模型,提出相应的方法来不断地完善这样的语言模型,根据这样的语言模型设计各种实用系统,并探讨这些实用系统的评测技术。”

1.1 自然语言与编程语言的比较

比较

不同

例子

词汇量

自然语言中的词汇比编程语言中的关键词丰富,我们还可以随时创造各种类型的新词

蓝瘦、香菇

结构化

自然语言是非结构化的,而编程语言是结构化的

歧义性

自然语言含有大量歧义,而编程语言是确定性的

这人真有意思:没意思

容错性

自然语言错误随处可见,而编程语言错误会导致编译不通过

的、地的用法错误

易变性

自然语言变化相对迅速嘈杂一些,而编程语言的变化要缓慢得多

新时代词汇

简略性

自然语言往往简洁、干练,而编程语言就要明确定义

“老地方”不必指出

1.2 自然语言处理的层次

  1. 语音、图像和文本 自然语言处理系统的输入源一共有3个,即语音、图像与文本。语音和图像这两种形式一般经过识别后转化为文字,转化后就可以进行后续的NLP任务了。
  2. 中文分词、词性标注和命名实体识别 这3个任务都是围绕词语进行的分析,所以统称词法分析。词法分析的主要任务是将文本分隔为有意义的词语(中文分词),确定每个词语的类别和浅层的歧义消除(词性标注),并且识别出一些较长的专有名词(命名实体识别)。对中文而言,词法分析常常是后续高级任务的基础。
  3. 信息抽取 词法分析之后,文本已经呈现出部分结构化的趋势,根据分析出来的每个单词和附有自己词性及其他标签的数据,抽取出一部分有用的信息,关键词、专业术语等,也可以根据统计学信息抽取出更大颗粒度的文本。
  4. 文本分类与文本聚类 将文本拆分为一系列词语之后,就可以对文本进行分类和聚类操作,找出相类似的文本。
  5. 句法分析 词法分析只能得到零散的词汇信息,计算机不知道词语之间的关系。在一些问答系统中,需要得到句子的主谓宾结构,这就是句法分析得到的结果,如下图所示:

不仅是问答系统或搜索引擎,句法分析还经常应用有基于短语的机器翻译,给译文的词语重新排序。

  1. 语义分析与篇章分析 相较于句法分析,语义分析侧重语义而非语法。它包括词义消歧(确定一个词在语境中的含义,而不是简单的词性)、语义角色标注(标注句子中的谓语与其他成分的关系)乃至语义依存分析(分析句子中词语之间的语义关系)。
  2. 其他高级任务 自动问答、自动摘要、机器翻译 注意,一般认为信息检索(Information Retrieve,IR)是区别于自然语言处理的独立学科,IR的目标是查询信息,而NLP的目标是理解语言。

1.3 自然语言处理的流派

  1. 基于规则的专家系统 规则,指的是由专家手工制定的确定性流程。专家系统要求设计者对所处理的问题具备深入的理解,并且尽量以人力全面考虑所有可能的情况。它最大的弱点是难以拓展。当规则数量增加或者多个专家维护同一个系统时,就容易出现冲突。
  2. 基于统计的学习方法 人们使用统计方法让计算机自动学习语言。所谓“统计”,指的是在语料库上进行的统计。所谓“语料库”,指的是人工标注的结构化文本。 统计学习方法其实是机器学习的别称,而机器学习则是当代实现人工智能的主要途径。
  3. 历史

1.4 机器学习

  1. 什么是机器学习 美国工程院院士 Tom Mitchell 给过一个更明确的定义,机器学习指的是计算机通过某项任务的经验数据提高了在该项任务上的能力。
  2. 模型 模型是对现实问题的数学抽象,由一个假设函数以及一系列参数构成。以下就是最简单的模型公式: f(x)=w∗x+bf(x)=w*x+bf(x)=w∗x+b 其中,w 和 b 是函数的参数,而 x 是函数的自变量。不过模型并不包括具体的自变量x,因为自变量是由用户输入的。自变量 x 是一个特征向量,用来表示一个对象的特征。
  3. 特征
    • 特征指的是事物的特点转化的数值。
    • 如何挑选特征,如何设计特征模板,这称作特征工程。特征越多,参数就越多;参数越多,模型就越复杂。
  4. 数据集 样本的集合在机器学习领域称作数据集,在自然语言处理领域称作语料库
  5. 监督学习 如果数据集附带标准答案 y,则此时的学习算法称作监督学习。学习一遍误差还不够小,需要反复学习、反复调整。此时的算法是一种迭代式的算法,每一遍学习称作一次迭代。这种在有标签的数据集上迭代学习的过程称作训练
  6. 无监督学习 如果我们只给机器做题,却不告诉它参考答案,机器仍然可以学到知识吗?可以,此时的学习称作无监督学习,而不含标准答案的数据集被称作无标注的数据集。无监督学习一般用于聚类和降维,降维指的是将样本点从高维空间变换成低维空间的过程。
  7. 其他类型的机器学习算法
    • 半监督学习:如果我们训练多个模型,然后对同一个实例执行预测,会得到多个结果。如果这些结果多数一致,则可以将该实例和结果放到一起作为新的训练样本,用力啊扩充训练集。这样的算法被称为半监督学习。
    • 强化学习:现实世界中的事物之间往往有很长的因果链:我们要正确地执行一系列彼此关联的决策,才能得到最终的成果。这类问题往往需要一边预测,一边根据环境的反馈规划下次决策。这类算法被称为强化学习。

1.5 语料库

  1. 中文分词语料库 中文分词语料库指的是,由人工正确切分的句子集合。以著名的1998年《人民日报》语料库为例: 先 有 通货膨胀 干扰,后 有 通货 紧缩 叫板。
  2. 词性标注语料库 它指的是切分并为每个词语制定一个词性的语料。依然以《人民日报》语料库为例: 迈向/v 充满/v 希望/n 的/u 新/a 世纪/n --/w 一九九八年/t 新年/t 讲话/n 这里每个单词后面用斜杠隔开的就是词性标签。
  3. 命名实体识别语料库 这种语料库人工标注了文本内部制作者关心的实体名词以及实体类别。比如《人民日报》语料库中-共含有人名、地名和机构名3种命名实体: 萨哈夫/nr 说/v ,/w 伊拉克/ns 将/d 同/p [联合国/nt 销毁/v 伊拉克/ns 大规模/b 杀伤性/n 武器/n 特别/a 委员会/n] /nt 继续/v 保持/v 合作/v 。/w 这个句子中的加粗词语分别是人名、地名和机构名。中括号括起来的是复合词,我们可以观察到:有时候机构名和地名复合起来会构成更长的机构名,这种构词法上的嵌套现象增加了命名实体识别的难度。
  4. 句法分析语料库 汉语中常用的句法分析语料库有CTB(Chinese Treebank,中文树库),其中一个句子可视化后如下图所示:

中文单词上面的英文标签标示词性,而箭头表示有语法联系的两个单词,具体是何种联系由箭头上的标签标示。

  1. 文本分类语料库 它指的是人工标注了所属分类的文章构成的语料库。
  2. 语料库的建设 语料库建设指的是构建一份语料库的过程,分为规范制定、人员培训与人工标注这三个阶段。针对不同类型的任务,人们开发出许多标注软件,其中比较成熟的一款是brat,它支持词性标注、命名实体识别和句法分析等任务。

1.6 开源工具

  1. 主流NLP工具比较

另外,也研究过其他开源项目的原理,借鉴了其中优秀的设计。但毕竟还是自己写的代码讲得最清楚,所以综合以上各种考虑,最后选取了HanLP作为本书的实现

  1. 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 章:深度学习与自然语言处理

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 8.HanLP实现--命名实体识别

    笔记转载于GitHub项目:https://github.com/NLP-LOVE/Introduction-NLP

    mantch
  • Transformer各层网络结构详解!面试必备!(附代码实现)

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 ...

    mantch
  • 贝叶斯网络,看完这篇我终于理解了(附代码)!

    概率图模型是用图来表示变量概率依赖关系的理论,结合概率论与图论的知识,利用图来表示与模型有关的变量的联合概率分布。由图灵奖获得者Pearl开发出来。

    mantch
  • Android调试的Log.d()没有输出

    在之前我是很喜欢使用真机进行调试的,因为那时候觉得用真机调试比较方便,直到我发现我的手机打印不出Log.d()的调试日志,我才开始经常使用模拟器。当然还有两小点...

    夜雨飘零
  • 业界 | 迎接工业4.0时代到来,9大技术转变工业生产

    随着工业4.0的到来,新数字工业技术的兴起将带来制造业的巨大转变。通过机器来收集和分析数据,以更低的成本通过更快速、更灵活、更高效的流程,生产出更高质量的商品,...

    大数据文摘
  • 第213天:12个HTML和CSS必须知道的重点难点问题

    这12个问题,基本上就是HTML和CSS基础中的重点个难点了,也是必须要弄清楚的基本问题,其中定位的绝对定位和相对定位到底相对什么定位?这个还是容易被忽视的,浮...

    半指温柔乐
  • 秒懂:什么是工业4.0?我们为什么选择德国标准?

    点击标题下蓝色字 机器人网 —关注我们 ? “工业4.0” 研究项目由德国联邦教研部与联邦经济技术部联手资助,在德国工程院、弗劳恩霍夫协会、西门子公司等德国学术...

    机器人网
  • PHP实现插入排序

    关于排序的算法,就此告一段落。冒泡排序、快速排序、选择排序、加上本篇的插入排序,这四种算法都是相对简单,容易理解的。更复杂的算法,就不献丑了,以免误人子弟。

    猿哥
  • IE6浏览器常见的bug及其修复方法

    王金龙
  • 使用RMAN实现异机备份恢复(WIN平台)

    --================================= -- 使用RMAN实现异机备份恢复(WIN平台) --================...

    Leshami

扫码关注云+社区

领取腾讯云代金券