├── .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 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 | ------
33 |
34 |
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: - It only works in simplify single bib file.
- If `output_path==input_path`, it will rewrite input file.
- Without this param, it will be auto filled:
- If simplifying single bib `file`, it will rewrite input file;
- If simplifying bib `directory`, it will output to `./out` dir.
|
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 |
--------------------------------------------------------------------------------