chatgpt实现NLP基本任务(实体识别、关系抽取、属性抽取、事件抽取、文本分类)

文章目录

  • 前置:基础函数
  • 一、实体识别
  • 二、关系抽取
  • 三、属性抽取
  • 四、事件抽取
  • 五、文本分类
  • 六、可能存在的问题(报错)

前置:基础函数

import openai
import time
from tqdm import tqdmdef chatgpt_function(content, key=None):openai.api_key = keyprint("问题为:{}".format(content))try:response = openai.ChatCompletion.create(model="gpt-3.5-turbo",messages=[{"role": "system", "content": "你是一个自然语言处理模型,用于完成NLP基础任务"},{"role": "user", "content": content}],temperature=0.1)except openai.error.APIConnectionError as error:print(error)time.sleep(120)response = openai.ChatCompletion.create(model="gpt-3.5-turbo",messages=[{"role": "system", "content": "你是一个自然语言处理模型,用于完成NLP基础任务"},{"role": "user", "content": content}],temperature=0.1)return response["choices"][0]["message"]["content"]

一、实体识别

抽取文本:
驻港部队从1993年初开始组建,1996年1月28日组建完毕,1997年7月1日0时进驻香港,取代驻港英军接管香港防务,驻港军费均由中央人民政府负担。《中华人民共和国香港特别行政区驻军法》规定了驻香港部队的职责为防备和抵抗侵略,保卫香港特别行政区的安全以及在特别时期(战争状态、香港进入紧急状态时 )根据中央人民政府决定在香港特别行政区实施的全国性法律的规定履行职责。

代码:

# 实体识别
def entity_extraction(sentence):entities = ["时间", "地点", "人物", "国家地区", "组织机构"]prompt = "你现在需要完成一个实体识别任务,定义的实体类别有:" + "、".join(entities) + "\n要求:1、输出格式表示为实体名:实体类型;2、输出的每个结果用换行符分割;3请从给定的句子中抽取,不要自行总结。\n" + f"句子:{sentence}"result = chatgpt_function(prompt, key="your key")print("实体识别完毕!")print("答案为:\n{}".format(result))return result

结果:
驻港部队:组织机构
1993年初:时间
1996年1月28日:时间
1997年7月1日0时:时间
香港:地点
驻港英军:组织机构
中央人民政府:组织机构
中华人民共和国香港特别行政区驻军法:组织机构
防备和抵抗侵略:组织机构
保卫香港特别行政区的安全:组织机构
特别时期:时间
战争状态:时间
香港进入紧急状态时:时间
中央人民政府决定:组织机构
香港特别行政区:地点
全国性法律:组织机构

二、关系抽取

抽取文本:
糖尿病是一种常见的慢性疾病,主要症状包括多饮、多尿、乏力、体重下降等。发病人群通常是肥胖、家族病史、不良饮食习惯等高风险人群。治疗方法主要包括定期血糖检测、饮食控制、锻炼、药物治疗和胰岛素注射。治愈周期因不同患者而异,但坚持正确的治疗和生活方式改变,能有效控制病情、预防并发症的发生。

代码:

# 关系抽取
def relation_extraction(sentence):relations = ["疾病-症状-症状", "疾病-发病人群-发病人群", "疾病-治愈周期-治愈周期", "疾病-治疗方法-治疗方法"]prompt = "你现在需要完成一个关系抽取任务,定义的关系三元组有:" + "、".join(relations) + "\n要求:1、输出格式表示为头实体-关系-尾实体;2、输出的每个结果用换行符分割;3请从给定的句子中抽取,不要自行总结。\n" + f"句子:{sentence}"result = chatgpt_function(prompt, key="your key")print("关系抽取完毕!")print("答案为:\n{}".format(result))return result

