LLM能力与应用全解析

一、简介

经过几年时间的发展,大语言模型(LLM)已经从新兴技术发展为主流技术。而以大模型为核心技术的产品将迎来全新迭代。大模型除了聊天机器人应用外,能否在其他领域产生应用价值?在回答这个问题前,需要弄清大模型的核心能力在哪?与这些核心能力关联的应用有哪些?

本文将重点关注以下三个方面:

1、LLM能力解析 2、LLM技术分析 3、LLM案例实践

二、LLM能力解析

 

LLM的核心能力大致分为:生成(Generate)、总结(Summarize)、提取(Extract)、分类(Classify)、检索(Search)与改写(Rewrite)六部分。 

1、生成(Generate)

生成是LLM最核心的能力。当谈论到LLM时,首先可能想到的是其能够生成原始且连贯的文本内容。其能力的建立来源于对大量的文本进行训练,并捕捉了语言的内在联系与人类的使用模式。充分利用模型的生成能力可以完成对话式(chat)&生成式(completion)应用。对于对话式应用,典型应用为聊天机器人,用户输入问题,llm对问题进行响应回答。对于生成式应用,典型应用为文章续写、摘要生成。比如,我们在写一段营销文案时,我们写一部分上下文,LLM可以在此基础上对文案进行续写,直至完成整个段落或整片文章。

【应用】:聊天助手、写作助手、知识问答助手。

2、总结(Summarize)

总结是LLM的重要能力。通过Prompt Engineering,LLM可对用户输入的文本提炼总结。在工作中我们每天会处理大量会议、报告、文章、邮件等文本内容,LLM总结能力有助于快速获取关键信息,提升工作效率。利用其总结提炼能力可以产生许多有价值应用。比如,每次参加线上或线下会议,会后需形成会议记录,并总结会议重要观点与执行计划。LLM利用完备的语音记录可完成会议内容与重要观点的总结。

【应用】:在线视频会议、电话会议内容总结;私有化知识库文档总结;报告、文章、邮件等工作性文本总结。

3、提取(Extract)

文本提取是通过LLM提取文本中的关键信息。比如命名实体提取,利用LLM提取文本中的时间、地点、人物等信息,旨在将文本关键信息进行结构化表示。除此之外,还可用于提取摘录合同、法律条款中的关键信息。

【应用】:文档命名实体提取、文章关键词提取、视频标签生成。

4、分类(Classify)

分类旨在通过LLM对文本类别划分。大模型对文本内容分类的优势在于强语义理解能力与小样本学习能力。也就是说其不需要样本或需要少量样本学习即可具备强文本分类能力。而这与通过大量语料训练的垂域模型相比,在开发成本与性能上更具优势。比如,互联网社交媒体每天产生大量文本数据,商家通过分析文本数据评估对于公众对于产品的反馈,政府通过分析平台数据评估公众对于政策、事件的态度。

【应用】:网络平台敏感内容审核,社交媒体评论情感分析,电商平台用户评价分类。

5、检索(Search)

文本检索是根据给定文本在目标文档中检索出相似文本。最常用的是搜索引擎,我们希望搜索引擎根据输入返回高度相关的内容或链接。而传统方式采用关键词匹配,只有全部或部分关键词在检索文档中命中返回目标文档。这对于检索质量是不利的,原因是对于关键词未匹配但语义高度相关的内容没有召回。在检索应用中,LLM的优势在于能够实现语义级别匹配。

【应用】:文本语义检索、图片语义检索、视频语义检索;电商产品语义检索;招聘简历语义检索。

6、改写(Rewrite)

文本改写是通过LLM对输入文本按照要求进行润色、纠错常见的应用为文本纠错,例如,在稿件撰写、编辑时可能出现词语拼写错误、句子语法错误,利用通过LLM与提示词工程(Prompt Engineering)自动对文本内容纠错。此外,还可用其对文章进行润色处理,使文章在表述上更加清晰流畅。同时,可以还可LLM进行文本翻译。

【应用】:文本纠错、文本润色、文本翻译。

三、LLM技术解析

以上列举了LLM的核心能力以及关联应用,这些应用在技术上如何实现?

1、生成(Generate)

文本生成是给定输入与上下文生成新文本。下面通过简单的例子说明:

import os
from langchain.llms import OpenAI
# 输入openai_api_key
openai_api_key = 'sk-D8rnXN4lDiYE2jyR6Cxxx3BlbkexywbgjUt5vegEeNpz8MF'
os.environ['OPENAI_API_KEY'] = openai_api_key
llm = OpenAI(temperature=0.9)
# 输入
text = "今天是个好天气,"
# 输出
print(llm(text))

