如何使用Python+ChatGPT批量生成论文

目录
  • 用Python+ChatGPT批量生成论文概述
  • 下载论文
  • pdf转文本
  • 用GPT-3生成概述
  • 输出概述
  • 集成测试
  • 总结

用Python+ChatGPT批量生成论文概述

做算法研究离不开阅读大量论文。从海量论文中找到需要的论文往往耗费算法团队不少的精力。

ChatGPT官方例子中有一个“TL;DR”摘要生成,非常适合生成论文摘要。

于是我用python+GPT-3 API开发了一个工具,可以直接从arxiv地址生成论文概述。实现步骤如下:

下载论文

第一步,我们要先拿到论文正文。

从arxiv上下载论文非常简单,如果你知道论文编号(比如2302.08996),那么论文的pdf下载地址为:https://arxiv.org/pdf/[论文编号].pdf。我们只需要发起网络请求即可将论文下载到本地。

我这里使用requests库发起网络请求,你可以使用任何你喜欢库完成论文下载。

def download_paper(paper_id: str, file_name: Optional[str] = None) -> Optional[str]:
    """ 根据论文id将论文下载到本地

    Parameters
    -----------
    paper_id: str
        论文id
    file_name: Optional[str]
        本地文件名,如果为空则用论文id做文件名

    Returns
    -------
    result: Optional[str]
        论文下载结果。成功则返回本地文件路径,失败则返回None
    """
    paper_url = f"https://arxiv.org/pdf/{paper_id}.pdf"
    if not file_name:
        file_name = f"{paper_id}.pdf"

    res = requests.get(url=paper_url)
    if res.status_code == 200:
        with open(file_name, "wb") as f:
            f.write(res.content)
            return file_name
    return None

pdf转文本

ChatGPT只接受文本输入,所以拿到论文后,我们需要将pdf格式的论文转换为纯文本。这里给大家推荐一个好用的pdf转文本库——pdfplumber

pdfplumber使用非常简单,只要打开文件,即可通过pdfplumber.pages获取到每一页pdf内容。然后调用pdfplumber.Page类的extract_text()方法就能提取页面的文本。示例代码如下:

def pdf2txt(file_name: str | pdfplumber.PDF, page_start: int, page_end: int) -> str:
    """

    Parameters
    -----------
    file_name: str | pdfplumber.PDF
        pdf文件路径或pdfplumber.PDF实例
    page_start: int
        要转换的起始页页码
    page_end: int
        要转换的结束页页码

    Returns
    -------
    content: str
        转换后的文本
    """
    content = ""
    if isinstance(file_name, str):
        pages = pdfplumber.open(file_name).pages
    elif isinstance(file_name, pdfplumber.PDF):
        pages = file_name.pages
    else:
        raise AttributeError("需要传入pdf路径或PDF对象")
    for page in pages[page_start:page_end]:
        content += page.extract_text()
    return content

上面的代码会逐页提取给定pdf文档指定页码范围内的内容并返回。

用GPT-3生成概述

有了文本,我们就可以用ChatGPT来生成概述了。

首先我们导入openai库,并配置好参数:

import openai

openai.api_key = "YOUR_API_KEY"

TLDRParameter = {
    "model": "text-davinci-003",
    "max_tokens": 2048,
    "temperature": 0.3,
    "top_p": 1.0,
    "frequency_penalty": 0.0,
    "presence_penalty": 0.0,
    "stop": ["\n\n"]
}

tldr_tag = "\n\n tl;dr:" # 给ChatGPT明确的文本补全意图

这里的tldr_tag需要稍微解释一下,这段字符串会添加在我们论文文本的末尾,用于提示ChatGPT我们要做的是上面文本的摘要。为了让ChatGPT能够将论文内容和我们给出的提示区分开来,在参数中我们设置了stop,用于告诉ChatGPT输入到哪里结束。

输出概述

ChatGPT对输入长度是有限制的,因此我们不能一次性将整个论文内容输入进去,需要一页一页得输入并生成每一页的概述。

pages = pdfplumber.open(file_name).pages
for p in pages:
    content = p.extract_text() + tldr_tag
    response = openai.Completion.create(prompt=content, **TLDRParameter)
    print(f"Page1 {index + 1}:\n")
    print(response["choices"][0]["text"])
    print("\n\n")

