亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

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

發布時間:2023-02-27 10:56:04 來源:億速云 閱讀:179 作者:iii 欄目:開發技術

這篇文章主要介紹了怎么使用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 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 ?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:

上面每一頁的輸出都很好地概括了該頁的核心內容,其中第四頁為空是因為這一頁絕大部分內容是參考文獻,ChatGPT也很聰明的沒有返回概述。

關于“怎么使用Python+ChatGPT批量生成論文”這篇文章的內容就介紹到這里,感謝各位的閱讀!相信大家對“怎么使用Python+ChatGPT批量生成論文”知識都有一定的了解,大家如果還想學習更多知識,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

新昌县| 理塘县| 积石山| 疏勒县| 托克托县| 乌兰浩特市| 茂名市| 隆安县| 炎陵县| 永新县| 鄯善县| 石首市| 娱乐| 西峡县| 吉木萨尔县| 张掖市| 怀集县| 汉寿县| 赤峰市| 南部县| 策勒县| 安福县| 普陀区| 普洱| 西平县| 星座| 营山县| 五常市| 正宁县| 城步| 棋牌| 陆河县| 平乡县| 兴义市| 大田县| 文水县| 康定县| 抚州市| 富川| 原阳县| 沛县|