最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時(shí)間:2023年02月27日 09:32:03   作者:JarodYv  
這篇文章主要介紹了用Python+ChatGPT批量生成論文,我用python+GPT-3?API開(kāi)發(fā)了一個(gè)工具,可以直接從arxiv地址生成論文概述,需要的朋友可以參考下

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

做算法研究離不開(kāi)閱讀大量論文。從海量論文中找到需要的論文往往耗費(fèi)算法團(tuán)隊(duì)不少的精力。

ChatGPT官方例子中有一個(gè)“TL;DR”摘要生成,非常適合生成論文摘要。

在這里插入圖片描述

于是我用python+GPT-3 API開(kāi)發(fā)了一個(gè)工具,可以直接從arxiv地址生成論文概述。實(shí)現(xiàn)步驟如下:

下載論文

第一步,我們要先拿到論文正文。

從arxiv上下載論文非常簡(jiǎn)單,如果你知道論文編號(hào)(比如2302.08996),那么論文的pdf下載地址為:https://arxiv.org/pdf/[論文編號(hào)].pdf。我們只需要發(fā)起網(wǎng)絡(luò)請(qǐng)求即可將論文下載到本地。

我這里使用requests庫(kù)發(fā)起網(wǎng)絡(luò)請(qǐng)求,你可以使用任何你喜歡庫(kù)完成論文下載。

def download_paper(paper_id: str, file_name: Optional[str] = None) -> Optional[str]:
    """ 根據(jù)論文id將論文下載到本地

    Parameters
    -----------
    paper_id: str
        論文id
    file_name: Optional[str]
        本地文件名,如果為空則用論文id做文件名

    Returns
    -------
    result: Optional[str]
        論文下載結(jié)果。成功則返回本地文件路徑,失敗則返回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轉(zhuǎn)文本

ChatGPT只接受文本輸入,所以拿到論文后,我們需要將pdf格式的論文轉(zhuǎn)換為純文本。這里給大家推薦一個(gè)好用的pdf轉(zhuǎn)文本庫(kù)——pdfplumber。

pdfplumber使用非常簡(jiǎn)單,只要打開(kāi)文件,即可通過(guò)pdfplumber.pages獲取到每一頁(yè)pdf內(nèi)容。然后調(diào)用pdfplumber.Page類的extract_text()方法就能提取頁(yè)面的文本。示例代碼如下:

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

    Parameters
    -----------
    file_name: str | pdfplumber.PDF
        pdf文件路徑或pdfplumber.PDF實(shí)例
    page_start: int
        要轉(zhuǎn)換的起始頁(yè)頁(yè)碼
    page_end: int
        要轉(zhuǎn)換的結(jié)束頁(yè)頁(yè)碼

    Returns
    -------
    content: str
        轉(zhuǎn)換后的文本
    """
    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對(duì)象")
    for page in pages[page_start:page_end]:
        content += page.extract_text()
    return content

上面的代碼會(huì)逐頁(yè)提取給定pdf文檔指定頁(yè)碼范圍內(nèi)的內(nèi)容并返回。

用GPT-3生成概述

有了文本,我們就可以用ChatGPT來(lái)生成概述了。

首先我們導(dǎo)入openai庫(kù),并配置好參數(shù):

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明確的文本補(bǔ)全意圖

這里的tldr_tag需要稍微解釋一下,這段字符串會(huì)添加在我們論文文本的末尾,用于提示ChatGPT我們要做的是上面文本的摘要。為了讓ChatGPT能夠?qū)⒄撐膬?nèi)容和我們給出的提示區(qū)分開(kāi)來(lái),在參數(shù)中我們?cè)O(shè)置了stop,用于告訴ChatGPT輸入到哪里結(jié)束。

輸出概述

ChatGPT對(duì)輸入長(zhǎng)度是有限制的,因此我們不能一次性將整個(gè)論文內(nèi)容輸入進(jìn)去,需要一頁(yè)一頁(yè)得輸入并生成每一頁(yè)的概述。

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

集成測(cè)試