输出:

很适合出门散步或者做一些活动。我们可以去公园、湖边或者有趣的地方游玩,享受美丽的自然风景。也可以去户外健身,锻炼身体。亦可以在室内做一些有趣的活动,比如看书、看电影或与朋友共度美好的时光。

以上例子使用的是openAI的gpt-3.5-turbo大语言模型文本生成示例。对于本地化的部署可以替换为chatglm-6b等开源模型。此外,利用prompts可指导LLM完成特定任务,如下文中的总结、分类、提取、改写等任务。

2、总结(Summarize)

如上图,在prompt中增加“总结”提示可指导LLM完成文本总结任务。下面通过简单的例子说明:

import os
from langchain.llms import OpenAI
from langchain import PromptTemplate

# 输入openai_api_key
openai_api_key = 'sk-D8rnXN4lDiYE2jyR6xxxx3BlbkexywbgjUt5vegEeNpz8MF'
os.environ['OPENAI_API_KEY'] = openai_api_key

llm = OpenAI(temperature=0, model_name='gpt-3.5-turbo', openai_api_key=openai_api_key)

template = """
请对以下文本进行总结,以一个5岁孩子能听懂的方式进行回答.
{text}
"""
prompt = PromptTemplate(
    input_variables=["text"],
    template=template,
)
# 输入文本
text = """
ChatGPT是美国人工智能研究实验室OpenAI新推出的一种人工智能技术驱动的自然语言处理工具,使用了Transformer神经网络架构,也是GPT-3.5架构,这是一种用于处理序列数据的模型,拥有语言理解和文本生成能力,尤其是它会通过连接大量的语料库来训练模型,这些语料库包含了真实世界中的对话,使得ChatGPT具备上知天文下知地理,还能根据聊天的上下文进行互动的能力,做到与真正人类几乎无异的聊天场景进行交流。ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。
"""
prompt_format = prompt.format(text=text)
output = llm(prompt_format)
print(output)

 输出:

ChatGPT是一种很聪明的机器人,它可以帮助我们处理文字和语言。它学习了很多对话和文字,所以它知道很多东西。它可以和我们聊天,回答我们的问题,还可以帮我们写邮件、视频脚本、文案、翻译和代码。它就像一个真正的人一样,可以和我们进行交流。

在以上例子中,增加了prompt从而对总结任务进行了描述:“请对以下文本进行总结,以一个5岁孩子能听懂的方式进行回答。”LLM按照要求对文本内容进行了总结。为了提高总结内容的一致性,将温度参数值调低,上述代码设置为0,每次均会输出相同回答。

3、分类(Classify) 

文本分类是自然语言处理中最常见的应用。与小模型相比,大模型在开发周期、模型性能更具优势,该内容会在案例分析中详细说明。下面通过简单的例子说明LLM在情感分类中的应用。 

import os
from langchain.llms import OpenAI
from langchain import PromptTemplate

# 输入openai_api_key
openai_api_key = 'sk-D8rnXN4lDiYE2jyR6xxxx3BlbkexywbgjUt5vegEeNpz8MF'
os.environ['OPENAI_API_KEY'] = openai_api_key

llm = OpenAI(temperature=0, model_name='gpt-3.5-turbo', openai_api_key=openai_api_key)

template = """
请完成情感分类任务,给定一个句子,从['negative','positive']中分配一个标签,只返回标签不要返回其他任何文本.

Sentence: 这真是太有趣了.
Label:positive
Sentence: 这件衣服的材质有点差.
Label:negative

{text}
Label:
"""

prompt = PromptTemplate(
    input_variables=["text"],
    template=template,
)
# 输入
text = """
他刚才说了一堆废话.
"""
prompt_format = prompt.format(text=text)
output = llm(prompt_format)
print(output)

 输出:

negative

在以上的例子中,增加了prompt对分类任务进行了描述:“请完成情感分类任务,给定一个句子,从['negative','positive']中分配一个标签,只返回标签不要返回其他任何文本.”同时,给出了examples,利用llm的in-context learning对模型进行微调。该方式较为重要,有研究表明经过in-context learning微调后的模型在分类任务上性能提升明显。

4、提取(Extract) 

提取文本信息是NLP中常见需求。LLM有时可以提取比传统NLP方法更难提取的实体。上图为LLM Extract示意图,LLM结合prompt对Input text中关键词进行提取。下面通过简单的例子说明LLM在关键信息提取中的应用。

