├── .gitignore ├── LICENSE ├── README.md ├── Simbiber ├── BibTool.py ├── SimBiberTool.py ├── __init__.py ├── config │ ├── AI.json │ ├── Arch.json │ ├── CV.json │ ├── DM.json │ ├── IR.json │ ├── ML.json │ ├── NLP.json │ ├── Security.json │ └── Sys.json ├── data │ └── bibtex.bib ├── keep_keys.cfg ├── main.py ├── out │ └── bibtex.bib └── parserConfig.json ├── figure └── MLNLP.png ├── keep_keys.cfg └── setup.py /.gitignore: -------------------------------------------------------------------------------- 1 | .idea/ 2 | target/ 3 | */__pycache__/ 4 | .DS_Store 5 | */.DS_Store 6 | */test/ 7 | __pycache__/ 8 | */simbiber.egg-info 9 | simbiber.egg-info/ 10 | build/ 11 | dist/ 12 | pyproject.toml 13 | .vscode/launch.json 14 | *.bib 15 | ._* -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2022 The Python Packaging Authority 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 |
2 |

3 | 4 | SimBiber: A tool for simplifying bibtex with official info. 5 |

6 |
7 |

8 | 9 | version 10 | 11 | 12 | Status-building 13 | 14 | 15 | PRs-Welcome 16 | 17 | 18 | stars 19 | 20 | 21 | FORK 22 | 23 | 24 | Issues 25 | 26 | 27 | Hugging Face Space 28 | 29 |
30 |

31 | 32 | ------ 33 | 34 |
35 |

36 | Changelog • 37 | Installation • 38 | Usage • 39 | Example Input and Output • 40 | Supported Conferences • 41 | Adding a new conference • 42 | Contact • 43 | Organizers • 44 | Contributors 45 |

