超越界限:大模型应用领域扩展,探索文本分类、文本匹配、信息抽取和性格测试等多领域应用

news2024/9/24 21:20:11

超越界限:大模型应用领域扩展,探索文本分类、文本匹配、信息抽取和性格测试等多领域应用

随着 ChatGPT 和 GPT-4 等强大生成模型出现,自然语言处理任务方式正在逐步发生改变。鉴于大模型强大的任务处理能力,未来我们或将不再为每一个具体任务去 finetune 一个模型,而是使用同一个大模型,对不同任务设计其独有的 prompt,以解决不同的任务问题。在该实验中,我们将基于清华开源大模型 ChatGLM-6B, 提供多个自然语言处理任务如何通过 prompt 来实现 zero-shot 的案例,

希望能够对你有所启发。

1. 环境安装

由于 ChatGLM 需要的环境和该项目中其他实验中的环境有所不同,因此我们强烈建议您创建一个新的虚拟环境来执行该目录下的全部代码。

下面,我们将以 Anaconda 为例,展示如何快速搭建一个环境:

  1. 创建一个虚拟环境,您可以把 llm_env 修改为任意你想要新建的环境名称:
conda create -n llm_env python=3.8
  1. 激活新建虚拟环境并安装响应的依赖包:
conda activate llm_env
pip install -r requirements.txt

2. 文本分类任务(Text Classification)

llm_classification.py 文件中,我们展示了一个根据描述内容,对描述物体进行类型识别的例子。

2.1 任务描述

如下所示,我们从 百度百科 中选择了几段描述文本:

1. 加拿大(英语/法语:Canada),首都渥太华,位于北美洲北部。东临大西洋,西濒太平洋,西北部邻美国阿拉斯加州,南接美国本土,北靠北冰洋。气候大部分为亚寒带针叶林气候和湿润大陆性气候,北部极地区域为极地长寒气候。
2. 《琅琊榜》是由山东影视传媒集团、山东影视制作有限公司、北京儒意欣欣影业投资有限公司、北京和颂天地影视文化有限公司、北京圣基影业有限公司、东阳正午阳光影视有限公司联合出品,由孔笙、李雪执导,胡歌、刘涛、王凯、黄维德、陈龙、吴磊、高鑫等主演的古装剧。
3. 《满江红》是由张艺谋执导,沈腾、易烊千玺、张译、雷佳音、岳云鹏、王佳怡领衔主演,潘斌龙、余皑磊主演,郭京飞、欧豪友情出演,魏翔、张弛、黄炎特别出演,许静雅、蒋鹏宇、林博洋、飞凡、任思诺、陈永胜出演的悬疑喜剧电影。
4. 布宜诺斯艾利斯(Buenos Aires,华人常简称为布宜诺斯)是阿根廷共和国(the Republic of Argentina,República Argentina)的首都和最大城市,位于拉普拉塔河南岸、南美洲东南部、河对岸为乌拉圭东岸共和国。
5. 张译(原名张毅),1978217日出生于黑龙江省哈尔滨市,中国内地男演员。1997年至2006年服役于北京军区政治部战友话剧团。2006年,主演军事励志题材电视剧《士兵突击》。

我们期望模型能够帮我们识别出这 5 句话中,每一句话描述的是一个什么 类型 的物体。

这 5 段描述分别节选自:

['加拿大', '《琅琊榜》', '《满江红》', '布宜诺斯艾利斯', '张译']

因此,我们期望模型输出的结果为:

['国家', '电视剧', '电影', '城市', '人物']

2.2 prompt 设计

对于大模型来讲,prompt 的设计非常重要,一个 明确 的 prompt 能够帮助我们更好从大模型中获得我们想要的结果。

在该任务的 prompt 设计中,我们主要考虑 2 点:

  • 需要向模型解释什么叫作「文本分类任务」

  • 需要让模型按照我们指定的格式输出

为了让模型知道什么叫做「文本分类」,我们借用 Incontext Learning 的方式,先给模型展示几个正确的例子:

