andrewzamai's picture
Update README.md
2030469 verified
metadata
language:
  - it
pipeline_tag: text-generation
license: llama3
tags:
  - facebook
  - meta
  - pythorch
  - llama
  - llama-3
  - llamantino
  - zero-shot NER
  - NER
base_model: swap-uniba/LLaMAntino-3-ANITA-8B-Inst-DPO-ITA

SLIMER-IT: Show Less Instruct More Entity Recognition - Italian language

SLIMER-IT is an LLM specifically instructed for zero-shot NER on Italian language.

Github repository: https://github.com/andrewzamai/SLIMER_IT

Instructed on a reduced number of tags (PER, ORG, LOC), it is designed to tackle never-seen-before Named Entity tags by leveraging a prompt enriched with a DEFINITION and GUIDELINES for the NE to be extracted.

Built with Meta Llama 3, based on the Italian instruction-tuned version swap-uniba/LLaMAntino-3-ANITA-8B-Inst-DPO-ITA

Instruction Tuning Prompt
Instruction Tuning Prompt

Ti viene fornito un input di testo (delimitato da tre virgolette) e un'istruzione.
Leggi il testo e rispondi all'istruzione alla fine.

"""
{input di testo}
"""

Istruzione: Estrai tutte le entità di tipo ENTITÀ MITOLOGICA dal testo che hai letto.

Ti vengono fornite una DEFINIZIONE e alcune LINEE GUIDA.

DEFINIZIONE: ENTITÀ MITOLOGICA denota personaggi, divinità, creature o figure mitologiche provenienti da tradizioni religiose, miti, leggende o folklore.

LINEE GUIDA: Assicurati di non etichettare come ENTITÀ MITOLOGICA personaggi storici o letterari reali. Ad esempio, 'Alessandro Magno' è un personaggio storico, non una figura mitologica. Inoltre, fai attenzione a distinguere nomi comuni o nomi di luoghi che possono riferirsi anche a figure mitologiche, come 'Diana', che può essere un nome proprio e il nome della dea romana della caccia.

Restituisci una lista JSON di istanze di questo tipo. Restituisci una lista vuota se non sono presenti istanze.

JSON Template
JSON SLIMER-IT prompt
{
  "description": "SLIMER prompt for Italian",
  "prompt_input": "<|start_header_id|>system<|end_header_id|>\n\n Sei un utile assistente.<|eot_id|>\n<|start_header_id|>user<|end_header_id|>\n\nTi viene fornito un input di testo (delimitato da tre virgolette) e un'istruzione. \nLeggi il testo e rispondi all'istruzione alla fine.\n\"\"\"\n{input}\n\"\"\"\nIstruzione: Estrai tutte le entità di tipo {NE_name} dal testo che hai letto. Ti vengono fornite una DEFINIZIONE e alcune LINEE GUIDA.\nDEFINIZIONE: {definition}\nLINEE GUIDA: {guidelines}\nRestituisci una lista JSON di istanze di questo tipo. Restituisci una lista vuota se non sono presenti istanze.<|eot_id|>\n<|start_header_id|>assistant<|end_header_id|>\n\n"
  }
from vllm import LLM, SamplingParams

vllm_model = LLM(model="expertai/SLIMER-IT")

sampling_params = SamplingParams(temperature=0, max_tokens=128)

prompts = [prompter.generate_prompt(instruction, input) for instruction, input in instruction_input_pairs]
responses = vllm_model.generate(prompts, sampling_params)

Citation

If you find SLIMER-IT useful in your research or work, please cite the following paper:

@misc{zamai2024slimeritzeroshotneritalian,
      title={SLIMER-IT: Zero-Shot NER on Italian Language}, 
      author={Andrew Zamai and Leonardo Rigutini and Marco Maggini and Andrea Zugarini},
      year={2024},
      eprint={2409.15933},
      archivePrefix={arXiv},
      primaryClass={cs.CL},
      url={https://arxiv.org/abs/2409.15933}, 
}