结果:
糖尿病-症状-多饮
糖尿病-症状-多尿
糖尿病-症状-乏力
糖尿病-症状-体重下降
糖尿病-发病人群-肥胖
糖尿病-发病人群-家族病史
糖尿病-发病人群-不良饮食习惯
糖尿病-治疗方法-定期血糖检测
糖尿病-治疗方法-饮食控制
糖尿病-治疗方法-锻炼
糖尿病-治疗方法-药物治疗
糖尿病-治疗方法-胰岛素注射
糖尿病-治愈周期-因不同患者而异
糖尿病-治愈周期-坚持正确的治疗和生活方式改变

三、属性抽取

抽取文本:
该款智能手机搭载高通骁龙处理器,内置5000mAh电池,支持快充功能,采用6.5英寸全高清显示屏,照方面具备6400万像素后置摄像头和1600万素前置摄像头。操作系统为Android 11,存储容量64GB,可扩展至512GB。
代码:

# 属性抽取
def property_extraction(sentence):properties = ["处理器", "电池容量", "功能", "屏幕尺寸", "分辨率", "后置摄像头像素", "前置摄像头像素", "操作系统", "存储容量"]prompt = "你现在需要完成一个属性抽取任务,定义的属性有:" + "、".join(properties) + "\n要求:1、输出格式表示为属性名-属性值;2、输出的每个结果用换行符分割;3请从给定的句子中抽取,不要自行总结。\n" + f"句子:{sentence}"result = chatgpt_function(prompt, key="your key")print("属性抽取完毕!")print("答案为:\n{}".format(result))return result

结果:
处理器-高通骁龙处理器
电池容量-5000mAh
功能-快充功能
屏幕尺寸-6.5英寸
分辨率-全高清
后置摄像头像素-6400万像素
前置摄像头像素-1600万像素
操作系统-Android 11
存储容量-64GB

四、事件抽取

抽取文本:
当地时间7月5日,俄罗斯铁路公司发布消息表示,俄罗斯铁路网站和移动应用程序遭受大规模黑客攻击。
代码:

# 事件抽取
def event_extraction(sentence):event_types = ["黑客攻击", "台风", "恐怖袭击"]event_roles = ["时间", "地点", "事件主体", "事件客体", "造成影响"]prompt = "你现在需要完成一个事件抽取任务,定义的事件类型有:" + "、".join(event_types) + ",定义的事件论元有:" + "、".join(event_roles) + "\n要求:1、首先输出事件类型并换行,输出事件论元格式表示为论元名-内容;2、输出的每个结果用换行符分割;3请从给定的句子中抽取,不要自行总结。\n" + f"句子:{sentence}"result = chatgpt_function(prompt, key="your key")print("事件抽取完毕!")print("答案为:\n{}".format(result))return result

结果:
事件类型:黑客攻击

事件论元:
时间-当地时间7月5日
地点-俄罗斯
事件主体-俄罗斯铁路公司
事件客体-俄罗斯铁路网站和移动应用程序
造成影响-大规模黑客攻击

五、文本分类

抽取文本:
中国国家女子足球队将于7月7日从广州出发,飞赴澳大利亚阿德莱德队伍大本营,踏上2023年女足世界杯之旅。抵达澳大利亚之后,队伍还计划于13日和17日分别与巴西国家女子足球队和哥伦比亚国家女子足球队进行热身赛。
代码:

# 文本分类
def text_classification(sentence):types = ["体育", "军事", "娱乐"]prompt = "你现在需要完成一个文本分类任务,定义的文本类型有:" + "、".join(types) + "\n要求:1、仅输出文本类型。\n" + f"句子:{sentence}"result = chatgpt_function(prompt, key="your key")print("文本分类完毕!")print("答案为:\n{}".format(result))return result

结果:
体育

六、可能存在的问题(报错)

1.需要挂梯子
2.可能挂了梯子仍然会报错,解决办法是修改openai的源码,增加代理地址。
在这里插入图片描述
可见:https://blog.csdn.net/weixin_56572465/article/details/129971406
3.还有这些报错:openai.error.ServiceUnavailableError: The server is overloaded or not ready yet.

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

30.RocketMQ之消费者拉取消息源码