>>> User: "岳云鹏,本名岳龙刚,1985年4月15日出生于河南省濮阳市南乐县,中国内地相声、影视男演员。"['人物', '书籍', '电视剧', '电影', '城市', '国家'] 里的什么类别?
>>> Bot: 人物
>>> User: "《三体》是刘慈欣创作的长篇科幻小说系列,由《三体》《三体2:黑暗森林》《三体3:死神永生》组成,第一部于2006年5月起在《科幻世界》杂志上连载,第二部于2008年5月首次出版,第三部则于2010年11月出版。"['人物', '书籍', '电视剧', '电影', '城市', '国家'] 里的什么类别?
>>> Bot: 书籍
...

其中,User 代表我们输入给模型的句子,Bot 代表模型的回复内容。

注意:上述例子中 Bot 的部分也是由人工输入的,其目的是希望看到在看到类似 User 中的句子时,模型应当做出类似 Bot 的回答。

这部分提供给模型看的 例子,在代码开头中的 class_example 变量里:

# 提供所有类别以及每个类别下的样例
class_examples = {
        '人物': '岳云鹏,本名岳龙刚,1985年4月15日出生于河南省濮阳市南乐县,中国内地相声、影视男演员 [1]  。2005年,首次登台演出。2012年,主演卢卫国执导的喜剧电影《就是闹着玩的》。2013年在北京举办相声专场。',
        '书籍': '《三体》是刘慈欣创作的长篇科幻小说系列,由《三体》《三体2:黑暗森林》《三体3:死神永生》组成,第一部于2006年5月起在《科幻世界》杂志上连载,第二部于2008年5月首次出版,第三部则于2010年11月出版。',
        '电视剧': '《狂飙》是由中央电视台、爱奇艺出品,留白影视、中国长安出版传媒联合出品,中央政法委宣传教育局、中央政法委政法综治信息中心指导拍摄,徐纪周执导,张译、张颂文、李一桐、张志坚、吴刚领衔主演,倪大红、韩童生、李建义、石兆琪特邀主演,李健、高叶、王骁等主演的反黑刑侦剧。',
        '电影': '《流浪地球》是由郭帆执导,吴京特别出演、屈楚萧、赵今麦、李光洁、吴孟达等领衔主演的科幻冒险电影。影片根据刘慈欣的同名小说改编,故事背景设定在2075年,讲述了太阳即将毁灭,毁灭之后的太阳系已经不适合人类生存,而面对绝境,人类将开启“流浪地球”计划,试图带着地球一起逃离太阳系,寻找人类新家园的故事。',
        '城市': '乐山,古称嘉州,四川省辖地级市,位于四川中部,四川盆地西南部,地势西南高,东北低,属中亚热带气候带;辖4区、6县,代管1个县级市,全市总面积12720.03平方公里;截至2021年底,全市常住人口315.1万人。',
        '国家': '瑞士联邦(Swiss Confederation),简称“瑞士”,首都伯尔尼,位于欧洲中部,北与德国接壤,东临奥地利和列支敦士登,南临意大利,西临法国。地处北温带,四季分明,全国地势高峻,矿产资源匮乏,森林及水力资源丰富,总面积41284平方千米,全国由26个州组成(其中6个州为半州)。'
    }
...

您可以在该变量中 修改 / 添加 自定义的例子。

2.3 运行结果

运行程序:

python llm_classification.py 

运行程序后,程序将自动下载模型,由于模型参数较大(6B),下载到本地大概需要 12G+ 的磁盘空间,请确保磁盘有充足的空间。

此外,加载模型大概需要 13G 左右的显存,如果您显存不够,可以参考 这里 进行模型量化加载以缩小模型成本。

模型推理结果如下:

3. 文本匹配任务(Text Matching)

llm_text_matching.py 文件中,我们展示了一个根据句子对进行语义匹配的例子。

3.1 任务描述

如下所示,我们构造了几个短文本对:

