目录
什么是自然语言处理
定义
自然语言指的是人类的语言,如中文、英语等,处理特指使用计算机技术处理,所以自然语言处理(NLP)就是指使用计算机处理人类的语言。
自然语言处理属语言学、计算机科学、信息工程和人工智能的交叉领域,涉及的内容非常广泛。人类的语言本身是复杂的,所以自然语言处理的任务也是多种多样的。
常用术语
自然语言处理中的常用术语如下:
- 语料:语言材料,积累大量的词条可以构成一个语料库。
- 自然语言:自然演化形成的人类语言。
- 形式化语言:用数学方法精确定义的语言,如计算机程序设计语言。
- 分词:把一个句子分解为多个词语。
- 词频:一个词在一定范围的语料中出现的次数。
- 机器学习(Machine Learning):通过算法和程序让计算机从数据中自主学习知识。
- 深度学习(Deep Learning):使用深度神经网络的机器学习方法。
- 人工神经网络(Artificial Neural Network):简称神经网络,是一种模拟人脑神经元处理信息的过程的模型。
- 训练模型:在训练过程中使用学习型算法,根据训练数据更新自身参数,从而更好地解决问题。
自然语言处理的任务
广义地说,自然语言处理包含对各种形式地自然语言的处理(如语音识别、光学字符识别),还包括理解文字的含义(如自然语言理解),还可能需要让机器有自己组织语言的能力(即自然语言生成),甚至还需要输出这些语言(如语音合成)等。
笼统地说,人们定义自然语言处理中重点任务有两个:语言理解和语言生成。处理的对象可分为3种:词语/字、句子、篇章。
具体地说,自然语言处理的任务有如下4类:
- 序列标注:给句子或者篇章中的每个词或字一个标签,包含如分词、词性标注等
- 文本分类:给句子或篇章一个标签,包含如情感分析等
- 关系判断:判断多个词语、句子、篇章之间的关系,包含如选词填空等
- 语言生成:产生自然语言的字、词、句子、篇章等,包含如问答系统、机器翻译
自然语言处理的发展历程
- 基于规则的方法:早期自然语言处理依赖人工设定的规则,语言学家研究语言本身的规律,把归纳好的规则编写成程序,告诉计算机应该怎么做。劣势在于,简单的规则和有限的词汇无法适应多变的自然语言。
- 经验主义和理性主义:经验主义主张通过观察得到规律,理性主义主张通过推理而不是观察得到规律。
- 机器学习方法:随着数据的积累和计算机性能的提高,基于概率与统计的机器学习和深度学习方法在自然语言处理领域的表现越来越好。
- Word2vec模型(Google,2013),可以从语料中自主学习得出每个词语的向量表示,通过向量间的数学关系反映词语之间的语义关系。
- Seq2seq模型(Google,2014),在机器翻译领域的性能明显超过传统模型。
- BERT模型(Google,2018),开始采用 Transformer 框架,同时关注 encoder 和 decoder 两端。
- GPT-3模型(OpenAI,2021),同样基于自注意力机制,只关注生成部分,推出 ChatGPT 产品。
- ChatGLM、Qwen、llama 等(2022-至今)
自然语言处理的挑战
自然语言处理任务的难题在于:自然语言的灵活多样,没有明确的规则和边界,且自然语言会随着时间而发生变化,新的词语和表达方式也可能不断出现。
实际上,人们在理解句子时,会选择自己认为更合理的意思,有一些句子虽然可以有两种意思,但是根据经验我们可以判断其确切的含义,而计算机则不然。
-
歧义问题:自然语言中存在大量的歧义现象,同样的文字可能有不同的含义,而同样的意思也可以用完全不同的文字来表达。
- e . g . e.g. e.g. 理解歧义:“他介绍了他们公司自动化所取得的成就”
- e . g . e.g. e.g. 指代歧义:“小明做了好事,老师表扬了小明,他很高兴”
-
语言的多样性:自然语言中,完全相同的意思可以用截然不同的方式来表达,所以自然语言处理的方法不仅要能适应自然语言的多样性,还要使输出的内容多样而自然。
-
未登录词:自然语言中随时可能有新词汇和新用法的出现,很多自然语言处理的方法依赖预先定义或者在学习、训练中生成的词表。未登录词就是指此词表中不存在的词语,或者训练过程中未出现过的词语。因为缺乏这些词的信息,所以处理未登录词或原有词汇的新用法是困难的。
-
数据稀疏:语料中,除了少数常用词汇出现的频次较高,还有很多不常用的词汇,虽然这些不常用的词汇的数量多,但是单个词汇出现的次数较少。词频出现28分布。
自然语言处理的常用技术
TF-IDF
TF-IDF 用于评估一个词在一定范围的语料中的重要程度。
- TF:词频(Term Frequency),指一个词在一定范围的语料中出现的次数,词在语料中出现的次数越多说明其越重要。
- IDF:逆文本频率(Inverse Document Frequency),而出现次数很多的这个词,可能是“的”这样在所有语料中出现次数都很多的词,所以出现了逆文本频率,即这个词在某个语料中出现了,但是在整个语料库中出现得很少,就能说明这个词在这个语料中很重要。
词嵌入
词嵌入(word embedding),使用向量表示词语。
因自然语言处理是使用计算机技术处理自然语言,所以需要用计算机能理解的符号表示字或词。问题在于,一是词语的海量,二是简单的编码无法表达词语之间的语义关系。
词嵌入使用特定的算法,使用多维向量来表示一个词语,从而不忽略词语间的关系。
分词
分词指将句子划分为词语序列。
英文分词可以直接通过空格分隔开。中文分词会因不同的分词方案让句子表现出不同的含义,故需做探究。
循环神经网络
循环神经网络(Recurrent Neural Network, RNN),用于处理序列数据的神经网络,适合处理不定长度的句子分析序列。
注意力机制
注意力机制(Attention Mechanism)是自然语言处理领域乃至深度学习领域中十分重要的技术,源于人们对人类视觉机制的研究。
人类在观察事物时,会把注意力分配到关键的地方,而相对忽视其他细节。在自然语言处理中,通过使用注意力机制,模型会将重要的地方分配更高的权重。
预训练
预训练是一种迁移学习方法,通过预先在一个大规模的语料库上训练,通过设计通用的任务,得到一个通用的预训练权重。在实际应用之前,在预训练的基础上,使用相应场景的数据和任务再进行二次训练。
预训练的好处在于,使用较大规模的语料,模型可以对语言有全面的学习,再特定场景和进行特定数据训练时,可以使用更小的数据集和进行更少的训练得到相对好的结果。