# PromoteOpenreview **Repository Path**: remixa/promote-openreview ## Basic Information - **Project Name**: PromoteOpenreview - **Description**: PromoteOpenreview - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 2 - **Forks**: 3 - **Created**: 2023-07-28 - **Last Updated**: 2025-03-14 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # PromoteOpenreview ### 仓库介绍 鉴于[OpenReview.net](https://openreview.net/)收集了优质的单稿审稿内容数据,故暂定采用Openreview的相关数据来推进论文助手审稿侧的LLM微调。本项目主要服务于论文助手,其间所提及的训练技巧或数据处理思路均基于LLM审稿效能所考虑。 ### 当前工作\[23-08-08\] 这段时间希望大家可以进一步熟悉数据(论文、review)内容,大致了解解析出来的数据是什么样的一个形式(1组和2组都可以了解下),然后进一步思考甚至尝试:这样的数据应该怎样与微调或是API调用进行对接,可以将个人想法先列举出来,下次会议或任何时候都可以提出,现在是处于一个集思广益的阶段,如果实在没有头绪的话,可以参考下面几个方向来思考: 1. 哪些部分更适合用作训练?(对于API调用来说:哪些部分更适合作为传入模型?) 2. 字段的顺序应该怎么设计更适合用作训练?(对于API调用来说:字段顺序怎么设计更适合传入模型?) 3. 是否有必要进一步引入其他prompt设计?例如专家式prompt(你是一位评审论文的专家学者,...)等。 4. 模型选型及训练分工?自己熟悉的模型有哪些?是否足够支撑起长英文文本训练?对输入是否有特殊的、适合本场景的设计? 5. 统计指标?例如统计各部分(input、output、input+output)token的长度等。 期间对数据格式、解析器用法、数据下载方式、或者环境配置有疑惑的话,欢迎随时向我提问。 \ ps: 【数据分享】的网盘提取码可以跟我取。 ### 可用代码 - \[23-08-04\] [解析器批量解析PDF](https://gitee.com/remixa/promote-openreview/tree/master/pdf_parser) - \[23-07-28\] [读取并整理OpenReview数据](https://gitee.com/remixa/promote-openreview/blob/master/utils/openreview_processor.py) - \[23-07-28\] [爬取OpenReview数据](https://gitee.com/remixa/promote-openreview/blob/master/utils/openreview_crawler.py) ### 数据分享 | 数据 | 简介 | 数据量 | 数据量备注 | | :-: | :-: | :-: | :-: | | [OpenReview数据(原始jsonl格式)](https://pan.baidu.com/s/11efkHhc9PdSBXhW4nuyIcw) | 截至23-07-28,爬取OpenReview所得的、含相关review的数据,以jsonl的格式进行存储。具体可见[样例](https://gitee.com/remixa/promote-openreview/blob/master/examples/examples_jsonl.jsonl)。 | 30380 | 需要注意的是,并非30380条均为带review的数据,OpenReview全站共有30380篇论文的相关页,其中24320个相关页中存在review。 | | [OpenReview数据(CSV格式)](https://pan.baidu.com/s/1J2H1qSAtq6eYKfr2KuUp9w) | 使用[读取代码](https://gitee.com/remixa/promote-openreview/blob/master/utils/openreview_processor.py)将jsonl版本的OpenReview数据进一步整理得到,除了进一步解析了数据外,主要特点在于,原本的数据为“一篇论文对应多个reviews”的情况,CSV版本则是将“同一篇论文广播至各个review”,如有paper_A与其所对应的review_a、review_b、review_c,原本的1行数据则为paper_A-(review_a, review_b, review_c),CSV版本则将其拆分为paper_A-NaN、paper_A-review_a、paper_A-review_b、paper_A-review_c共4行数据。具体可见[样例](https://gitee.com/remixa/promote-openreview/blob/master/examples/examples_csv.csv)。| 153272 | 需要注意的是,并非153272条均为带review的数据,其中带review的数据仅122892条。 | | [对应的论文PDF](https://pan.baidu.com/s/1foXZ23h0Dj9t8CgetCvELw) | 与上述OpenReview数据相匹配的论文PDF文件,可见[样例](https://gitee.com/remixa/promote-openreview/tree/master/pdf_parser/pdf_case)。注意,该文件较大,如下载则需预备充足的空间。 | 30380 | - | | [论文PDF解析后的元数据(json格式)](https://pan.baidu.com/s/1S1NZnaz_c4e4nVqoivMIhA) | 使用pdf_parser中[scipdf_parser.py](https://gitee.com/remixa/promote-openreview/blob/master/pdf_parser/scipdf_parser.py)和[chatpaper_parser.py](https://gitee.com/remixa/promote-openreview/blob/master/pdf_parser/chatpaper_parser.py)分别对论文PDF进行解析得到的元数据。scipdf_parser解析出来的粒度较细,可见[样例](https://gitee.com/remixa/promote-openreview/blob/master/examples/examples_scipdf_parser.json);chatpaper_parser解析出来的粒度较粗,可见[样例](https://gitee.com/remixa/promote-openreview/blob/master/examples/examples_chatpaper_parser.json)。 | 30167(scipdf) / 30236(chatpaper)| 此为去除有损pdf以及解析器完全无法解析的pdf后,余下的数量。 | ### OpenReview详情页简要介绍 该例取自[Natural Language Descriptions of Deep Visual Features](https://openreview.net/forum?id=NudBMY-tzDr),具体可结合下方的数据字段释义进行对照查看。 ![OpenReview详情页简要介绍](imgs/BriefItro.png) ### OpenReview数据字段释义(仅展示关键字段)
字段类别 字段名称 字段释义
basic(基础信息) b_forum 论文讨论页的id
b_title 论文的标题
b_url 论文讨论页的链接
b_abstract 论文的摘要
b_TL;DR 论文的极简描述
b_authors 论文的作者
b_keywords 论文的关键词
b_venue 论文所属会议
b_venue_id 论文所属会议的id
b_pdf_url 论文pdf文件页的链接
b_venue_id 论文所属会议的id
review(review信息,部分论文没有review时此处则均为nan) r_id review的id
r_replyto review所指向的论文页id
r_invitation review提出者的所属类别(通常为Decision或Official)
r_signatures review提出者的签名(可以理解为提出者在当前paper讨论中的id)
content(review具体内容,部分论文没有review时此处则均为nan) c_content 完整的review内容(下述字段内容均由此处内容拆分得到)
c_title review内容的标题
c_rating 评级
c_review 概览性review内容
c_confidence 可信程度
c_decision 由主席提出的采纳意见
c_comment 评论
$\cdots$ 篇幅所限不再赘述,其余字段可根据字段名称知悉释义
### 环境配置 #### OpenReview数据爬取:OpenReview Crawler(需开启代理) 1. 读取yaml安装conda虚拟环境并激活; ```shell conda env create -f envs/openreview.yaml conda activate openreview ``` 2. 安装openreview-py库。 ```shell git clone git@github.com:openreview/openreview-py.git cd openreview-py pip install -e . ``` #### 论文PDF解析:Pdf Parser环境配置(现含SciPDF Parser及ChatPaper Parser) 见[pdf_parser目录的README](https://gitee.com/remixa/promote-openreview/blob/master/pdf_parser/README.md)。 ### 后续工作 #### 论文PDF处理(input) 1. 【撰写相应代码】针对提取出的论文文本数据进行清洗,去除其中的干扰信息(URL链接、图片富文本、页眉页脚信息等,不包括LateX); 3. 【撰写相应代码】统计论文文本长度相关的统计量(最大长度、最小长度、长度均值、长度中位数); 4. 【方案讨论】input文本的设计:训练的input文本是否可以考虑充分运用相关basic信息(如ABSTRACT、INTRODUCTION等),这些是否可以算作有效的先验信息,在客户端是否可以要求用户在文档中使用小标题注明好相关basic信息。 #### review内容处理(output) 1. 【撰写相应代码】去除review中的干扰信息(URL链接、引用等,不包括LateX); 2. 【撰写相应代码】统计review的content文本长度相关的统计量(最大长度、最小长度、长度均值、长度中位数); 3. 【方案讨论】如何进一步设计review的content,使得content更易于LLM所理解(如借助COT的思想); 4. 【方案讨论】content中存在诸多subtitle(小标题),且各个review所提及的subtitle不尽相同,是否有必要截断长尾subtitle。 #### 训练设计有关讨论 1. 【方案讨论】长文本问题:训练难度、推理占用等; 2. 【方案讨论】输出格式规范问题:是否有必要规范输出格式(使用jsonformer等方法)。 ### 备忘 1. 【备忘】关于整个工作流最好是设计成训练推理一致的级联模式,减少训练与推理操作上的误差,具体来说,例如当前面临处理PDF的问题,或是解析PDF元数据、或是通过OCR读取都行,但必须保证在用户使用时,处理论文的形式与训练的处理一致,比如当我们采取“解析PDF元数据”这样的方式来得到input的话,那么在用户所使用的客户端,我们应当选取“让用户拖拽PDF的传入方式”来进行,然后使用同样的PDF元数据解析工具来处理该PDF; 2. 【备忘】后续前端需实现LateX的渲染。