集成测试

将上面的代码集成到一起,我们就可以得到一个完整可用的论文概述工具

import requests
import pdfplumber
import openai
from typing import Optional

openai.api_key = "YOUR_API_KEY"

TLDRParameter = {
    "model": "text-davinci-003",
    "max_tokens": 2048,
    "temperature": 0.3,
    "top_p": 1.0,
    "frequency_penalty": 0.0,
    "presence_penalty": 0.0,
    "stop": ["\n"]
}

tldr_tag = "\ntl;dr:"

def download_paper(paper_id: str, file_name: Optional[str] = None) -> Optional[str]:
    """ 根据论文id将论文下载到本地

    Parameters
    -----------
    paper_id: str
        论文id
    file_name: Optional[str]
        本地文件名,如果为空则用论文id做文件名

    Returns
    -------
    result: Optional[str]
        论文下载结果。成功则返回本地文件路径,失败则返回None
    """
    paper_url = f"https://arxiv.org/pdf/{paper_id}.pdf"
    if not file_name:
        file_name = f"{paper_id}.pdf"

    res = requests.get(url=paper_url)
    if res.status_code == 200:
        with open(file_name, "wb") as f:
            f.write(res.content)
            return file_name
    return None

if __name__ == '__main__':
    file_name = download_paper('2302.08996')
    pages = pdfplumber.open(file_name).pages
    for index, page in enumerate(pages):
        content = page.extract_text() + tldr_tag
        response = openai.Completion.create(prompt=content, **TLDRParameter)
        print(f"Page {index + 1}:\n")
        print(response["choices"][0]["text"])
        print("\n\n")

我用最新发出的2302.08996做测试,输出如下:

Page 1:

We employ meta reinforcement learning to model short-duration trading in financial markets as a sequential decision-making problem. We incorporate symbolic features based on frequently occurring patterns in price series to improve the performance of our meta-RL algorithm. Preliminary results on real data indicate that meta-RL and logical features are more effective than vanilla RL or primary price features alone.
Page 2:
 Meta-learning techniques, such as Inductive Logic Programming (ILP) and RL2, can be used to train a trading agent on a new task with limited data.
Page 3:
 We propose a meta-RL agent that can rapidly adapt to new reward patterns. We use PPO to train the agent and an LSTM agent. We also use hand-crafted features and learned logical features to augment the agent's neural network model. Results show that the agent outperforms vanilla reinforcement learning.
Page 4:

上面每一页的输出都很好地概括了该页的核心内容,其中第四页为空是因为这一页绝大部分内容是参考文献,ChatGPT也很聪明的没有返回概述。

总结

试用了一天,我认为模型对论文总结得很棒,用这个工具读起论文来效率大增。尽管它永远可能取代实际阅读整篇论文的重要过程,但却可以作为探索发现更广泛有趣科学的工具。

这篇文章更多的是一个概念的证明,如果想大规模用于生产还有很多细节要处理,比如pdf转换的文本的格式,按页转换文本带来得章节错位等问题。然而,我觉得这些问题都可以解决。在ChatGPT的加持下,我认为我们比以往任何时候都更高效地处理更多科学信息。

