12.2 NLP常见任务
这一节我们来看一下NLP都有哪些常见任务,这些任务都有哪些特点和难点。
12.2.1 文本分类
文本分类任务是自然语言中非常常见的一种任务。比如用户在淘宝上对一个商品的评价,系统要识别这是正面评价和负面评价。再比如公司邮箱系统根据邮件内容需要判断邮件是否为垃圾邮件,以便进行拦截。还有一个新闻网站希望模型根据新闻内容,自动将模型分到不同的类别。这些都是文本分类任务。
这些任务的特点是,输入是长短不一的文本,输出是一个分类值。
12.2.2 文本回归
文本回归的任务是输入一段文本,模型输出一个连续值。比如你想根据用户的评价文本,返回一个具体的评价分值。或者语文老师给模型输入学生的一篇作文,模型给出这篇作文的得分。
12.2.3 命名实体识别
命名实体识别(Named Entity Recognition,NER)也是一种常见的NLP任务。任务的具体内容是给出一段文本,模型需要识别出这段文本中的专有名词,比如人名、地名、机构名等。命名实体识别之后,可以根据识别的实体构建知识图谱,或者根据不同的实体进行文档归类或者索引,以便进行检索。
命名实体识别任务是一个文本序列到标注序列的问题,并且它模型输入长度和输出序列长度是一致的。一般标注采用BIO(Begin,Inside,Outside)方式进行标注。
B-XXX:实体的开头
I-XXX:实体的内部
O:不属于任何实体
比如我们用B-T表示时间实体的开始,I-T表示时间实体的内部。B-N,I-N表示人名实体。B-L,I-L表示地点。O表示不属于任何实体。之所以要用B,I来区分实体的开始和内部,是因为会有连续的实体。假如出现:“北京上海”这样连续的地名,就可以用“B-L,I-L,B-L,I-L”区分出这是两个地名实体。
比如上边,对于一句话:“25年,库克在加州发布了新产品。” 它的标注结果如上图所示。这时模型对输入的每个词进行分类。对于上边的例子,类别种类为7,分别为“B-T,I-T,B-N,I-N,B-L,I-L,O”。
12.2.4 翻译、摘要
翻译、摘要,它们的输入和输出都是文本序列的问题。与NER任务不同,它们的输入和输出序列长度是不同的。
12.2.5 文本蕴含
对于文本蕴含任务,该任务涉及分析两句话之间的逻辑关系:一句是前提,另一句是假设。任务的目标是判断从前提是否可以逻辑地推断出假设,输出结果为“支持”、“反对”或“不相关”。例如,如果前提是“我刚吃完饭”,假设是“我不饿”,那么推断关系应被标记为“支持”;如果假设是“我很饿”,则关系标记为“反对”;如果假设是“我喜欢学习”,则标记为“不相关”。
文本蕴含任务的输入是两个序列,输出是一个分类结果。
12.2.6 语言模型
语言模型(Language Model, LM)的作用是你给出一个句子,模型可以输出这个句子合理性的概率。 比如对于一个语音识别系统而言:
“我每天都会洗澡。”
“我每天都会洗枣。”
上边两句话从读音上是完全一致的。这时就需要语言模型来判断,哪一句话在现实生活中出现的概率更大,语音识别系统会取概率大的作为识别结果。
早期的语言模型是通过统计大量文本来构建。
上式表达的含义为对于一句话,它由n个单词构成,分别为,这一句话出现的概率就等于出现的概率,乘以在出现时,后边出现的概率。再乘以出现时,后边出现的概率。以此类推,直到乘以出现的情况下,出现的概率。
在实际应用中,直接计算上述公式中的完整条件概率是非常困难的。这是因为自然语言的上下文非常丰富,词汇表庞大,训练语料中很多词序列可能根本没有出现过,导致数据稀疏问题严重。为了降低计算复杂度,同时缓解数据稀疏的问题,通常采用一种近似方法,n-gram 语言模型。n-gram 模型的基本思想是:假设当前单词的出现只依赖于前面的 (n-1) 个单词,而不是整句之前的所有单词。
其中,n 是窗口大小,常见的取值有:
unigram (1-gram):只考虑每个词独立出现的概率。
bigram (2-gram):当前词只依赖于前一个词。
trigram (3-gram):当前词依赖于前两个词。
更高阶 n-gram:依赖更长的上下文,但计算和数据需求也会更高。基本上不用。 举个例子,假设我们有个文本:
"I love natural language processing"
使用bigram模型,整句话的概率近似为:
通过统计大量文本中的词对共现频率,便可以估计出这些条件概率。构建一个基于概率的语言模型。
后来神经网络出现后,不再通过统计来给出每个词的概率,而是让神经网络输出每个词的概率。语言模型的能力进一步提升。后边我们会具体讲到利用RNN,LSTM,Transformer,GPT等模型进行神经网络语言模型的构建。
在ChatGPT这样的大语言模型出来前,语言模型并不作为一个单独的NLP任务出现,它通常是辅助完成其他NLP任务,比如上边说的语音转文本任务。
但是当大语言模型能力突破性的提升后,大语言模型统一了所有NLP的任务。既然语言模型可以给出一个句子合理性的概率,它便可以找出当前句子接下来最可能出现的词(概率最大的词),依次类推,不断续写。如果原始输入是一个任务描述呢?比如:
“我喜欢这个杯子。上边这句话是正面还是负面评价?”
让大语言模型找出接下来概率最大的词,它会输出“正面”。这样语言模型就完成了文本分类的任务。
大语言模型能力强大,不光可以解决传统NLP问题,还可以解决其他问题。但是它计算成本大,所以目前通过其他方式实现的NLP模型依然还在各行各业发挥作用。