Schema-adaptable Knowledge Graph Construction de code papier.
Notre travail a été accepté par la conférence EMNLP2023.
Pour exécuter le code, vous devez installer les exigences suivantes:
conda create -n adakgc python=3.8
pip install torch==1.8.0+cu111 -f https://download.pytorch.org/whl/torch_stable.html
pip install -r requirements.txt
Notre pièce de tokenizer modèle utilise UIE et les autres utilisent T5, il s'agit donc d'un fichier mixte. Le lien de téléchargement est fourni ici, veuillez vous assurer d'utiliser ce modèle. hf_models / mix
Pour plus d'informations sur la construction de l'ensemble de données, voir la construction de données.
Vous pouvez trouver l'ensemble de données via le lien Google Drive suivant.
DataSet ACE05, Few-nerd, NYT
mkdir hf_models
cd hf_models
git lfs install
git clone https : // huggingface . co / google / t5 - v1_1 - base
cd ..
mkdir output # */AdaKGC/output # Current path: */AdaKGC
mode=H
data_name=Few-NERD
task=entity
device=0
ratio=0.8
bash scripts/fine_prompt.bash --model=hf_models/mix --data=data/ ${data_name} _ ${mode} /iter_1 --output=output/ ${data_name} _ ${mode} _ ${ratio} --config=config/prompt_conf/Few-NERD.ini --device= ${device} --negative_ratio= ${ratio} --record2=data/ ${data_name} _ ${mode} /iter_7/record.schema --use_prompt=True --init_prompt=True
model : le nom ou le chemin du modèle pré-entraîné.
data : le chemin d'accès à l'ensemble de données.
output : Chemin du point de contrôle à réglage fin enregistré et le chemin de sortie final généré automatiquement `ADAKGC / OUTPUT / ACE05_EVENT_H_E30_LR1E-4_B14_N0.
config : Le fichier de configuration par défaut, dans le répertoire config/prompt_conf , la configuration de chaque tâche est différente.
mode : Mode d'ensemble de données ( H , V , M ou R ).
device : CUDA_VISIBLE_DEVICES.
batch : taille du lot.
(Voir les scripts bash et les fichiers Python pour les paramètres de ligne de commande détaillés)
mode=H
data_name=NYT
task=relation
device=0
ratio=0.8
bash scripts/fine_prompt.bash --model=hf_models/mix --data=data/ ${data_name} _ ${mode} /iter_1 --output=output/ ${data_name} _ ${mode} _ ${ratio} --config=config/prompt_conf/NYT.ini --device= ${device} --negative_ratio= ${ratio} --record2=data/ ${data_name} _ ${mode} /iter_7/record.schema --use_prompt=True --init_prompt=Truemode=H
data_name=ace05_event
task=event
device=0
ratio=0.8
bash scripts/fine_prompt.bash --model=hf_models/mix --data=data/ ${data_name} _ ${mode} /iter_1 --output=output/ ${data_name} _ ${mode} _ ${ratio} --config=config/prompt_conf/ace05_event.ini --device= ${device} --negative_ratio= ${ratio} --record2=data/ ${data_name} _ ${mode} /iter_7/record.schema --use_prompt=True --init_prompt=Truedata/ace05_event_H/iter_1 ) mode=H
data_name=ace05_event
task=event
device=0
ratio=0.8
python3 inference.py --dataname=data/ ${data_name} / ${data_name} _ ${mode} /iter_2 --t5_path=hf_models/mix --model=output/ ${data_name} _ ${mode} _ ${ratio} --task= ${task} --cuda= ${device} --mode= ${mode} --use_prompt --use_ssi --prompt_len=80 --prompt_dim=512 datasetname : le chemin vers l'ensemble de données à prédire ( ace05_event , NYT ou Few-NERD ).
model : Le chemin du modèle obtenu après la formation précédente (sortie au stade d'entraînement).
t5_path : modèle de base T5 (modèle au stade de formation).
task : type de tâche (entité, relation, événement).
cuda : CUDA_VISIBLE_DEVICES.
mode : Mode d'ensemble de données ( H , V , M ou R ).
use_ssi , use_prompt , prompt_len , prompt_dim doit être cohérent avec le temps de formation. Vous pouvez afficher et le définir dans le fichier de configuration correspondant Config / Prompt_Conf / ACE05_Event.ini.
data/iter_1/ace05_event_H ~ data/iter _7/ace05_event_H ) mode=H
data_name=ace05_event
task=event
device=0
ratio=0.8
python3 inference_mul.py --dataname=data/ ${data_name} / ${data_name} _ ${mode} --t5_path=hf_models/mix --model=output/ ${data_name} _ ${mode} _ ${ratio} --task= ${task} --cuda= ${device} --mode= ${mode} --use_prompt --use_ssi --prompt_len=80 --prompt_dim=512 use_ssi , use_prompt , prompt_len , prompt_dim doit être cohérent avec la formation.
Le processus complet, y compris le réglage fin et le raisonnement (dans "Scripts / run.bash"):
mode=H
data_name=ace05_event
task=event
device=0
ratio=0.8
bash scripts/run_prompt.bash --model=hf_models/mix --data=data/ ${data_name} _ ${mode} /iter_1 --output=output/ ${data_name} _ ${mode} _ ${ratio} --config=config/prompt_conf/ace05_event.ini --device= ${device} --negative_ratio= ${ratio} --record2=data/ ${data_name} _ ${mode} /iter_7/record.schema --use_prompt=True --init_prompt=True
python3 inference_mul.py --dataname=data/ ${data_name} / ${data_name} _ ${mode} --t5_path=hf_models/mix --model=output/ ${data_name} _ ${mode} _ ${ratio} --task= ${task} --cuda= ${device} --mode= ${mode} --use_prompt --use_ssi --prompt_len=80 --prompt_dim=512| indice | définition | F1 |
|---|---|---|
| ent- (p / r / f1) | Score Micro-F1 de l'entité (type d'entité, entité) | spot-f1 |
| rel-strict- (p / r / f1) | Scores Micro-F1 pour les modes de relation stricts (type de relation, arg1 span, type arg1, arg2 span, type arg2) | ASOC-F1 est utilisé pour les relations, Spot-F1 est utilisé pour les entités |
| EVT-Trigger- (P / R / F1) | Micro-F1 Score du mot de déclenchement de l'événement (type d'événement, gâchette) | spot-f1 |
| evt-role- (p / r / f1) | Micro-F1 Score pour les rôles d'événements (type d'événement, rôle arg, arg span) | ASOC-F1 |
Global-F1 fait référence à la somme de SPOT-F1 et ASOC-F1, qui peut dépasser 100.
Une partie de notre code est empruntée à Uie et UnifiedSkg, merci beaucoup.
Si vous utilisez ou étendez notre travail, veuillez citer le papier comme suit:
@article { DBLP:journals/corr/abs-2305-08703 ,
author = { Hongbin Ye and
Honghao Gui and
Xin Xu and
Huajun Chen and
Ningyu Zhang } ,
title = { Schema-adaptable Knowledge Graph Construction } ,
journal = { CoRR } ,
volume = { abs/2305.08703 } ,
year = { 2023 } ,
url = { https://doi.org/10.48550/arXiv.2305.08703 } ,
doi = { 10.48550/arXiv.2305.08703 } ,
eprinttype = { arXiv } ,
eprint = { 2305.08703 } ,
timestamp = { Wed, 17 May 2023 15:47:36 +0200 } ,
biburl = { https://dblp.org/rec/journals/corr/abs-2305-08703.bib } ,
bibsource = { dblp computer science bibliography, https://dblp.org }
}