第一章 新手上路

1.1 自然语言和编程语言

1. 词汇量:
自然语言中存在无穷无尽的词汇量,并且人类可以任意的创造新的词汇量;在编程语言中,词汇量是有限的。(这里的词汇量也就是指编程语言中的关键字,例如C语言一共有32个关键字,Python一共有33个关键字。)
2. 结构化
自然语言是非结构化的,例如:小明今年20岁,身高180厘米。这个句子就是一个简单的线性字符串类型,计算机去分析需要分析得到这个句子的主语是小明,小明有两个属性年龄和身高,对应的属性值分别是20岁和180厘米。对于计算机来说这是一个复杂的过程;编程语言是结构化的,在一些面向对象的编程语言中,可以将这个句子实例化,比如:

class Person(object):
    def __init__(self, name, age, height):
        self.name = name
        self.age = age
        self.height = height
p1 = Person("小明", 20, 180)

我们将这个句子实例化之后,就可以通过p1.name得到这个句子主语,通过p1.age就可以得到属性年龄对应的值,通过p1.height就可以得到属性身高对应的值。
3. 歧义性
自然语言存在大量的歧义,一个词语在不同的语境中的意思会不一样。引用《自然语言处理入门》中的一个例子:他说:“她这个人真有意思(funny)。”她说:“他这个人怪有意思的(funny)。”于是人们以为他们有了意思(wish),并让他向她意思意思(express)。他火了:“我根本没有那个意思(thought)!”她也生气了:“你们这么说是什么意思(intension)?”事后有人说:“真有意思(funny)。”也有人说:“真没意思(nonsense)。”(原文见《生活报》1994.11.13.第六版【吴尉天,1999】)
由此可见,自然语言的处理对于中文来说更难,同一个词语“意思”在不同的语境中就有不同的意义。而在编程语言中就不会存在歧义性。比如当代码中存在两个同名函数,就会存在编译错误。
4. 容错性
自然语言中,一句话当中存在一定的错误,人们也可以猜出这句话想表达的意思。比如:当你看句这话的时候,你并不觉得这句话中有误错。而在编程语言中,所有的语法,所有的单词必须拼写正确,否则系统会出现潜在的漏洞甚至直接报错。
5. 易变性
自然语言和编程语言都是在不断变化的。自然语言发展速度快,编程语言发展速度更加缓慢。
6. 简略性
在自然语言中,由于一些约定俗成,自然语言可以更加简洁省略。比如我们默认“工行”,就是指“中国工商银行”。尤其是在一段长文本中,前文已有的某个主语需要在下文中多次出现,我们就不必每次都要指出这个主语是什么,而可以使用他,她,它来指代即可。因此自然语言的简略性也给NLP带来了更多的困难。

1.2 NLP层次

在这里插入图片描述
1. 语音,图像和文本
不管是语音还是图像,最后都会转化成文本才能被计算机处理,因此文本的处理才是最关键的地方。
2. 词法分析
中文分词:将文本分割为多个有意义的词语
词性标注:确定每个词语的类别,进行浅层的歧义消除
命名实体识别:识别出较长的专有名词
3.信息抽取
在上一步进行词法分析之后,文本已经呈现出了部分结构化,计算机可以识别到一个超长的词语列表,并且每个词语都有其自己的含义和其他一些标签。信息抽取即通过一定的算法将词语列表中的词语整合为一些短语或句子。
4.文本分类和文本聚类
文本分类就是将文本分门别类的整理到一起;文本聚类就是把相似的文档归纳到一起而不考虑其类别。
5.句法分析
分析文本的主谓宾关系,侧重于语法。
6.语法分析
侧重于文本语义,包括词义消歧(确定词语在不同语境中的意义),语义角色标注(标注句子中的谓语与其他成分的关系),语义依存分析(分析句子中词语之间的语义关系)。

1.3 NLP流派

1. 基于规则的专家系统
如波特词干算法,由一系列固定的if语句组成,当词语满足一定条件时,则执行对于的操作,输出对应的结果。缺点就是规则增加时,算法不太好扩展。
2.基于统计的算法
在语料库(人工标注的结构化成本)上进行统计。即机器学习。
3.发展历史
在这里插入图片描述
4.规则与统计
5.传统方法与深度学习

1.4 机器学习

1. 机器学习
让机器学会算法的算法
2. 模型
3. 特征
事物的特点转化的数值
4. 特征提取
为特征加上权重以表示其优先级
5. 数据集
在NLP中称为语料库
6. 监督学习
假定我们已知一组输入和对应的输出(有标注的训练集),并且有一个大概可以适用于这组输入输入的模型,我们将输入应用在这个模型上,得到另外一组输出,然后与这些输入原本对应的输出做对比,以此来检验model的有效性。
7. 无监督学习
已知一组输入(没有有标注的训练集)
8. 半监督学习
使用多个模型对同一个输入进行预测,会得到多个输出。假定多个输出大多数一致,就可以把这些输入和输出作为新的训练集(即利用了有标注的训练集和丰富的未标注的训练集)

1.5 语料库(NLP中的数据集)

1. 中文分词语料库:
由人工正确切分后的句子集合
2. 词性标注语料库
将句子切分为多个词语并为每一个词语指定一个词性的语料
3. 命名实体识别语料库
标注了文本内部制作者关心的实体名词以及实体类别
4. 句法分析语料库
每个句子都经过了分词,词性标注和句法标注
5. 文本分类语料库
人工标注了所属分类的文章构成的语料库

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值