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

news2024/10/7 8:30:31

文章目录

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

前置:基础函数

import openai
import time
from tqdm import tqdm


def chatgpt_function(content, key=None):
    openai.api_key = key
    print("问题为:{}".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.coloradmin.cn/o/720499.html

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

相关文章

前端学习——jsDay1

Day1 JavaScript是什么&#xff1f; 实现点击按钮改变颜色 <!DOCTYPE html> <html lang"zh-CN"><head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"…

vue 移动端开发vw适配方案rem适配方案 + vant框架 + unocss|tailwindcss

写在前面的话&#xff1a;看了这篇文章&#xff0c;有些东西名词啥的不懂的&#xff0c;或者有疑问的推荐百度&#xff0c;因为写的太多真的显得很啰嗦&#xff01; 1.移动端开发适配 目前移动端适配&#xff0c;在市面上主流适配方案无非就两种&#xff0c;rem方案和vw方案。…

大禹智库:下一代向量数据库————具备在线化,协作化,可视化,自动化和安全互信的向量数据库

目录 一、在线化 二、协作化 三、可视化 四、自动化 五、安全互信 结论&#xff1a; 行业分析报告&#xff1a;下一代向量数据库的特征 摘要&#xff1a; 向量数据库是一种用于存储和处理向量数据的数据库系统。随着人工智能和大数据技术的快速发展&#xff0c;向量数据…

原生js实现for循环占位符绑定数据,类似模拟vue循环渲染数据

let ar [{ label: 显示文本1, value: 1 },{ label: 显示文本2, value: 2 },{ label: 显示文本3, value: 3 },{ label: 显示文本4, value: 4 },{ label: 显示文本5, value: 5 },], html , tpl <p>{value}&#xff1a;{label}</p>, dom document.querySelector(&…

MySQL安装及使用图文教程(超详细版本)

1、下载 下载地址&#xff1a;MySQL :: Download MySQL Installer 本文选择安装包安装版本 2、 安装 1&#xff09;双击安装包启动安装程序&#xff0c;点击“Next”按钮&#xff0c;如下图&#xff1a; 2&#xff09;点击“Execute”按钮 3&#xff09;点击“Next”按钮 4&a…

PHP 校园新闻网站系统mysql数据库web结构apache计算机软件工程网页wamp

一、源码特点 PHP 校园新闻网站系统 是一套完善的web设计系统&#xff0c;对理解php编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S模式开发。 下载地址https://download.csdn.net/download/qq_41221322/87999771https://downlo…

leetcode 141.环形链表(快慢指针追击问题)

⭐️ 往期相关文章 &#x1f4ab;链接1&#xff1a;链表分割 &#x1f4ab;链接2&#xff1a;链表中倒数第k个结点(快慢指针问题) &#x1f4ab;链接3&#xff1a;leetcode 876.链表的中间结点(快慢指针问题) &#x1f4ab;链接4&#xff1a;leetcode 206.反转链表 &#x1f4…

Linux网络、磁盘、内存、日志监控

文章目录 1、CPU性能监控1.2、平均负载基础1.3、平均负载与 CPU 使用率1.4、监控命令top命令mpstat命令pidstat场景一&#xff1a;CPU 密集型进程场景二&#xff1a;I/O 密集型进程场景三&#xff1a;大量进程的场景1.5、CPU上下文切换1.6、 遇到CPU利用率高该如何排查1.7、根据…

八.图像处理与光学之图像几何变换算法(最近邻域插值)

八.图像处理与光学之图像几何变换算法(最近邻域插值) 8.0 前言 ​ 图像几何变换是图像处理中非常基础实用的技能,主要包括图片位移、缩放、镜像、剪切、放射变换等,在对图像进行空间变换的过程中,典型的情况是在对图像进行放大,旋转处理的时候,图像会出现失真的现象。这…

Python进阶 - 迭代器

目录 什么是迭代 可迭代对象 什么是迭代器 迭代器实现迭代 for in 循环的实现 什么是迭代 使用for循环遍历取值的过程叫做迭代 可迭代对象 标准概念&#xff1a;在类里面定义__iter__方法&#xff0c;并使用该类创建的对象就是可迭代对象 简单记忆&#xff1a;使用for循…

vue3使用表格、列表的拖拽排序

常量变量声明都已省略。。。。自己定义 1.效果 <a-tablesize"small":columns"sourceColumns":data-source"sourceData"bordered:pagination"SourceTableConfig.pagination ? objArray.sourcePagination : false"v-if"Source…

uniapp快速开发小程序全流程

uniapp快速开发小程序全流程 完整项目代码&#xff1a;https://gitee.com/Zifasdfa/ziyi-app 欢迎fork与star 1 项目效果及环境准备 1.1 项目效果 本文主要使用uniapp实现一个简单的app应用 1.2 环境准备&项目初始化 ①node环境&#xff1a;去node.js官网下载稳定版的nod…

Android 实现透明度

开发时&#xff0c;UI上的一些布局总需要设置他是有一定的透明度的&#xff0c;有些UI不会给AHEX的代码&#xff0c;只有无透明度的HEX颜色代码&#xff0c;我也懒得去算&#xff0c;每次都要去网上查&#xff0c;所有今天自己总结一份&#xff0c;下次懒得再去找了。 1.颜色C…

群测群防体系建设自然灾害风险识别预警监测建设方案

实现感知全域覆盖实现监测全面汇聚实现风险早期识别实现预报预警精细精准实现预警靶向发布实现全过程监测预警 健全完善水旱、地质、森林草原、气象、地震、农业等灾害监测感知手段&#xff0c;形成空、天、地一体化全覆盖的自然灾害监测感知网络体系。 基于空、天、地全覆盖…

Segment Anything:突破边界的图像分割新技术解析

Segment Anything论文地址&#xff1a;https://arxiv.org/pdf/2304.02643.pdf Segment Anything&#xff1a;突破边界的图像分割新技术解析 论文背景Segment Anything任务方法Segment Anything 模型架构图像编码器&#xff08;Image Encoder&#xff09;提示编码器&#xff08;…

黑马微服务课程cloud-demo项目出现No instances available for userservice错误解决办法

错误描述 如果你的cloud-demo项目当输入http://localhost:8080/order/101&#xff0c;想查看订单编号为101的数据&#xff0c;网页前端显示如下错误 IDEA显示错误&#xff1a; 07-05 16:39:16:251 ERROR 10056 — [nio-8080-exec-1] o.a.c.c.C.[.[.[/].[dispatcherServlet] …

ElasticSearch - 批量更新bulk死锁问题排查 | 京东云技术团队

一、问题系统介绍 监听商品变更MQ消息&#xff0c;查询商品最新的信息&#xff0c;调用BulkProcessor批量更新ES集群中的商品字段信息; 由于商品数据非常多&#xff0c;所以将商品数据存储到ES集群上&#xff0c;整个ES集群共划分了256个分片&#xff0c;并根据商品的三级类目…

Elasticsearch脚本查询

Elasticsearch脚本查询 什么/为什么 Scripting是Elasticsearch支持的一种专门用于复杂场景下支持自定义编程的强大的脚本功能&#xff0c;ES支持多种脚本语言&#xff0c;如painless&#xff0c;其语法类似于Java,也有注释、关键字、类型、变量、函数等&#xff0c;其就要相对…

AI绘画:Stable Diffusion 终极炼丹宝典:从入门到精通

本文收集于教程合集&#xff1a;AIGC从入门到精通教程汇总 我是小梦&#xff0c;以浅显易懂的方式&#xff0c;与大家分享那些实实在在可行之宝藏。 历经耗时数十个小时&#xff0c;总算将这份Stable Diffusion的使用教程整理妥当。 从最初的安装与配置&#xff0c;细至界面…

fdisk和df -h的区别以及如何看懂和提取信息

前几天要查看linux系统磁盘大小&#xff0c;但是发现fdisk和df -h出来的大小和信息不一样&#xff0c;了解了一下linux的磁盘分区和内存大小&#xff0c;查阅了相关资料&#xff0c;总结以下信息&#xff1a; 一、相关理念 在计算机中&#xff0c;存放信息的主要存储设备就是…