导读:本文是“数据拾光者”专栏的第六十三篇文章,这个系列将介绍在广告行业中自然语言处理和推荐系统实践。本篇主要介绍了使用chatgpt类大语言模型进行文本分类任务,对于希望使用chatgpt类大语言模型上进行数据标注、文本分类和关键词抽取等任务感兴趣的小伙伴可能有帮助。
欢迎转载,转载请注明出处以及链接,更多关于自然语言处理、推荐系统优质内容请关注如下频道。
知乎专栏:数据拾光者
公众号:数据拾光者
摘要:本篇主要介绍了使用chatgpt类大语言模型进行文本分类任务。首先介绍了背景,论文中提出了一种使用LLM模型基于线索收集和推理CARP进行文本分类任务;然后介绍了prompt设计,主要包括任务描述、示例和输入文本,还介绍了三种不同的示例获取方法;接着介绍了收集线索和推理流程;然后通过实验对比了微调模型、zero-shot和few-shot场景细使用三种不同的提示词进行文本分类的效果,还通过消融实验对比了示例数量、示例中不同的组件元素、不同标签结果词、不同线索词以及示例顺序对模型效果的影响。最后在我们实际的业务场景中实践了CARP提示词策略。对于希望使用chatgpt类大语言模型上进行数据标注、文本分类和关键词抽取等任务感兴趣的小伙伴可能有帮助。
下面主要按照如下思维导图进行学习分享:
01.背景介绍
调研通过chatgpt/gpt4等大语言模型LLM进行文本分类、关键词抽取等任务,辅助我们标注语料,提升文本分类效果等。
论文资料: https:// arxiv.org/abs/2305.0837 7
项目github地址: http:// github.com/ShannonAI/GP T-CLS-CARP
尽管 GPT-3 等大规模语言模型 (LLM) 取得了显著的成功,但它们在文本分类任务中的性能仍然明显低于经过微调类的模型,主要原因有两个:
(1)缺乏处理复杂语言现象(如强化、对比、反讽等)的推理能力;
(2)在上下文学习中,允许的标记token数量有限。
为了解决这个问题,论文作者构建了一套基于线索推理的CARP(Clue And Reasoning Prompting)方法。整体思路:首先提示LLM大语言模型寻找表面线索,这里的线索可以是关键词、短语、上下文信息、语义、语义关系、语气、引用等;然后根据这些线索词进行推理得到最终决策。
为了解决大模型token限制的问题,CARP使用微调后模型在监督数据集上使用KNN搜索示例用于上下文学习ICL( in-context learning),通过这种方法不仅可以使模型可以利用LLM 的泛化能力,而且还可以使用特定任务下全量标注数据集提供的知识。
通过实验,CARP在五个常用的文本分类公共数据集中有四个达到了SOTA效果。更值得惊喜的是,使用CARP方法每个类仅采样16条的文本分类效果就可以媲美每个类别使用1024条样本的有监督学习模型,使用少量的标注样本就可以达到大量样本的效果,对于我们实际业务场景中,不仅可以减少样本标注数量,节约标注人力,而且还可以有效提升文本分类模型效果。
02.设计prompt
2.1 prompt内容
CARP的prompt内容主要包括以下三部分:
(1)任务描述。以情感分类任务为例,任务描述可以表示为:Classify the overall sentiment of the input as positive or negative;
(2)提供示例。对于few-shot场景需要提供K个示例,主要有两个目的:第一个目的是为LLM模型做决策提供知识,可以有效提升效果;第二个目的是提供LLM模型输出需要遵循的格式,使得文本语言更容易转化成标签;
(3)输入。用于分类的文本输入数据。
2.2 获取示例
对于few-shot场景需要提供示例,论文中主要有两种获取示例的策略:
(1)随机采样。从训练集中每个类别随机采样K条样本;
(2)KNN搜索样本。随机采样策略的优点是比较简单,缺点是很难保证获取的示例和输入样本是语义相关的。为了解决这个问题,通过KNN搜索从训练集中获取和输入样本语义相近的示例。这里分别使用两种encoder来表征文本:
[1]使用对比学习模型SimCSE获取语句embedding。使用Sup-SimCSE-RoBERTa-Large 作为编码器,这种方法的好处在于通过SimCSE可以获取语义相近的样本示例,但是找到的样本可能标签不同。
[2]使用微调后的模型获取语句embedding。使用SimCSE这一类模型虽然可以搜索到语义相似的实例,但是不一定适合特定的文本分类任务。为了解决这个问题,CARP使用训练集微调之后的模型作为KNN搜索的编码器。首先使用训练集在Roberta模型上微调,然后获取[CLS]句向量用于KNN搜索。通过这种方式, 不仅可以利用LLM 的泛化能力,而且还可以使用特定任务下全量标注数据集提供的知识。
03.收集线索和推理
3.1 收集线索和推理流程
3.1.1 收集线索
对于文本序列,线索是像关键词、短语、上下文信息、语义、语义关系、语气、引用等这样的局部事实证据。举例说明:
输入:Steers turns in a snappy screenplay that curls at the edges; it’s so clever you want to hate it.
线索:" snappy", " clever", " want to hate it" are clues for determining the sentiment of the input sentence.
ps:输入文本翻译成中文
google翻译:斯蒂尔斯的剧本充满活力,边缘卷曲;它太聪明了,你想讨厌它。
chatgpt翻译:斯蒂尔斯创作的故事情节犀利而紧凑,弯曲的角度让人着迷;它如此聪明让你不由得想去憎恨它。
3.1.2 推理
推理阶段,考虑到例如否定、强化、反讽等语言现象,LLM需要根据上面得到的线索信息去挖掘更深层观点,拼接局部证据形成最终决定。对于上面的例子进行推理过程:
(1) The phrase "snappy screenplay" implies that the screenplay is of a high quality and is well-crafted.
(2)The phrase "curls at the edges" implies that the screenplay is cleverly written.
(3) The phrase "so clever you want to hate it" is a paradoxical statement, which suggests that the sentiment is positive despite the use of the word "hate".
chatgpt翻译:
(1)“精彩的剧本”一词意味着这个剧本的质量很高,写得很好 ;
(2)“卷边”的这个词语意味着这个剧本是巧妙地写成的;
(3)“太聪明以至于你想恨它”是一个矛盾的陈述,尽管使用了“恨”这个词语,但它暗示了情感是积极的。
3.1.3 做决策
基于上面的线索进行推理,得到如下决策:
Overall, the clues and reasoning process point to a positive sentiment for the input sentence.
将收集线索和推理结合使用具有以下优点:
(1)它促使模型逐步思考和做出决策:收集线索更侧重于关键词等表面特征,而推理则基于表面特征进行更深入的论证。这个过程更好地模拟了人类决策的方式;
(2)收集线索和推理为人类干预提供了一个通道:在少样本学习中,需要在实例中提前准备好线索和推理,我们可以根据需要进行修改。这对于在提示构建阶段进行纠错很有帮助;
(3)从可解释性和不确定性估计的角度来看,少样本学习中的线索和推理是人类可读的影响函数;
(4)在少样本学习中,和数据对(文本、标签)相比,在提示中结合收集线索和推理过程更符合指令调整目标。通过这种方式可以大大降低LLM的训练目标与下游任务的上下文学习之间的差异。
3.2 zero-shot场景下的推理流程
zero-shot场景下不需要提供示例,也就不需要提供CLUES和REASIONS,只需要让模型输出CLUES和REASIONS,Prompt如下:
This is an overall sentiment classifier for opinion snippets.
First, list CLUES (i.e., keywords, phrases, contextual information, semantic relations, semantic meaning, tones, references) for determining the overall sentiment of the input.
Next, deduce a diagnostic reasoning process from clues and the input to determine the overall sentiment.
Finally, determine the sentiment of input as Positive or Negative considering clues, the reasoning process and the input.
INPUT: <text>
CLUES:
REASIONS:
SENTIMENT:
翻译:
这是一个针对意见片段的情感分类器。
首先,列出用于确定输入整体情感的线索(关键字、短语、语境信息、语义关系、语义含义、语调和参考)。
接下来,从提示和输入中推导出诊断推理过程以确定总体情感。
最后,考虑线索,推理过程和输入,确定输入的情感为积极或消极。
下图展示了zero-shot场景下不同prompt方法的文本分类效果,其中a部分是常规prompt方法,b部分是基于思维链的prompt方法,c是论文提出的CARP的prompt方法。
3.3 few-shot场景下的推理流程
few-shot场景下需要提前准备好训练集样本对应的CLUES和REASIONS,这样就可以作为候选信息提供给输入样本。输入样本根据KNN检索找到K条示例用于文本分类。Prompt如下:
This is a sentiment classifier for input opinion snippets.
First,List CLUES(i.e.,keywords,phrases,contextual information, semantic meaning, semantic relationships, tones, references) that support the sentiment determination of the input.
Next, deduce the diagnostic REASONING process from premises (i.e., clues, input) that support the sentiment determination.
Finally, based on clues, the reasoning and the input, categorize the overall SENTIMENT of input as Positive or Negative.
input: <demo-text-1>
clues: <demo-clues-1>
reasoning: <demo-reason-1>
sentiment: <demo-label-word-1>
input: <demo-text-2>
clues: <demo-clues-2>
reasoning: <demo-reason-2>
sentiment: <demo-label-word-2> ... ...
input: <demo-text-n>
clues: <demo-clues-n>
reasoning: <demo-reason-n>
sentiment: <demo-label-word-n>
下图展示了few-shot场景下(使用一条示例)不同prompt方法的文本分类效果:
上图中a部分展示了普通prompt方法,b部分展示了基于思想链Chain-of-Thought(CoT)的prompt方法,c部分展示了CARP的promp方法。可以看出CARP能识别出press the delete key是消极的。
3.4 投票确定最终决策
传统的文本分类模型会得到确定的分类结果,而基于上下文学习的LLM模型生成结果时由于采用多种不同的采样策略会导致多次请求返回结果存在差异,论文中使用如下两种投票策略:
(1)多数投票。将投票频率高的作为最终结果;
(2)加权投票。基于加权求和得到最终投票结果。
04.实验结果
4.1 整体对比不同模型效果
下图对比了五种公共数据集中有监督学习模型、zero-shot场景下三种prompt方法和few-shot场景下使用随机采样、SimCSE的KNN检索和微调模型的KNN检索下的文本分类效果:
从上图实验结果中可以看出:
(1)LLM大语言模型中few-shot效果要明显优于zero-shot;
(2)对于zero-shot场景中,论文提出的CARP提示方法要优于常规的prompt和基于思维链Chain-of-Thought(CoT)的prompt方法;
(3)对于few-shot场景中,使用微调之后的模型进行KNN检索效果(经过投票之后效果更优)要优于随机采样和基于SimCSE获取句向量特征进行KNN检索;
(4)整体来看效果,使用LLM+CARP+few-shot》有监督学习模型》LLM+CoT+few-shot》LLM+zero-shot。
4.2 对比不同样本下模型效果
下图对比了每个类别分别获取n个样本下不同模型的效果:
从上图实验结果中可以看出:少样本情况下,LLM模型效果整体优于有监督学习的微调模型,并且样本数量越小,差距越明显。说明LLM+propmt在小样本情况下有明显的优势,尤其每个类别使用16条样本,LLM模型很容易达到90%的效果。
4.3 对比域自适应效果
下图对比了模型在不同分布数据集下的效果,比如使用SST-2数据集训练模型,分别在SST-2和Yelp测试集上查看模型效果,
从上图中可以看出,有监督学习模型在域自适应方面效果要差于LLM+CARP模型。
05.消融实验
下面对CARP进行消融实验查看模型效果的影响因素。
5.1 示例数量对模型效果的影响
下图是常规prompt和CARP下不同示例数量对模型效果的影响:
上图中左边部分是使用常规prompt在few-shot场景下的模型效果情况,可以看出三种采样策略效果差距不明显;右边部分是CARP在few-shot场景下的模型效果,整体来看效果依次是FT KNN-sampler》SimCSE KNN-sampler》Random sampler。
5.2 示例中不同组件对模型效果的影响
下图展示了示例中text、clue、reason和label对模型效果的影响:
从上图中可以看出,示例中各组件对模型效果影响从大到小依次是text》clue》reason》label。
5.3 不同标签结果词 label words对模型效果的影响
下图展示了使用不同策略的标签结果词对模型效果的影响:
上图中主要对比了以下六种标签结果词:
(1)Position index:标签索引的数字,比如1,2...;
(2)Annotation words:标注词,比如情感分类例子中的positive, negative;
(3)Synonyms words:同义词,比如great, terrible;
(4)Flipped words:反向词,比如用negative代表积极的文本,而positive代表消极的文本;
(5)Random words:随机词,随机从词表中选取词作为标签结果词;
(6)Special tokens:特殊符号的词,比如使用<POS>代表积极类别,<NEG>代表消极类别。
可以发现使用标注词效果是最好的,而反向词会使模型效果急速下降。
5.4 不同线索词对模型效果的影响
线索词主要包括关键词、短语、上下文信息、语义、语义关系、语气、引用等,下面分别对了关键词/短语、上下文信息、语义关系、语气和引用对模型效果的影响,可以看出关键词/短语对模型效果影响最大,引用对模型效果影响最小。
5.5 示例顺序对模型效果的影响
论文作者发现提供的示例顺序对CARP模型的效果也有一定影响,分别对比了随机顺序、从高到低和从低到高三种示例顺序对模型效果的影响,整体来看根据相似度从低到高排序示例模型效果是最好的。
06.将CARP应用到我们实际的业务场景实践
prompt:
这是一个输入文本识别是否和汽车标签有关的分类器。
第一步,列出和汽车标签相关的线索词(即关键词、短语、上下文信息、语义含义、语义关系、语气、参考资料)。
接下来,从已有的线索词和输入中推导出诊断推理过程。
最后,根据线索、推理和输入将输入文本识别为汽车或者“其他”。
示例:
输入:五菱荣光单排和双排有什么区别
线索词:五菱荣光、单排、双排
推理流程:1. 五菱荣光是汽车品牌和车型。
2. 单排和双排可能是指车辆的座位排列方式。
标签:汽车
预测1:
输入:2008年奥迪A6L门板后拆装###
线索词:
以下内容由ChatGPT应答:
:2008年、奥迪、A6L、门板、拆装
推理流程:
1. 奥迪A6L是汽车品牌和车型。
2. “2008年”可能表示车型的年份,说明该车型属于旧款车型。
3. “门板”和“拆装”指的是汽车的构成部分和操作方式。
标签:汽车
预测2:
输入:汽油要加多少合适?汽油有没有保质期?###
线索词
以下内容由ChatGPT应答:
:汽油、加、合适、保质期
推理流程:
1. “汽油”是与汽车相关的物质。
2. “加”可能是指将汽油加入车内。
3. “合适”表示需要确定汽油的加量。
4. “保质期”可能是指汽油的保存时间。
标签:汽车
预测3:
输入:轮胎怎样识别牌子###
线索词
以下内容由ChatGPT应答:
:轮胎、识别、牌子
推理流程:
1. “轮胎”是与汽车相关的物品。
2. “识别”可能是指如何判断轮胎的品牌。
3. “牌子”指的是轮胎的制造商或商标。
标签:汽车
预测4:
输入:07款帕萨特领驭使用说明书 - 百度###
线索词
以下内容由ChatGPT应答:
:07款、帕萨特领驭、使用说明书、百度
推理流程:
1. “07款帕萨特领驭”是汽车的品牌、车型和年份。
2. “使用说明书”是与汽车相关的文献资料。
3. “百度”可能是指在搜索引擎中进行了查询。
标签:汽车
预测5:
输入:广州实行“不动产登记+水、电、燃气”一站式服务###
线索词
以下内容由ChatGPT应答:
:广州、不动产登记、水、电、燃气、一站式服务
推理流程:
1. “广州”是一个城市名称。
2. “不动产登记”是指房产等不动产的登记手续。
3. “水、电、燃气”是指房屋的基础公共设施。
4. “一站式服务”可能是指将多个服务组合在一起,提供便捷、高效的服务。
标签:房地产
我这里告诉chatgpt要限制标签输出:
标签只能是汽车或者其他,
输入:广州实行“不动产登记+水、电、燃气”一站式服务###
线索词
以下内容由ChatGPT应答:
:广州、不动产登记、水、电、燃气、一站式服务
推理流程:
1. “广州”是一个城市名称。
2. “不动产登记”是与房地产相关的手续。
3. “水、电、燃气”是指房屋的基础公共设施。
4. “一站式服务”可能是指将多个服务组合在一起,提供便捷、高效的服务。
标签:其他
预测6:
输入:别妄自菲薄!龚翔宇已足够优秀,瑞士官方肯定龚翔宇有巨星水平###
线索词
以下内容由ChatGPT应答:
:别妄自菲薄、龚翔宇、优秀、瑞士、官方、巨星水平
推理流程:
1. “龚翔宇”是一个人的名字。
2. “优秀”描述龚翔宇在某一方面表现出的特点。
3. “瑞士”是一个国家名称。
4. “官方”可能是指某个机构或组织的官方认定。
5. “巨星水平”是指高水平的表现。
标签:其他
预测7:
输入:详细讲解股票基金的书###
线索词
以下内容由ChatGPT应答:
:详细讲解、股票基金、书
推理流程:
1. “详细讲解”是描述书本的特点。
2. “股票基金”是一个投资品种。
3. “书”是指一种文献资料。
标签:其他
总结及反思
本篇主要介绍了使用chatgpt类大语言模型进行文本分类任务。首先介绍了背景,论文中提出了一种使用LLM模型基于线索收集和推理CARP进行文本分类任务;然后介绍了prompt设计,主要包括任务描述、示例和输入文本,还介绍了三种不同的示例获取方法;接着介绍了收集线索和推理流程;然后通过实验对比了微调模型、zero-shot和few-shot场景细使用三种不同的提示词进行文本分类的效果,还通过消融实验对比了示例数量、示例中不同的组件元素、不同标签结果词、不同线索词以及示例顺序对模型效果的影响。最后在我们实际的业务场景中实践了CARP提示词策略。对于希望使用chatgpt类大语言模型上进行数据标注、文本分类和关键词抽取等任务感兴趣的小伙伴可能有帮助。
最新最全的文章请关注我的微信公众号或者知乎专栏:数据拾光者。
码字不易,欢迎小伙伴们点赞和分享。