Acl论文集检索下载小助手

这是一个Python工具,用于从ACLAnthology官网检索并下载特定关键词的论文。它支持直接检索、数据存储到MySQL、链式操作查询、关键词过滤和论文下载等功能。用户可以按年份和会议范围筛选,并通过关键词搜索标题和摘要。此外,还提供了数据加载到数据库及下载管理的模块。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

工欲善其事,必先利其器,最近要写survey,想看下顶会里面关于某个特定话题的论文,因此顺手写了一个acl-anthology-helper,希望能对大家有所帮助。

acl-anthology-helper的主要目的是快速地从'acl anthology' (ACL Anthology - ACL Anthology)官网上下载指定论文集中包含某些关键词的论文.

主要功能

  • 检索acl anthology 官网中收录的论文。
    直接从网上检索.
    e.g. Retriever.acl(2021, ConfConsts.LONG)
    将论文保存到本地数据库中(MySQL).
    e.g.
    db = AnthologyMySQL(cache_enable=True)
    db.create_tables()
    db.load_data() # 将数据爬取载入数据库中
  • 引入ABuilder 以支持对MySQL 的链式操作。
    e.g.
    data = ABuilder().table('paper').where({"year": ["in", years_limit]}).where({"venue": ["in", venue_limit]}).query()
  • 通过关键词对论文进行过滤。
    e.g. filtered = papers.filter('title', 'xxx') | papers.filter('abstract', 'xxx')
    e.g. filtered = papers.and_containing_filter(attr, [keyword1, keyword2])
  • 下载所需要的论文。
    e.g. downloader.multi_download(filtered, download_path)
  • 本地缓存。
  • 日志打印。
  • 信息采集。

快速开始

下载代码,打开终端切换至代码的根目录。 运行

pip install requirements.txt
cd tasks
python basic_task.py

basic_task.py的代码:

import os
from ABuilder.ABuilder import ABuilder
from src.modules.downloader import PaperDownloader
from src.modules.papers import Paper, PaperList
from src.modules.anthology_mysql import AnthologyMySQL
from src.common.database_tools import MySQLTools


class BasicTask(object):
    @classmethod
    def load_data_to_db(cls):
        """
        将论文数据载入数据库
        """
        db = AnthologyMySQL(cache_enable=True)
        db.create_tables()
        db.load_data()  # 将数据爬取载入数据库中

    @classmethod
    def query_papers(cls, keyword: str, conf_contents: list):
        """
        检索论文
        """
        years_limit = tuple(range(2016, 2022))
        data = ABuilder().table('paper') \
            .where({"year": ["in", years_limit]}) \
            .where({"venue": ["in", conf_contents]}).query()
        papers = MySQLTools.list_to_papers(data)
        filtered = papers.containing_filter('title', keyword) | papers.containing_filter('abstract', keyword)
        return filtered

    @classmethod
    def download_papers(cls, papers: PaperList, keyword, conf_content):
        """
        检索论文
        """
        downloader = PaperDownloader()
        downloader.multi_download(papers, os.path.join(keyword, conf_content))

    @classmethod
    def run(cls):
        cls.load_data_to_db()
        downloader = PaperDownloader()
        conf_contents_limit = ['ACL', 'EMNLP', 'TACL', 'NAACL']
        while True:
            keyword = input('\ntype a keyword(blank will exit): ')
            if not keyword.strip():
                break
            papers = cls.query_papers(keyword, conf_contents_limit)
            print(f'The size of papers: {papers.size}')

            group = papers.group('conf_content')

            for conf_content, papers_obj in group.items():
                downloader.multi_download(papers_obj, os.path.join(keyword, conf_content))


if __name__ == '__main__':
    BasicTask.run()

提示

该项目用 Python 3.6 所写, 不支持 Python 2。

ACL Anthology官网

可以看到有很多论文集。

打开其中一个可以看到论文列表。

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值