1. ('如何修改头像', '可以通过上传图片修改头像吗')
2. ('王者荣耀司马懿连招', '王者荣耀司马懿有什么技巧')
3. ('王者荣耀司马懿连招', '历史上司马懿真的被诸葛亮空城计骗了吗')

我们期望模型能够帮我们识别出这 3 对句子中,哪几对描述的是相似的语言。

我们期望模型输出的结果为:

['相似', '相似', '不相似']

3.2 prompt 设计

同样,在该任务的 prompt 设计中,我们主要考虑 2 点:

  • 需要向模型解释什么叫作「文本匹配任务」

  • 需要让模型按照我们指定的格式输出

为了让模型知道什么叫做「相似语言判断任务」,我们借用 Incontext Learning 的方式,先给模型展示几个正确的例子:

>>> User: 句子一: 如何找回账号\n句子二: 账号丢了怎么办\n上面两句话是相似的语义吗?
>>> Bot:>>> User: 如何找回账号\n句子二: 附近最近的饭店\n上面两句话是相似的语义吗?
>>> Bot: 不是
...

其中,User 代表我们输入给模型的句子,Bot 代表模型的回复内容。

注意:上述例子中 Bot 的部分也是由人工输入的,其目的是希望看到在看到类似 User 中的句子时,模型应当做出类似 Bot 的回答。

这部分提供给模型看的 例子,在代码开头中的 examples 变量里:

# 提供相似,不相似的语义匹配例子
examples = {
    '是': [
        ('如何找回账号', '账号丢了怎么办'),
    ],
    '不是': [
        ('如何找回账号', '附近最近的饭店'),
        ('李白技能讲解', '静夜思作者是李白吗')
    ]
}
...

您可以在该变量中 修改 / 添加 自定义的例子。

3.3 运行结果

运行程序:

python llm_text_matching.py 

运行程序后,程序将自动下载模型,由于模型参数较大(6B),下载到本地大概需要 12G+ 的磁盘空间,请确保磁盘有充足的空间。

此外,加载模型大概需要 13G 左右的显存,如果您显存不够,可以参考 这里 进行模型量化加载以缩小模型成本。

模型推理结果如下:

4. 信息抽取(Information Extraction)

llm_information_extraction.py 文件中,我们展示了一个信息抽取例子。

4.1 任务描述

首先,我们定义信息抽取的 schema:

# 定义不同实体下的具备属性
schema = {
    '人物': ['姓名', '性别', '出生日期', '出生地点', '职业', '获得奖项', '实体类型'],
    '书籍': ['作者', '类型', '发行时间', '定价', '实体类型'],
    '电视剧': ['导演', '演员', '题材', '出品方', '实体类型']
}

随后,我们从百度百科中找到一些句子,并利用模型进行信息抽取:

1. 张译(原名张毅),1978217日出生于黑龙江省哈尔滨市,中国内地男演员。1997年至2006年服役于北京军区政治部战友话剧团。2006年,主演军事励志题材电视剧《士兵突击》。
2. 《琅琊榜》是由山东影视传媒集团、山东影视制作有限公司、北京儒意欣欣影业投资有限公司、北京和颂天地影视文化有限公司、北京圣基影业有限公司、东阳正午阳光影视有限公司联合出品,由孔笙、李雪执导,胡歌、刘涛、王凯、黄维德、陈龙、吴磊、高鑫等主演的古装剧。

4.2 prompt 设计

同样,在该任务的 prompt 设计中,我们主要考虑 2 点:

  • 需要向模型解释什么叫作「信息抽取任务」

  • 需要让模型按照我们指定的格式(json)输出

为了让模型知道什么叫做「信息抽取」,我们借用 Incontext Learning 的方式,先给模型展示几个正确的例子:

>>> User: 岳云鹏,本名岳龙刚,1985415日出生于河南省濮阳市南乐县,中国内地相声、影视男演员。2005年,首次登台演出。2012年,主演卢卫国执导的喜剧电影《就是闹着玩的》。2013年在北京举办相声专场。提取上述句子中“人物”(姓名, 性别, 出生日期, 出生地点, 职业, 获得奖项)类型的实体,并按照JSON格式输出,上述句子中没有的信息用['原文中未提及']来表示,多个值之间用','分隔。
>>> Bot: {"姓名": ["岳云鹏"], "性别": ["男"], "出生日期": ["1985年4月15日"], "出生地点": ["河南省濮阳市南乐县"], "职业": ["相声演员", "影视演员"], "获得奖项": ["原文中未提及"]}
...