46 |
47 | 48 | ## Motivation 49 | We often need to simplify the official bib that consists of many information into a shorter version that only maintains necessary information (e.g., author, title, conference/journal name and etc) due to page limitation. 50 | 51 | We introduce __SimBiber__, a simple tool in Python to simplify them automatically. Hope it's helpful for you. 52 | 53 | We also highly recommend another wonderful tool for you [Rebiber](https://github.com/yuchenlin/rebiber), which is a tool for normalizing bibtex with official info. 54 | 55 | **Tips**: If you use first Rebiber and then Simbiber, you can get a better experience. 56 | 57 | ## Disclaimer 58 | 59 | > SimBiber is a fairly new project and it is under active development. 60 | We hope that it will be quite useful in a variety of cases, but there is no guarantee that the results it produces will necessarily be strictly compliant with the official specification. 61 | > 62 | > **So you'd better check the accuracy of simplified bib files again.** 63 | > 64 | > All icons are collected from the Internet, if there is any infringement, please contact us to delete. 65 | 66 | 67 | 68 | 69 | ## Changelog 70 | - **2024.09.16** 71 | - Thanks for the contribution of @Ki-Seki. SimBiber is available at 🤗 [Hugging Face Space](https://huggingface.co/spaces/Ki-Seki/SimBiber). 72 | - **2023.02.33** 73 | - Fix some bugs about with `-keep` parameter. 74 | - **2021.05.02** 75 | - Fix some bugs about without `-keep` parameter. 76 | - **2021.05.01** 77 | - Support to customize the keys you want to reserve. 78 | - **2021.04.23** 79 | -
Support IJCAI (Survey Track).
80 | -
Unified README.
81 | - **2021.04.11** 82 | -
Support to pip install.
83 | -
Simplify input args.
84 | -
Add disclaimer.
85 | - **2021.03.02** 86 | - Fix some bugs if remove duplications. 87 | - **2021.02.15** 88 | - Fix a bug simplify ACL (like EACL) conference to ACL. 89 | -
Support ACL Findings and EMNLP findings.
90 | - **2021.01.21** 91 | -
Support to remove duplication if your bib has some bibitems with same title. (automatically choose Conference citation)
92 | - Fix some bugs about some conferences. 93 | -
Add more categories of conferences. (now support 113 conferences)
94 | - **2021.01.11** 95 | - Fix a bug if output path is the same as input path. 96 | - Support to remove duplication if your bib has both of arXiv or Conference citation. 97 | -
Support to simplify files by folder.
98 | -
Support to use default output path.
99 | - Add more categories of conferences. (now support 112 conferences) 100 | - **2021.01.08** 101 | We fix a bug if booktitle contains `{` or `}` and add more categories of conferences. (now support 105 conferences) 102 | - **2021.01.06** 103 | We fix a few minor bugs and add more categories of conferences. (now support 84 conferences) 104 | - **2021.12.31** 105 | We build the first version and release it. 106 | 107 | 108 | ## Installation 109 | 110 | Use SimBiber directly in 🤗 [Hugging Face Space](https://huggingface.co/spaces/Ki-Seki/SimBiber) 111 | 112 | OR 113 | 114 | ```bash 115 | git clone https://github.com/MLNLP-World/Simbiber.git 116 | cd Simbiber/ 117 | pip install -e . 118 | ``` 119 | OR 120 | ```bash 121 | pip install simbiber 122 | ``` 123 | 124 | If you would like to use the latest github version with more bug fixes, please use the first installation method. 125 | 126 | Finally, if you run ``simbiber`` without any args, you get the following result, then the installation is successful! 127 | 128 |  129 | 130 | ## Usage(v0.8.1) 131 | 132 | ```bash 133 | simbiber -i [input bib path] -o [output bib path] 134 | ``` 135 | Tips: All path args support absolute and relative paths 136 | 137 | | simplified | argument | usage| 138 | |------ | ----------- | ----------- | 139 | |`-i`| `--input_path` | The path to the input bib `file` or `directory` that you want to simplify. | 140 | |`-o`| `--output_path` | [Optional] The path to the output bib file that you want to save.
PLEASE ATTENTION: | 141 | |`-c`| `--config_path` | [Optional]The path to the mapper config file. The path can be a file directory path, like `config` or a single file path, like `config.json`.
PLEASE ATTENTION: If you want to simplify a huge bib file, you'd better extract external `json` config file to achieve satisfactory speed. | 142 | |`-a`| `--if_append_output` | [Optional] Whether append simplified data to output bib file. | 143 | |`-r`| `--remove_duplicate` | [Optional] Whether remove duplication if your bib has both of arXiv or Conference citation.
PLEASE ATTENTION: If `True`, it might cost more time to write simplified bib file. Please keep patient. | 144 | |`-cch`| `--cache_num` | [Optional]The number of bib items you want to simplify at once.
PLEASE ATTENTION: If you want to simplify a huge bib file, you'd better change it to achieve satisfactory speed. | 145 | |`-m`| `--merge` | [Optional]The keys you want to merge all bib files in a folder if `input_path` is a folder | 146 | |`-s`| `--enable_simplify` | [Optional]Whether you enable simplify | 147 | |`-keep`| `--keep_keys` | [Optional]The keys you want to keep in every bib item.
The total form is like `-keep "pages,doi"`. NOTE: if raise unrecognized arguments error, it might be better to use `--keep_keys` | 148 | 149 | 150 | ### Example Input and Output 151 | An example simplified output entry with the official information (The forms of bibitem like `xxx="..."` or `xxx={...}` are both supported): 152 | ```bib 153 | @inproceedings{li-etal-2019-survey, 154 | title = "A Sophisticated Survey about Chinese Poem and Beers", 155 | author = "Li, Bai and 156 | Ha, Pi and 157 | Jin, Shibai and 158 | Xue, Hua and 159 | Mao, Tai", 160 | booktitle = "Proceedings of the 2019 Conference on Empirical Methods in Natural Language Processing and the 9th International Joint Conference on Natural Language Processing (EMNLP-IJCNLP)", 161 | month = nov, 162 | year = "2019", 163 | address = "Hong Kong, China", 164 | publisher = "Association for Computational Linguistics", 165 | url = "https://aclanthology.org/D19-1214", 166 | doi = "10.18653/v1/D19-1214", 167 | pages = "2078--2087", 168 | abstract = "Intent detection and slot filling are two main tasks for building a spoken language understanding (SLU) system. The two tasks are closely tied and the slots often highly depend on the intent. In this paper, we propose a novel framework for SLU to better incorporate the intent information, which further guiding the slot filling. In our framework, we adopt a joint model with Stack-Propagation which can directly use the intent information as input for slot filling, thus to capture the intent semantic knowledge. In addition, to further alleviate the error propagation, we perform the token-level intent detection for the Stack-Propagation framework. Experiments on two publicly datasets show that our model achieves the state-of-the-art performance and outperforms other previous methods by a large margin. Finally, we use the Bidirectional Encoder Representation from Transformer (BERT) model in our framework, which further boost our performance in SLU task.", 169 | } 170 | ``` 171 | 172 | 173 | An example simplified output entry from the official information: 174 | ```bib 175 | @inproceedings{li-etal-2019-survey, 176 | author = {Li, Bai and 177 | Ha, Pi and 178 | Jin, Shibai and 179 | Xue, Hua and 180 | Mao, Tai}, 181 | booktitle = {Proc. of EMNLP}, 182 | title = {A Sophisticated Survey about Chinese Poem and Beers}, 183 | year = {2019} 184 | } 185 | ``` 186 | 187 | ## Supported Conferences 188 | 189 | The `config` dir contains a list of converted json files of the mapper between official full name and simplified name. 190 | 191 | ### AI 192 | 193 | | Full Name | Name | 194 | | --- | ----------- | 195 | |Association for the Advance of Artificial Intelligence|AAAI| 196 | |International Joint Conference on Autonomous Agents and Multiagent Systems|AAMAS| 197 | |ACM International Conference on Multimedia|ACM MM| 198 | |Artificial Intelligence and Statistics|AISTATS| 199 | |International Conference on Algorithmic Learning Theory|ALT| 200 | |IEEE Congress on Evolutionary Computation|CEC| 201 | |European Conference on Artificial Intelligence|ECAI| 202 | |IEEE International Conference on Fuzzy Systems|FUZZ IEEE| 203 | |Genetic and Evolutionary Computation Conference|GECCO| 204 | |International Conference on Artificial Neural Networks|ICANN| 205 | |International Conference on Automated Planning and Scheduling|ICAPS| 206 | |International Conference on Case-Based Reasoning and Development|ICCBR| 207 | |International Conference on Neural Information Processing|ICONIP| 208 | |International Conference on Robotics and Automation|ICRA| 209 | |International Conference on Tools with Artificial Intelligence|ICTAI| 210 | |International Joint Conference on Artificial Intelligence|IJCAI| 211 | |International Joint Conference on Artificial Intelligence (Survey Track)|IJCAI(Survey Track)| 212 | |International Joint Conference on Neural Networks|IJCNN| 213 | |International Conference on Intelligent Robots and Systems|IROS| 214 | |International Conference on Principles of Knowledge Representation and Reasoning|KR| 215 | |International conference on Knowledge Science, Engineering and Management|KSEM| 216 | |ACM SIGGRAPH Annual Conference|SIGGRAPH| 217 | |ACM Symposium on Theory of Computing|STOC| 218 | |International Conference on Uncertainty in Artificial Intelligence|UAI| 219 | |Parallel Problem Solving from Nature|PPSN| 220 | |Pacific Rim International Conference on Artificial Intelligence|PRICAI| 221 | |International Conference on Technologies and Applications of Artificial Intelligence|TAAI| 222 | 223 | ### CV 224 | 225 | | Full Name | Name | 226 | | ----------- | --- | 227 | |International Conference on 3D Vision|3DV| 228 | |Asian Conference on Computer Vision|ACCV| 229 | |ACM International Conference on Multimedia|ACM MM| 230 | |British machine vision conference|BMVC| 231 | |International Conference on Computer Vision and Pattern Recogintion|CVPR| 232 | |European Conference on Computer Vision|ECCV| 233 | |International Conference on Computer Vision|ICCV| 234 | |International Conference on Document Analysis and Recognition|ICDAR| 235 | |IEEE International Conference on Image Processing|ICIP| 236 | |International conference on multimedia and expo|ICME| 237 | |International Conference on Pattern Recognition|ICPR| 238 | |IEEE visualization conference|IEEE VIS| 239 | |International Conference on Medical Image Computing and Computer Assisted Intervention Society|MICCAI| 240 | |ACM SIGGRAPH Annual Conference|SIGGRAPH| 241 | |IEEE Winter Conference on Applications of Computer Vision|WACV| 242 | 243 | 244 | ### DM 245 | | Full Name | Name | 246 | | ----------- | --- | 247 | |Automated Knowledge Base Construction|AKBC| 248 | |Asia Pacific Web Conference|APWeb| 249 | |International Conference on Information and Knowledge Management|CIKM| 250 | |Database Systems for Advanced Applications|DASFAA| 251 | |The European Conference on Machine Learning and Principles and Practice of Knowledge Discovery in Databases|ECML-PKDD| 252 | |IEEE International Conference on Data Engineering|ICDE| 253 | |IEEE International Conference on Data Mining|ICDM| 254 | |International Conference on Database Theory|ICDT| 255 | |ACM SIGKDD Conference on Knowledge Discovery and Data Mining|KDD| 256 | |Language Resources and Evaluation Conference|LREC| 257 | |International Conference on Mobile Data Management|MDM| 258 | |Pacific-Asia Conference on Knowledge Discovery and Data Mining|PAKDD| 259 | |ACM Symposium on Principles of Database Systems|PODS| 260 | |The ACM Conference Series on Recommender Systems|RecSys| 261 | |SIAM International Conference on Data Mining|SDM| 262 | |ACM SIGMOD international conference on Management of data|SIGMOD| 263 | |International Conference on Very Large Data Base|VLDB| 264 | |ACM International Conference on Web Search and Data Mining|WSDM| 265 | |The Web Conference|WWW| 266 | |International Conference on Extending DB Technology|EDBT| 267 | |International Conference on Innovative Data Systems Research|CIDR| 268 | 269 | ### IR 270 | | Full Name | Name | 271 | | ----------- | --- | 272 | |European Conference on IR Research|ECIR| 273 | |Extended Semantic Web Conference|ESWC| 274 | |ACM International Conference on Multimedia Retrieval|ICMR| 275 | |The ACM SIGIR International Conference on the Theory of Information Retrieval|ICTIR| 276 | |International Semantic Web Conference|ISWC| 277 | |International Conference on Research on Development in Information Retrieval|SIGIR| 278 | 279 | ### ML 280 | | Full Name | Name | 281 | | ----------- | --- | 282 | |Asian Conference on Machine Learning|ACML| 283 | |International Conference on Artificial Intelligence and Statistics|AISTATS| 284 | |European Conference on Machine Learning|ECML| 285 | |International Conference on Learning Representations|ICLR| 286 | |International Conference on Machine Learning|ICML| 287 | |Machine Learning for Health|ML4H| 288 | |Neural Information Processing Systems|NeurIPS| 289 | |Conference on Uncertainty in Artificial Intelligence|UAI| 290 | 291 | ### NLP 292 | | Full Name | Name | 293 | | ----------- | --- | 294 | |Asian Chapter of the Association for Computational Linguistics|AACL| 295 | |Association for Computational Linguistics|ACL| 296 | |Chinese Computational Linguistics|CCL| 297 | |International Conference on Computational Linguistics|COLING| 298 | |Annual Conference on Computational Learning Theory|COLT| 299 | |Conference on Computational Natural Language Learning|CoNLL| 300 | |European Chapter of the Association for Computational Linguistics|EACL| 301 | |Empirical Methods in Natural Language Processing|EMNLP| 302 | |International Conference on Acoustics, Speech and Signal Processing|ICASSP| 303 | |International Conference on Document Analysis and Recognition|ICDAR| 304 | |International Conference on Neural Information Processing|ICONIP| 305 | |Conference of the International Speech Communication Association|INTERSPEECH| 306 | |Language Resources and Evaluation Conference|LREC| 307 | |North American Chapter of the Association for Computational Linguistics|NAACL| 308 | |Natural Language Processing and Chinese Computing|NLPCC| 309 | |Workshop on Representation Learning for NLP|RepL4NLP| 310 | |SIGdial Meeting on Discourse and Dialogue|SIGDIAL| 311 | |International Workshop on Semantic Evaluation|SemEval| 312 | |Workshop on Arabic natural language processing|WANLP| 313 | |Workshop on Computational Approaches to Subjectivity, Sentiment and Social Media Analysis|WASSA| 314 | |Workshop on Online Abuse and Harms|WOAH| 315 | 316 | ### Arch 317 | | Full Name | Name | 318 | | ----------- | --- | 319 | |International Conference on Architectural Support for Programming Languages and Operating Systems|ASPLOS| 320 | |USENIX Annul Technical Conference|ATC| 321 | |Design, Automation & Test in Europe|DATE| 322 | |European Conference on Computer Systems|EuroSys| 323 | |Conference on File and Storage Technologies|FAST| 324 | |High Performance Computer Architecture|HPCA| 325 | |International Symposium on Computer Architecture|ISCA| 326 | |IEEE/ACM International Symposium on Microarchitecture|MICRO| 327 | |ACM SIGPLAN Symposium on Principles & Practice of Parallel Programming|PPoPP| 328 | |International Conference for High Performance Computing, Networking, Storage, and Analysis|SC| 329 | |ACM Symposium on Cloud Computing|SoCC| 330 | 331 | ### System 332 | | Full Name | Name | 333 | | ----------- | --- | 334 | |ACM SIGSOFT Symposium on the Foundation of Software Engineering/ European Software Engineering Conference|FSE/ESEC| 335 | |International Conference on Software Engineering|ICSE| 336 | |International Symposium on Software Testing and Analysis|ISSTA| 337 | |USENIX Symposium on Operating Systems Design and Implementations|OSDI| 338 | |ACM Symposium on Operating Systems Principles|SOSP| 339 | 340 | 341 | ### Security 342 | | Full Name | Name | 343 | | ----------- | --- | 344 | |Annual Computer Security Applications Conference|ACSA| 345 | |ACM Asia Conference on Computer and Communications Security|AsiaCCS| 346 | |ACM Conference on Computer and Communications Security|CCS| 347 | |Dependable Systems and Networks|DSN| 348 | |European Symposium on Research in Computer Security|ESORICS| 349 | |European Symposium on Security and Privacy|EuroS&P| 350 | |International Conference on Information and Communication Security|ICICS| 351 | |Network and Distributed System Security Symposium|NDSS| 352 | |International Symposium on Recent Advances in Intrusion Detection|RAID| 353 | |IEEE Symposium on Security and Privacy|SP| 354 | |Usenix Security Symposium|USENIX Security| 355 | 356 | 357 | ### Adding a new conference 358 | 359 | You can manually add any conferences from DBLP to config map. 360 | 361 | Take ICLR as an example: 362 | 363 | - Step 1: Go to [DBLP](https://dblp.org/db/conf/iclr/iclr2020.html) 364 | - Step 2: Find the full name of Conference 365 | - Step 3: Add map to ```config/ML.json``` or ```parserConfig.json```(You should specify the config path) 366 | ```json 367 | {"International Conference on Learning Representations": "ICLR"} 368 | ``` 369 | 370 | ## Contact 371 | 372 | Please email [Libo Qin](mailto:lbqin@ir.hit.edu.cn) or [Qiguang Chen](mailto:charleschen2333@gmail.com) to create Github issues here if you have any questions or suggestions. 373 | 374 | And we welcome you to join us and update conferences at https://docs.qq.com/sheet/DWFF1aWlVV1hISU12?tab=h2idmj 375 | 376 | ## Organizers 377 | 378 | 379 | 380 | 381 | 382 | ## Contributors 383 | Thanks to the contributors: 384 | 385 | 386 | 387 | 388 | 389 | 390 | 391 | 392 | 393 | 394 | 395 | 396 | 397 | 398 | 399 | 400 | 401 | 402 | 403 | 404 | 405 | 406 | 407 | 408 | 409 | 410 | 411 | 412 | 413 | 414 | 415 | 416 | 417 | 418 | 419 | -------------------------------------------------------------------------------- /Simbiber/BibTool.py: -------------------------------------------------------------------------------- 1 | import sys 2 | import time 3 | 4 | import bibtexparser 5 | from bibtexparser.bparser import BibTexParser 6 | from bibtexparser.bwriter import BibTexWriter 7 | import json 8 | import re 9 | import os 10 | class BibTool: 11 | # Assume that bib_string has valid structure 12 | def __init__(self, args): 13 | self.args = args 14 | self.dictionary={} 15 | self.bib_database = None 16 | self.index=0 17 | self.pattern_list,self.pattern_dict = self.read_pattern_config() 18 | 19 | def get_bib_text(self): 20 | return bibtexparser.dumps(self.bib_database) 21 | 22 | def read_pattern_config(self): 23 | pattern_dict={} 24 | if os.path.isdir(self.args.config_path): 25 | for root, ds, fs in os.walk(self.args.config_path): 26 | for f in fs: 27 | with open(root + "/" + f.strip(), "r", encoding='utf-8') as load_f: 28 | pattern_dict.update(json.load(load_f)) 29 | else: 30 | with open(self.args.config_path, "r", encoding='utf-8') as load_f: 31 | pattern_dict = json.loads(load_f) 32 | 33 | return sorted(pattern_dict.keys(), key=len,reverse=True),pattern_dict 34 | 35 | def __simplify_bib__(self,item): 36 | if 'archiveprefix' in item: 37 | item['archivePrefix'] = item['archiveprefix'] 38 | del item['archiveprefix'] 39 | if 'primaryclass' in item: 40 | item['primaryClass'] = item['primaryclass'] 41 | del item['primaryclass'] 42 | return item 43 | if 'author' not in item: 44 | return item 45 | temp_item = {'ENTRYTYPE': item['ENTRYTYPE'], 46 | 'ID': item['ID'], 47 | 'author': item['author'], 48 | 'title': item['title'], } 49 | with open("keep_keys.cfg") as f: 50 | reserved_keys=f.read().strip("\"").strip("'").split(",") 51 | for key in reserved_keys: 52 | if key in item: 53 | temp_item[key]=item[key] 54 | 55 | if 'year' in item: 56 | temp_item['year'] = item['year'] 57 | if item['ENTRYTYPE'] == 'book': 58 | if 'address' in item: 59 | temp_item['address'] = item['address'] 60 | if 'publisher' in item: 61 | temp_item['publisher'] = item['publisher'] 62 | return temp_item 63 | if 'booktitle' in item and self.args.enable_simplify: 64 | booktitle = item['booktitle'].replace('\n', ' ').replace('\&', 'and') 65 | booktitle = booktitle.replace('{', '').replace('}', '').replace(' ', ' ').replace('[', '').replace(']', '') 66 | for key in self.pattern_list: 67 | m = re.search(key.lower(), booktitle.lower()) 68 | if m is not None: 69 | conference=self.pattern_dict[key] 70 | if conference=='IJCAI': 71 | if 'note' in item and item['note'].lower() == 'Survey Track'.lower(): 72 | conference+='(Survey Track)' 73 | booktitle = 'Proc. of ' + conference 74 | 75 | break 76 | temp_item['booktitle'] = booktitle 77 | 78 | if 'journal' in item and self.args.enable_simplify: 79 | journal=item['journal'] 80 | temp = journal.replace('\n', ' ') 81 | temp = temp.replace('{', '').replace('}', '').replace(' ', ' ').replace('[', '').replace(']', '') 82 | if temp.lower()=='transactions of the association for computational linguistics': 83 | journal='TACL' 84 | if temp.lower()=='transactions on machine learning research': 85 | journal='TMLR' 86 | if temp.lower()=='advances in neural information processing systems': 87 | journal='Proc. of NeurIPS' 88 | else: 89 | m = re.search('AAAI', journal) 90 | if m is not None: 91 | journal = 'Proc. of AAAI' 92 | 93 | temp_item['journal'] = journal 94 | return temp_item 95 | return temp_item 96 | 97 | def mark_duplicate(self,item): 98 | if item["ID"] == "code_retrieval_cedar" and (self.index == 5223 or self.index == 5271): 99 | print(1) 100 | if item['title'].lower() in self.dictionary: 101 | temp_index = self.index 102 | if 'booktitle' in item or ('journal' in item and not item['journal'].lower().find('arxiv')>=0): 103 | temp_index = self.dictionary[item['title'].lower()] 104 | self.dictionary[item['title'].lower()] = self.index 105 | self.bib_database.entries[temp_index] = '#' 106 | else: 107 | self.dictionary[item['title'].lower()] = self.index 108 | 109 | def simplify_bib(self,bib_string): 110 | parser = BibTexParser(common_strings=True) 111 | parser.ignore_nonstandard_types = True 112 | 113 | if self.bib_database is None: 114 | self.bib_database = bibtexparser.loads(bib_string, parser=parser) 115 | else: 116 | self.bib_database.entries += bibtexparser.loads(bib_string, parser=parser).entries 117 | 118 | while self.index < len(self.bib_database.entries): 119 | item=self.bib_database.entries[self.index] 120 | if item!='#': 121 | 122 | self.bib_database.entries[self.index]=self.__simplify_bib__(item) 123 | if self.args.remove_duplicate: 124 | self.mark_duplicate(item) 125 | self.index += 1 126 | 127 | def remove_duplication(self): 128 | if self.args.remove_duplicate: 129 | self.bib_database.entries=[x for x in self.bib_database.entries if x != '#'] 130 | assert len(list(self.bib_database.entries)) == len(list([x["ID"] for x in self.bib_database.entries])) 131 | 132 | def write_to_file(self): 133 | writer = BibTexWriter() 134 | print("Writing...") 135 | with open(self.args.output_path, 'a', encoding='utf-8') as bibfile: 136 | bibfile.write(writer.write(self.bib_database)) 137 | print("Finished.") -------------------------------------------------------------------------------- /Simbiber/SimBiberTool.py: -------------------------------------------------------------------------------- 1 | ''' 2 | Author: Qiguang Chen 3 | LastEditors: Qiguang Chen 4 | Date: 2023-02-22 19:14:04 5 | LastEditTime: 2024-06-28 15:41:58 6 | Description: 7 | 8 | ''' 9 | import os 10 | import time 11 | 12 | from tqdm import tqdm 13 | 14 | from Simbiber.BibTool import BibTool 15 | 16 | 17 | class SimBiberTool(): 18 | def __init__(self, args): 19 | self.args = args 20 | 21 | def init(self): 22 | with open(self.args.output_path, 'w', encoding='utf-8') as bibfile: 23 | bibfile.write('') 24 | 25 | def __simplify_and_write__(self,s): 26 | self.bib.simplify_bib(s) 27 | 28 | 29 | def __rewrite__(self): 30 | with open(self.args.output_path, 'r', encoding='utf-8') as file1: 31 | with open(self.args.input_path, 'w', encoding='utf-8') as file2: 32 | file2.writelines(file1.readlines()) 33 | 34 | os.remove(self.args.output_path) 35 | 36 | 37 | def __simplify__(self): 38 | if not self.args.if_append_output and not self.use_temp_file: 39 | self.init() 40 | if not os.path.isdir(self.args.input_path): 41 | with open(self.args.input_path, encoding='utf-8') as bibtex_file: 42 | l = [] 43 | s = '' 44 | index = 0 45 | for line in tqdm(bibtex_file.readlines()): 46 | # ignore useless line 47 | if len(l) == 0 and line[0] != '@': 48 | continue 49 | for i, x in enumerate(line): 50 | if x == '{': 51 | l.append('{') 52 | elif x == '}': 53 | l.pop() 54 | s += line 55 | if len(l) == 0: 56 | index += 1 57 | if len(l) == 0 and index == self.args.cache_num: 58 | self.__simplify_and_write__(s) 59 | s = '' 60 | index = 0 61 | if index != 0: 62 | self.__simplify_and_write__(s) 63 | else: 64 | l = [] 65 | s = '' 66 | index = 0 67 | for root, ds, fs in os.walk(self.args.input_path): 68 | for f in fs: 69 | with open(os.path.join(root, f), encoding='utf-8') as bibtex_file: 70 | for line in tqdm(bibtex_file.readlines()): 71 | # ignore useless line 72 | if len(l) == 0 and line[0] != '@': 73 | continue 74 | for i, x in enumerate(line): 75 | if x == '{': 76 | l.append('{') 77 | elif x == '}': 78 | l.pop() 79 | s += line 80 | if len(l) == 0: 81 | index += 1 82 | if len(l) == 0 and index == self.args.cache_num: 83 | self.__simplify_and_write__(s) 84 | s = '' 85 | index = 0 86 | if index != 0: 87 | self.__simplify_and_write__(s) 88 | self.bib.remove_duplication() 89 | self.bib.write_to_file() 90 | if self.use_temp_file: 91 | self.__rewrite__() 92 | 93 | def __judge_use_temp__(self): 94 | self.use_temp_file = False 95 | if self.args.output_path == '' or self.args.output_path == self.args.input_path: 96 | self.use_temp_file = True 97 | self.args.output_path = self.args.input_path + time.strftime("%Y%m%d%H%M%S", time.localtime()) 98 | 99 | def simplify(self): 100 | input_path=self.args.input_path 101 | if os.path.isdir(input_path): 102 | if self.args.merge: 103 | # for root, ds, fs in os.walk(input_path): 104 | # for f in fs: 105 | # self.args.input_path=os.path.join(root, f) 106 | self.bib = BibTool(self.args) 107 | self.__judge_use_temp__() 108 | self.__simplify__() 109 | else: 110 | for root, ds, fs in os.walk(input_path): 111 | for f in fs: 112 | self.args.input_path=os.path.join(root, f) 113 | self.args.output_path = os.path.join('out', f) 114 | self.bib = BibTool(self.args) 115 | self.__judge_use_temp__() 116 | self.__simplify__() 117 | else: 118 | self.bib = BibTool(self.args) 119 | self.__judge_use_temp__() 120 | self.__simplify__() 121 | -------------------------------------------------------------------------------- /Simbiber/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MLNLP-World/SimBiber/239cc0fb305198a2cdc4e14059f61216f592c3ba/Simbiber/__init__.py -------------------------------------------------------------------------------- /Simbiber/config/AI.json: -------------------------------------------------------------------------------- 1 | { 2 | "AAAI": "AAAI", 3 | "Association for the Advance of Artificial Intelligence": "AAAI", 4 | "IJCAI": "IJCAI", 5 | "International Joint Conference on Artificial Intelligence": "IJCAI", 6 | "European Conference on Artificial Intelligence": "ECAI", 7 | "International Conference on Uncertainty in Artificial Intelligence": "UAI", 8 | "Artificial Intelligence and Statistics": "AISTATS", 9 | "International Conference on Tools with Artificial Intelligence": "ICTAI", 10 | "International Conference on Artificial Neural Networks": "ICANN", 11 | "International Joint Conference on Neural Networks": "IJCNN", 12 | "ACM International Conference on Multimedia": "ACM MM", 13 | "ACM SIGGRAPH Annual Conference": "SIGGRAPH", 14 | "International Conference on Principles of Knowledge Representation and Reasoning": "KR", 15 | "International Joint Conference on Autonomous Agents and Multiagent Systems": "AAMAS", 16 | "Pacific Rim International Conference on Artificial Intelligence": "PRICAI", 17 | "International Conference on Technologies and Applications of Artificial Intelligence": "TAAI", 18 | "Parallel Problem Solving from Nature": "PPSN", 19 | "International Conference on Robotics and Automation": "ICRA", 20 | "International Conference on Automated Planning and Scheduling": "ICAPS", 21 | "International Conference on Case-Based Reasoning and Development": "ICCBR", 22 | "International Conference on Intelligent Robots and Systems": "IROS", 23 | "International Conference on Algorithmic Learning Theory": "ALT", 24 | "International conference on Knowledge Science, Engineering and Management": "KSEM", 25 | "Genetic and Evolutionary Computation Conference": "GECCO", 26 | "IEEE Congress on Evolutionary Computation": "CEC", 27 | "ACM Symposium on Theory of Computing": "STOC", 28 | "IEEE International Conference on Fuzzy Systems": "FUZZ IEEE", 29 | "International Conference on Neural Information Processing": "ICONIP" 30 | } -------------------------------------------------------------------------------- /Simbiber/config/Arch.json: -------------------------------------------------------------------------------- 1 | { 2 | "ACM SIGPLAN Symposium on Principles & Practice of Parallel Programming": "PPoPP", 3 | "Conference on File and Storage Technologies": "FAST", 4 | "International Symposium on Microarchitecture": "MICRO", 5 | "International Conference for High Performance Computing, Networking, Storage, and Analysis": "SC", 6 | "High Performance Computer Architecture": "HPCA", 7 | "International Conference on Architectural Support for Programming Languages and Operating Systems": "ASPLOS", 8 | "International Symposium on Computer Architecture": "ISCA", 9 | "USENIX Annul Technical Conference": "ATC", 10 | "ACM Symposium on Cloud Computing": "SoCC", 11 | "Design, Automation & Test in Europe": "DATE", 12 | "European Conference on Computer Systems": "EuroSys" 13 | } -------------------------------------------------------------------------------- /Simbiber/config/CV.json: -------------------------------------------------------------------------------- 1 | { 2 | "International Conference on Computer Vision": "ICCV", 3 | "ECCV": "ECCV", 4 | "Conference on Computer Vision and Pattern Recognition": "CVPR", 5 | "International Conference on Computer Vision and Pattern Recogintion": "CVPR", 6 | "European Conference on Computer Vision": "ECCV", 7 | "IEEE International Conference on Image Processing": "ICIP", 8 | "International Conference on Pattern Recognition": "ICPR", 9 | "International Conference on 3D Vision": "3DV", 10 | "Asian Conference on Computer Vision": "ACCV", 11 | "IEEE Winter Conference on Applications of Computer Vision": "WACV", 12 | "IEEE visualization conference": "IEEE VIS", 13 | "International conference on multimedia and expo": "ICME", 14 | "British machine vision conference": "BMVC", 15 | "ACM International Conference on Multimedia": "ACM MM", 16 | "ACM SIGGRAPH Annual Conference": "SIGGRAPH", 17 | "International Conference on Medical Image Computing and Computer Assisted Intervention": "MICCAI", 18 | "International Conference on Document Analysis and Recognition": "ICDAR", 19 | "Medical Image Computing and Computer Assisted Intervention Society":"MICCAI" 20 | } -------------------------------------------------------------------------------- /Simbiber/config/DM.json: -------------------------------------------------------------------------------- 1 | { 2 | "KDD": "KDD", 3 | "Knowledge Discovery and Data Mining": "KDD", 4 | "SIGMOD international conference on Management of data": "SIGMOD", 5 | "The Web Conference": "WWW", 6 | "World Wide Web Conference": "WWW", 7 | "international conference on world wide web": "WWW", 8 | "IEEE International Conference on Data Engineering": "ICDE", 9 | "International Conference on Very Large Data Base": "VLDB", 10 | "International Conference on Database Theory": "ICDT", 11 | "Automated Knowledge Base Construction": "AKBC", 12 | "ACM International Conference on Web Search and Data Mining": "WSDM", 13 | "International Conference on Information and Knowledge Management": "CIKM", 14 | "SIAM International Conference on Data Mining": "SDM", 15 | "International Conference on Data Mining": "ICDM", 16 | "The European Conference on Machine Learning and Principles and Practice of Knowledge Discovery in Databases": "ECML-PKDD", 17 | "Language Resources and Evaluation Conference": "LREC", 18 | "Pacific-Asia Conference on Knowledge Discovery and Data Mining": "PAKDD", 19 | "Database Systems for Advanced Applications": "DASFAA", 20 | "Principles of Database Systems": "PODS", 21 | "Asia Pacific Web Conference": "APWeb", 22 | "Conference Series on Recommender Systems": "RecSys", 23 | "Mobile Data Management":"MDM", 24 | "Extending DB Technology":"EDBT", 25 | "Extending Database Technology":"EDBT", 26 | "Conference on Innovative Data Systems Research":"CIDR" 27 | } -------------------------------------------------------------------------------- /Simbiber/config/IR.json: -------------------------------------------------------------------------------- 1 | { 2 | "International Conference on Research on Development in Information Retrieval": "SIGIR", 3 | "SIGIR": "SIGIR", 4 | "European Conference on IR Research": "ECIR", 5 | "ACM International Conference on Multimedia Retrieval": "ICMR", 6 | "International Semantic Web Conference": "ISWC", 7 | "Extended Semantic Web Conference": "ESWC", 8 | "International Conference on the Theory of Information Retrieval":"ICTIR" 9 | } -------------------------------------------------------------------------------- /Simbiber/config/ML.json: -------------------------------------------------------------------------------- 1 | { 2 | "International Conference on Learning Representations": "ICLR", 3 | "International Conference on Machine Learning": "ICML", 4 | "Neural Information Processing Systems": "NeurIPS", 5 | "International Conference on Artificial Intelligence and Statistics": "AISTATS", 6 | "Conference on Uncertainty in Artificial Intelligence": "UAI", 7 | "Asian Conference on Machine Learning": "ACML", 8 | "Machine Learning for Health": "ML4H", 9 | "European Conference on Machine Learning": "ECML" 10 | } -------------------------------------------------------------------------------- /Simbiber/config/NLP.json: -------------------------------------------------------------------------------- 1 | { 2 | "Association for Computational Linguistics": "ACL", 3 | "Findings of the Association for Computational Linguistics": "ACL Findings", 4 | "Findings of the Association for Computational Linguistics: EMNLP": "EMNLP Findings", 5 | "Empirical Methods in Natural Language Processing": "EMNLP", 6 | "Natural Language Processing and Chinese Computing": "NLPCC", 7 | "NLPCC": "NLPCC", 8 | "International Conference on Acoustics, Speech and Signal Processing": "ICASSP", 9 | "International Conference on Acoustics, Speech, & Signal Processing": "ICASSP", 10 | "ICASSP": "ICASSP", 11 | "Chinese Computational Linguistics": "CCL", 12 | "COLING": "COLING", 13 | "Workshop on Representation Learning for NLP": "RepL4NLP", 14 | "International Conference on Computational Linguistics": "COLING", 15 | "North American Chapter of the Association for Computational Linguistics": "NAACL", 16 | "European Chapter of the ACL": "EACL", 17 | "European Chapter of the Association for Computational Linguistics": "EACL", 18 | "EACL": "EACL", 19 | "Asian Chapter of the Association for Computational Linguistics": "AACL", 20 | "AACL": "AACL", 21 | "Asia-Pacific Chapter of the Association for Computational Linguistics": "AACL", 22 | "Conference on Computational Natural Language Learning": "CoNLL", 23 | "Annual Conference on Computational Learning Theory": "COLT", 24 | "International Conference on Neural Information Processing": "ICONIP", 25 | "International Conference on Document Analysis and Recognition": "ICDAR", 26 | "{SIG}dial Meeting on Discourse and Dialogue": "SIGDIAL", 27 | "{SIG}dial": "SIGDIAL", 28 | "SIGDIAL": "SIGDIAL", 29 | "LREC": "LREC", 30 | "Language Resources and Evaluation Conference": "LREC", 31 | "Conference on Language Resources and Evaluation": "LREC", 32 | "International Workshop on Semantic Evaluation":"SemEval", 33 | "Workshop on Arabic natural language processing": "WANLP", 34 | "Arabic Natural Language Processing Workshop": "WANLP", 35 | "Workshop on Online Abuse and Harms": "WOAH", 36 | "Workshop on Computational Approaches to Subjectivity, Sentiment and Social Media Analysis": "WASSA", 37 | "Conference of the International Speech Communication Association":"INTERSPEECH", 38 | "Interspeech": "Interspeech", 39 | "Transactions of the Association for Computational Linguistics": "TACL", 40 | "Special Interest Group on Discourse and Dialogue": "SIGDIAL", 41 | "International Conference on Data Mining": "ICDM" 42 | } -------------------------------------------------------------------------------- /Simbiber/config/Security.json: -------------------------------------------------------------------------------- 1 | { 2 | "ACM Conference on Computer and Communications Security": "CCS", 3 | "IEEE Symposium on Security and Privacy": "SP", 4 | "Usenix Security Symposium": "USENIX Security", 5 | "Network and Distributed System Security Symposium": "NDSS", 6 | "Annual Computer Security Applications Conference": "ACSA", 7 | "Dependable Systems and Networks": "DSN", 8 | "European Symposium on Research in Computer Security": "ESORICS", 9 | "International Symposium on Recent Advances in Intrusion Detection": "RAID", 10 | "ACM Asia Conference on Computer and Communications Security": "AsiaCCS", 11 | "European Symposium on Security and Privacy": "EuroS&P", 12 | "International Conference on Information and Communication Security": "ICICS" 13 | } -------------------------------------------------------------------------------- /Simbiber/config/Sys.json: -------------------------------------------------------------------------------- 1 | { 2 | "USENIX Symposium on Operating Systems Design and Implementations": "OSDI", 3 | "ACM Symposium on Operating Systems Principles": "SOSP", 4 | "International Conference on Software Engineering": "ICSE", 5 | "International Symposium on Software Testing and Analysis": "ISSTA", 6 | "ACM SIGSOFT Symposium on the Foundation of Software Engineering/ European Software Engineering Conference": "FSE/ESEC" 7 | } -------------------------------------------------------------------------------- /Simbiber/data/bibtex.bib: -------------------------------------------------------------------------------- 1 | @inproceedings{li-etal-2019-survey, 2 | title = "A Sophisticated Survey about Chinese Poem and Beers", 3 | author = "Li, Bai and 4 | Ha, Pi and 5 | Jin, Shibai and 6 | Xue, Hua and 7 | Mao, Tai", 8 | booktitle = "Proceedings of the 2019 Conference on Empirical Methods in Natural Language Processing and the 9th International Joint Conference on Natural Language Processing (EMNLP-IJCNLP)", 9 | month = nov, 10 | year = "2019", 11 | address = "Hong Kong, China", 12 | publisher = "Association for Computational Linguistics", 13 | url = "https://aclanthology.org/D19-1214", 14 | doi = "10.18653/v1/D19-1214", 15 | pages = "2078--2087", 16 | abstract = "Intent detection and slot filling are two main tasks for building a spoken language understanding (SLU) system. The two tasks are closely tied and the slots often highly depend on the intent. In this paper, we propose a novel framework for SLU to better incorporate the intent information, which further guiding the slot filling. In our framework, we adopt a joint model with Stack-Propagation which can directly use the intent information as input for slot filling, thus to capture the intent semantic knowledge. In addition, to further alleviate the error propagation, we perform the token-level intent detection for the Stack-Propagation framework. Experiments on two publicly datasets show that our model achieves the state-of-the-art performance and outperforms other previous methods by a large margin. Finally, we use the Bidirectional Encoder Representation from Transformer (BERT) model in our framework, which further boost our performance in SLU task.", 17 | } -------------------------------------------------------------------------------- /Simbiber/keep_keys.cfg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MLNLP-World/SimBiber/239cc0fb305198a2cdc4e14059f61216f592c3ba/Simbiber/keep_keys.cfg -------------------------------------------------------------------------------- /Simbiber/main.py: -------------------------------------------------------------------------------- 1 | ''' 2 | Author: Qiguang Chen 3 | LastEditors: Qiguang Chen 4 | Date: 2023-02-22 19:14:04 5 | LastEditTime: 2024-06-27 10:23:28 6 | Description: 7 | 8 | ''' 9 | import json 10 | from argparse import ArgumentParser 11 | import Simbiber 12 | import sys 13 | import os 14 | 15 | from Simbiber.SimBiberTool import SimBiberTool 16 | filepath = os.path.dirname(os.path.abspath(__file__)) + '/' 17 | 18 | def main(): 19 | def str2bool(v): 20 | if v.lower() in ('yes', 'true', 't', 'y', '1'): 21 | return True 22 | elif v.lower() in ('no', 'false', 'f', 'n', '0'): 23 | return False 24 | else: 25 | return False 26 | 27 | parser = ArgumentParser() 28 | parser.add_argument("-i", '--input_path', type=str, default=filepath+"data/bibtex.bib") 29 | parser.add_argument("-o", '--output_path', type=str, default=filepath+"out/bibtex.bib") 30 | parser.add_argument("-c", '--config_path', type=str, default=filepath+"config") 31 | parser.add_argument("-a",'--if_append_output', type=str2bool, default='False') 32 | parser.add_argument("-s",'--enable_simplify', type=str2bool, default='True') 33 | parser.add_argument("-m",'--merge', type=str2bool, default='False') 34 | parser.add_argument("-cch", '--cache_num', type=int, default=100) 35 | parser.add_argument("-r", '--remove_duplicate', type=str2bool, default='False') 36 | parser.add_argument("-keep", '--keep_keys', type=str, default=None) 37 | args = parser.parse_args() 38 | sim_biber = SimBiberTool(args) 39 | if not (os.path.exists(filepath+"keep_keys.cfg")) and args.keep_keys is None: 40 | with open("keep_keys.cfg", 'w') as f: 41 | f.write("") 42 | if args.keep_keys is not None: 43 | with open("keep_keys.cfg", 'w') as f: 44 | f.write(args.keep_keys.replace(" ", "")) 45 | 46 | sim_biber.simplify() 47 | 48 | 49 | if __name__ == '__main__': 50 | main() -------------------------------------------------------------------------------- /Simbiber/out/bibtex.bib: -------------------------------------------------------------------------------- 1 | @inproceedings{li-etal-2019-survey, 2 | author = {Li, Bai and 3 | Ha, Pi and 4 | Jin, Shibai and 5 | Xue, Hua and 6 | Mao, Tai}, 7 | booktitle = {Proc. of EMNLP}, 8 | title = {A Sophisticated Survey about Chinese Poem and Beers}, 9 | year = {2019} 10 | } 11 | -------------------------------------------------------------------------------- /Simbiber/parserConfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "AAAI": "AAAI", 3 | "Association for Computational Linguistics": "ACL", 4 | "International Conference on Learning Representations": "ICLR", 5 | "International Conference on Machine Learning": "ICML", 6 | "Empirical Methods in Natural Language Processing": "EMNLP", 7 | "Neural Information Processing Systems": "NeuIPS", 8 | "Natural Language Processing and Chinese Computing": "NLPCC", 9 | "International Conference on Acoustics, Speech and Signal Processing": "ICASSP", 10 | "Chinese Computational Linguistics": "CCL", 11 | "{SIG}dial Meeting on Discourse and Dialogue": "SIGDIAL", 12 | "{SIG}dial": "SIGDIAL", 13 | "SIGDIAL": "SIGDIAL", 14 | "Language Resources and Evaluation Conference": "LREC", 15 | "International Workshop on Semantic Evaluation":"SemEval", 16 | "COLING": "COLING", 17 | "International Conference on Computational Linguistics": "COLING", 18 | "Transactions of the Association for Computational Linguistics":"TACL" 19 | } -------------------------------------------------------------------------------- /figure/MLNLP.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MLNLP-World/SimBiber/239cc0fb305198a2cdc4e14059f61216f592c3ba/figure/MLNLP.png -------------------------------------------------------------------------------- /keep_keys.cfg: -------------------------------------------------------------------------------- 1 | booktitle,pages,journal -------------------------------------------------------------------------------- /setup.py: -------------------------------------------------------------------------------- 1 | ''' 2 | Author: Qiguang Chen 3 | LastEditors: Qiguang Chen 4 | Date: 2023-02-22 19:14:04 5 | LastEditTime: 2023-02-22 19:43:58 6 | Description: 7 | 8 | ''' 9 | #!python 10 | # -*- coding:utf-8 -*- 11 | from __future__ import print_function 12 | from setuptools import setup 13 | 14 | with open("README.md", "r", encoding='utf-8') as fh: 15 | long_description = fh.read() 16 | 17 | setup( 18 | name="simbiber", 19 | version="0.8.1", 20 | author="Qiguang Chen", 21 | author_email="charleschen2333@gmail.com", 22 | description="a tool to fix and simplify bib automatically.", 23 | long_description=long_description, 24 | long_description_content_type="text/markdown", 25 | license="MIT", 26 | url="https://github.com/MLNLP-World/SimBiber", 27 | include_package_data = True, 28 | install_requires=[ 29 | "argparse", 30 | "bibtexparser>=1.2.0", 31 | "tqdm" 32 | ], 33 | classifiers=[ 34 | "Development Status :: 4 - Beta", 35 | "Environment :: Console", 36 | 'Topic :: Text Editors :: Text Processing', 37 | 'Topic :: Text Processing :: Filters', 38 | "Topic :: Text Processing :: Markup :: LaTeX", 39 | "Programming Language :: Python", 40 | "Programming Language :: Python :: 3", 41 | "Programming Language :: Python :: 3.6", 42 | "Programming Language :: Python :: 3.7", 43 | "Programming Language :: Python :: 3.8", 44 | 'Programming Language :: Python :: Implementation :: CPython', 45 | ], 46 | entry_points={ 47 | 'console_scripts': ['simbiber = Simbiber.main:main'], 48 | }, 49 | packages=['Simbiber'], 50 | package_dir={"Simbiber":"Simbiber"}, 51 | package_data={ 52 | "Simbiber": ["config/*.json", "parserConfig.json", "keep_keys.cfg", "data/*.bib", "out/*.bib"], 53 | }, 54 | py_modules=['Simbiber.main', 'Simbiber.SimBiberTool', 'Simbiber.BibTool'], 55 | ) 56 | --------------------------------------------------------------------------------