文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

怎么使用Python+ChatGPT批量生成论文

2023-07-05 06:16

关注

这篇文章主要介绍了怎么使用Python+ChatGPT批量生成论文的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇怎么使用Python+ChatGPT批量生成论文文章都会有所收获,下面我们一起来看看吧。

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

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

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

怎么使用Python+ChatGPT批量生成论文

于是我用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 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).pagesfor 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 requestsimport pdfplumberimport openaifrom 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        论文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 Noneif __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也很聪明的没有返回概述。

关于“怎么使用Python+ChatGPT批量生成论文”这篇文章的内容就介绍到这里,感谢各位的阅读!相信大家对“怎么使用Python+ChatGPT批量生成论文”知识都有一定的了解,大家如果还想学习更多知识,欢迎关注编程网行业资讯频道。

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     807人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     351人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     314人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     433人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     221人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