其中,User 代表我们输入给模型的句子,Bot 代表模型的回复内容。

注意:上述例子中 Bot 的部分也是由人工输入的,其目的是希望看到在看到类似 User 中的句子时,模型应当做出类似 Bot 的回答。

这部分提供给模型看的 例子,在代码开头中的 ie_examples 变量里:

# 提供一些例子供模型参考
ie_examples = {
        '人物': [
                    {
                        'content': '岳云鹏,本名岳龙刚,1985年4月15日出生于河南省濮阳市南乐县,中国内地相声、影视男演员。',
                        'answers': {
                                        '姓名': ['岳云鹏'],
                                        '性别': ['男'],
                                        '出生日期': ['1985年4月15日'],
                                        '出生地点': ['河南省濮阳市南乐县'],
                                        '职业': ['相声演员'],
                                        '获得奖项': ['原文中未提及']
                            }
                    }
        ],
        '书籍': [
                    {
                        'content': '《三体》是刘慈欣创作的长篇科幻小说系列,由《三体》《三体2:黑暗森林》《三体3:死神永生》组成,第一部于2006年5月起在《科幻世界》杂志上连载,第二部于2008年5月首次出版,第三部则于2010年11月出版。',
                        'answers': {
                                        '书名': ['《三体》'],
                                        '作者': ['刘慈欣'],
                                        '类型': ['长篇科幻小说'],
                                        '发行时间': ['2006年5月', '2008年5月', '2010年11月'],
                                        '定价': ['原文中未提及']
                            }
                    }
        ]
}
...

您可以在该变量中 修改 / 添加 自定义的例子。

4.3 运行结果

运行程序:

python llm_information_extraction.py 

运行程序后,程序将自动下载模型,由于模型参数较大(6B),下载到本地大概需要 12G+ 的磁盘空间,请确保磁盘有充足的空间。

此外,加载模型大概需要 13G 左右的显存,如果您显存不够,可以参考 这里 进行模型量化加载以缩小模型成本。

模型推理结果如下:

5.MBTI性格测试

This repo is used for MBTI testing of LLM according to this paper.

  • Install

First, install all packages with:

pip install -r requirements.txt
  • Get MBTI for LLMs

run get_llms_mbti.py to download models and test their mbti.

You can specify models by following code:

if __name__ == '__main__':
    from transformers import (
        AutoModelForCausalLM, 
        AutoTokenizer, 
        LlamaTokenizer
    )

    models = [
        'baichuan-inc/Baichuan-7B',
        'bigscience/bloom-7b1',
    ]

    tokenizers = [
        'baichuan-inc/Baichuan-7B',
        'bigscience/bloom-7b1',
    ]

    ...

Then you will get the mbti results at llms_mbti.json file, looks like:

{
 "baichuan": {
        "details": {
            "E": 15,
            "I": 6,
            "S": 13,
            "N": 14,
            "T": 10,
            "F": 13,
            "J": 9,
            "P": 13
        },
        "res": "ENFP"
    },
    "bloom7b": {
        "details": {
            "E": 8,
            "I": 13,
            "S": 14,
            "N": 12,
            "T": 13,
            "F": 11,
            "J": 12,
            "P": 10
        },
        "res": "ISTJ"
    }
}

Note: This method only works for thoses models on huggingface.

As for ChatGPT and GPT4, you need to obtain the corresponding results by calling the OpenAI API with following prompts:

根据你内心最真实的想法回答下列``括起来的问题,只用回答选项的编号,如:A 或 B。

``
在社交聚会中,你
A.有时感到郁闷
B.常常乐在其中
``
    1. Visualization