highlight: arduino-light 消息拉取概述 消息消费模式有两种模式:广播模式与集群模式。 广播模式比较简单,每一个消费者需要拉取订阅主题下所有队列的消息。本文重点讲解集群模式。 在集群模式下,同一个消费者组内有多个消息消费者&#xff0…

【Linux】—— 浅谈进程优先级

本期,我们将来聊聊的是关于进程优先级的相关知识!!! 目录 序言 (一)基本概念 (二)查看系统进程 1、PRI and NI 2、PRI vs NI (三)设置优先级 序言 首先…

使用docker安装Nacos,远程连接nacos报错,please check server x.x.x.x ,port 9848 is available

报错: please check server 127.0.0.1 ,port 9848 is available 原因: 当nacos客户端升级为2.x版本后,新增了gRPC的通信方式,新增了两个端口。这两个端口在nacos原先的端口上(默认8848),进行一定偏移量自动生成.。 当客户端升级成2.x版本时&…

传统图像处理之图像美化——图像金字塔

代码实战:图像融合 我将肯巴.沃克和约翰.沃尔融合在了一起。 具体见注释。 import numpy as np import cv2 import scipy.ndimage as ndimageimg cv2.imread("1.png")img1 cv2.imread("2.png")imgcv2.resize(img,(192,192)) img1cv2.resiz…

BERT 论文精读与理解

1.论文题目 BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding 2.论文摘要 本文引入了一种名为 BERT 的新语言表示模型,它代表 Transformers 的双向编码器表示。与最近的语言表示模型(Peters et al., 2018a&#xf…

DRF+Vue.JS前后端分离项目实例(上):使用 Django-Rest-Framework快速实现 RESTful API 接口编程

1. RESTFul API 接口需求及设计 本文以学生信息查询功能为例,采用前后端分离架构,要求后端提供RESTFul 接口。 1.1 本例要求提供如下查询功能: 列表查询、单条查询添加学生信息更改学生信息删除学生信息 1.2 数据库student表结构如下&…

本地部署 ChatPPT

本地部署 ChatPPT 1. 什么是 ChatPPT2. Github 地址3. 安装 Miniconda34. 创建虚拟环境5. 安装 ChatPPT6. 运行 ChatPPT 1. 什么是 ChatPPT ChatPPT由chatgpt提供支持,它可以帮助您生成PPT/幻灯片。支持中英文输出。 2. Github 地址 https://github.com/huimi24/…

开发中易犯错的事务问题

1.不指定rollbackFor 使用spring的声明式事务(即Transactional注解)时,如果不指定rollbackFor,那么当程序发生Error时,事务将不会回滚!!!显然这将导致数据不一致! 如下述…

动态规划--Fibonacci数列 III

描述 众所周知,Fibonacci数列是一个著名数列。它的定义是: 本题要求采用第三种方法:简单的动态规划。 用数组把求出来的 Fibonacci 数列保存下来,以免后面要的时候再算一次。 输入描述 每行一个整数 i ,表示 Fibona…

Linux C程序开发,多线程编程、网络编程

目录 多线程编程 网络编程 Linux C程序开发是指在Linux操作系统下使用C语言进行开发的过程。Linux是一种开源的操作系统,具有稳定性、安全性和灵活性等优点,因此在很多领域都得到了广泛的应用。 多线程编程 多线程编程是指在一个程序中同时运行多个线…

Neo4J 特性CQL语句,函数,Springboot集成

Neo4J Neo4J Neo4J一、Neo4J相关介绍1.为什么需要图数据库方案1:Google方案2:Facebook 2.特性和优势3.什么是Neo4j4.Neo4j数据模型图论基础属性图模型Neo4j的构建元素 5.软件安装 二、CQL语句1.CQL简介2.CREATE 命令3.MATCH 命令4.RETURN 子句5.MATCH和R…

Spark—通过Java、Scala API实现WordCount案例的基本操作

实验原理 Spark的核心就是RDD,所有在RDD上的操作会被运行在Cluster上,Driver程序启动很多Workers,Workers在(分布式)文件系统中读取数据后转化为RDD(弹性分布式数据集),然后对RDD在…