精华内容
下载资源
问答
  • 典型自然语言处理的基本思路
    2019-08-06 10:01:14
        自然语言处理知识太庞大了,网上也都是一些零零散散的知识,比如单独讲某些模型,也没有来龙去脉,学习起来较为困难,于是我自己总结了一份知识体系结构,不足之处,欢迎指正。内容来源主要参考黄志洪老师的自然语言处理课程。主要参考书为宗成庆老师的《统计自然语言处理》,虽然很多内容写的不清楚,但好像中文NLP书籍就这一本全一些,如果想看好的英文资料,可以到我的GitHub上下载:  
    

    http://github.com/lovesoft5/ml
    下面直接开始正文:
    一、自然语言处理概述
    1)自然语言处理:利用计算机为工具,对书面实行或者口头形式进行各种各样的处理和加工的技术,是研究人与人交际中以及人与计算机交际中的演员问题的一门学科,是人工智能的主要内容。
    2)自然语言处理是研究语言能力和语言应用的模型,建立计算机(算法)框架来实现这样的语言模型,并完善、评测、最终用于设计各种实用系统。
    3)研究问题(主要):
    信息检索
    机器翻译
    文档分类
    问答系统
    信息过滤
    自动文摘
    信息抽取
    文本挖掘
    舆情分析
    机器写作
    语音识别
    研究模式:自然语言场景问题,数学算法,算法如何应用到解决这些问题,预料训练,相关实际应用
    自然语言的困难:
    场景的困难:语言的多样性、多变性、歧义性
    学习的困难:艰难的数学模型(hmm,crf,EM,深度学习等)
    语料的困难:什么的语料?语料的作用?如何获取语料?
    二、形式语言与自动机
    语言:按照一定规律构成的句子或者字符串的有限或者无限的集合。
    描述语言的三种途径:
    穷举法
    文法(产生式系统)描述
    自动机
    自然语言不是人为设计而是自然进化的,形式语言比如:运算符号、化学分子式、编程语言
    形式语言理论朱啊哟研究的是内部结构模式这类语言的纯粹的语法领域,从语言学而来,作为一种理解自然语言的句法规律,在计算机科学中,形式语言通常作为定义编程和语法结构的基础
    形式语言与自动机基础知识:
    集合论
    图论
    自动机的应用:
    1,单词自动查错纠正
    2,词性消歧(什么是词性?什么的词性标注?为什么需要标注?如何标注?)
    形式语言的缺陷:
    1、对于像汉语,英语这样的大型自然语言系统,难以构造精确的文法
    2、不符合人类学习语言的习惯
    3、有些句子语法正确,但在语义上却不可能,形式语言无法排出这些句子
    4、解决方向:基于大量语料,采用统计学手段建立模型
    三、语言模型
    1)语言模型(重要):通过语料计算某个句子出现的概率(概率表示),常用的有2-元模型,3-元模型
    2)语言模型应用:
    语音识别歧义消除例如,给定拼音串:ta shi yan yan jiu saun fa de
    可能的汉字串:踏实烟酒算法的 他是研究酸法的 他是研究算法的,显然,最后一句才符合。
    3)语言模型的启示:
    1、开启自然语言处理的统计方法
    2、统计方法的一般步骤:
    收集大量语料
    对语料进行统计分析,得出知识
    针对场景建立算法模型
    解释和应用结果
    4) 语言模型性能评价,包括评价目标,评价的难点,常用指标(交叉熵,困惑度)
    5)数据平滑:
    数据平滑的概念,为什么需要平滑
    平滑的方法,加一法,加法平滑法,古德-图灵法,J-M法,Katz平滑法等
    6)语言模型的缺陷:
    语料来自不同的领域,而语言模型对文本类型、主题等十分敏感
    n与相邻的n-1个词相关,假设不是很成立。
    四、概率图模型,生成模型与判别模型,贝叶斯网络,马尔科夫链与隐马尔科夫模型(HMM)
    1)概率图模型概述(什么的概率图模型,参考清华大学教材《概率图模型》)
    2)马尔科夫过程(定义,理解)
    3)隐马尔科夫过程(定义,理解)
    HMM的三个基本问题(定义,解法,应用)
    注:第一个问题,涉及最大似然估计法,第二个问题涉及EM算法,第三个问题涉及维特比算 法,内容很多,要重点理解,(参考书李航《统计学习方法》,网上博客,笔者github)
    五、马尔科夫网,最大熵模型,条件随机场(CRF)
    1)HMM的三个基本问题的参数估计与计算
    2)什么是熵
    3)EM算法(应用十分广泛,好好理解)
    4)HMM的应用
    5)层次化马尔科夫模型与马尔科夫网络
    提出原因,HMM存在两个问题
    6)最大熵马尔科夫模型
    优点:与HMM相比,允许使用特征刻画观察序列,训练高效
    缺点: 存在标记偏置问题
    7)条件随机场及其应用(概念,模型过程,与HMM关系)
    参数估计方法(GIS算法,改进IIS算法)
    CRF基本问题:特征选取(特征模板)、概率计算、参数训练、解码(维特比)
    应用场景:
    词性标注类问题(现在一般用RNN+CRF)
    中文分词(发展过程,经典算法,了解开源工具jieba分词)
    中文人名,地名识别
    8) CRF++
    六、命名实体 识别,词性标注,内容挖掘、语义分析与篇章分析(大量用到前面的算法)
    1)命名实体识别问题
    相关概率,定义
    相关任务类型
    方法(基于规程->基于大规模语料库)
    2)未登录词的解决方法(搜索引擎,基于语料)
    3)CRF解决命名实体识别(NER)流程总结:
    训练阶段:确定特征模板,不同场景(人名,地名等)所使用的特征模板不同,对现有语料进行分词,在分词结果基础上进行词性标注(可能手工),NER对应的标注问题是基于词的,然后训练CRF模型,得到对应权值参数值
    识别过程:将待识别文档分词,然后送入CRF模型进行识别计算(维特比算法),得到标注序列,然后根据标注划分出命名实体
    4)词性标注(理解含义,意义)及其一致性检查方法(位置属性向量,词性标注序列向量,聚类或者分类算法)
    七、句法分析
    1)句法分析理解以及意义
    1、句法结构分析
    完全句法分析
    浅层分析(这里有很多方法。。。)
    2、 依存关系分析
    2)句法分析方法
    1、基于规则的句法结构分析
    2、基于统计的语法结构分析
    八、文本分类,情感分析
    1)文本分类,文本排重
    文本分类:在预定义的分类体系下,根据文本的特征,将给定的文本与一个或者多个类别相关联
    典型应用:垃圾邮件判定,网页自动分类
    2)文本表示,特征选取与权重计算,词向量
    文本特征选择常用方法:
    1、基于本文频率的特征提取法
    2、信息增量法
    3、X2(卡方)统计量
    4、互信息法
    3)分类器设计
    SVM,贝叶斯,决策树等
    4)分类器性能评测
    1、召回率
    2、正确率
    3、F1值
    5)主题模型(LDA)与PLSA
    LDA模型十分强大,基于贝叶斯改进了PLSA,可以提取出本章的主题词和关键词,建模过程复杂,难以理解。
    6)情感分析
    借助计算机帮助用户快速获取,整理和分析相关评论信息,对带有感情色彩的主观文本进行分析,处理和归纳例如,评论自动分析,水军识别。
    某种意义上看,情感分析也是一种特殊的分类问题
    7)应用案例
    九、信息检索,搜索引擎及其原理
    1)信息检索起源于图书馆资料查询检索,引入计算机技术后,从单纯的文本查询扩展到包含图片,音视频等多媒体信息检索,检索对象由数据库扩展到互联网。
    1、点对点检索
    2、精确匹配模型与相关匹配模型
    3、检索系统关键技术:标引,相关度计算
    2)常见模型:布尔模型,向量空间模型,概率模型
    3)常用技术:倒排索引,隐语义分析(LDA等)
    4)评测指标
    十、自动文摘与信息抽取,机器翻译,问答系统
    1)统计机器翻译的的思路,过程,难点,以及解决
    2)问答系统
    基本组成:问题分析,信息检索,答案抽取
    类型:基于问题-答案, 基于自由文本
    典型的解决思路
    3)自动文摘的意义,常用方法
    4)信息抽取模型(LDA等)
    十一、深度学习在自然语言中的应用
    1)单词表示,比如词向量的训练(wordvoc)
    2)自动写文本
    写新闻等
    3)机器翻译
    4)基于CNN、RNN的文本分类
    5)深度学习与CRF结合用于词性标注

    更多相关内容
  • 自然语言处理入门——新手上路

    千次阅读 2021-11-10 10:26:41
    自然语言处理(NLP)是一门融合了计算机科学、人工智能以及语言学的交叉学科。 一、自然与语言与编程语言 1.词向量 自然语言中的词汇量比编程语言中的关键词丰富。再自然语言中,我们可以使用的词汇量是无穷...

    目录

    一、自然与语言与编程语言

    二、自然语言处理的层次

    三、 自然语言处理的流派

    五、语料库

    六、开源工具

    七 总结


    自然语言处理(NLP)是一门融合了计算机科学、人工智能以及语言学的交叉学科。

    一、自然与语言与编程语言

    1.词向量


    自然语言中的词汇量比编程语言中的关键词丰富。再自然语言中,我们可以使用的词汇量是无穷无尽的,几乎没有意义完全相同的词语。我们国家语言文字工作委员会发布的《现代汉语常用词表(草案)》一共收录56 008个词条。除此之外,我们还可以随时创造各种类型的新词,而不仅限于名词。

    2.结构化


    自然语言是非结构化的,而编程语言是结构化的。所谓的结构化,是指信息具有明确的结构关系,比如编程语言中的类于成员,数据库中的表于字段,都可以通过明确的机制来读写。人类语言是线性字符串,给定一句话“苹果的创始人是乔布斯,它的logo是苹果”,计算机需要分信息如下结论:

    • 这句汉语转换为单词序列后,应该是“苹果 的 创始人 是 乔布斯 , 它 的logo是 苹果”;
    • 第一个“苹果”指的是苹果公司,而第二个“苹果”指的是带缺口的苹果logo;
    • “乔布斯”是一个人名;
    • “它”指的是苹果公司
    • 苹果公司与乔布斯之间的关系是“的创始人”,与带缺口的苹果logo之间的关系是“的logo是”

    这些结论的得出分别涉及中文分词、命名实体识别、指代消除和关系抽取等自然语言处理任务。这些任务目前的准确率都达不到人类水平。可见,人类觉得很简单的一句话,要让计算机理解起来并不简单。

    3.歧义性


    自然语言含有大量歧义,这些歧义根据语境的不同而表现为特定的义项。比如汉语中的多义词,只有在特定的上下文中才能确定其含义,甚至存在故意利用无法定义的歧义营造幽默效果的用法。除了上文“苹果”有两种意思之外,“意思”这个词也有多种意义。

    但在编程语言中,则不存在歧义性。如果程序员无意中写了有歧义的代码,比如两个函数的签名一样,则会触发编译错误。

    4.容错性


    书刊中的语言即使经过编辑的多次校对,也任然无法避免错误。而互联网上的文本更加随性,错别字或病句、不规范的标点符号等随处可见。但是人们还是能猜出他的意思。而在编译语言中,程序员必须保证拼写绝对正确、语法绝对规范、否则要么得到编译器无情的警告、要么造成潜在的bug。

    5 易变性


    任何语言都是不断发展变化的,不同的是,编程语言的变化要缓慢温和得多,而自然语言则相对迅速嘈杂一些。

    6 简略性


    由于说话速度和听话的速度、书写速度和阅读速度的限制,人类语言往往简洁、干练。我们常常省略大量的背景知识或常识,比如我们对朋友说“老地方见”,而不必指出“老地方”在哪里。这些省略,是交流双方共有而计算机不一定拥有的,这也给自然语言处理带来了障碍。

    二、自然语言处理的层次

    按照处理对象的颗粒度,自然语言处理大致可以分为如图所示的几个层次。

    1 语音、图像、文本


    自然语言处理系统的输入源一共有3个,即语音、图像与文本。其中,语音和图像虽然正引起越来越大的关注,但受制于存储容量和传输速度,他们的信息总量还没有文本多。另外,这两种形式一般经过识别后转化为文本,再进行接下来的处理,分别称为语音识别(Speech Recognition)光学字符识别(Optical Character Recognition)。一旦转化为文本,就可以进行后续的NLP任务。所以,文本处理是重中之重。 

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


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

    3 信息抽取


    词法分析之后,文本已经呈现出部分结构化的趋势。至少,计算机看到的不再是一个超长的字符串,而是有意义的单词列表,并且每个单词还附有自己的词性以及其他标签。

    根据这些单词和标签,我们可以抽取去一部分有用的信息,从简单的高频词到高级算法提取出的关键词,从公司名称到专业术语,其中词语级别的信息已经可以抽取不少。我们还可以根据词语之间的统计学信息抽取关键短语乃至句子,更大颗粒度的文本对用户更加友好。

    值得一提的是,这些信息提取算法用到的统计量可以复用到其他任务中,会在相应章节中详细介绍。

    4 文本分类与文本聚类


    将文本拆分为一系列词语之后,我们还可以在文章级别做一系列分析。

    有时我们想知道一段话是褒义还是贬义的,判断一封邮件是否是垃圾邮件,想把许多文档分门别类地整理一下,此时的NLP任务作为文本分类

    另一些时候,我们只想把相似的文本归档到一起,或者排除重复的文档,而不关心具体类别,此时进行的任务作为文本聚类

    这两类任务看上去挺相似,其实上分属两种截然不同的算法流派。

    5 句法分析


    词法分析只能得到零散的词汇信息,计算机不知道词语之间的关系。在一些问答系统中需要得到句子的主谓宾结构。比如“查询刘医生主治的内科病人”这句话,用户真正想要查询的不是“刘医生”,也不是“内科”,而是“病人”。虽然这三个词语都是名词,甚至“刘医生”离表示意图的动词“查询”最近,但只有“病人”才是“查询”的宾语。通过句法分析,可以得到如图信息:

    我们发现有根长长的箭头将“查询”与“病人”联系起来,并且注明了他们之间的关系。后续章节会详细介绍上面这种树形结构,以及据法分析器的实现方法。

    不仅是问答系统和搜索引擎,句法分析还经常应用于基于短语的机器翻译,给译文的词语重新排列。两者词序不同,但是句法结构一致。

    6 语义分析与篇章分析


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

    随着任务的递进,它们的难度也逐步上升,属于较为高级的课题。即便是最前沿的研究,也尚未达到能够实用的精度程度。另外,相应的研究资源比较稀缺,大众难以获取,所以本书不会涉及。

    7 其他高级任务


    除了上述“工具类”的任务之外,还有许多综合性的任务,与终端应用级产品联系更密切。比如:

    • 自动问答,根据知识库或文本中的信息直接回答一个问题,比如微软Cortana和苹果的Siri;
    • 自动摘要,为一片长文档自动生成的摘要;
    • 机器翻译,将一句话从一种语言翻译到另一种语言。

    注意,一般认为信息检索(Information Retrieve,IR)是区别于自然语言处理的独立学科。虽然两者有着密切的联系,但IR的目标是查询信息,而NLP的目标是理解语言。此外,IR检索的未必是语言,还可以是以图搜图,听曲搜曲,商品搜索乃至任何信息的搜索。现实中还存在大量不需要理解语言即可完成检索任务的场景,比如SQL中的LIKE。

    三、 自然语言处理的流派

    上一节比较了自然语言与人工语言的异同,展示了自然语言处理的困难所在,介绍了一些常见的NLP任务。这一节简要介绍进行自然语言处理的几种不同手法。

    1 基于规则的专家系统


    规则,是指由专家手工指定的确定性流程。小到程序日常使用的正则表达式,大到飞机的自动驾驶仪,都是固定的规则系统。

    在自然语言处理的语境下,比较成功的案例有波特词干算法(Porter stemming algorithm),它有马丁—·波特在1980年提出,广泛用于英文词干提取。该算法由多条规则构成,每个规则都是一系列固定的if then条件分支。当词语满足条件则执行固定的工序,输出固定的结果。摘录其中一部分规则为例。

    他的最大的缺点是难以拓展。

    2 基于统计的学习方法


    为了降低对专家的依赖,自适应灵活的语言问题,人们使用统计方法让计算机自动学习语言。所谓“统计”,指的是在语料库上进行的统计。所谓语料库,指的是人工标注结构化文本。

    统计学习方法其实就是机器学习的别称,而机器学习则是当代实现人工智能的主流途径。机器学习在自然语言处理中的重要性非常大,可以说自然语言处理只是机器学习的一种应用。此处我们仅仅用“举例学习”来简单理解,后续章节将浓墨重彩地系统学习。

    3 历史


    4 规则与统计 


    纯粹的规则系统已经日渐式微,除了一些简单的任务外,专家系统已经落伍了。本书尊重工程实践,以统计为主,规则为辅的方式介绍实用性NLP系统的搭建。

    5 传统方法与深度学习


    虽然深度学习在机器视觉领域取得了耀眼的成绩,但在自然语言处理领域中的基础任务上发力并不大。这个结论或许有点意外,作为数据数据科学从业者,用数据说明问题最合适。下表收录了《华尔街日报》语料库上的词性标注任务的前沿标准。

    截止 2015年,除了Bi-LSTM-CRF以外,其他系统都是传统模型,最高准确率为97.36%,而

    Bi-LSTM-CRF深度学习模型为97.55%,仅仅提高了0.19%。2016年,传统系统NLP4通过使用额外数据与动态特征提取算法,准确率可以达到97.64%。

    类似的情形也在句法分析任务上重演,以斯坦福标准下宾州树库的准确率为例,如表:

    深度学习涉及大量的矩阵运算,需要特殊硬件(GPU、TPU等)的加速。目前,一台入门级塔式服务器的价格在3000元左右,一台虚拟服务器每月仅需50元左右,但又一块入门级显卡就需5000元 。从性价比来看,反而传统的机器学习方法更适合中小型企业。

    此外,从传统方法到深度学习的迁移不能一蹴而就。两者是基础和进阶的关系,许多基础知识和基本概念用传统方法讲解会更简单、易懂,它们也会在深度学习中反复用到(比如CRF与神经网络的结合)。无论是传统模型还是神经网络,它们都属于机器学习的范畴。掌握传统方法,不仅可以解决计算资源受限时的工程问题,还可以为将来挑战深度学习打下坚实的基础。

    4 机器学习


    前面的小节当中,我们邂逅了一些机器学习的术语。按照递归学习的思路,现在我们来递归了解一下机器学习的基本概念。

    机器学习是自然语言处理的基石,一些基本概念依然需要预先掌握。熟练掌握这些术语,还方便我们与其他人流畅交流。

    1 什么是机器学习


    人工智能领域的先驱Arthur Samuel在1059年给出机器学习定义是:不直接编程却能赋予计算机提高能力的方法。

    美国工程院士Tom Mitchel给过一个更明确的定义,机器学习指的是计算机通过某项任务的经验数据提高了在在该任务上的能力。

    简而言之,机器学习是让机器学会算法的算法。这个说法有些绕口,不如拿我们熟悉的数据库做类比:数据库中的“元数据”指的是描述数据的数据(表名、字段等)、而其中的一行则是普通数据。类比过来,机器学习算法则可以称作“元算法”,它指导机器学习自动学习出另一个算法,这个算法被用来解决实际问题。为了避免混淆,人们通常称被学习的算法为模型

    2 模型


    模型是对现实问题的数学抽象,由一个假设函数以及一系列参数构成。举个简单的例子,我们要预测中国人名对应的性别。假设中国人名由函数f(x)输出的符号确定,负表示女性,非负表示男性。

    我们选取的的定义如下:

    f(x) = w\cdot x + b

    其中,w和b是函数的参数,而x是函数的自变量。那么,模型指的就是包括参数在内的整个函数。不过模型并不过包括具体的自变量x,因为自变量是由用户输入的。自变量x是一个特征向量,用来表示一个对象的特征。

    3 特征


    特征指的是事物的特点转化的数值,比如牛的特征是4条腿、0双翅膀,而鸟的特征是2条腿、1双翅膀。那么在性别识别问题当中,中国人名的特征是什么呢?

    计算机不知道哪部分是性,哪部分是名。姓属于无用的特征,不应被提取。另外,有一些特殊的字(壮、健、强)是男女通用的,而另一些(丽、燕、雪)则是女性常用的,还有一些则是男女通用的。如果有人叫“沈雁冰”怎么办?“雁”听上去像男性,而“冰”听上去像女性,而这个名字是男性用的。看来,每个字与男女相关程度都是不一样的。这个可以通过“优先级”解决,不过这种机械的工作交给机器好了。在机器学习中,“优先级”可以看做权重或模型参数。我们只需要定义一系列特征,让算法根据数据自动决定他们的权重就行了。为了方便计算机处理,我们将他们表示为数值类型的特征,这个过程称为特征提取。以“沈雁冰”的特征提取为例,如下表:

     特征的数量是因问题而定的,2个特征显然不足以推断名字的性别,我们可以增加到4个。

    模型参数的权重向量也是四维的。人名的常用的字数非常多,类似地,我们可以将特征拓展到所有常用汉字。

    工程上,我们不需要逐个字地写特征,而是定义一套模板来提取特征。比如姓名为name的话,则定义特征模板为name[1] + name[2]之类,只要我们遍历一些姓名,则name[1] + name[2]可能组合而成的特征就基本覆盖了。这种自动提取特征模型称作特征模板

    如何挑选特征,如何设计特征模板,这就称作特征工程。特征越多,参数就越多;参数越多,模型就越复杂。模型的复杂程度应当与数据集匹配,按照递归学习的思路,数据集的概念将在下一节中介绍。

    4 数据集


    如何让机器自动学习,以得到模型参数呢?首先得有一本习题集。有许多问题无法直接编写算法(规则)解决(比如人名性别识别,我们说不清楚什么样的名字是男性),所以我们准备了大量例子(人名 x 及其对应的性别 y)作为习题集,希望机器自动从习题集中学习中国人名的规律。其中,“例子”一般称作样本。

    这本习题集在机器学习领域称作数据集,在自然语言处理领域称作语料库,会在 1.5 节详细介绍。数据集的种类非常多,根据任务的不同而不同。表 1-6 收录了一些常用的数据集。


     在使用数据集时,我们不光要考虑它的规模、标注质量,还必须考虑它的授权。大部分数据集都不可商用,许多冷门领域的数据集也比较匮乏,此时我们可以考虑自行标注。

    5 监督学习


    如果这本习题集附带标准答案 y ,则此时的学习算法称作监督学习。监督学习算法让机器先做一遍题,然后与标准答案作比较,最后根据误差纠正模型的错误。大多数情况下,学习一遍误差还不够小,需要反复学习、反复调整。此时的算法是一种迭代式的算法,每一遍学习都称作一次迭代。监督学习在日语中被称作“教師あり学習”,意思是“有老师的学习”。通过提供标准答案,人类指出了模型的错误,充当了老师的角色。

     

    这种在有标签的数据集上迭代学习的过程称为训练,训练用到的数据集称作训练集。训练的结果是一系列参数(特征权重)或模型。利用模型,我们可以为任意一个姓名计算一个值,如果非负则给出男性的结论,否则给出女性的结论。这个过程称为预测。

    总结一下,监督学习的流程如图 :

    在性别识别的例子中:

    •  非结构化数据是许多个类似“沈雁冰”“丁玲”的人名;
    • 经过人工标注后得到含有许多个类似“沈雁冰=男”“丁玲=女”样本的标注数据集;
    • 然后通过训练算法得到一个模型;
    • 最后利用这个模型,我们可以预测任何名字(如“陆雪琪”)的性别。

    待预测的名字不一定出现在数据集中,但只要样本数量充足且男女均衡、特征模板设计得当、算法实现正确,我们依然可以预期一个较高的准确率。

    另外,图 1-5 中的标注数据其实也是结构化数据。但由于它含有人工标注的成本,有时被称作“黄金数据”(gold data),与模型预测的、有一定误差的结果还是有很大区别的。

    本书将从第 3 章开始详细介绍一些 NLP 中实用的监督学习方法。

    6 无监督学习


    如果我们只给机器做题,却不告诉它参考答案,机器仍然可以学到知识吗?

    可以,此时的学习称作无监督学习,而不含标准答案的习题集被称作无标注(unlabeled)的数据集。无监督学习在日语中被称作“教師なし学習”,意为“没有老师的学习”。没有老师的指导,机器只能说发现样本之间的联系,而无法学习样本与答案之间的关联。

    无监督学习一般用于聚类和降维,两者都不需要标注数据。

    聚类已经在 1.2 节中介绍过了,我们不再赘述。在性别识别的例子中,如果我们选择将一系列人名聚成 2 个簇的话,“周树人”“周立人”很可能在一个簇里面,“陆雪琪”和“曹雪芹” 在另一个簇里面。这是由样本之间的相似性和簇的颗粒度决定的,但我们并不知道哪个簇代表男性哪个簇代表女性,它们也未必能通过肉眼区分。

    降维指的是将样本点从高维空间变换到低维空间的过程。机器学习中的高维数据比比皆是,比如在性别识别的例子中,以常用汉字为特征的话,特征数量轻易就突破了 2000。如果样本具有 n 个特征,则样本对应着 n +1 维空间中的一个点,多出来的维度是给假设函数的因变量用的。如果我们想要让这些样本点可视化,则必须将其降维到二维或三维空间。有一些降维算法的中心思想是,降维后尽量不损失信息,或者说让样本在低维空间中每个维度上的方差都尽量大。试想一下这样的极端案例:平地上竖直地插着一些等长的钢管,将这些钢管的顶端降维到二维平面上,就是拔掉钢管后留下来的孔洞。垂直维度上钢管长度都是一样的,没有有用信息,于是被舍弃掉了。

    有一些无监督方法也可以用来驱动中文分词、词性标注、句法分析等任务。由于互联网上存储了丰富的非结构化数据,所以无监督学习十分诱人。然而无监督学习时,模型与用户之间没有发生任何信息交换,这种缺乏监督信号的学习导致模型无法捕捉用户的标准,最终预测的结果往往与用户心目中的理想答案相去甚远。目前,无监督学习的 NLP 任务的准确率总比监督学习低十几个到几十个百分点,无法达到生产要求。

    本书将在第 10 章详细介绍聚类算法的原理和实现。

    7 其他机器学习类算法


    如果我们训练多个模型,然后对同一个实例执行预测,会得到多个结果。如果这些结果多数一致,则可以将该实例和结果放到一起作为新的训练样本,用来扩充训练集。这样的算法被称为半监督学习。由于半监督学习可以综合利用标注数据和丰富的未标注数据,所以正在成为热门的研究课题。

    现实世界中的事物之间往往有很长的因果链:我们要正确地执行一系列彼此关联的决策,才能得到最终的成果。这类问题往往需要一边预测,一边根据环境的反馈规划下次决策。这类算法被称为强化学习。强化学习在一些涉及人机交互的问题上成果斐然,比如自动驾驶、电子竞技和问答系统。

    本书作为入门读物,不会深入这些前沿课题。但了解这些分支的存在,有助于构建完整的知识体系。

    五、语料库

    语料库作为自然语言处理领域中的数据集,是我们教机器理解语言不可或缺的习题集。在这一节中,我们来了解一下中文处理中的常见语料库,以及语料库建设的话题。

    1 中文分词语料库


    中文分词语料库指的是,由人工正确切分后的句子集合。

    以著名的 1998 年《人民日报》语料库为例,该语料库由北京大学计算语言学研究所联合富士通研究开发中心有限公司,在人民日报社新闻信息中心的许可下,从 1999 年 4 月起到 2002年 4 月底,共同标注完成。语料规模达到 2600 万汉字,市售为 1998 年上半年的语料部分(约1300 万字=约 730 万词)。

    在 2005 年的第二届国际中文分词比赛中,曾经公开过约 1 个月份的语料。其中的一句样例为:

    先有通货膨胀干扰,后有通货紧缩叫板。

    从这句简单的标注语料中,无须语言学知识,我们也能发现一个问题:为何“通货膨胀”是一个词,而“通货 紧缩”却分为两个词呢?这涉及语料标注规范和标注员内部一致性的问题。我们将在后续章节中详细介绍这些话题,现在只需留个印象:语料规范很难制定,规范很难执行。

    事实上,中文分词语料库虽然总量不多,但派别却不少。我们将在第 3 章中了解这些语料的授权、下载与使用。

    2 词性标注语料库


    它指的是切分并为每个词语指定一个词性的语料。总之,我们要教机器干什么,我们就得给机器示范什么。依然以《人民日报》语料库为例,1998 年的《人民日报》一共含有 43 种词性,这个集合称作词性标注集。这份语料库中的一句样例为:

    迈向/v 充满/v 希望/n 的/u 新/a 世纪/n ——/w 一九九八年/t 新年/t 讲话/n (/w 附/v 图片/n 1/m 张/q )/w

    这里每个单词后面用斜杠隔开的就是词性标签,关于每种词性的意思将会在第 7 章详细介绍。这句话中值得注意的是,“希望”的词性是“名词”(n)。在另一些句子中,“希望”还可以作为动词。

    3 命名实体识别语料库


     这种语料库人工标注了文本内部制作者关心的实体名词以及实体类别。比如《人民日报》语料库中一共含有人名、地名和机构名 3 种命名实体:

    萨哈夫/nr 说/v ,/w 伊拉克/ns 将/d 同/p [联合国/nt 销毁/v 伊拉克/ns 大规模/b 杀伤性/n 武器/n 特别/a 委员会/n] /nt 继续/v 保持/v 合作/v 。/w

     

    这个句子中的加粗词语分别是人名、地名和机构名。中括号括起来的是复合词,我们可以观察到:有时候机构名和地名复合起来会构成更长的机构名,这种构词法上的嵌套现象增加了命名实体识别的难度。

    命名实体类型有什么取决于语料库制作者关心什么。在本书第 8 章中,我们将演示如何标注一份语料库用来实现对战斗机名称的识别。

    4 句法分析语料库


    汉语中常用的句法分析语料库有 CTB(Chinese Treebank,中文树库),这份语料库的建设工作始于 1998 年,历经宾夕法尼亚大学、科罗拉多大学和布兰迪斯大学的贡献,一直在发布多个改进版本。以 CTB 8.0 版为例,一共含有来自新闻、广播和互联网的 3007 篇文章,共计 71 369个句子、1 620 561 个单词和 2 589 848 个字符。每个句子都经过了分词、词性标注和句法标注。其中一个句子可视化后如图 1-6 所示。
     

     图 1-6 中,中文单词上面的英文标签表示词性,而箭头表示有语法联系的两个单词,具体是何种联系由箭头上的标签表示。关于句法分析语料库的可视化和利用,将会在第 12 章中介绍。

    5 文本分类语料库


    它指的是人工标注了所属分类的文章构成的语料库。相较于上面介绍的 4 种语料库,文本分类语料库的数据量明显要大很多。以著名的搜狗文本分类语料库为例,一共包含汽车、财经、 IT、健康、体育、旅游、教育、招聘、文化、军事 10 个类别,每个类别下含有 8000 篇新闻,每篇新闻大约数百字。

    另外,一些新闻网站上的栏目经过了编辑的手工整理,相互之间的区分度较高,也可作为文本分类语料库使用。情感分类语料库则是文本分类语料库的一个子集,无非是类别限定为 “正面”“负面”等而已。

    如果这些语料库中的类目、规模不满足实际需求,我们还可以按需自行标注。标注的过程实际上就是把许多文档整理后放到不同的文件夹中。

    6 语料库建设


    语料库建设指的是构建一份语料库的过程,分为规范制定、人员培训与人工标注这 3 个阶段。

    规范制定指的是由语言学专家分析并制定一套标注规范,这份规范包括标注集定义、样例和实施方法。在中文分词和词性标注领域,比较著名的规范有北京大学计算语言学研究所发布的《现代汉语语料库加工规范——词语切分与词性标注》和中国国家标准化管理委员会发布的《信息处理用现代汉语词类标记规范》。

    人员培训指的是对标注员的培训。由于人力资源的限制,制定规范与执行规范的未必是同一批人。大型语料库往往需要多人协同标注,这些标注员对规范的理解必须达到一致,否则会导致标注员内部冲突,影响语料库的质量。

    针对不同类型的任务,人们开发出许多标注软件,其中比较成熟的一款是 brat(brat rapid annotation tool) ①,它支持词性标注、命名实体识别和句法分析等任务。brat 是典型的 B/S 架构,服务端用 Python 编写,客户端运行于浏览器。相较于其他标注软件,brat 最大的亮点是多人协同标注功能。此外,拖曳式的操作体验也为 brat 增色不少。

    六、开源工具

    目前开源界贡献了许多优秀的 NLP 工具,它们为我们提供了多种选择,比如教学常用的NLTK(Natural Language Toolkit)、斯坦福大学开发的 CoreNLP,以及国内哈工大开发的 LTP (Language Technology Platform)、我开发的 HanLP(Han Language Processing) 

    1 主流NLP工具比较


    选择一个工具包,我们需要考虑的问题有:功能、精度、运行效率、内存效率、可拓展性、商业授权和社区活跃程度。表 比较了 4 款主流的开源 NLP 工具包。

    关于这些开源工具的发展速度,根据 GitHub 上 Star 数量的趋势,HanLP 是发展最迅猛的,如图  所示。 

     

    ① 关于 HanLP 与 LTP 的具体性能对比,请参考 @zongwu233 的第三方开源评测:https://github.com/zongwu233/ HanLPvsLTP。关于 HanLP 与包括结巴、IK、Stanford、Ansj、word 在内的其他 Java 开源分词器的性能对比,可参考阿里巴巴架构师杨尚川的第三方开源评测:https://github.com/ysc/cws_evaluation。我不保证第三方开源评测的准确与公正,更不采信任何闭源评测。本书将在相关章节中详细介绍如何规范地评估常见 NLP 任务的精度。
    

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

    2 python 接口


    得益于 Python 简洁的设计,使用这门动态语言调用 HanLP 会省下不少时间。无论用户是否常用 Python,都推荐一试。

    HanLP 的 Python 接口由 pyhanlp 包提供,其安装只需一句命令:

    $ pip install pyhanlp

    这个包依赖 Java 和 JPype。Windows 用户如果遇到如下错误:

    building '_jpype' extension
    error: Microsoft Visual C++ 14.0 is required. Get it with "Microsoft Visual
    C++ Build Tools": http://visualstudio.microsoft.com/visual-cpp-build-tools/

    既可以按提示安装 Visual C++,也可以安装更轻量级的 Miniconda。Miniconda 是 Python 语言的开源发行版,提供更方便的包管理。安装时请勾选如图 所示的两个复选框。 

    然后执行如下命令:

    $ conda install -c conda-forge jpype1
    $ pip install pyhanlp

     如果遇到 Java 相关的问题:

    jpype._jvmfinder.JVMNotFoundException: No JVM shared library file (jvm.dll) found. Try setting up the JAVA_HOME environment variable properly.

    七 总结

    本章给出了人工智能、机器学习与自然语言处理的宏观缩略图与发展时间线。机器学习是人工智能的子集,而自然语言处理则是人工智能与语言学、计算机科学的交集。这个交集虽然小,它的难度却很大。为了实现理解自然语言这个宏伟目标,人们尝试了规则系统,并最终发展到基于大规模语料库的统计学习系统。

    在接下来的章节中,就让我们按照这种由易到难的发展规律去解决第一个 NLP 问题——中文分词。我们将先从规则系统入手,介绍一些快而不准的算法,然后逐步进化到更加准确的统计模型。

    来源:《自然语言处理入门》

    展开全文
  • 自然语言处理技术发展简史

    千次阅读 2021-08-29 17:06:27
    当前,自然语言处理(Natural Language Processing,NLP)技术的发展可谓日新月异,尤其是近些年来层出不穷的预训练模型及其变体更是让人眼花缭乱。对于想要踏入这一领域并想深入了解的人——比如我——来说,可能会...

    当前,自然语言处理(Natural Language Processing,NLP)技术的发展可谓日新月异,尤其是近些年来层出不穷的预训练模型及其变体更是让人眼花缭乱。对于想要踏入这一领域并想深入了解的人——比如我——来说,可能会想要搞清楚这门技术是如何发展成现在这个样子的,这其中又经历了怎样的波折。
    前一段时间,我把NLP技术的发展史做了简略的梳理,并在内部做了分享,现将分享的内容以图文方式整理出来,希望可以帮助那些有困惑的同仁。
    本文所有的图片来自网络,主要参考文献为吴军的《数学之美》

    Page 1 语言:信息的载体

    谈论NLP,首先需要从「语言」入手。今天,世界上已查明的语言超过5000种,这些语言支撑着人们的日常交流与工作沟通。毫不夸张地说,正是语言的出现,才使得人类得以进化成比其他动物更高级的存在。
    在这里插入图片描述
    本质上来说,语言主要作用就是承载信息。这是一卷现收藏于大英博物馆的名为《亚尼的死者之书》的长卷。根据考古结论,它距今约3300年,比中国目前发现的最早的甲骨文还略微早些。这轴长卷是绘制在纸莎草上的,长约20米,共有60多幅绘画故事和象形文字说明,用于记载当时古埃及人认为的人死之后的事情。所谓「死者之书」,可以简单理解为死者去往另一个世界的通行证。

    Page 2 语言:信息的载体

    毫无疑问,古埃及的「死者之书」试图通过绘画和象形文字来记载人在死后的经历和行为,这与现代人使用语言的目的是毫无二致的。
    在这里插入图片描述
    其核心模型可以简化成如图所示的内容,即:信息的发送人把想要发送的信息通过一种编码方式(绘画、文字、声音等)进行编码,被编码后的信息通过信道传给接收人,接收人对其进行解码从而获取信息的内容。

    古埃及人用的编码方式是绘画和象形文字,得益于计算机技术的发展,今天我们已经可以使用数字来对文字进行编码,其传输效率自然高得多,但本质上与几千年前并没什么不同。

    Page 3 NLP技术发展总览

    搞清楚语言的本质和目的,我们先宏观看一下NLP技术的发展历史。
    在这里插入图片描述
    可以粗略的将NLP技术的发展分为四个阶段,我对应地使用了四个词来形容它们,分别是:缘起、探索、重生、飞跃。

    缘起: 人们一般认为,1950年,计算机科学之父阿兰图灵发表的《计算的及其与智能》文章,标志着NLP技术的开始。这篇文章最重要的价值之一,就是提出了一种后来被称为「图灵测试」的试验。通过图灵测试,人们可以判断一个机器是否具有了智能。

    探索: 从1950年开始一直到20世纪70年代,人们一直受直觉启发(现在来看,称之为「误导」或许更加准确),试图用电脑模拟人脑的方式来研究NLP技术,这种方法后来被称为“鸟飞派”,本意是指试图通过仿生学的研究来让人类飞上天空的那批人所采取的方法,后来延伸为受直觉影响,在惯性思维的误导下而采取的不正确的研发方法。

    重生: 1970年以后,以贾里尼克为首的IBM科学家们采用了统计的方法来解决语音识别的问题,最终使准确率有了质的提升。至此,人们才纷纷意识到原来的方法可能是行不通的,采用统计的方法才是一条准确的路。

    飞跃: 在确定了以统计学方法为解决NLP问题的“主武器”后,再加上计算能力的提升,有了深度学习技术加持的NLP也迎来的其飞速发展的阶段,在某些任务上的表现甚至已经超过人类。

    Page 4 图灵测试

    在这里插入图片描述
    所谓「图灵测试」,简而言之就是把一个人和一个机器关在两个房间了,另外一个人来对他(它)提问相同的问题。如果提问者通过得到的答案无法区分哪个是人哪个是机器的话,那么就可以认为机器通过了测试,具有了“智能”。

    为什么说图灵测试的提出是NLP发展的起点呢?因为要想避免非智能决定因素的影响,提问者不能通过声音来提问,而是通过类似写纸条的方式;而且,得到的答案也必须是采用类似于写在打印纸上等方式来传递给提问者。这样,机器要想正确回答问题,首先就需要去“理解”提问者的问题。

    Page 5 鸟飞派——惯性思维下的弯路探索

    在NLP出现后的前20年,人们一直在用惯性思维的方式去研究相关问题。举个例子,要翻译一篇文章,人会怎么做?公认的一个前提是,翻译者必须对两种语言都很熟悉才可以。于是,人们认为,机器要具备翻译的能力,也必须先理解两种语言才行。
    在这里插入图片描述
    这就是典型的「鸟飞派」方法,即受惯性思维的影响而做出的决定。

    从早期人们对NLP的理解的结构图中可以看出,这与人类在学习语言的路径几乎是一样的:先学很多单词,然后是句法结构,然后才能理解句子的含义,最后才能基于这些语言去完成相应的任务。

    Page 6 鸟飞派——惯性思维下的弯路探索

    事实上,这种方法的第一步就遇到了一个不可克服的障碍。
    在这里插入图片描述
    拿句法分析而言,机器想要记住自然语言的句法结构,需要语言学家首先将句子按照人类的理解进行句法拆分,然后处理成机器能够存储的格式。如果人类语言非常简单且数量不多,这种方法倒还可行,可惜,以上两个条件没有一个是满足的。

    以图中的例子来看,如此简单的一个陈述句,还必须拆分成八条规则才能让机器进行处理,而且,这些规则中的绝大部分都是需要人工编写的。由此可知,要解决实际问题,所需要花费的人工成本就太高了。此外,一词多义、一义多词等现象,也会导致规则出现矛盾。

    Page 7 从规则到统计

    在这里插入图片描述
    传统的人工构建规则模板之路看样子是行不通了,于是,一些聪明人开始找寻其他的方向,并发现了统计学这一处理自然语言的利器。

    提到统计自然语言处理,就不得不提一下贾里尼克。正是因为他和他的团队在上世纪70年代的工作,开拓了统计自然语言处理的先河。他不仅是世界著名的自然语言处理专家,而且还培养出了一大批世界一流的自然语言处理学者。值得一提的是,他真正地工作到了生命的最后一刻,最后是在实验室突发急病去世的。

    现在,人们发现,基于统计的自然语言处理的方法,从模型上看,和语言的初衷——通信,是完全一致的。关于这一点,我们在后面介绍统计模型的时候来阐述。

    Page 8 统计语言模型

    我们前面已经说过,自然语言的最显著的特性,就是其具有上下文相关性。传统的方法之所以效果不好,很大程度上是因为没有办法处理这种上下文相关性。而基于统计的自然语言处理,或者说,统计语言模型,就是利用统计学的方法,来建立自然语言模型。
    在这里插入图片描述
    我们在小学语文考试的时候,经常会遇到一类题:给你一组乱序的词语,让你组成一句通顺的话。假设给定如图中所示的一组词语,那么大家能组成什么样的话呢?我这里给出两种组合的方法,相信大家比较这两个句子就能发现, s 1 s_1 s1 s 2 s_2 s2更好。这里说的「好」,意思就是通顺,那么如何用数学的方法来表示 s 1 s_1 s1 s 2 s_2 s2更通顺呢?

    回到「通顺」这个描述本身。我们为什么会觉得 s 1 s_1 s1 s 2 s_2 s2通顺,其实就是因为 s 1 s_1 s1的表达方式更接近于我们的常识,也就是说,句子 s 1 s_1 s1体现的这种词语组合方式比包含 s 2 s_2 s2在内的其他的组合方式出现的概率更大。

    至此,我们已经得到统计语言模型中最精髓的一句话。基于此,贾里尼克假设,一个句子是否合理,取决于其出现在自然语言中的可能性的大小。越常见的句子越合理,这是不争的事实。

    Page 9 统计语言模型

    接下来,我们就会涉及一些简单的数学推导。只要是学过高等数学和概率统计的基本知识,理解起来都是没有任何问题的。
    在这里插入图片描述
    假设 S S S表示一个句子,本质上它就是由一定数量的词语按照特定顺序排列好的字符串而已。假定这个字符串用 w 1 , w 2 , . . . , w n w_1,w_2,...,w_n w1,w2,...,wn表示,那么,判断 S S S是否合理,就变成了判断字符串 w 1 , w 2 , . . . , w n w_1,w_2,...,w_n w1,w2,...,wn出现的概率。

    要想得到最真实的概率值,办法只有一个,那就是统计人类有文字以来的所有的句子,自然就可以得到 S S S的概率。但实际上,这个办法只是理论上可行,实际上没人做得到。

    于是,我们只能想办法来近似,即,牺牲一点精度,来换取一种切实可行的方法。只要精度损失不大,那么这种牺牲是可以接受的。这里用到的统计方法主要有条件概率公式和马尔科夫假设。通过这两步,我们就得到了以下近似:

    P ( w 1 , w 2 , . . . , w n ) ≈ P ( w 1 ) P ( w 2 ∣ w 1 ) . . . P ( w n ∣ w n − 1 ) ) P(w_1,w_2,...,w_n)\approx P(w_1)P(w_2|w_1)...P(w_n|w_{n-1})) P(w1,w2,...,wn)P(w1)P(w2w1)...P(wnwn1))

    这里得到的这个近似,被称为二元模型(bigram model),它假定每个词出现在特定位置的概率只和它的上一个词(按照目前大多数语言的书写习惯,就是指左侧那个词)有关。

    于是,你可以猜到,一元模型(每个词出现的概率只与它本身有关,即完全不考虑上下文信息)、三元模型(每个词出现的概率与它前两个词有关)以及更多元的模型分别是什么样子的。

    Page 10 统计语言模型

    在这里插入图片描述
    按照二元模型的近似,求一个句子的概率变成了求有限个条件概率的乘积。根据条件概率的定义可知,计算一个条件概率,只需要计算一个联合概率以及一个边缘概率即可。在这个例子里,联合概率为两个词组成的词对在语料库中出现的概率,而边缘概率就更简单了,是一个词在语料库中的概率。

    这里又可以利用大数定律来用频率近似代替概率,经过约分,最终,求一个条件概率简化成了一项数数的工作。

    至此,我们通过一系列统计理论和假设,先把一个自然语言问题抽象成了一个求概率的问题,又把概率问题简化成一个数数的操作,从而使复杂的问题变得可解。

    这就是数学的力量。

    Page 11 模型的训练、零概率问题以及平滑方法

    上面我们已经找到了一条解决问题的道路,但这条路上仍然许多会让我们行走得磕磕绊绊的障碍必须被剔除,其中,最具有代表性的就是「零概率问题」。

    在解决这个问题前,我们先看一下问题为什么会出现。
    在这里插入图片描述
    通过前面的分析可知,模型的训练其实就是计算所有条件概率的过程——计算到了任意两个词的条件概率,那么就可以得到任意一个字符串(句子)出现的概率。

    在我们采用了大数定律把求概率变成数数的时候,这里有一个潜在的问题:如果分子为0,即特定组合的词对在语料库中没有出现,这时候是否可以认为该条件概率为0,进而整个字符串(句子)出现的概率也为0?

    直觉上,得到这样的结论肯定是不妥的,而不妥的原因,就是「统计不可靠」。关于统计不可靠,一个耳熟能详的例子就是抛硬币试验,假设你抛了三次,硬币都是正面朝上,那么你得出这枚硬币是不均匀的结论显然是不能让人信服的。因为你试验的次数太少了。

    同理,特定组合的词对没有出现,不一定是因为这种组合不存在,而更可能是因为你的语料库太小了,导致没有涵盖所有的可能。

    明白了上述原因,解决方案也自然出现了:增大数据量,这里就是语料库的规模。然而,通过简单的计算你就会发现,增大数据量在这个场景下所起到的作用,似乎并不是很大。

    假设汉语的词汇共有20万个,如果我要构建一个三元模型,那么参数的总量就是 20000 0 3 200000^3 2000003(参数即所有可能的条件概率,由于每个位置上可能出现的词的数量都是20万,三元模型的参数量就是20万的三次方),这个数字的量级是 1 0 15 10^{15} 1015。再假设整个互联网上有100亿个网页,每个网页上平均有1000个词(这是一种很宽的假设,很多网站达不到这个标准),那么互联网上的词的总量也才 1 0 13 10^{13} 1013个,考虑到三元模型用到的都是双词词对和三词词对,可利用的词对总量也才 2 ∗ 1 0 13 2*10^{13} 21013,远小于参数量。

    Page 12 模型的训练、零概率问题以及平滑方法

    既然单纯的增大数据量的方式行不通,那么就要另谋出路。当一条路行不通时,就要思考一下问题出现的根本原因是什么。

    在这个场景下,问题出现的根本原始是:由于语料库的限制,导致未出现的词(词对)的概率被认为是零。
    在这里插入图片描述
    这里又有一个隐含的信息在里面:未出现的词,其概率一定是零吗?很显然不是这样。举一个极端一些的例子,假如你的语料库取自小学生语文课本,那么肯定不会出现高中生物中的一些词汇。

    由于我们总是受到语料库规模的限制,因此,不应该把未出现的词的概率简单地视为0,而是要给它们一个概率值。这个概率值怎么给呢?前人已经给出了一种解决方案,即“古德-图灵”估计。

    图灵就是前面提到的计算机科学之父,古德是他的学生。他们提出的这个方法的整体思路是:把看见的事件的概率总量分出一部分,给那些未看见的(即,未出现的)的事件。划分的原则就是,已看见的事件中概率越低的,调给未看见时间的概率越多。

    这和我们想的可能不一样,我们总是认为应该“杀富济贫”,但在这个问题中,那些概率更低的事件意味着更高的不可靠性,因此,需要从这种不可靠中分出一部分给那些看不见的事件。

    反正你本身就已经很不可靠了,总不介意更加不可靠一些。

    Page 13 模型的训练、零概率问题以及平滑方法

    上一页讲了古德图灵估计的思想,事实上他们还给出了具体的实施方式,即,如何调低那些已观测到的事件的概率。
    在这里插入图片描述

    Page 14 深度学习与自然语言处理

    前面粗略地对统计语言模型的发展进行了简单的梳理,虽然这确实是NLP发展的一次飞跃,但细心的人肯定马上就发现问题:利用n元模型来处理自然语言,也只是处理邻接词的依赖关系,无法处理自然语言的长程依赖。

    不过,得益于深度学习技术的发展,它在很大程度上密度了统计语言模型的上述短板。
    在这里插入图片描述
    总结来说,前面提到的统计语言模型技术面临以下问题:

    1、采用独热向量的方式来对句子进行编码,无法衡量各个词之间的语义相似度,且在面对大规模词表时还会出现数据稀疏的问题。

    Page 15 深度学习与自然语言处理

    在这里插入图片描述
    2、n元模型实际上也是一种提取句子特征的特征模板,因此它也具有所有依赖特征模板的机器学习方法的弊端:效果非常依赖人工设置的模板的好坏。

    3、很多下游的NLP任务,如实体抽取、关系抽取等,是依赖于上游的任务——分词、词性标注——成果的,因此,如果前面没做好,后面会受到很大的影响。

    为了解决上述问题,人们采用了深度学习技术。

    Page 16 深度学习与自然语言处理

    在这里插入图片描述
    词向量,或者叫词嵌入,就是一种用来进行词表示的技术,它克服了传统方法所面临的数据稀疏、语义特征丢失的问题。简而言之,这种方法把每个词表示成了一个特定长度(如50、300)的向量,这样做有两个显而易见的好处:1、向量的维度固定,不因词表的规模而变化;2、利用向量计算,可以近似代替词语间的语义相关性。

    对于第2点,一个非常典型的例子如图所示:king的词向量减掉man的词向量再加上woman的词向量,近似等于queen的词向量。

    Page 17 深度学习与自然语言处理

    词向量的发展过程,大概如图中所示。一开始词向量其实只是作为神经语言模型的副产品,而且受限于当时的硬件条件,效果并不是很好。

    后来,专门针对词向量训练的模型与方法被不断提出,且计算能力的不断提升,这些都是词向量技术不断发展的催动力。
    在这里插入图片描述

    Page 18 深度学习与自然语言处理

    在这里插入图片描述
    在对深度学习技术的利用上,相较于NLP,计算机视觉技术是走在前列的。由于卷积神经网络在计算机视觉领域取得了里程碑式的巨大成功,NLP领域的学者们首先想到的就是利用CNN来处理自然语言,也取得了一些不错的成果。但真正让深度学习技术在NLP领域大放光彩的,还要属下一页的模型。

    Page 19 深度学习与自然语言处理

    在这里插入图片描述
    我们前面说,统计语言模型无法捕获自然语言的长程依赖。事实上,卷积神经网络在这一点上做得也不够好。于是,人们提出了新的网络模型,循环神经网络——RNN。

    Page 20 深度学习与自然语言处理

    实际上,有许多RNN的变种神经网络被提出,来解决各种问题。比较出名的,有GRU和LSTM。
    在这里插入图片描述

    Page 21 深度学习与自然语言处理

    在这里插入图片描述
    目前,NLP中大量应用的模型多为seq2seq架构的,即,sequence to sequence。翻译为序列到序列。以中英翻译模型为例,输入为中文字符序列,输出为英文字符序列,因此,称之为序列到序列的模型。

    此类模型借鉴了编码器-解码器的思想,即对输入的序列进行编码,获取序列本身所包含的语义信息,然后利用解码器根据输入的语义信息进行解码,获取目标结果。

    Page 22 深度学习与自然语言处理

    在这里插入图片描述
    了解计算机视觉的人应该会理解,如果不加任何干涉,计算机在处理图片数据时,会逐像素点进行计算,事实上这在某些情况下是一种浪费。我们人类在观察图片时,一定先被某些元素吸引,从而给与它们更多的关注多。

    图中右侧的图片显示了人们在看到左侧的图片时,注意力所放的位置。颜色越浅,表明关注度越多。这种注意力机制对于人们去了解一个事务的概况,是有非常大的帮助的。受此启发,人们在NLP领域也研究出了各种各样的注意力机制。

    它们的核心都是,试图想让模型在完成一项NLP任务时,更多地关注那些对完成这项任务有所帮助的信息,而非视全部字符为同等重要的。

    Page 23 深度学习与自然语言处理

    在这里插入图片描述
    我们前面说,注意力机制是一种思想,而基于这种思想所实现的具体计算模型,可以有很多种,其中,比较有代表性的,self-attention可以算一种。基于self-attention的Transformer,更是大名鼎鼎:它是BERT的基础。

    RNN以及类RNN模型,由于引入了时间步的操作,因此,它们必须等待上一步的操作结果才能进行下一步的计算,这就导致了它们的并行化计算很难实现。而Transformer模型,试图仅用注意力机制来捕获输入和输出之间的关系,从而使得整个架构更加并行化。

    Page 24 深度学习与自然语言处理

    在这里插入图片描述
    接下来,我们要介绍预训练模型,这是目前NLP领域的效果最好的模型。

    一词多义问题,是自然语言中一个非常常见的现象,也是NLP领域的难点之一。我们前面提到的词向量,由于一个词只映射到了一个固定的词向量,因此,假如这个词是多义词,那么上述方法很明显丢失了其他的语义。为了解决这个问题,ELMo模型提出了一种思想:事先利用模型得到一个单词的词向量,这时,一词只有一义;在具体要利用这个词向量的时候,就要根据这个词所在的上下文的语义来调整该词的向量表示。经过调整后的词向量,能够更加适应其所在的语义环境。

    上述过程其实已经体现了预训练方法的核心思想:预先训练一个模型,然后根据具体的任务对模型进行微调。

    Page 25 深度学习与自然语言处理

    在这里插入图片描述
    熟悉预训练模型的人,一定不会对BERT感到陌生。实际上,GPT1比BERT还要早一些,但是提出GPT1的公司的宣传能力,显然相较于Google要逊色了许多,以致于人们“只知有BERT,无论GPT1”

    Page 26 深度学习与自然语言处理

    在这里插入图片描述
    最后,来看一张比较让人绝望的图:各模型的参数量对比。尽管不是严格的线性关系,但仍然可以看出,NLP模型的规模是随着其发展而不断增加的。GPT3的参数量甚至达到了恐怖的1750亿!训练一次的成本高达上百万美元!

    这对于个人研究者来说,无疑是绝望的:很少有人或者小公司能够负担的其这么庞大的研究成本。NLP也越来越成为巨头公司的专享游戏了。

    展开全文
  • 自然语言处理知识太庞大了,网上也都是一些零零散散的知识,比如单独讲某些模型,也没有来龙去脉,学习起来较为困难,于是我自己总结了一份知识体系结构,内容来源主要参考黄志洪老师的自然语言处理课程,主要参考书...

    自然语言处理(NLP)知识结构总结

    自然语言处理知识太庞大了,网上也都是一些零零散散的知识,比如单独讲某些模型,也没有来龙去脉,学习起来较为困难,于是我自己总结了一份知识体系结构,内容来源主要参考黄志洪老师的自然语言处理课程,主要参考书为宗成庆老师的《统计自然语言处理》,可能很多内容写的不清楚,但好像中文NLP书籍就这一本全一些,如果想看好的英文资料,可以到我的GitHub上下载:

    http://github.com/lovesoft5/ml

    下面直接开始正文:

    ▌一、自然语言处理概述

    1)自然语言处理:利用计算机为工具,对书面实行或者口头形式进行各种各样的处理和加工的技术,是研究人与人交际中以及人与计算机交际中的演员问题的一门学科,是人工智能的主要内容。

    2)自然语言处理是研究语言能力和语言应用的模型,建立计算机(算法)框架来实现这样的语言模型,并完善、评测、最终用于设计各种实用系统。

    3)研究问题(主要):

    信息检索

    机器翻译

    文档分类

    问答系统

    信息过滤

    自动文摘

    信息抽取

    文本挖掘

    舆情分析

    机器写作

    语音识别

    研究模式:自然语言场景问题,数学算法,算法如何应用到解决这些问题,预料训练,相关实际应用

    自然语言的困难:

    场景的困难:语言的多样性、多变性、歧义性

    学习的困难:艰难的数学模型(hmm,crf,EM,深度学习等)

    语料的困难:什么的语料?语料的作用?如何获取语料?

    ▌二、形式语言与自动机

    语言:按照一定规律构成的句子或者字符串的有限或者无限的集合。

    描述语言的三种途径:

    穷举法

    文法(产生式系统)描述

    自动机

    自然语言不是人为设计而是自然进化的,形式语言比如:运算符号、化学分子式、编程语言形式语言理论朱啊哟研究的是内部结构模式这类语言的纯粹的语法领域,从语言学而来,作为一种理解自然语言的句法规律,在计算机科学中,形式语言通常作为定义编程和语法结构的基础形式语言与自动机基础知识:

    集合论

    图论

    自动机的应用:

    单词自动查错纠正

    词性消歧(什么是词性?什么的词性标注?为什么需要标注?如何标注?)

    形式语言的缺陷:

    对于像汉语,英语这样的大型自然语言系统,难以构造精确的文法

    不符合人类学习语言的习惯

    有些句子语法正确,但在语义上却不可能,形式语言无法排出这些句子

    解决方向:基于大量语料,采用统计学手段建立模型

    ▌三、语言模型

    1)语言模型(重要):通过语料计算某个句子出现的概率(概率表示),常用的有2-元模型,3-元模型

    2)语言模型应用:

    语音识别歧义消除例如,给定拼音串:tashiyanyanjiusaunfade

    可能的汉字串:踏实烟酒算法的他是研究酸法的他是研究算法的,显然,最后一句才符合。

    3)语言模型的启示:

    开启自然语言处理的统计方法

    统计方法的一般步骤:

    收集大量语料

    对语料进行统计分析,得出知识

    针对场景建立算法模型

    解释和应用结果

    4)语言模型性能评价,包括评价目标,评价的难点,常用指标(交叉熵,困惑度)

    5)数据平滑:

    数据平滑的概念,为什么需要平滑?

    平滑的方法,加一法,加法平滑法,古德-图灵法,J-M法,Katz平滑法等。

    6)语言模型的缺陷:

    语料来自不同的领域,而语言模型对文本类型、主题等十分敏感。

    n与相邻的n-1个词相关,假设不是很成立。

    ▌四、概率图模型,生成模型与判别模型,贝叶斯网络,马尔科夫链与隐马尔科夫模型(HMM)

    1)概率图模型概述(什么的概率图模型,参考清华大学教材《概率图模型》)

    2)马尔科夫过程(定义,理解)

    3)隐马尔科夫过程(定义,理解)

    HMM的三个基本问题(定义,解法,应用)

    注:第一个问题,涉及最大似然估计法,第二个问题涉及EM算法,第三个问题涉及维特比算法,内容很多,要重点理解,(参考书李航《统计学习方法》,网上博客,笔者github)

    ▌五、马尔科夫网,最大熵模型,条件随机场(CRF)

    1)HMM的三个基本问题的参数估计与计算

    2)什么是熵

    3)EM算法(应用十分广泛,好好理解)

    4)HMM的应用

    5)层次化马尔科夫模型与马尔科夫网络

    提出原因,HMM存在两个问题

    6)最大熵马尔科夫模型

    优点:与HMM相比,允许使用特征刻画观察序列,训练高效

    缺点:存在标记偏置问题

    7)条件随机场及其应用(概念,模型过程,与HMM关系)

    参数估计方法(GIS算法,改进IIS算法)

    CRF基本问题:特征选取(特征模板)、概率计算、参数训练、解码(维特比)

    应用场景:

    词性标注类问题(现在一般用RNN+CRF)

    中文分词(发展过程,经典算法,了解开源工具jieba分词)

    中文人名,地名识别

    8)CRF++

    ▌六、命名实体识别,词性标注,内容挖掘、语义分析与篇章分析(大量用到前面的算法)

    1)命名实体识别问题

    相关概率,定义

    相关任务类型

    方法(基于规程->基于大规模语料库)

    2)未登录词的解决方法(搜索引擎,基于语料)

    3)CRF解决命名实体识别(NER)流程总结:

    训练阶段:确定特征模板,不同场景(人名,地名等)所使用的特征模板不同,对现有语料进行分词,在分词结果基础上进行词性标注(可能手工),NER对应的标注问题是基于词的,然后训练CRF模型,得到对应权值参数值

    识别过程:将待识别文档分词,然后送入CRF模型进行识别计算(维特比算法),得到标注序列,然后根据标注划分出命名实体

    4)词性标注(理解含义,意义)及其一致性检查方法(位置属性向量,词性标注序列向量,聚类或者分类算法)

    ▌七、句法分析

    1)句法分析理解以及意义

    1、句法结构分析

    完全句法分析

    浅层分析(这里有很多方法。。。)

    2、依存关系分析

    2)句法分析方法

    基于规则的句法结构分析

    基于统计的语法结构分析

    ▌八、文本分类,情感分析

    1)文本分类,文本排重

    文本分类:在预定义的分类体系下,根据文本的特征,将给定的文本与一个或者多个类别相关联

    典型应用:垃圾邮件判定,网页自动分类

    2)文本表示,特征选取与权重计算,词向量

    文本特征选择常用方法:

    基于本文频率的特征提取法

    信息增量法

    X2(卡方)统计量

    互信息法

    3)分类器设计

    SVM,贝叶斯,决策树等

    4)分类器性能评测

    召回率

    正确率

    F1值

    5)主题模型(LDA)与PLSA

    LDA模型十分强大,基于贝叶斯改进了PLSA,可以提取出本章的主题词和关键词,建模过程复杂,难以理解。

    6)情感分析

    借助计算机帮助用户快速获取,整理和分析相关评论信息,对带有感情色彩的主观文本进行分析,处理和归纳例如,评论自动分析,水军识别。

    某种意义上看,情感分析也是一种特殊的分类问题

    7)应用案例

    ▌九、信息检索,搜索引擎及其原理

    1)信息检索起源于图书馆资料查询检索,引入计算机技术后,从单纯的文本查询扩展到包含图片,音视频等多媒体信息检索,检索对象由数据库扩展到互联网。

    点对点检索

    精确匹配模型与相关匹配模型

    检索系统关键技术:标引,相关度计算

    2)常见模型:布尔模型,向量空间模型,概率模型

    3)常用技术:倒排索引,隐语义分析(LDA等)

    4)评测指标

    ▌十、自动文摘与信息抽取,机器翻译,问答系统

    1)统计机器翻译的的思路,过程,难点,以及解决

    2)问答系统

    基本组成:问题分析,信息检索,答案抽取

    类型:基于问题-答案,基于自由文本

    典型的解决思路

    3)自动文摘的意义,常用方法

    4)信息抽取模型(LDA等)

    ▌十一、深度学习在自然语言中的应用

    1)单词表示,比如词向量的训练(wordvoc)

    2)自动写文本

    写新闻等
    

    3)机器翻译

    4)基于CNN、RNN的文本分类

    5)深度学习与CRF结合用于词性标注

    展开全文
  • 文章目录论述自然语言处理的技术范畴(基本全貌) 一、前言二、主要技术范畴1、语音合成(Speech Synthesis)2、语音识别(Speech Recognition)3、中文自动分词4、词性标注5、句法分析7、文本分类7、文本挖掘8、信息抽取9...
  • 自然语言处理总复习(八)—— 文本聚类一、聚类概述1. 目标2. 定义3. 用途(1)用于试探性数据分析(2)概念一般化(元素之间的可互换性)4. 聚类算法与分类算法的区别5. 聚类算法分类二、层级聚类(一)两种层级...
  • 自然语言处理之文本分类

    千次阅读 2021-03-29 10:45:10
    文本分类另外也属于自然语言处理领域。文本分类的应用场景有: 1. 新闻主题分类(文章分类):根据文章内容(或者结合标题)给新闻等其他文章一个类别,比如财经、体育、军事、明星等等。一般在新闻资讯方面使用...
  • 自然语言处理入门新手上路

    千次阅读 多人点赞 2019-10-29 17:40:42
    自然语言处理 (Natural Language Processing,NLP)是一门融合了计算机科学、人工智能以及语言学的交叉学科,它们的关系如图 1-1 所示。这门学科研究的是如何通过机器学习等技术,让计算机学会处理人类语言,乃至...
  • 随着故事情节起起伏伏的推进,课程最后要掀起一...自然语言处理领域成果很多,为我们的课程提供的丰富的素材,如何从这个思想的宝库中挖掘素材,掀起本节课程的高潮?这是本节课的关键。您觉得接下来该如何组织内容呢?
  • 什么是自然语言处理NLP 用通俗的话来讲,自然语言处理NLP的目标是让机器能够理解人类的语言,NLP就是人和机器进行交流的技术。用专业语言来讲,自然语言处理有狭义和广义之分。狭义的自然语言处理是使用计算机来完成...
  • 常用自然语言处理NLP模型原理

    千次阅读 2021-02-18 14:02:35
    一、文本处理流程 文本清洗:html标签与转义字符、多余空格、根据需要清除邮箱、账号、网址、手机号、作者信息等信息 预处理:去除停用词、加载自定义词库(实体词库、垂直领域词库)、分词 特征提取:...
  • 写给小白的自然语言处理入门简介

    千次阅读 多人点赞 2020-06-18 20:02:43
    自然语言处理简介 什么是自然语言 自然语言是人类社会发展过程中自然产生的语言,是最能体现人类智慧和文明的产物。 它是一种人与人交流的载体,我们使用语言传递知识。这个星球上许多生物都拥有超过人类的视觉系统,但...
  • 自然语言处理之知识图谱

    万次阅读 多人点赞 2018-07-12 10:38:29
     收集数据之后需要对数据进行处理,这里面最有价值的首先是文本数据,因此要用到自然语言处理基本的过程是:语言分词、词性标注、命名实体识别、句法分析,更高级写的应用还包括语义依存分析。对于构建知识库而言...
  • 自然语言处理--应用篇

    千次阅读 2019-02-27 01:42:33
    从知识产业角度来看,自然语言处理软件占有重要的地位,专家系统、数据库、知识库,计算机辅助设计系统(CAD)、计算机辅助教学系统(Cal)、计算机辅助决策系统、办公室自动化管理系统、智能...
  • python自然语言处理

    2020-08-04 14:34:20
    python自然语言处理(一) 自言语言处理基础知识 参考:https://blog.csdn.net/meihao5/article/details/79592667 英文资料: http://github.com/lovesoft5/ml 一、自然语言处理概述 1)自然语言处理:利用计算机为...
  • 自然语言处理—文本分类综述/什么是文本分类

    千次阅读 多人点赞 2021-11-22 15:11:42
    文本分类问题算是自然语言处理领域中一个非常经典的问题。 根据预定义的类别不同,文本分类分两种:二分类和多分类,多分类可以通过二分类来实现。 从文本的标注类别上来讲,文本分类又可以分为单标签和多标签,因为...
  • 自然语言处理概述

    千次阅读 2019-03-20 14:00:53
    【NLP】十分钟快览自然语言处理学习总结 阅读目录 17 特征工程 20、推荐算法 十分钟学习自然语言处理概述 作者:白宁超 2016年9月23日00:24:12 摘要:近来自然语言处理行业发展朝气蓬勃,市场应用广泛。...
  • 通过对 1994-2017 年间自然语言处理领域有关论文的挖掘,总结出二十多年来,自然语言处理的领域关键词主要集中在计算机语言、神经网络、情感分析、机器翻译、词义消歧、信息提取、知识库和文本分析等领域。...
  • NLP-自然语言处理

    千次阅读 2022-03-17 15:15:33
    自然语言处理( Natural Language Processing, NLP)是计算机科学领域与人工智能领域中的一个重要方向。它研究能实现人与计算机之间用自然语言进行有效通信的各种理论和方法。自然语言处理是一门融语言学、计算机科学...
  • 文章目录 神经网络知识大串联 1:第一代的神经元模型 3 2:从M-P模型到感知器模型 3 3:前馈神经网络 3 4:后向传播与BP算法神经网络 4 ...自然语言处理知识大串联 1:one-hot 11 2:Word-embeding 词嵌入 11 3:Word2V...
  • 自然语言处理在电商的技术实践

    千次阅读 2017-09-25 17:18:44
    GitChat 作者:李睿 关注微信公众号:「GitChat 技术杂谈」 一本正经的讲...作为一个在美国主要的电商网站之一的eBay混了n年的“数据科学家”,我给大家分享一下自然语言处理(Natural Langrage Processing,缩写为N
  • 自然语言处理” (Natural Language Processing,简称NLP) 是近年来科技界最热门的词语之一,也是当下人工智能研究最热门的领域之一。自然语言处理推动着语言智能的持续发展和突破,并越来越多地应用于各个行业。...
  • 自然语言处理实战:新闻文本分类(附代码)

    万次阅读 多人点赞 2020-08-13 18:06:15
    目录自然语言处理实战:新闻文本分类一、赛题理解1、学习目标2、赛题数据3、数据标签4、评测指标5、数据读取6、解题思路二、数据读取与数据分析1、学习目标2、数据读取3、数据分析3.1句子长度分析3.2新闻类别分布3.3...
  • 自然语言处理是一门融语言学、计算机科学、数学于一体的科学。自然语言处理主要应用于机器翻译、舆情监测、自动摘要、观点提取、文本分类、问题回答、文本语义对比、语音识别、中文OCR等方面。本教程操作环境:...
  • 自然语言处理面试基础

    万次阅读 2020-01-01 23:30:03
    因为本课程是关于深度学习在自然语言处理中的应用,所以课程开始部分我们会概括性地介绍什么是深度学习项目的一般流程和所需基本概念,深度学习在自然语言处理领域主要有哪些热门应用,还会介绍本课程项目所需的 ...
  • 利用共指消解技术,可以将这些指称项关联(合并)到正确的实体对象,由于该问题在信息检索和自然语言处理等领域具有特殊的重要性,吸引了大量的研究努力。共指消解还有一些其他的名字,比如对象对齐、实体匹配和实体...
  • 本文的主题是自然语言处理中的预训练过程,会大致说下NLP中的预训练技术是一步一步如何发展到Bert模型的,从中可以很自然地看到Bert的思路是如何逐渐形成的,Bert的历史沿革是什么,继承了什么,创新了什么,为什么...
  • 统计自然语言处理(第2版)目录

    千次阅读 2020-07-02 16:21:02
    1.3 自然语言处理基本方法及其发展 1.3.1 自然语言处理基本方法 1.3.2 自然语言处理的发展 1.4 自然语言处理的研究现状 1.5 本书的内容安排 第2章 预备知识 2.1 概率论基本概念 2.1.1 概率 2.1
  • 自然语言处理研究的内容包括但不限于如下分支领域:文本分类、信息抽取、自动摘要、智能问答、话题推荐、机器翻译、主题词识别、知识库构建、深度文本表示、命名实体识别、文本生成、文本分析(词法、句法、语法)、...
  • 一文读懂自然语言处理NLP(图解+学习资料)数据派THU发表于数据派THU订阅905前言自然语言处理是文本挖掘的研究领域之一,是人工智能和语言学领域的分支学科。在此领域中探讨如何处理及运用自然语言。对于自然语言...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 39,408
精华内容 15,763
热门标签
关键字:

典型自然语言处理的基本思路