文章目录

  • 1. 新手上路
    • 1.1 自然语言与编程语言的比较
    • 1.2 自然语言处理的层次
    • 1.3 自然语言处理的流派
    • 1.4 机器学习
    • 1.5 语料库
    • 1.6 开源工具
    • 1.7 总结
    • 1.8 GitHub项目

1. 新手上路

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

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

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

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

比较 不同 例子
词汇量 自然语言中的词汇比编程语言中的关键词丰富,我们还可以随时创造各种类型的新词 蓝瘦、香菇
结构化 自然语言是非结构化的,而编程语言是结构化的
歧义性 自然语言含有大量歧义,而编程语言是确定性的 这人真有意思:没意思
容错性 自然语言错误随处可见,而编程语言错误会导致编译不通过 的、地的用法错误
易变性 自然语言变化相对迅速嘈杂一些,而编程语言的变化要缓慢得多 新时代词汇
简略性 自然语言往往简洁、干练,而编程语言就要明确定义 “老地方”不必指出

1.2 自然语言处理的层次

  1. 语音、图像和文本

    自然语言处理系统的输入源一共有3个,即语音、图像与文本。语音和图像这两种形式一般经过识别后转化为文字,转化后就可以进行后续的NLP任务了。

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

    这3个任务都是围绕词语进行的分析,所以统称词法分析。词法分析的主要任务是将文本分隔为有意义的词语(中文分词),确定每个词语的类别和浅层的歧义消除(词性标注),并且识别出一些较长的专有名词(命名实体识别)。对中文而言,词法分析常常是后续高级任务的基础。

  3. 信息抽取

    词法分析之后,文本已经呈现出部分结构化的趋势,根据分析出来的每个单词和附有自己词性及其他标签的数据,抽取出一部分有用的信息,关键词、专业术语等,也可以根据统计学信息抽取出更大颗粒度的文本。

  4. 文本分类与文本聚类

    将文本拆分为一系列词语之后,就可以对文本进行分类和聚类操作,找出相类似的文本。

  5. 句法分析

    词法分析只能得到零散的词汇信息,计算机不知道词语之间的关系。在一些问答系统中,需要得到句子的主谓宾结构,这就是句法分析得到的结果,如下图所示:

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

  6. 语义分析与篇章分析

    相较于句法分析,语义分析侧重语义而非语法。它包括词义消歧(确定一个词在语境中的含义,而不是简单的词性)、语义角色标注(标注句子中的谓语与其他成分的关系)乃至语义依存分析(分析句子中词语之间的语义关系)。

  7. 其他高级任务

    自动问答、自动摘要、机器翻译

    注意,一般认为信息检索(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,中文树库),其中一个句子可视化后如下图所示:

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

  5. 文本分类语料库

    它指的是人工标注了所属分类的文章构成的语料库。

  6. 语料库的建设

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