到此这篇关于用Python+ChatGPT批量生成论文的文章就介绍到这了,更多相关Python+ChatGPT批量生成论文内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • 公众号接入chatGPT的详细教程 附Python源码

    目录 前置准备 域名配置 服务器配置 公众号配置 点击添加配置 前置准备 一个域名 一台服务器 一个公众号 域名配置 在你的域名服务商新建二级域名并绑定服务器主机IP 服务器配置 上传下面的python文件到你的服务器,并修改代码段中相应位置代码(token.api-key.port) import time from flask import Flask,make_response,request import openai from flask import Flask, request f

  • 利用Chatgpt开发一款加减乘除计算器(Python代码实现)

    上次使用 Chatgpt 写爬虫,虽然写出来的代码很多需要修改后才能运行,但Chatgpt提供的思路和框架都是没问题. 这次让 Chatgpt 写一写GUI程序,也就是你常看到的桌面图形程序. 由于第一次测试,就来个简单点的,用Python写用来加减乘除的计算器. 提问:请用Python写一个计算器GUI程序 (代码过长,就不完全展示了) 它告诉我,可以使用Python的tkinter库来实现简单的GUI,这确实是最快捷的方法. 代码执行出来是一个很简答的计算器程序,没有什么UI设计可言. 用起

  • Python+ChatGPT实战之进行游戏运营数据分析

    目录 数据 目标 解决方案 1. DAU 2. 用户等级分布 3. 付费率 4. 收入情况 5. 付费用户的ARPU 总结 最近ChatGPT蛮火的,今天试着让ta写了一篇数据分析实战案例,大家来评价一下! 数据 您的团队已经为您提供了一些游戏数据,包括玩家的行为和收入情况.以下是数据的一些特征: user_id: 玩家ID date: 游戏日期 level: 玩家达到的游戏等级 revenue: 玩家在游戏中花费的总收入 spend: 玩家在游戏中的总支出 目标 您的目标是分析数据,以回答以下

  • Python+ChatGPT制作一个AI实用百宝箱

    目录 注册OpenAI 搭建网站及其框架 AI聊天机器人 AI绘画机器人 ChatGPT最近在互联网掀起了一阵热潮,其高度智能化的功能能够给我们现实生活带来诸多的便利,可以帮助你写文章.写报告.写周报.做表格.做策划甚至还会写代码.只要与文字相关的工作,它几乎都能给出一份满意的答卷. 小编趁着有空上去玩了一下,也发现了其中的强大 那么本篇文章小编就通过streamlit框架来搭建一个AI百宝箱的网页,其中里面集成了一系列功能包括智能聊天机器儿.智能绘画师,大家有兴趣还可以另外添加例如配音等功能,

  • 使用ChatGPT来自动化Python任务

    目录 1.概述 2.内容 2.1 使用ChatGPT来绘制线性回归 2.2 使用Python给微信发信息 2.3 使用Python发送电子邮件 2.4 使用Python开发一个爬虫程序 3.总结 1.概述 最近,比较火热的ChatGPT很受欢迎.今天,笔者为大家来介绍一下ChatGPT能做哪些事情. 2.内容 ChatGPT是一款由OpenAI开发的专门从事对话的AI聊天机器人.它的目标是让AI系统更加自然的与之交互,但它也可以在我们编写代码的时候提供一些帮助. 2.1 使用ChatGPT来绘制

  • 手把手教你在Python里使用ChatGPT

    目录 前言 知识点 实现 代码 后话 前言 近来chatGPT挺火的,也试玩了一下,确实挺有意思.这里记录一下在Python中如何去使用chatGPT. 本篇文章的实现100%基于 chatGPT,我是搬运工无疑了!!! 本片文章比较简单. 知识点 pip install openai 看看 chatGPT的表现: 使用python编写一段发送网络请求的代码 python如何md5 也有抽风的表现: 小明妈妈大小明20岁,20年后小明妈妈大小明多少岁? 一个蛋糕切成8块我吃不完,切成4块刚刚好?

  • 如何使用Python+ChatGPT批量生成论文

    目录 用Python+ChatGPT批量生成论文概述 下载论文 pdf转文本 用GPT-3生成概述 输出概述 集成测试 总结 用Python+ChatGPT批量生成论文概述 做算法研究离不开阅读大量论文.从海量论文中找到需要的论文往往耗费算法团队不少的精力. ChatGPT官方例子中有一个“TL;DR”摘要生成,非常适合生成论文摘要. 于是我用python+GPT-3 API开发了一个工具,可以直接从arxiv地址生成论文概述.实现步骤如下: 下载论文 第一步,我们要先拿到论文正文. 从arxi

  • 利用Python脚本批量生成SQL语句

    通过Python脚本批量生成插入数据的SQL语句 原始SQL语句: INSERT INTO system_user (id, login_name, name, password, salt, code, createtime, email, main_org, positions, status, used, url, invalid, millis, id_card, phone_no, past, end_date, start_date) VALUES ('6', 'db', 'db',

  • Python如何批量生成和调用变量

    这几天写代码中遇到的一个常见问题,在Python中如何批量的生成一些变量,如生成变量X1, X2, X3,并在后续的方法中调用,完成赋值.取值等操作.这个问题也算是常见的吧,之前遇到过,也不了了之了.而这次遇到了同样的问题,虽然是创建三个变量数量较少,但从代码维护和易读性的角度考虑,需要使用一些恰当的手段,来避免重复写三次同样代码带来的弊端.一百次,一万次?总不能复制这么多次吧.(为何不复制?详情参考软件工程中的软件维护). 因此有必要养成良好的习惯,而不是复制三次同样的代码. 使用Locals

  • 用Python实现批量生成法务函代码

    目录 情境问题 代码实现: 总结 情境问题 小王是一名法务专员,工作中会处理所在公司的侵权事件并向侵权方发送法务函. 他会按照[法务函模板.docx] Word 文件给[封号名单.xlsx]工作簿中的每个封号人员生成一份法务函. 实现这个结果,他需要手动将[封号名单.xlsx]工作簿中的封号人员的名字和微信号添加到[法务函模板.docx] Word 文件对应的位置上,并将[法务函模板.docx] Word 文件另存为新的文件. 封号人员的人数有多少,他就得重复多少次.以第一个封号人员为例,实现过

  • Python实现自动生成请假条

    目录 需求描述 逻辑分析 代码实现 哈喽兄弟们,今天咱们来实现用Python来批量生成请假条,这回既学了东西又做了事情,两不误~ 本文就将基于一个真实的办公案例进行讲解如何提取Excel内容并创建Word 主要将涉及以下三个知识点 openpyxl 读取 Excel 文件 python-docx 写入 Word 文件 python-docx 各类样式的设计和调整 需求描述 你是公司的底层小虾米,前段时间收集了公司各个部门的请假信息汇总表如下: 现在你需要根据表格中每个人的信息依次生成各自的请假条

  • 利用Python批量生成任意尺寸的图片

    实现效果 通过源图片,在当前工作目录的/img目录下生成1000张,分别从1*1到1000*1000像素的图片. 效果如下: 目录结构 实现示例 # -*- coding: utf-8 -*- import threading from PIL import Image image_size = range(1, 1001) def start(): for size in image_size: t = threading.Thread(target=create_image, args=(s

  • Python操作Word批量生成文章的方法

    下面通过COM让Python与Word建立连接实现Python操作Word批量生成文章,具体介绍请看下文: 需要做一些会议记录.总共有多少呢?五个地点x7个月份x每月4篇=140篇.虽然不很重要,但是140篇记录完全雷同也不好.大体看了一下,此类的记录大致分为四段.于是决定每段提供四种选项,每段从四选项里随机选一项,拼凑成四段文字,存成一个文件.而且要打印出来,所以准备生成一个140页的Word文档,每页一篇. 需要用到win32com模块(下载链接: http://sourceforge.ne

  • python批量生成本地ip地址的方法

    本文实例讲述了python批量生成本地ip地址的方法.分享给大家供大家参考.具体分析如下: 这段代码用于在本地计算机上生成本地ip地址绑定到网卡,生成的是一个bat的批处理文件,运行此批处理文件,可以通过ipconfig查看 #!/usr/bin/python2.7 # -*- coding: utf-8 -*- # Filename: AddIPAliases.py import re,sys,socket,struct # 1. 判断IP地址是否合法: 2. 判断用户输入的IP是否在Clas

  • python+jinja2实现接口数据批量生成工具

    在做接口测试的时候,我们经常会遇到一种情况就是要对接口的参数进行各种可能的校验,手动修改很麻烦,尤其是那些接口参数有几十个甚至更多的,有没有一种方法可以批量的对指定参数做生成处理呢. 答案是肯定的! python的jinja2模板库可以很好的满足我们的需求,通过维护一个原始数据模板,将我们想要动态生成的变量模板化,就可以实现需求. 现在我们有这样的一个请求数据 { "abc":"123", "p2p":"123", "

  • Python批量生成特定尺寸图片及图画任意文字的实例

    因为工作需要生成各种大小的图片,所以写了个小脚本,顺便支持了下图画文字内容. 具体代码如下: from PIL import Image, ImageDraw, ImageFont ''' Auth: Xiaowu Chen Note: Please install [pillow] library before run this script. ''' def draw_image(new_img, text, show_image=False): text = str(text) draw

随机推荐