Código de papel Schema-adaptable Knowledge Graph Construction .
Nosso trabalho foi aceito pela conferência de descobertas EMNLP2023.
Para executar o código, você precisa instalar os seguintes 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
Nosso modelo de tokenizer usa UIE e os outros usam T5, por isso é um arquivo misto. O link de download é fornecido aqui, certifique -se de usar este modelo. hf_models/mix
Para obter mais informações sobre a construção do conjunto de dados, consulte a construção de dados.
Você pode encontrar o conjunto de dados através do seguinte link do Google Drive.
DataSet ACE05, poucos nerds, 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 : o nome ou caminho do modelo pré -treinado.
data : o caminho para o conjunto de dados.
output : o caminho do ponto de verificação de ajuste fino salvo e o caminho de saída final gerado automaticamente `Adakgc/output/ACE05_Event_H_E30_LR1E-4_B14_N0.
config : o arquivo de configuração padrão, no diretório config/prompt_conf , a configuração de cada tarefa é diferente.
mode : modo de conjunto de dados ( H , V , M ou R ).
device : CUDA_VISIBLE_DEVICES.
batch : tamanho do lote.
(Consulte Scripts Bash e arquivos Python para obter parâmetros detalhados da linha de comando)
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 : o caminho para o conjunto de dados a ser previsto ( ace05_event , NYT ou Few-NERD ).
model : O caminho do modelo obtido após o treinamento anterior (produção no estágio de treinamento).
t5_path : Modelo Base T5 (modelo no estágio de treinamento).
task : Tipo de tarefa (entidade, relação, evento).
cuda : CUDA_VISIBLE_DEVICES.
mode : modo de conjunto de dados ( H , V , M ou R ).
use_ssi , use_prompt , prompt_len , prompt_dim precisa ser consistente com o tempo de treinamento. Você pode visualizar e defini -lo no arquivo de configuração correspondente 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 precisam ser consistentes com o treinamento.
O processo completo, incluindo ajuste fino e raciocínio (em "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 | definição | F1 |
|---|---|---|
| ENT- (P/R/F1) | Entidade micro-f1 pontuação (tipo de entidade, span de entidade) | Spot-F1 |
| Rel-Strict- (P/R/F1) | Pontuações micro-F1 para modos de relacionamento rigorosos (tipo de relação, span de arg1, tipo arg1, span de arg2, tipo arg2) | ASOC-F1 é usado para relacionamentos, o Spot-F1 é usado para entidades |
| EVT-Trigger- (P/R/F1) | Micro-F1 Score of Event Trigger Word (tipo de evento, extensão de gatilho) | Spot-F1 |
| EVT-ROLE- (P/R/F1) | Pontuação micro-F1 para funções de evento (tipo de evento, função de arg, arg span) | ASOC-F1 |
Geral-F1 refere-se à soma de Spot-F1 e ASOC-F1, que pode exceder 100.
Parte do nosso código é emprestada da UIE e Unifiedskg, muito obrigado.
Se você usar ou estender nosso trabalho, cite o papel da seguinte forma:
@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 }
}