import os
from langchain.llms import OpenAI
from langchain import PromptTemplate

openai_api_key = 'sk-D8rnXN4lDiYE2jyR6xxxx3BlbkexywbgjUt5vegEeNpz8MF'
os.environ['OPENAI_API_KEY'] = openai_api_key

llm = OpenAI(temperature=0, model_name='gpt-3.5-turbo', openai_api_key=openai_api_key)

template = """
请完成关键词提取任务,给定一个句子,从中提取水果名称,如果文中没有水果请回答“文中没有提到水果”.不要回答其他无关内容.

Sentence: 在果摊上,摆放着各式水果.成熟的苹果,香甜的香蕉,翠绿的葡萄,以及紫色的蓝莓.
fruit names: 苹果,香蕉,葡萄,蓝莓

{text}
fruit names:
"""

prompt = PromptTemplate(
    input_variables=["text"],
    template=template,
)

text = """
草莓、蓝莓、香蕉和橙子等水果富含丰富的营养素,包括维生素、纤维和抗氧化剂,对于维持健康和预防疾病有重要作用。
"""

prompt_format = prompt.format(text=text)
output = llm(prompt_format)
print(output)

 输出:

草莓, 蓝莓, 香蕉, 橙子

在以上的例子中,增加了prompt要求LLM能够输出给定文本中的“水果名称”。利用example与in-context learning,LLM能够提取文中关键信息。

5、检索(Search)

  • embedding:对文本进行编码。如上图,将每个text进行向量化表示。
# 加载pdf文档数据
loader = PyPDFLoader("data/ZT91.pdf")
doc = loader.load()
# 数据划分
text_splitter = RecursiveCharacterTextSplitter(chunk_size=3000, chunk_overlap=400)
docs = text_splitter.split_documents(doc)
# 文本embedding
embeddings = OpenAIEmbeddings(openai_api_key=openai_api_key)
docsearch = FAISS.from_documents(docs, embeddings)

similarity:输入文本与底库文本相似性度量检索。如上图中的query embedding search。 

retriever=docsearch.as_retriever(search_kwargs={"k": 5})

 summarize:对检索出的文本进行总结。并得到上图中的search results。

qa = RetrievalQA.from_chain_type(llm=llm, chain_type="stuff", retriever=docsearch.as_retriever(search_kwargs={"k": 5}),
                                 chain_type_kwargs={"prompt": PROMPT})

print("answer:\n{}".format(qa.run(input)))

 LLM语义检索可弥补传统关键词匹配检索不足,在本地知识库与搜索引擎中的语义搜文、以文搜图中存在应用价值。

6、改写(Rewrite)

改写的主要应用为文本纠错与文本润色。通过prompt指导LLM完成改写任务。下面通过简单的例子进行说明:

import os
from langchain.llms import OpenAI
from langchain import PromptTemplate

openai_api_key = 'sk-D8rnXN4lDiYE2jxxxYiT3BlbkFJyEwbgjUt5vegEeNpz8MF'
os.environ['OPENAI_API_KEY'] = openai_api_key

llm = OpenAI(temperature=0, model_name='gpt-3.5-turbo', openai_api_key=openai_api_key)


template = """
请完成文本纠错的任务,给定一段文本,对文本中的错别字或语法错误进行修改,并返回正确的版本,如果文本中没有错误,什么也不要返回.

text: 黄昏,一缕轻烟从烟囱里请缨地飘出来,地面还特么的留有一丝余热,如果说正午像精力允沛的青年,那黄昏就像幽雅的少女,清爽的风中略贷一丝暖意。
correct: 黄昏,一缕轻烟从烟囱里轻轻地飘出来,地面还留有一丝余热,如果说正午像精力充沛的青年,那黄昏就像优雅的少女,清爽的风中略带一丝暖意。
text: 胎头望着天空,只见红彤彤的晚霞己经染红大半片天空了,形状更是千资百态。
correct: 抬头望着天空,只见红彤彤的晚霞己经染红大半片天空了,形状更是千姿百态。

{text}
correct:
"""

prompt = PromptTemplate(
    input_variables=["text"],
    template=template,
)

text = """
孔雀开平是由一大盆菊花安照要求改造而成,它昂首廷胸翩翩起舞。
"""
prompt_format = prompt.format(text=text)
output = llm(prompt_format)
print(output)

 输出

孔雀开屏是由一大盆菊花按照要求改造而成,它昂首挺胸翩翩起舞。

