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

news/2024/10/25 19:29:47/

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

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

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

在这里插入图片描述

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

文章目录

    • 下载论文
    • pdf转文本
    • 用GPT-3生成概述
    • 输出概述
    • 集成测试
    • 总结

下载论文

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

从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论文idfile_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_namereturn 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.PDFpdf文件路径或pdfplumber.PDF实例page_start: int要转换的起始页页码page_end: int要转换的结束页页码Returns-------content: str转换后的文本"""content = ""if isinstance(file_name, str):pages = pdfplumber.open(file_name).pageselif isinstance(file_name, pdfplumber.PDF):pages = file_name.pageselse:raise AttributeError("需要传入pdf路径或PDF对象")for page in pages[page_start:page_end]:content += page.extract_text()return content

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

用GPT-3生成概述

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

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

import openaiopenai.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_tagresponse = 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 Optionalopenai.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论文idfile_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_namereturn Noneif __name__ == '__main__':file_name = download_paper('2302.08996')pages = pdfplumber.open(file_name).pagesfor index, page in enumerate(pages):content = page.extract_text() + tldr_tagresponse = 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的加持下,我认为我们比以往任何时候都更高效地处理更多科学信息。


http://www.ppmy.cn/news/949439.html

相关文章

两会代表热议采用ChatGPT指导论文写作:防范抄袭的探索与思考

人工智能 | AGI | AIGC 深度学习 | API | GPT-4 随着深度学习、高性能计算、数据分析、数据挖掘、LLM、PPO、NLP等技术的快速发展,ChatGPT得到快速发展。ChatGPT之所以引起关注,在于它作为一个大模型,有效结合了大数据、大算力、强算法。 在…

如何用ChatGPT提取论文概要

云智AI助手 2023-05-02 23:16 [请点击上方“云智AI”关注我们 │ 谢谢支持 ] Cloud wisdom, AI assistant 我们在写小论文、学术论文或者毕业大论文时,有没有过这种体验:看着论文题目挺符合,但是通过下载看到论文后,发现与想到或…

如何用 ChatGPT 写论文?

听说,拥有顶会论文就仿佛自带“流量”。 很多大厂的校招已经明晃晃的说明有顶会等buff加成的同学优先考虑,甚至可以免笔试直接面试! 当然不仅仅是毕业进大厂需要高区论文作为背书,顶会自带流量的加持作用还体现在:本科…

论文阅读:Visual ChatGPT: Talking, Drawing and Editing with Visual Foundation Models

目录 摘要 引言 相关工作 Visual ChatGPT Prompt Managing of Sysytem Principles M(P) Prompt Managing of Foundation Models M(F) Prompt Managing of User Querie M(Qi) Prompt Managing of Foundation Model Out-puts M(F(A(j)i )) 实验 实验设置 摘要 Visual C…

用chatgpt写论文可行吗,查重率会达到多少

AI工具国内体验,关注:码视野,回复关键字:1002 选题 题目:物联网技术在智能家居系统中的应用研究 概要生成 问:请以“物联网技术在智能家居系统中的应用研究”为课题,写一篇物联网专业本科毕业论…

ChatGPT论文考试满绩,高等教育该如何应对人工智能挑战?

近日,ChatGPT引发热议。一方面,ChatGPT表现亮眼,有大学生利用ChatGPT在开卷课堂上取得满绩的优异成绩;另一方面,部分院校、学术期刊却对ChatGPT在高等教育领域的推进保持谨慎态度,甚至有高校明确禁止这项工…

ChatGPT|必看 10 篇论文

ChatGPT 是一种专注于对话生成的语言模型。它能够根据用户的文本输入,产生相应的智能回答。这个回答可以是简短的词语,也可以是长篇大论。其中 GPT 是 Generative Pre-trained Transformer(生成型预训练变换模型)的缩写。 本人已…

ChatGPT相关博客与论文

本人最近收集了一些关于ChatGPT的博客以及论文,每日持续更新中,希望大家多多指正, github地址: https://github.com/wshzd/ChatGPT-Summary/blob/main/README.md ChatGPT相关博客如下: ChatGPT相关论文如下&#xf…