chatgpt怎么提取论文内容 如何使用Python+ChatGPT批量生成论文

默认分类1年前 (2023)发布 admin
1,037 0
ChatGPT国内版

我们帮大家精选了相关的编程文章,网友松永昌根据主题投稿了本篇教程内容,涉及到、批量生成论文、、批量生成、批量生成相关内容,已被662网友关注,内容中涉及的知识点可以在下方直接下载获取。

参考资料正文内容批量生成用+批量生成论文概述

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

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

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

下载论文

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

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

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

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转文本

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

chatgpt怎么提取论文内容 如何使用Python+ChatGPT批量生成论文

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

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生成概述

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

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

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": ["nn"]
}
tldr_tag = "nn tl;dr:" # 给ChatGPT明确的文本补全意图

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

输出概述

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

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("nn")

集成测试

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

chatgpt怎么提取论文内容 如何使用Python+ChatGPT批量生成论文

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("nn")

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

Page 1:

We meta to model short- in fi as a – . We based on in price to the of our meta-RL . on real data that meta-RL and are more than RL or price alone.

Page 2:

Meta- , such as Logic (ILP) and RL2, can be used to train a agent on a new task with data.

Page 3:

We a meta-RL agent that can adapt to new . We use PPO to train the agent and an LSTM agent. We also use hand- and to the agent’s model. show that the agent .

Page 4:

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

总结

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

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

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

© 版权声明
广告也精彩

相关文章

暂无评论

暂无评论...