关于pdf论文(期刊)总结模型与开发

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

本文的目的是做一个深度学习模型,可以对PDF论文、期刊(现只限英文)进行总结。在科研和生活中,假如需要长期关注某个课题组的论文;或者有大量的文献,一篇篇的去看又太耗费时间,那么可以使用这个模型,让模型对大量的论文进行初步的总结,再从中有侧重的挑取自己感兴趣或者研究方向相符的论文进行精读。

本文的相关代码和思路来自于github上的chatpaper,只不过chatpaper是将pdf的读取内容通过ChatGPT的api传递给ChatGPT,让gpt来进行总结,假如我们没有gpt账户,或者账户下没有余额,或者觉得成本过高,可以使用huggingface上开源的模型,即博主使用的这个方法。


一、PDF如何读取

这是一个比较复杂的问题,如果想要准确的对一篇文章进行一个总结,那么对文章的“摘要”部分的提取就要相对精准一些。但是文章PDF的内容和排版是不同的,不同期刊使用的格式也是千差万别。仅使用一种方法很难对“摘要”部分进行准确的提取。比如:

文章出自nature communition。这类文章没有明确的标注“Abstract”和“Introduction”,但是我们人自己去读,一眼就能知道第一段是文章的摘要部分。但是通过相关的api去读取,怎么用一个通用的方法去读就是一个问题。
再比如:
在这里插入图片描述
文章出自IEEE。这类文章有相关描述性的文字,告知读者这部分的内容是什么,那么提取的难度就会小一些。

二、具体的PDF读取方法

1.通过fitz库读取PDF标题

本方法是通过chatpaper的源码学习到的思路。即是对PDF进行分块处理。通过读取相关的关键字来将论文所需要内容提取出来。

首先是

def chat_paper_main(args):
    # 创建一个Reader对象,并调用show_info方法
    if args.sort == 'Relevance':
        sort = arxiv.SortCriterion.Relevance
    elif args.sort == 'LastUpdatedDate':
        sort = arxiv.SortCriterion.LastUpdatedDate
    else:
        sort = arxiv.SortCriterion.Relevance

这里因为我们不需要使用ChatGPT的API因此我将reader对象部分就删去了。


    if args.pdf_path:
        # 开始判断是路径还是文件:
        paper_list = []
        if args.pdf_path.endswith(".pdf"):
            paper_list.append(Paper(path=args.pdf_path))
        else:
            for root, dirs, files in os.walk(args.pdf_path):
                print("root:", root, "dirs:", dirs, 'files:', files)  # 当前目录路径
                for filename in files:
                    # 如果找到PDF文件,则将其复制到目标文件夹中
                    if filename.endswith(".pdf"):
                        paper_list.append(Paper(path=os.path.join(root, filename)))
        print("------------------paper_num: {}------------------".format(len(paper_list)))

首先是根据传入的参数是否是一个pdf文件,因为这个项目是允许传入单独的pdf,或者是总结一个文件夹下所有的pdf。因此这段代码得逻辑就非常好理解了,判断args参数的结尾字符是不是pdf,如果不是,那说明用户给的是一个文件夹路径,则读取文件夹下所有结尾是pdf的文件,并使用Paper类来处理这些文件,显然这个Paper类就是处理PDF数据的关键了。

class Paper:
    def __init__(self, path, title='', url='', abs='', authers=[]):
        # 初始化函数,根据pdf路径初始化Paper对象
        self.url = url  # 文章链接
        self.path = path  # pdf路径
        self.section_names = []  # 段落标题
        self.section_texts = {
   }  # 段落内容
        self.abs = abs
        self.title_page = 0
     
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值