Rebiber: 一个用于规范化bibtex的官方信息工具
我们经常引用论文的arXiv版本,而没有注意到它们已经在某些会议上__发表__了。这些非官方的参考文献条目可能违反了一些会议的投稿或最终版本规则。 我们推出了__Rebiber__,一个简单的Python工具,可以自动修复这些问题。它基于DBLP或ACL anthology(针对NLP会议)的官方会议信息!您可以在这里查看支持的会议列表。 除了处理过时的arXiv引用外,__Rebiber__还以统一的方式(DBLP风格)规范化引用,支持缩写和值选择。
Huggingface Space上的演示 https://huggingface.co/spaces/yuchenlin/Rebiber (推荐)
Colab笔记本: 链接
更新日志
-
2023.06.01 新的演示可在Huggingface的Space上通过Gradio使用。此外,添加了一些新的会议。
-
2021.09.06 我们修复了一些小bug,并添加了诸如排序和arXiv链接(如果论文不在任何会议中;感谢@nicola-decao)等功能。我们还将ACL anthology的bib/json更新到最新版本,以及其他会议。
-
2021.05.30 我们构建了Rebiber网页应用的beta版本;向我们的数据集添加了新的会议;修复了一些小bug。(它已不再工作。请使用新的huggingface space演示。)
-
2021.02.08 我们现在支持多个有用的功能:1) 关闭某些特定值,例如,"-r url,pages,address"用于从输出中删除这些值,2) 使用缩写来缩短booktitle值,例如,
Proceedings of the .* Annual Meeting of the Association for Computational Linguistics
-->Proc. of ACL
。更多示例在这里。 -
2021.01.30 我们构建了一个colab笔记本作为简单的网页演示。链接
安装
# pip install rebiber -U # 稳定版本
pip install -e git+https://github.com/yuchenlin/rebiber.git#egg=rebiber -U
# rebiber --update # (可选) 更新bib数据和缩写信息 (使用wget)
或者
git clone https://github.com/yuchenlin/rebiber.git
cd rebiber/
pip install -e .
如果您想使用最新的github版本,其中包含更多bug修复,请使用第二种安装方法。
使用方法(v1.1.3)
使用官方会议信息规范化您的bibtex文件:
rebiber -i /path/to/input.bib -o /path/to/output.bib
您可以在rebiber/example_input.bib
和rebiber/example_output.bib
中找到一对示例输入和输出文件。
参数 | 用途 |
---|---|
-i | 或 --input_bib 。您想要更新的输入bib文件的路径 |
-o | 或 --output_bib 。您想要保存的输出bib文件的路径。如果您没有指定-o ,那么它将与-i 相同。 |
-r | 或 --remove 。您想要删除的值名称的逗号分隔列表,例如"-r pages,editor,volume,month,url,biburl,address,publisher,bibsource,timestamp,doi"。默认为__空__。 |
-s | 或 --shorten 。布尔参数,默认为"False" ,用于将booktitle 替换为-a 中的缩写。使用-s True 。 |
-d | 或 --deduplicate 。布尔参数,默认为"True" ,用于删除共享相同键的重复bib条目。使用-d True 。 |
-l | 或 --bib_list 。要加载的bib json文件列表的路径。查看rebiber/bib_list.txt获取默认文件。通常您不需要设置此参数。 |
-a | 或 --abbr_tsv 。会议缩写数据列表。查看rebiber/abbr.tsv获取默认文件。通常您不需要设置此参数。 |
-u | 或 --update 。使用最新的Github版本更新本地bib相关数据。 |
-v | 或 --version 。打印当前Rebiber的版本。 |
-st | 或 --sort 。布尔参数,默认为"False" 。用于保持输入文件中bib条目的原始顺序。将其设置为"True" 时,输出文件中的bib条目按字母顺序排序。使用-st True 。 |
示例输入和输出
一个带有arXiv信息的示例输入条目(来自Google Scholar或其他地方):
@article{lin2020birds,
title={Birds have four legs?! NumerSense: Probing Numerical Commonsense Knowledge of Pre-trained Language Models},
author={Lin, Bill Yuchen and Lee, Seyeon and Khanna, Rahul and Ren, Xiang},
journal={arXiv preprint arXiv:2005.00683},
year={2020}
}
一个带有官方信息的规范化示例输出条目:
@inproceedings{lin2020birds,
title = "鸟有四条腿?!NumSense:探索预训练语言模型的数值常识知识",
author = "林比尔宇晨 和
李世妍 和
卡纳拉胡尔 和
任翔",
booktitle = "2020年自然语言处理实证方法会议论文集(EMNLP)",
month = "11月",
year = "2020",
address = "线上",
publisher = "计算语言学协会",
url = "https://www.aclweb.org/anthology/2020.emnlp-main.557",
doi = "10.18653/v1/2020.emnlp-main.557",
pages = "6862--6868",
}
## 支持的会议
`bib_list.txt`包含已转换为json格式的官方bib数据列表。目前本仓库支持完整的[ACL anthology](https://www.aclweb.org/anthology/),即所有在*CL会议(ACL、EMNLP、NAACL等)及其工作坊发表的论文。
此外,我们还支持任何可从DBLP下载的会议论文集,例如ICLR2020。
请注意,DBLP只允许每次下载1000条记录,使用&h=1000&f=0,其中f=0|1000|2000指定起始索引。因此我们需要手动下载每个会议的bib文件并将它们拼接在一起。`add_conf.sh`脚本也会处理这个问题。
以下会议受支持,它们的bib/json文件位于我们的`data`文件夹中。您可以在`bib_list.txt`中开启或关闭每一项。**欢迎按照[此处](#添加新会议)的说明创建PR来添加新会议!**
| 名称 | 年份 |
| --- | ----------- |
| ACL Anthology | (截至2023-06) |
| AAAI | 2010 -- 2020 |
| AISTATS | 2013 -- 2020 |
| ALENEX | 2010 -- 2020 |
| ASONAM | 2010 -- 2019 |
| BigDataConf | 2013 -- 2019 |
| BMVC | 2010 -- 2020 |
| CHI | 2010 -- 2020 |
| CIDR | 2009 -- 2020 |
| CIKM | 2010 -- 2020 |
| COLT | 2000 -- 2020 |
| CVPR | 2000 -- 2020 |
| ICASSP | 2015 -- 2020 |
| ICCV | 2003 -- 2019 |
| ICLR | 2013 -- 2020 |
| ICML | 2000 -- 2020 |
| IJCAI | 2011 -- 2020 |
| INTERSPEECH | 2016 -- 2021 |
| KDD | 2010 -- 2020 |
| MLSys | 2019 -- 2020 |
| MM | 2016 -- 2020 |
| NeurIPS | 2000 -- 2020 |
| RECSYS | 2010 -- 2020 |
| SDM | 2010 -- 2020 |
| SIGIR | 2010 -- 2020 |
| SIGMOD | 2010 -- 2020 |
| SODA | 2010 -- 2020 |
| STOC | 2010 -- 2020 |
| UAI | 2010 -- 2020 |
| WSDM | 2008 -- 2020 |
| WWW (网络会议) | 2001 -- 2020 |
**感谢[Anton Tsitsulin](http://tsitsul.in/)在收集如此完整的bib文件集方面所做的出色工作!**
## 添加新会议
您可以通过从DBLP下载bib文件到我们的`raw_data`文件夹,并运行准备好的脚本`add_conf.sh`来手动添加任何会议。
以ICLR2020和ICLR2019为例:
- 步骤1:访问[DBLP](https://dblp.org/db/conf/iclr/iclr2020.html)
- 步骤2:下载bib文件,并将它们放在此处作为`raw_data/iclr2020.bib`和`raw_data/iclr2019.bib`(名称应采用{conf_name}{year}.bib的格式)
- 步骤3:运行脚本
```bash
bash add_conf.sh iclr 2019 2020
特别地,要更新*CL会议,我们可以
python bib2json.py -i raw_data/anthology.bib -o data/acl.json
星标历史
联系方式
如果您有任何问题或建议,请发送电子邮件至yuchen.lin@usc.edu或在此创建GitHub问题。