1.6 开源工具

  1. 主流NLP工具比较

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

  2. 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.新手上路相关推荐

  1. RISC-V入门笔记(新手必看!)

    目录 什么是RISC-V RISC-V 发展 RISC-V指令集 RISC-V特权架构 RISC-V通用寄存器 RISC-V CSR寄存器 M模式CSR寄存器 S模式CSR寄存器 总结 笔者学习RIS ...

  2. 电脑没有ps怎么改照片dpi_PS入门笔记!新手必备

    注:大牛请绕行,新手理了解这些原理,是很有必要的,建议收藏.(如有错误之处,请下方留言告知哦.) 像素和分辨率 1. 像素是构成图像的最小单位,像素一定是正方形的,一个像素只能有一个颜色:分辨率一定要 ...

  3. 5天学习MYSQL数据库第一天剩余全部笔记(超级详细的mysql入门笔记适合新手反复看加深记忆)

    这是关于五天学习MYSQL数据库的笔记,如果想要观看视频可以访问(视频链接(b站) 或者访问视频链接 之前的笔记已经记到了1.3的mysql基本介绍,接下来主要是: 2.1MySQL服务端框架 一. ...

  4. PIC单片机入门笔记(新手学PIC必看)——基于PIC16F886

    学习PIC单片机的目的是打算做一款433M无线开关,之前学习过51与AVR单片机,对8位单片机有一些基础,不过PIC单片机还是第一次接触,先从入门开始吧!入门实验最经典的是点亮一只LED了,这次也它为 ...

  5. oracle笔记:新手上路必备。花了两天时间整理出来的,详细的不能再详细了。

    总结一下这几天学习oracle的笔记,花了两天时间,终于给搞好了,本篇博客适合初学者学习,大佬可以绕道... orcale详细笔记 Oracle中用户登录.创建用户 sql语句的分类 DQL 基础数据 ...

  6. 斯坦福大学-自然语言处理入门 笔记 第十九课 单词含义与相似性

    一.单词含义与单词关系 回顾:词目(lemma)与单词形式(wordform) 词目:表示相同的词根.词性以及大致的语义 单词形式:表示在文档中出现的具体单词形式 一个词目可能会含有很多含义(sens ...

  7. 斯坦福大学-自然语言处理入门 笔记 第十四课 CGSs和PCFGs

    一.概率上下文无关文法((Probabilistic) Context-Free Grammars) 1.上下文无关文法(Context-Free Grammars) 我们也可以称之为词组结构语法(P ...

  8. 斯坦福大学-自然语言处理入门 笔记 第十五课 词汇化(Lexicalization)的PCFGs

    一.介绍 一个短语的中心词(head word)可以很好地代表这个短语的结构和含义,在构建PCFG模型的时候,可以考虑将这部分信息纳入其中.如下图所示加入单词信息可以帮助我们更好地选择出合适的模型. ...

  9. HanLP《自然语言处理入门》笔记--5.感知机模型与序列标注

    笔记转载于GitHub项目:https://github.com/NLP-LOVE/Introduction-NLP 5. 感知机分类与序列标注 第4章我们利用隐马尔可夫模型实现了第一个基于序列标注的 ...

最新文章

  1. 元宇宙和我有什么关系?
  2. DIP第四章习题解答
  3. 深入浅出ES6(一):ES6是什么
  4. 关于字符串中函数的实现( C语言 )
  5. centos7安装、卸载docker (yum方式)
  6. 手机升级android5.0,Android 7.0就要来了?你家手机升级到5.0了吗?
  7. echarts如何显示在页面上
  8. Mybaitis JdbcType 和javaType
  9. Delphi编程修改ProgressBar的颜色
  10. spring security:基于MongoDB的认证
  11. 爸爸拉合弦飞鸽传书源代码
  12. OFFICE技术讲座:一级标点压缩共有几种情形
  13. 快速突破面试算法之栈与队列结构篇
  14. 记录下我磕磕碰碰的三个月找工作经历,BAT大厂面试总结
  15. 《人类简史》笔记——认知革命和农业革命背后的思考
  16. 解析2019年新零售社区团购发展方向
  17. 车型数据api 根据车系查询车型数据
  18. qca wifi相关操作命令
  19. Axure自定义Echarts交互图
  20. # [解构如何运用的解构--报错 throw new TypeError(‘Router.use() requires a middleware function but got a ‘ + gett

热门文章

  1. latex如何设置字体并加粗_Latex设置字体大小,加粗,加下划线,变斜体_孩纸气_新浪博客...
  2. 推荐1位AI产品经理求职信息(企业方可要简历),新增3个JD(共计59个、AI PM可内推)...
  3. hive No matching method for class hiveUDF.PhoneTM with (string, int, int)
  4. Factory method ‘sqlSessionFactory‘ threw exception; nested exception is java.lang.NoSuchMethodError:
  5. End event threw exception
  6. Java旅游管理系统的设计与实现毕业设计
  7. 两数互素有什么性质_两个数互素的性质
  8. 关于RSA共模攻击e1,e2不互素的解法
  9. excel录制宏运行规划求解不能运行的问题
  10. MySQL之——优化篇