畅谈自然语言处理——初识NLP
文章目录
- 畅谈自然语言处理——初识NLP
- 一、引言
- 二、NLP技术的定义分类
- 三、三个发展阶段
- 1、基于规则的算法
- 2、基于统计的NLP算法
- 3、基于深度学习的NLP算法
- 结语
一、引言
最近,一个名为ChatGPT的模型将计算机领域震撼,它以对话的方式进行交互,对话形式使 ChatGPT 能够回答后续问题、承认错误、挑战不正确的前提并拒绝不适当的请求。使人们感受到了人工智能越来越接近人类智能。
作为目前人工智能领域最前沿的研究成果之一,
ChatGPT的实现与自然语言处理—NLP技术息息相关。
二、NLP技术的定义分类
自然语言处理(Natural Language Processing)简称NLP,是人工智能的一个重要领域,NLP技术通过让计算机模拟人类语言的交际过程,使计算机理解和运用人类社会的各种语言,实现人机间的自然语言交流,从而代替人的部分脑力劳动,包括:查阅资料、解答问题、翻译等
我们使用自然语言时,需要经过哪些步骤呢?
很明显是先听,再理解,之后思考,最后说这四个步骤。计算机进行自然语言处理时也遵循这四个步骤。
按着四个步骤分为四种技术,分别为语音识别、自然语言理解、自然语言生成和语言合成。
其中自然语言理解和自然语言生成是NLP技术中最核心、最热门也是最复杂和最有趣的技术研究方向。
三、三个发展阶段
说完了NLP技术的定义与分类
接下来我们聊一聊NLP算法的三个发展阶段
在NLP发展初期,计算机的运算速度很慢,科学家们只能通过总结规律来判断自然语言的意图,用预先准备好的知识来实现自然自然语言理解。因此出现了专家系统等基于规则的NLP算法
1、基于规则的算法
在NLP发展初期,计算机的运算速度很慢,科学家们只能通过总结规律来判断自然语言的意图,用预先准备好的知识来实现自然自然语言理解。
最初的智能语音遥控系统结构长这样
当用户对智能助手说出:好热啊,能帮我打开空调吗?
那么满足了起始词、命令和结束词后就会执行相应的程序来帮用户打开空调啦。
但如果句子很长的话,构建的语法树就会很大,很复杂。且用规则处理法在多义性很难处理,因为多义词严重依赖上下文语境。但科学家们很快就解决了这个难题,在1970年以后统计语言学家的出现使得NLP重获新生
2、基于统计的NLP算法
基于统计的NLP算法是一种以基于语料库的统计分析为基础的经验主义方法。曾广泛应用于翻译、语音识别、智能客服、专家系统中。
基于统计的NLP最初是为了解决语言识别问题,常见的语言识别流程很简单,从声音到句子,一般有五个步骤
1、把音波数据分成帧
2、把帧识别成状态
3、把状态组合成音素
4、把音素转换成字
5、把字组合成句子
有了音素如何拼出合理的句子呢?如“WO3ZAI4SHANG4HAI3”是表示“我在上海”呢?还是“我载尚海”呢?
判断一个句子是否合理,就要通过一系列算法,例如
马尔科夫算法来判断这个句子在人类正常语言中出现的概率
设S为句子,句子是由汉字组成的,所以我们用
w
1
,
w
2
,
…
,
w
n
w_1,w_2,\dots,w_n
w1,w2,…,wn
表示有序的汉字列表。“我在上海”就可以表示为
w
1
=
我
,
w
2
=
在
,
w
3
=
上
,
w
4
=
海
w_1=我,w_2=在,w_3=上,w_4=海
w1=我,w2=在,w3=上,w4=海
我们用P()表示概率,设“我在上海”为S,那么P(S)就是这句话在人类对话中可能出现的概率。
随后把P(S)中的每个字按照概率论公式进行展开,
(读作:“在S的条件下w1的概率”乘以“在w1的条件下w2的概率”…)
P
(
S
)
=
P
(
w
1
∣
<
S
>
)
⋅
P
(
w
2
∣
w
1
)
⋅
P
(
w
3
∣
w
1
,
w
2
)
⋅
⋅
⋅
⋅
P
(
w
n
∣
w
1
,
w
2
,
…
,
w
n
−
1
)
P(S) = P(w_1|<S>)·P(w_2|w_1)·P(w_3|w_1,w_2)····P(w_n|w_1,w_2,\dots,w_{n-1})
P(S)=P(w1∣<S>)⋅P(w2∣w1)⋅P(w3∣w1,w2)⋅⋅⋅⋅P(wn∣w1,w2,…,wn−1)
S这个句子出现的概率等于每一个字出现的条件概率的乘积。
以“我在上海”为例,我们可以列出下面的公式:
P
(
S
)
=
P
(
w
1
∣
<
S
>
)
⋅
P
(
w
2
∣
w
1
)
⋅
P
(
w
3
∣
w
1
,
w
2
)
⋅
P
(
w
4
∣
w
1
,
w
2
,
w
3
)
P(S) = P(w_1|<S>)·P(w_2|w_1)·P(w_3|w_1,w_2)·P(w_4|w_1,w_2,w_3)
P(S)=P(w1∣<S>)⋅P(w2∣w1)⋅P(w3∣w1,w2)⋅P(w4∣w1,w2,w3)
其中P(w1|<S>)
是第一个字“我”出现在句首的概率。
P(w2|w1)
是已知第一个字是“我”的前提下,第二个字“在”出现的概率
同理P(w3|w1,w2)
是已知第一个字是“我”,且第二个字是“在”的前提下,第三个字“上”出现的概率。
为了解决计算概率时指数爆炸的难题,马尔科夫算法将
上述式子简化为二元模型
P
(
S
)
=
P
(
w
1
∣
<
S
>
)
⋅
P
(
w
2
∣
w
1
)
⋅
P
(
w
3
∣
w
2
)
⋅
P
(
w
4
∣
w
3
)
P(S) = P(w_1|<S>)·P(w_2|w_1)·P(w_3|w_2)·P(w_4|w_3)
P(S)=P(w1∣<S>)⋅P(w2∣w1)⋅P(w3∣w2)⋅P(w4∣w3)
化成——》
P
(
w
n
∣
w
n
−
1
)
=
P
(
w
n
−
1
,
w
n
)
P
(
w
n
−
1
)
P(w_n|w_{n-1}) = \frac{P(w_{n-1},w_n)}{P(w_{n-1})}
P(wn∣wn−1)=P(wn−1)P(wn−1,wn)
所以只要求出
P
(
w
n
∣
w
n
−
1
,
w
i
)
和
P
(
w
n
−
1
)
,即可求出
P
(
w
n
∣
w
n
−
1
)
了
P(w_n|w_{n-1},w_i)和P(w_{n-1}),即可求出P(w_n|w_{n-1})了
P(wn∣wn−1,wi)和P(wn−1),即可求出P(wn∣wn−1)了
但这时需要借助语料库了,语料库的大小和能力成正相关(数据量和复杂度图)
假设语料库有2000亿条内容,
“我在”于语料库中出现了1000万次,那么
P
(
w
1
∣
w
2
)
=
1000
万
2000
亿
=
0.00005
P(w_1|w_2)=\frac{1000万}{2000亿}=0.00005
P(w1∣w2)=2000亿1000万=0.00005
就是1000万除以2000亿,等于0.00005
P
(
w
n
−
1
)
=
2
亿
2000
亿
=
0.00001
P(w_{n-1})=\frac{2亿}{2000亿}=0.00001
P(wn−1)=2000亿2亿=0.00001
“我”于语料库出现了2亿次,那么P(wn-1)就是2亿除以2000亿,等于0.001
因此可以求得
‘我在’出现的条件下‘我’出现的概率为
P
(
w
n
∣
w
n
−
1
)
=
P
(
w
n
−
1
,
w
n
)
P
(
w
n
−
1
)
=
0.00005
0.001
=
0.05
P(w_n|w_{n-1}) = \frac{P(w_{n-1},w_n)}{P(w_{n-1})}= \frac{0.00005}{0.001}= 0.05
P(wn∣wn−1)=P(wn−1)P(wn−1,wn)=0.0010.00005=0.05
以此类推,最后选取组合概率最高的词,计算概率后,“我在上海”比“我载尚海”的可能性更高。由此就可以准确地识别语音啦。
但这个算法也存在这问题,即数据稀疏问题。由于语料库不能覆盖所有词语,在计算时会出现大多数的数值缺失,数据越稀疏结果越不准确。为了解决这个问题,在2003年研究者尝试用神经网络来研究语言模型。
3、基于深度学习的NLP算法
伴随着计算处理能力的提升,深度学习有了较快的发展。
在2003年这个想法被提出后,2011年罗南·科洛伯特等人用一个简单的深度学习模型在命名实体识别(NER)、**词性标注(POS tagging)**等NLP任务中取得SOTA(技术发展最新水平)成绩(画:No.1)
2013年,以Word2vec为代表的词向量模型开始普及,此外基于深度学习的研究经历了CNN、RNN、Transformer等特征提取器。
2019年至2020年,谷歌公司的BERT模型、OpenAI的GPT-3模型在很多指标上超越了人类。
2023年3月14日基于GPT-4的Chat-GPT的回答准确性不仅大幅提高,还具备更高水平的识图能力,且能够生成歌词、创意文本,实现风格变化。
深度学习经过几十年的发展,深度学习的成功秘诀有以下三点
(1)海量数据(big data)
(2)深度神经网络模型
(3)大规模并行计算
Chat-GPT离不开这三个要素,当然也离不开科研人员的辛勤付出。
结语
我还为大家准备了相关习题和资料以便课后学习,谢谢大家。
http://nlp.aitianhai.top/#/Nlp