we also provide a web app to visualize mbti reuslts for each model according to llms_mbti.json.

You can start web with:

streamlit run web.py --server.port 8001

then use ip:port (e.g. 127.0.0.1:8001) in browser to see this page.

6. 调试平台(Playground)

为了更方便的调试 prompt,您可以使用代码中包含的 Playground 进行 prompt 设计:

streamlit run playground.py --server.port 8001

随即,您可以在浏览器中输入 机器ip:8001 打开 Playground:

项目链接:https://github.com/HarderThenHarder/transformers_tasks/blob/main/LLM/zero-shot/readme.md

更多优质内容请关注公号:汀丶人工智能;会提供一些相关的资源和优质文章,免费获取阅读。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C#获取DataTable的前N行数据然后按指定字段排序

获取DataTable的前N行数据然后按指定字段排序 可以使用以下三种代码: 第一种:使用Linq DataTable dtLast dataTable.AsEnumerable().Take(count).OrderBy(dataRow > Convert.ToInt32(dataRow["Sequence"])).CopyToDataTable(); 第二种…

Mysql-InnoDB记录结构

一、InnoDB简介 InnoDB 采取的方式是:将数据划分为若干个页,以页作为磁盘和内存之间交互的基本单位,InnoDB中页的大小一般为 16 KB。也就是在一般情况下,一次最少从磁盘中读取16KB的内容到内存中,一次最少把内存中的1…

Hadoop入门机安装hadoop

0目录 1.Hadoop入门 2.linux安装hadoop 1.Hadoop入门 定义 Hadoop是一个由Apache基金会所开发的分布式系统基础架构。用户可以在不了解分布式底层细节的情况下,开发分布式程序。充分利用集群的威力进行高速运算和存储。 优势 高可靠性:Hadoop底层维护多…

智慧互联,有序充电--多场景充电

企业微电网能效及充电管理解决方案 安科瑞 崔丽洁 1、企业需求(目的地充电) 站在企业的角度,除了要主动承担碳达峰、碳中和的社会责任,也需要考虑自身的经营和利润,需要结合企业的现状进行改造 企业微电网平台——与…

OLED透明屏直销:高性价比与便捷购买的首选

OLED透明屏作为一项创新的显示技术,其透明度和高清晰度的特点使其在各个领域得到了广泛应用。 在购买OLED透明屏时,传统的渠道如经销商和代理商可能增加额外的成本和环节。 然而,OLED透明屏的直销模式为消费者提供了更便捷和高性价比的购买…

iOS App逆向之:iOS应用砸壳技术

在iOS逆向,有一项关键的技术叫做“iOS砸壳”(iOS App Decryption)。自iOS 5版本以来,苹果引入了应用程序加密机制,使得大部分应用都需要进行砸壳操作才能进行逆向分析。因此作为开发者、逆向工程师和安全研究人员都需要…

PostgreSQL下载路径与安装步骤

PgSQL介绍 PgSQL和MySQL一样是一种关系模型的数据库,全称为PostgreSQL 数据库。 优势:PgSQL是一种可扩展、可靠、可定制的数据库管理系统,具有良好的数据完整性和安全性,支持多种操作系统,包括 Linux、Windows、MacOS …

每日汇评:尽管乐观情绪持续,原油价格仍失去控制

1、由于市场等待美联储的意见,原油价格正在停滞不前; 2、疲弱的美国PMI数据似乎盖过了EIA库存数据; 3、市场准备从美联储那里寻找线索,美原油会突破支撑位吗? 在美国数据令人失望之后,原油价格在隔夜下跌,这导致市场…

API接口开发管理平台--多领域企业数字化管理的解决方案

随着数字化时代的到来,企业需要进行数字化转型才能更好地适应市场需求和用户需求。而API接口则是数字化转型中的重要组成部分,可以帮助企业更好地管理信息,提高效率。本文将介绍一种解决方案--API接口开发管理平台,该平台开发出多…

如何将IP定位SDK添加到您的 Android 应用程序

