Código de papel Schema-adaptable Knowledge Graph Construction .
Nuestro trabajo ha sido aceptado por la Conferencia de Hallazgos EMNLP2023.
Para ejecutar el código, debe instalar los siguientes requisitos:
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
Nuestra parte del tokenizador modelo usa UIE, y los otros usan T5, por lo que es un archivo mixto. El enlace de descarga se proporciona aquí, asegúrese de usar este modelo. hf_models/mezclar
Para obtener más información sobre la construcción del conjunto de datos, consulte la construcción de datos.
Puede encontrar el conjunto de datos a través del siguiente enlace de Google Drive.
DataSet ACE05, pocos, 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 : el nombre o ruta del modelo previamente.
data : la ruta al conjunto de datos.
output : la ruta del punto de control de ajuste fino guardado y la ruta de salida final generada automáticamente `AdaKGC/Output/Ace05_Event_H_E30_LR1E-4_B14_N0.
config : el archivo de configuración predeterminado, en el directorio config/prompt_conf , la configuración de cada tarea es diferente.
mode : modo de conjunto de datos ( H , V , M o R ).
device : CUDA_VISIBLE_DEVICES.
batch : tamaño por lotes.
(Consulte Scripts Bash y archivos Python para parámetros de línea de comandos detallados)
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 : la ruta al conjunto de datos a predecir ( ace05_event , NYT o Few-NERD ).
model : La ruta del modelo obtenida después del entrenamiento anterior (salida en la etapa de entrenamiento).
t5_path : Modelo base T5 (modelo en la etapa de entrenamiento).
task : Tipo de tarea (entidad, relación, evento).
cuda : CUDA_VISIBLE_DEVICES.
mode : modo de conjunto de datos ( H , V , M o R ).
use_ssi , use_prompt , prompt_len , prompt_dim debe ser consistente con el tiempo de entrenamiento. Puede verlo y configurarlo en el archivo de configuración correspondiente config/apric_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 debe ser consistente con el entrenamiento.
El proceso completo, incluido el ajuste y el razonamiento (en "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| índice | definición | F1 |
|---|---|---|
| ent- (P/R/F1) | Entity Micro-F1 Puntuación (Tipo de entidad, Entity Span) | punto-f1 |
| Rel-strict- (P/R/F1) | Puntuaciones micro-F1 para modos de relación estrictos (tipo de relación, span arg1, tipo arg1, span arg2, tipo arg2) | ASOC-F1 se usa para las relaciones, Spot-F1 se usa para entidades |
| EVT-Trigger- (P/R/F1) | Puntuación micro-F1 de la palabra de activación de eventos (tipo de evento, trigor de gatillo) | punto-f1 |
| EVT-Rol- (P/R/F1) | Puntuación micro-F1 para roles de eventos (tipo de evento, rol de arg, arg span) | ASOC-F1 |
General-F1 se refiere a la suma de Spot-F1 y ASOC-F1, que puede exceder los 100.
Parte de nuestro código se toma prestada de Uie y Unifiedskg, muchas gracias.
Si usa o extiende nuestro trabajo, cite el documento de la siguiente manera:
@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 }
}