以上为采用gpt-3.5-turbo进行文本纠错。给出了prompt描述与example。以上例子可以发现,llm能够发现文本中错误,并将错误内容修改。

四、LLM案例分析

需求描述:在社交媒体、电商平台、网络直播中每天产生大量文本内容。而这些文本内容中蕴含价值同时可能包含不良信息。比如,商家可以通过分析媒体数据来评估公众对于产品的反馈。再比如,相关机构可通过分析平台数据来了解公众对政策、事件的态度。除此之外,社交网络平台中可能掺杂不良信息、违法言论等网络安全问题。

如何对网络内容进行细粒度情感分析与内容审核

自2023年以来,以chatgpt为代表的大模型在全球范围内持续火热,原因是模型参数量的上升使其语义理解与文本生成能力得到了“涌现”。大模型是否可应用于情感分析与内容审核?

任务描述:情感分析是分析文本中蕴含的情感态度,一般分为积极(positive)/消极(negative)/中性(neutral),从分析维度上可划分为段落、句子以及方面三个级别。内容审核是分析文本中是否存在违规、违法不良言论。两者任务均为文本分类。

1、情感分析 

如上图为cohere情感分类产品设计,用户通过上传用于in-context learning的example可指导LLM调整模型。即在让LLM完成分析任务前,需要先为其打个样。让其按照example的样子完成任务。同时,可在Input中对example进行测试。

2、内容审核 

 

不同形式的内容源经转换器转换为文本形式。经LLM Engine完成语义内容审核。

 

以上为通过LLM对网络语言的测试结果,经过in-context learning,LLM具备语义审核能力。在prompt中每个class仅加入了两个example,如上图的简单测试在8个测试样本中正确命中6个。其能力通过进一步的example扩充有望继续提升。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/197515.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【Docker项目实战】使用Docker部署Plik临时文件上传系统

【Docker实战项目】使用Docker部署Plik 临时文件上传系统 一、Plik介绍1.1 Plik简介1.2 Plik特点 二、本地环境介绍2.1 本地环境规划2.2 本次实践介绍 三、本地环境检查3.1 检查Docker服务状态3.2 检查Docker版本3.3 检查docker compose 版本 四、下载Plik镜像五、部署Plik临时…

手机爬虫用Fiddler详细教程

如果你正在进行手机爬虫的工作,那么一款强大而又实用的网络调试工具Fiddler将会是你的好帮手。今天,我将和大家分享一份详细的Fiddler教程,教你如何使用它来轻松捕获和分析手机App的网络请求。让我们一起来探索Fiddler的功能和操作&#xff0…

P25 C++ const关键字

前言 本期我们要讲的是 C 中的 const 关键字。 const 在改变生成代码方面做不了什么,它有点像类和结构体的可见性,这是一个机制,可以让我们的代码更加干净,并对开发人员写代码强制特定的规则。 const 就像你做出的承诺&#xf…

双馈风机频率二次跌落,永磁风机一次调频火电水电光伏储能直流一次调频,虚拟惯性下垂控制,虚拟同步机VSG控制,二次调频也可继续深入研究

