Update README.md
Browse files
README.md
CHANGED
@@ -1,3 +1,78 @@
|
|
1 |
---
|
2 |
license: apache-2.0
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3 |
---
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
---
|
2 |
license: apache-2.0
|
3 |
+
datasets:
|
4 |
+
- Universal-NER/Pile-NER-type
|
5 |
+
language:
|
6 |
+
- en
|
7 |
+
metrics:
|
8 |
+
- f1
|
9 |
+
library_name: transformers
|
10 |
+
pipeline_tag: text-generation
|
11 |
---
|
12 |
+
|
13 |
+
<p align="center"><h2 align="center">Rethinking Negative Instances for Generative Named Entity Recognition</h2></p>
|
14 |
+
|
15 |
+
# Model Card for GNER-LLaMA-7B
|
16 |
+
|
17 |
+
<!-- Provide a quick summary of what the model is/does. -->
|
18 |
+
|
19 |
+
We introduce GNER, a **G**enerative **N**amed **E**ntity **R**ecognition framework, which demonstrates enhanced zero-shot capabilities across unseen entity domains. Experiments on two representative generative models, i.e., LLaMA and Flan-T5, show that the integration of negative instances into the training process yields substantial performance enhancements. The resulting models, GNER-LLaMA and GNER-T5, outperform state-of-the-art (SoTA) approaches by a large margin, achieving improvements of 8 and 11 points in $F_1$ score, respectively. Code and models are publicly available.
|
20 |
+
|
21 |
+
* π» Code: [https://github.com/yyDing1/GNER/](https://github.com/yyDing1/GNER/)
|
22 |
+
* π Paper: [Rethinking Negative Instances for Generative Named Entity Recognition](https://arxiv.org/abs/2402.16602)
|
23 |
+
* πΎ Models in the π€ HuggingFace Hub: [GNER-Models](https://huggingface.co/collections/dyyyyyyyy/gner-65dda2cb96c6e35c814dea56)
|
24 |
+
* π Reproduction Materials: [Reproduction Materials](https://drive.google.com/drive/folders/1m2FqDgItEbSoeUVo-i18AwMvBcNkZD46?usp=drive_link)
|
25 |
+
|
26 |
+
<p align="center">
|
27 |
+
<img src="https://github.com/yyDing1/GNER/blob/main/assets/zero_shot_results.png">
|
28 |
+
</p>
|
29 |
+
|
30 |
+
## PreTrained Models
|
31 |
+
|
32 |
+
We release five GNER models based on LLaMA (7B) and Flan-T5 (base, large, xl and xxl).
|
33 |
+
|
34 |
+
| Model | # Params | Zero-shot Average $F_1$ | Supervised Average $F_1$ | π€ HuggingFace<br />Download Link |
|
35 |
+
| ------------- | -------: | :----------------------: | :-----------------------: | :-------------------------------------------------: |
|
36 |
+
| GNER-LLaMA | 7B | 66.1 | 86.09 | [link](https://huggingface.co/dyyyyyyyy/GNER-LLaMA-7B) |
|
37 |
+
| GNER-T5-base | 248M | 59.5 | 83.21 | [link](https://huggingface.co/dyyyyyyyy/GNER-T5-base) |
|
38 |
+
| GNER-T5-large | 783M | 63.5 | 85.45 | [link](https://huggingface.co/dyyyyyyyy/GNER-T5-large) |
|
39 |
+
| GNER-T5-xl | 3B | 66.1 | 85.94 | [link](https://huggingface.co/dyyyyyyyy/GNER-T5-xl) |
|
40 |
+
| GNER-T5-xxl | 11B | 69.1 | 86.15 | [link](https://huggingface.co/dyyyyyyyy/GNER-T5-xxl) |
|
41 |
+
|
42 |
+
## Demo usage
|
43 |
+
|
44 |
+
You should install the dependencies:
|
45 |
+
```bash
|
46 |
+
pip install torch>=2.1.0 datasets>=2.17.0 deepspeed>=0.13.4 accelerate>=0.27.2 transformers>=4.38.1 protobuf>=4.25.3
|
47 |
+
```
|
48 |
+
|
49 |
+
Below is an using `GNER-LLaMA`
|
50 |
+
```python
|
51 |
+
>>> from transformers import AutoTokenizer, AutoModelForCasualLM
|
52 |
+
>>> tokenizer = AutoTokenizer.from_pretrained("dyyyyyyyy/GNER-LLaMA-7B")
|
53 |
+
>>> model = AutoModelForSeq2SeqLM.from_pretrained("dyyyyyyyy/GNER-LLaMA-7B")
|
54 |
+
>>> model = model.eval()
|
55 |
+
>>> instruction_template = "Please analyze the sentence provided, identifying the type of entity for each word on a token-by-token basis.\nOutput format is: word_1(label_1), word_2(label_2), ...\nWe'll use the BIO-format to label the entities, where:\n1. B- (Begin) indicates the start of a named entity.\n2. I- (Inside) is used for words within a named entity but are not the first word.\n3. O (Outside) denotes words that are not part of a named entity.\n"
|
56 |
+
>>> entity_labels = ["genre", "rating", "review", "plot", "song", "average ratings", "director", "character", "trailer", "year", "actor", "title"]
|
57 |
+
>>> instruction = f"{instruction_template}\nUse the specific entity tags: {', '.join(label_list)} and O.\n"
|
58 |
+
>>> instruction = f"[INST] {instruction} [/INST]"
|
59 |
+
>>> inputs = tokenizer(instruction, return_tensors="pt").to("cuda")
|
60 |
+
>>> outputs = model.generate(**inputs, max_new_tokens=640)
|
61 |
+
>>> response = tokenizer.decode(outputs[0], skip_special_tokens=True)
|
62 |
+
>>> response = response[preds.find("[/INST]") + len("[/INST]"):].strip()
|
63 |
+
>>> print(response)
|
64 |
+
"did(O) george(B-actor) clooney(I-actor) make(O) a(O) musical(B-genre) in(O) the(O) 1980s(B-year)"
|
65 |
+
|
66 |
+
|
67 |
+
## Citation
|
68 |
+
|
69 |
+
```bibtex
|
70 |
+
@misc{ding2024rethinking,
|
71 |
+
title={Rethinking Negative Instances for Generative Named Entity Recognition},
|
72 |
+
author={Yuyang Ding and Juntao Li and Pinzheng Wang and Zecheng Tang and Bowen Yan and Min Zhang},
|
73 |
+
year={2024},
|
74 |
+
eprint={2402.16602},
|
75 |
+
archivePrefix={arXiv},
|
76 |
+
primaryClass={cs.CL}
|
77 |
+
}
|
78 |
+
```
|