IP定位的功能加入对于APP开发者及运营者有着重要作用,主要用于阻止恶意访问、用户来源分析、个性化内容推送等多个方面。通过API接口您可以准确快速地查询IP地址的归属地、宿主信息、应用场景、Whois等网络空间地图数据。通过埃文科技提供的软件开发工具包(SDK)&…

专业磁力种子下载工具 qBittorrent 安装架设教程linux开启24小时挂机下载

专业磁力种子下载工具 qBittorrent 安装架设教程linux开启24小时挂机下载 大家好我是艾西,今天跟大家分享一个下载工具又是涨知识的一天! 前言 有时候需要通过种子下载点P2P资源,在国内,一般我们都是用迅雷。但是迅雷的反吸血太…

【TPC开证报错】-出库单数据无法匹配【成品产出单明细】

今天可信平台有个证书无法开证,送审报错。 其实业务逻辑是销售出库的单据,也会有个成品入库单。 成品入库单里面的所有箱码,都需要包装记录。 这个就是MES系统里的包装报工(之前自动化缺失的包装数据,曾经导过一次。…

5 个适用于 Windows 的最佳屏幕录制软件

如果您是 Windows 用户,您可能遇到过“打印屏幕”按钮并不总是能够捕获屏幕截图的情况。这就是可靠的屏幕截图工具可以派上用场的地方。 屏幕截图工具是一种软件应用程序,可让您快速轻松地捕获和保存计算机屏幕的图像。在这篇文章中,我们将重…

Wireshark数据抓包分析之传输层协议(TCP协议)

一、实验目的: 通过使用wireshark对TCP协议的数据包的抓取分析TCP协议的具体内容 二、预备知识: 1.需要了解TCP协议的三次握手过程 2.需要了解TCP协议的四次挥手的过程 三、网络拓扑 四、实验过程: part1:3次握手和4次挥手的数据包的获取 …

自动驾驶SLAM技术第四章习题2

在g2o的基础上改成ceres优化,高博都写好了其他的部分, 后面改ceres就很简单了. 这块我用的是ceres的自动求导,很方便,就是转化为模板仿函数的时候有点麻烦, 代码部分如下 ceres_type.h : ceres优化核心库的头文件 这个文件写的内…

【考研数学】矩阵、向量与线性方程组解的关系梳理与讨论

文章目录 引言一、回顾二、梳理齐次线性方程组非齐次线性方程组 写在最后 引言 两个原因让我想写这篇文章,一是做矩阵题目的时候就发现这三货经常绑在一起,让人想去探寻其中奥秘;另一就是今天学了向量组的秩,让我想起来了之前遗留…

IIS之WEB服务器详解(上)

文章目录 一、WEB服务器介绍二、服务端口号三、WEB服务发布软件四、部署WEB服务器1. 配置静态IP地址2. 安装 IIS-WEB 插件 一、WEB服务器介绍 WEB服务器也称为网页服务器或HTTP服务器,网页服务器大家都能理解,为什么称为HTTP服务器呢? 因为…

Leetcode每日一题:1267. 统计参与通信的服务器

原题 这里有一幅服务器分布图,服务器的位置标识在 m * n 的整数矩阵网格 grid 中,1 表示单元格上有服务器,0 表示没有。 如果两台服务器位于同一行或者同一列,我们就认为它们之间可以进行通信。 请你统计并返回能够与至少一台其…

beego的安装及bee工具的使用

1、beego 的安装 beego 的安装是典型的 Go 安装包的形式: go get github.com/astaxie/beego 常见问题: git 没有安装,请自行安装不同平台的 git,如何安装请自行搜索。 git https 无法获取,请配置本地的 git&#x…

搭建个让你呼吸顺畅-ChatGPT

目录 ChatGPT使用时可能会遇到 1.请待命,我们正在检查您的浏览器... 2. 访问被拒绝。抱歉,您已被阻止 3. ChatGPT 目前已满负荷运转 4. 此内容可能违反我们的内容政策。 5.出了点问题。 6. 蹦字慢吞吞,卡顿不流畅,不知道的…