ChatScholar,一站式论文检索和导读平台。
让天下没有难找和难读懂的论文!
- 爬虫:基于requests和beautifulsoup,利用代理ip池爬取DBLP论文信息,实现了增量更新(如果要爬的url已经存在数据库,则不爬);
- 数据库:Mysql存期刊会议和用户信息,MongoDB储存爬取的论文;
- 后端接口:Flask调度算法;
- LLM接口:本地部署ChatGLM;
- 前端页面:Gradio(比较简陋,但是功能基本都能实现)。
项目包含以下功能:
-
论文检索:能够通过选择期刊会议(目前包含所有CCF推荐期刊会议论文)+时间+关键词,即时返回相关论文和数量统计,并且提供结果表格下载。此外,还提供期刊会议推荐、保存用户常用期刊会议等。不用再“一个个期刊,一场场会议,一期又一期的重复性关键词查找”;
-
bib生成:批量输入论文标题,输出bib文件;
-
论文总结生成:正在合理化设计中,这个模块目标是在检索结果/输入标题后,输出n篇论文的总结。以及上传论文pdf后,采用问答形式对论文进行解读。
ChatScholar
├── settings.py
├── DB_runer.py
├── api.py
├── app.py
├── app_utils
│ ├── app_request.py
│ ├── config.json
│ └── xunfei_request.py
├── db_utils
│ ├── crawler
│ │ ├── crawl_utils.py
│ │ ├── get_dblp.py
│ ├── mongo_utils.py
│ ├── mysql_utils.py
├── pdf_utils
│ ├── pdf_reader.py
├── README.md
├── requirements.txt
├── temp
安装依赖:
pip install -r requirements.txt
修改settings文件后,运行爬虫和构建数据库:
python DB_runer.py
运行后端算法接口:
python api.py
运行前端页面:
gradio app.py
本项目参考了以下Repo:
- 部分论文缺失,原因是一些期刊/会议的格式混乱,例如会议论文集发在某期刊上,需要设计爬虫和数据格式;
- 部分期刊会议会在同一页面中增量更新论文,而本项目的更新逻辑在于跳过已有的页面不爬,所以爬虫需要更合理更新设计;
- 论文pdf读取和解析,预备参考gpt_academic和ChatPaper;
- 论文LLM训练;
- 用户能储存固定的期刊会议集,以便下次快速查找;
- 更美观实用的前端;
- 其他论文统计类的功能。