双馈风机(永磁同步风机)虚拟惯性控制下垂控制参与系统一次调频的Matlab/Simulink模型,调频结束后转速回复,造成频率二次跌落SFD。 系统为三机九节点模型(可更换为四机两区域,十机39节点,IEEE39节点,IEEE11…

idea 2023使用技巧(一)

IntelliJ IDEA在业界被公认为最好的java开发工具之一。它能给你良好的开发体验。 idea版本号为2023.2.5。 1 基础操作 1.1索引 idea首次加载项目时,都会创建索引,创建索引的时间跟项目的文件多少成正比。idea的缓存和索引主要是用来加快文件查询&…

Gossip协议理解

概述 Gossip协议,又称epidemic协议,基于流行病传播方式的节点或进程之间信息交换的协议,在分布式系统中被广泛使用。 在1987年8月由施乐-帕洛阿尔托研究中心发表ACM上的论文《Epidemic Algorithms for Replicated Database Maintenance》中…

Python 和 Node.js 之间通信 JSON 数据

更多资料获取 📚 个人网站:ipengtao.com 在实际应用中,不同编程语言之间的通信是常见的需求。Python和Node.js是两个流行且功能强大的编程语言,它们之间使用JSON格式进行数据交换是一种高效和灵活的方式。本文将详细介绍如何在Py…

Java线程通信

线程通信 案例 package com.itheima.d4;public class ThreadTest {public static void main(String[] args) {Desk desk new Desk();//创建3个生产者线程new Thread(() -> {while (true) {desk.put();}}, "厨师1").start();new Thread(() -> {while (true) {…

Gee教程3.实现前缀树路由

需要完成的目标 使用 Trie 树实现动态路由(dynamic route)解析。支持两种模式:name和*filepath,(开头带有:或者*) 这里前缀树的实现修复了Go语言动手写Web框架 - Gee第三天 前缀树路由Router | 极客兔兔​​​​​​ 中路由冲突的bug。 Trie树简介 之前&#xff0…

MySQL--日志

日志 错误日志 错误日志是MySQL中最重要的日志之一,它记录了当mysqld启动和停止时,以及服务器在运行过程中发生任何严重错误时的相关信息 当数据库出现任何故障导致无法正常使用时,建议首先查看此日志。 该日志是默认开启的,默认…

SpringBoot使用动态Banner

SpringBoot使用动态Banner Spring Boot 2.0 提供了很多新特性&#xff0c;其中就有动态 Banner。 1、pom依赖 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://w…

NX二次开发UF_MTX3_vec_multiply 函数介绍

文章作者&#xff1a;里海 来源网站&#xff1a;https://blog.csdn.net/WangPaiFeiXingYuan UF_MTX3_vec_multiply Defined in: uf_mtx.h void UF_MTX3_vec_multiply(const double vec [ 3 ] , const double mtx [ 9 ] , double vec_product [ 3 ] ) overview 概述 Returns…

MySQL索引优化实战一

#插入一些示例数据drop procedure if exists insert_emp;delimiter ;;create procedure insert_emp()begindeclare i int;set i1;while(i<100000)doinsert into employees(name,age,position) values(CONCAT(tqq,i),i,dev);set ii1;end while;end;;delimiter ;call insert_e…

Oracle(2-7)Instance and Media Recovery Structures

文章目录 一、基础知识1、体系结构详解2、Database Files 数据库文件3、Database Other Files 其他数据文件4、Dynamic Views 动态视图5、Large Pool6、DB Buffer Cache,DBWn7、Configuring Tablespaces 配置表空间8、Redo Log Buffer, LGWR 二、基础操作1、查看数据库动态视图…

【开源】基于Vue.js的高校学生管理系统的设计和实现

项目编号&#xff1a; S 029 &#xff0c;文末获取源码。 \color{red}{项目编号&#xff1a;S029&#xff0c;文末获取源码。} 项目编号&#xff1a;S029&#xff0c;文末获取源码。 目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 学生管理模块2.2 学院课程模块2.3 学…

【微服务专题】微服务架构演进

目录 前言阅读对象阅读导航前置知识笔记正文一、系统架构的演变1.1 单体架构1.2 单体水平架构1.3 垂直架构1.4 SOA架构1.5 微服务架构 二、如何实现微服务架构2.1 微服务架构下的技术挑战2.2 微服务技术栈选型2.3 什么是Spring Cloud全家桶2.4 Spring Cloud Alibaba版本选择 学…

合并区间[中等]

一、题目 以数组intervals表示若干个区间的集合&#xff0c;其中单个区间为intervals[i] [starti, endi]。请你合并所有重叠的区间&#xff0c;并返回一个不重叠的区间数组&#xff0c;该数组需恰好覆盖输入中的所有区间。 示例 1&#xff1a; 输入&#xff1a;intervals […

人工智能-产生式系统实验(动物识别)

1.实验目的 1.熟悉知识的表示方法 2.掌握产生式系统的运行机制 3.产生式系统推理的基本方法。 2.实验内容 运用所学知识&#xff0c;设计并编程实现一个小型动物识别系统&#xff0c;能识别虎、金钱豹、斑马、长颈鹿、鸵鸟、企鹅、信天翁等七种动物的产生式系统。 规则库&…

SPSS生存分析:寿命表分析

前言&#xff1a; 本专栏参考教材为《SPSS22.0从入门到精通》&#xff0c;由于软件版本原因&#xff0c;部分内容有所改变&#xff0c;为适应软件版本的变化&#xff0c;特此创作此专栏便于大家学习。本专栏使用软件为&#xff1a;SPSS25.0 本专栏所有的数据文件请点击此链接下…

智能优化算法应用:基于蝙蝠算法无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用&#xff1a;基于蝙蝠算法无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用&#xff1a;基于蝙蝠算法无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.蝙蝠算法4.实验参数设定5.算法结果6.参考文献7.MATLAB…