將上面的代碼集成到一起,我們就可以得到一個(gè)完整可用的論文概述工具

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]:
    """ 根據(jù)論文id將論文下載到本地

    Parameters
    -----------
    paper_id: str
        論文id
    file_name: Optional[str]
        本地文件名,如果為空則用論文id做文件名

    Returns
    -------
    result: Optional[str]
        論文下載結(jié)果。成功則返回本地文件路徑,失敗則返回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")

我用最新發(fā)出的2302.08996做測(cè)試,輸出如下:

Page 1:

 We employ meta reinforcement learning to model short-duration trading in ?nancial 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:

上面每一頁(yè)的輸出都很好地概括了該頁(yè)的核心內(nèi)容,其中第四頁(yè)為空是因?yàn)檫@一頁(yè)絕大部分內(nèi)容是參考文獻(xiàn),ChatGPT也很聰明的沒(méi)有返回概述。

總結(jié)

試用了一天,我認(rèn)為模型對(duì)論文總結(jié)得很棒,用這個(gè)工具讀起論文來(lái)效率大增。盡管它永遠(yuǎn)可能取代實(shí)際閱讀整篇論文的重要過(guò)程,但卻可以作為探索發(fā)現(xiàn)更廣泛有趣科學(xué)的工具。

這篇文章更多的是一個(gè)概念的證明,如果想大規(guī)模用于生產(chǎn)還有很多細(xì)節(jié)要處理,比如pdf轉(zhuǎn)換的文本的格式,按頁(yè)轉(zhuǎn)換文本帶來(lái)得章節(jié)錯(cuò)位等問(wèn)題。然而,我覺(jué)得這些問(wèn)題都可以解決。在ChatGPT的加持下,我認(rèn)為我們比以往任何時(shí)候都更高效地處理更多科學(xué)信息。

到此這篇關(guān)于用Python+ChatGPT批量生成論文的文章就介紹到這了,更多相關(guān)Python+ChatGPT批量生成論文內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 利用Python實(shí)現(xiàn)熱力圖的繪制

    利用Python實(shí)現(xiàn)熱力圖的繪制

    熱力圖,是一種通過(guò)對(duì)色塊著色來(lái)顯示數(shù)據(jù)的統(tǒng)計(jì)圖表。繪圖時(shí),需指定顏色映射的規(guī)則。本文主要用Python來(lái)實(shí)現(xiàn)熱力圖的制作,需要的可以參考一下
    2022-09-09
  • python實(shí)現(xiàn)抽獎(jiǎng)小程序

    python實(shí)現(xiàn)抽獎(jiǎng)小程序

    這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)抽獎(jiǎng)小程序,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-05-05
  • 一行代碼讓 Python 的運(yùn)行速度提高100倍

    一行代碼讓 Python 的運(yùn)行速度提高100倍

    python一直被病垢運(yùn)行速度太慢,但是實(shí)際上python的執(zhí)行效率并不慢,慢的是python用的解釋器Cpython運(yùn)行效率太差。這篇文章主要介紹了一行代碼讓 Python 的運(yùn)行速度提高100倍的相關(guān)知識(shí),需要的朋友可以參考下
    2018-10-10
  • python腳本實(shí)現(xiàn)查找webshell的方法

    python腳本實(shí)現(xiàn)查找webshell的方法

    這篇文章主要介紹了python腳本實(shí)現(xiàn)查找webshell的方法,是很實(shí)用的一個(gè)功能,需要的朋友可以參考下
    2014-07-07
  • Linux下將Python的Django項(xiàng)目部署到Apache服務(wù)器

    Linux下將Python的Django項(xiàng)目部署到Apache服務(wù)器

    這篇文章主要介紹了Python的Django項(xiàng)目部署到Apache服務(wù)器上的要點(diǎn)總結(jié),文中針對(duì)的是wsgi連接方式,需要的朋友可以參考下
    2015-12-12
  • python源文件的字符編碼知識(shí)點(diǎn)詳解

    python源文件的字符編碼知識(shí)點(diǎn)詳解

    在本篇文章里小編給大家整理的是一篇關(guān)于python源文件的字符編碼知識(shí)點(diǎn)詳解,有興趣的朋友們可以學(xué)習(xí)下。
    2021-03-03
  • Python使用技巧之實(shí)現(xiàn)Excel轉(zhuǎn)為PDF

    Python使用技巧之實(shí)現(xiàn)Excel轉(zhuǎn)為PDF

    這篇文章主要為大家詳細(xì)介紹了使用第三方Python庫(kù)Spire.XLS?for?Python?實(shí)現(xiàn)Excel轉(zhuǎn)PDF的簡(jiǎn)單方法,文中的示例代碼講解詳細(xì),需要的可以參考下
    2023-11-11
  • python的類class定義及其初始化方式

    python的類class定義及其初始化方式

    這篇文章主要介紹了python的類class定義及其初始化方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-05-05
  • Python裝飾器用法實(shí)例分析

    Python裝飾器用法實(shí)例分析

    這篇文章主要介紹了Python裝飾器用法,結(jié)合實(shí)例形式分析了帶參數(shù)裝飾器、無(wú)參數(shù)裝飾器等相關(guān)實(shí)現(xiàn)與使用技巧,需要的朋友可以參考下
    2019-01-01
  • python代碼如何實(shí)現(xiàn)切換中英文輸入法

    python代碼如何實(shí)現(xiàn)切換中英文輸入法

    這篇文章主要介紹了python代碼如何實(shí)現(xiàn)切換中英文輸入法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-11-11

最新評(píng)論

大余县| 黄龙县| 许昌市| 桃园市| 永登县| 高台县| 丰镇市| 环江| 木里| 渝中区| 镇原县| 涟源市| 河源市| 福泉市| 永修县| 安泽县| 康定县| 丽水市| 中宁县| 武夷山市| 平顺县| 镇远县| 峡江县| 读书| 崇信县| 无棣县| 临猗县| 陆河县| 凉山| 青岛市| 鄯善县| 始兴县| 门源| 海伦市| 桃源县| 措勤县| 衡阳市| 富平县| 阜新| 如皋市| 云阳县|