365提款经验-365bet官方亚洲版-365视频直播

Acl论文集检索下载小助手

Acl论文集检索下载小助手

工欲善其事,必先利其器,最近要写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官网

可以看到有很多论文集。

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