framolfese commited on
Commit
a97ae7b
โ€ข
1 Parent(s): a98e5a4

Create README.md

Browse files
Files changed (1) hide show
  1. README.md +171 -0
README.md ADDED
@@ -0,0 +1,171 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ---
2
+ license: cc
3
+ language:
4
+ - en
5
+ base_model:
6
+ - intfloat/e5-base-v2
7
+ tags:
8
+ - retrieval
9
+ - question answering
10
+ ---
11
+
12
+ <div align="center">
13
+ <img src="https://github.com/SapienzaNLP/zebra/blob/master/assets/zebra.png?raw=true" width="100" height="100">
14
+ </div>
15
+
16
+ <div align="center">
17
+ <h1>ZEBRA: Zero-Shot Example-Based Retrieval Augmentation for Commonsense Question Answering</h1>
18
+ </div>
19
+
20
+ <div style="display:flex; justify-content: center; align-items: center; flex-direction: row;">
21
+ <a href="https://2024.emnlp.org/"><img src="https://img.shields.io/badge/EMNLP-2024-4b44ce"></a> &nbsp; &nbsp;
22
+ <a href="https://arxiv.org/abs/2410.05077"><img src="https://img.shields.io/badge/arXiv-paper-b31b1b.svg"></a> &nbsp; &nbsp;
23
+ <a href="https://creativecommons.org/licenses/by-nc-sa/4.0/"><img src="https://img.shields.io/badge/License-CC%20BY--NC--SA%204.0-lightgrey.svg"></a> &nbsp; &nbsp;
24
+ <a href="https://huggingface.co/collections/sapienzanlp/zebra-66e3ec50c8ce415ea7572d0e"><img src="https://img.shields.io/badge/%F0%9F%A4%97%20Hugging%20Face-Collection-FCD21D"></a> &nbsp; &nbsp;
25
+ <a href="https://github.com/SapienzaNLP/zebra"><img src="https://img.shields.io/badge/GitHub-Repo-121013?logo=github&logoColor=white"></a> &nbsp; &nbsp;
26
+ </div>
27
+
28
+ <div align="center"> A retrieval augmentation framework for zero-shot commonsense question answering with LLMs. </div>
29
+
30
+ ## ๐Ÿ› ๏ธ Installation
31
+
32
+ Installation from PyPi
33
+
34
+ ```bash
35
+ pip install zebra-qa
36
+ ```
37
+
38
+ Installation from source
39
+
40
+ ```bash
41
+ git clone https://github.com/sapienzanlp/zebra.git
42
+ cd zebra
43
+ conda create -n zebra python==3.10
44
+ conda activate zebra
45
+ pip install -e .
46
+ ```
47
+
48
+ ## ๐Ÿš€ Quick Start
49
+
50
+ ZEBRA is a plug-and-play retrieval augmentation framework for **Commonsense Question Answering**. \
51
+ It is composed of three pipeline stages: *example retrieval*, *knowledge generation* and *informed reasoning*.
52
+
53
+ - Example retrieval: given a question, we retrieve relevant examples of question-knowledge pairs from a large collection
54
+ - Knowledge generation: we prompt an LLM to generate useful explanations for the given input question by leveraging the relationships in the retrieved question-knowledge pairs.
55
+ - Informed reasoning: we prompt the same LLM for the question answering task by taking advantage of the previously generated explanations.
56
+
57
+ Here is an example of how to use ZEBRA for question answering:
58
+
59
+ ```python
60
+ from zebra import Zebra
61
+
62
+ # Load Zebra with language model, retriever, document index and explanations.
63
+ zebra = Zebra(
64
+ model="meta-llama/Meta-Llama-3-8B-Instruct",
65
+ retriever="sapienzanlp/zebra-retriever-e5-base-v2",
66
+ document_index="sapienzanlp/zebra-kb"
67
+ )
68
+
69
+ # Provide a question and answer choices.
70
+ questions = [
71
+ "What should you do if you see someone hurt and in need of help?",
72
+ "If your friend is upset, what is the best way to support them?",
73
+ "What should you do if your phone battery is running low in a public place?",
74
+ "What should you do if you are running late for an important meeting?",
75
+ ]
76
+
77
+ choices = [
78
+ ["Walk away.", "Call for help.", "Take a photo for social media."],
79
+ ["Listen to them and offer comfort.", "Tell them they are overreacting.", "Ignore them and walk away."],
80
+ ["Borrow a stranger's phone.", "Use public charging station.", "Leave your phone unattended while it charges."],
81
+ ["Rush through traffic.", "Call and inform them you will be late.", "Do not show up at all."],
82
+ ]
83
+
84
+ # Generate knowledge and perform question answering.
85
+ zebra_output = zebra.pipeline(questions=questions, choices=choices)
86
+ ```
87
+
88
+ The output contains, for each question, a list of generated explanations and the predicted answer:
89
+
90
+ ```bash
91
+ ZebraOutput(
92
+ explanations=[
93
+ [
94
+ "Walking away would be neglecting the person's need for help and potentially putting them in danger.",
95
+ 'Calling for help, such as 911, is the most effective way to get the person the assistance they need.',
96
+ "Taking a photo for social media might spread awareness, but it's not a direct way to help the person in need."
97
+ ],
98
+ [
99
+ 'Listening and offering comfort shows empathy and understanding.',
100
+ "Telling someone they're overreacting can be dismissive and unhelpful.",
101
+ 'Ignoring someone in distress can be hurtful and unkind.'
102
+ ],
103
+ [
104
+ "Borrow a stranger's phone: Unwise, as it's a security risk and may lead to theft or damage.",
105
+ "Use public charging station: Safe and convenient, as it's a designated charging area.",
106
+ 'Leave your phone unattended while it charges: Not recommended, as it may be stolen or damaged.'
107
+ ],
108
+ [
109
+ 'Rush through traffic: This option is risky and may lead to accidents or stress.',
110
+ 'Call and inform them you will be late: This is the most likely option, as it shows respect for the meeting and allows for adjustments.',
111
+ 'Do not show up at all: This is unacceptable, as it shows disrespect for the meeting and may damage relationships.'
112
+ ],
113
+ ],
114
+ answers=[
115
+ "Call for help.",
116
+ "Listen to them and offer comfort.",
117
+ "Use public charging station.",
118
+ "Call and inform them you will be late."
119
+ ],
120
+ )
121
+ ```
122
+
123
+ You can also call the `zebra.pipeline` method with the `return_dict` parameter set to `True` to ask ZEBRA to return also the retrieved examples along with their explanations.
124
+
125
+ ## Models and Data
126
+
127
+ Models and data can be found at the following [HuggingFace Collection ๐Ÿค—](https://huggingface.co/collections/sapienzanlp/zebra-66e3ec50c8ce415ea7572d0e).
128
+
129
+ ## ๐Ÿ“Š Performance
130
+
131
+ We evaluate the performance of ZEBRA on 8 well-established commonsense question answering datasets. The following table shows the results (accuracy) of the models before / after the application of ZEBRA.
132
+
133
+ | Model | CSQA | ARC-C | ARC-E | OBQA | PIQA | QASC | CSQA2 | WG | AVG |
134
+ | ------------------------ | --------------- | --------------- | --------------- | --------------- | --------------- | --------------- | --------------- | --------------- | --------------- |
135
+ | Mistral-7B-Instruct-v0.2 | 68.2 / **73.3** | 72.4 / **75.2** | 85.8 / **87.4** | 68.8 / **75.8** | 76.1 / **80.2** | 66.1 / **68.3** | 58.5 / **67.5** | 55.8 / **60.7** | 68.9 / **73.5** |
136
+ | Phi3-small-8k-Instruct | 77.2 / **80.9** | 90.4 / **91.6** | 96.9 / **97.7** | 90.4 / **91.2** | 86.6 / **88.1** | **83.5** / 81.0 | 68.0 / **74.6** | 79.1 / **81.0** | 84.0 / **85.8** |
137
+ | Meta-Llama-3-8b-Instruct | 73.9 / **78.7** | 79.4 / **83.5** | 91.7 / **92.9** | 73.4 / **79.6** | 78.3 / **84.0** | 78.2 / **79.1** | 64.3 / **69.4** | 56.2 / **63.2** | 74.4 / **78.8** |
138
+ | Phi3-mini-128k-Instruct | 73.4 / **74.8** | 85.7 / **88.0** | 95.4 / **96.0** | 82.8 / **87.8** | 80.4 / **84.2** | **74.7** / 73.9 | 59.3 / **64.6** | 67.3 / **72.9** | 77.4 / **80.5** |
139
+
140
+ You can also download the official paper results at the following [Google Drive Link](https://drive.google.com/file/d/1l7bY-TkqnmVQn5M5ynQfT-0upMcRlMnT/view?usp=drive_link).
141
+
142
+ ## Cite this work
143
+
144
+ If you use any part of this work, please consider citing the paper as follows:
145
+
146
+ ```bibtex
147
+ @inproceedings{molfese-etal-2024-zebra,
148
+ title = "ZEBRA: Zero-Shot Example-Based Retrieval Augmentation for Commonsense Question Answering",
149
+ author = "Molfese, Francesco Maria and
150
+ Conia, Simone and
151
+ Orlando, Riccardo and
152
+ Navigli, Roberto",
153
+ editor = "",
154
+ booktitle = "Proceedings of the 2024 Conference on Empirical Methods in Natural Language Processing",
155
+ month = nov,
156
+ year = "2024",
157
+ address = "Miami",
158
+ publisher = "Association for Computational Linguistics",
159
+ url = "",
160
+ doi = "",
161
+ pages = "",
162
+ abstract = "",
163
+ }
164
+ ```
165
+
166
+ ## ๐Ÿชช License
167
+
168
+ The data and software are licensed under [Creative Commons Attribution-NonCommercial-ShareAlike 4.0](https://creativecommons.org/licenses/by-nc-sa/4.0/).
169
+
170
+ ## Acknowledgements
171
+ We gratefully acknowledge CREATIVE (CRoss-modalunderstanding and gEnerATIon of Visual and tExtual content) for supporting this work. Simone Conia gratefully acknowledges the support of Future AI Research ([PNRR MUR project PE0000013-FAIR](https://fondazione-fair.it/en/)), which fully funds his fellowship at Sapienza University of Rome since October 2023.