项目Github地址
NLP论文爬取系统的项目目录:
1)BasicSpider.py中定义了爬虫基类
2)AAAI.py定义了AAAI爬虫子类
3)IJCAI.py定义了IJCAI爬虫子类
4)ACLSeries.py定义了ACL系列爬虫子类
5)config.py定义了爬取参数,如会议名称、年份、关键词、领域等信息。
6)spider.py是程序入口
- __init__.py
spidersModule的__init__.py文件定义如下:
from .IJCAI import IJCAI
from .ACLSeries import ACLSeries
from .AAAI import AAAI
这样我们就可以在spider.py中按照如下的方式调用:
spiderTool = getattr(spidersMoudle, opt.spiderTool)(opt)
spiderTool.main()
这意味着我们可以通过字符串或在config.py中进行定义直接指定使用的爬虫工具(AAAI、IJCAI or ACLSeries),而不必使用判断语句,也不必在每次新增加爬虫工具后都修改代码。新增爬虫工具后只需要在spidersModule/__init__.py中加上:
from .new_module import NewModule
- config.py
定义了论文爬取系统的相关参数:
class DefaultConfig(object):
spiderTool = 'ACLSeries'
Keywords= ['emotion detect conversation','emotion detect dialog','emotion recognition conversation','emotion recognition dialog'] # 关键词列表
Years = [2016,2017,2018,2019]
Field = '对话情感分析'
Meeting = 'NAACL'
path = '/Users/apple/PycharmProjects/NLPPapersSpider/'
def parse(self, kwargs):
'''
根据字典kwargs 更新 默认的config参数
'''
# 更新配置参数
for k, v in kwargs.items():
if not hasattr(self, k):
# 警告还是报错,取决个人喜好
warnings.warn("Warning: opt has not attribut %s" % k)
setattr(self, k, v)
# 打印配置信息
print('user config:')
for k, v in self.__class__.__dict__.items(): # python3 中iteritems()已经废除了
if not k.startswith('__'):
print(k, getattr(self, k))
DefaultConfig.parse = parse
opt = DefaultConfig()
程序默认使用该文件中的参数,当然也可以通过在命令行运行程序时输入新的参数对其进行覆盖。
- 系统使用方式
1)打开命令行,进入spider.py文件所在的路径下。
2)执行以下命令:
python spider.py spider #此时将使用config.py中的默认配置
可以在config.py中修改配置,再次运行上面的命令。也可以在命令行传入新的参数对其进行覆盖:
#爬取ACL系列会议论文(ACL、EMNLP、COLING、NAACL、EACL、CoNLL等等)
#爬取ACL
python spider.py spider --spiderTool='ACLSeries' --Keywords=['dialog','conversation','chatbot'] --Years=[2016,2017,2018,2019] --Field='对话' --Meeting='ACL' --path='/Users/apple/Desktop'
#爬取EMNLP
python spider.py spider --spiderTool='ACLSeries' --Keywords=['dialog','conversation','chatbot'] --Years=[2016,2017,2018,2019] --Field='对话' --Meeting='EMNLP' --path='/Users/apple/Desktop'
#爬取AAAI会议论文
python spider.py spider --spiderTool='AAAI' --Keywords=['dialog','conversation','chatbot'] --Years=[2016,2017,2018,2019] --Field='对话' --Meeting='AAAI' --path='/Users/apple/Desktop'
#爬取IJCAI会议论文
python spider.py spider --spiderTool='IJCAI' --Keywords=['dialog','conversation','chatbot'] --Years=[2016,2017,2018,2019] --Field='对话' --Meeting='IJCAI' --path='/Users/apple/Desktop'