Бумажный код Schema-adaptable Knowledge Graph Construction .
Наша работа была принята на конференции по выводам EMNLP2023.
Чтобы запустить код, вам необходимо установить следующие требования:
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
Наша модель токенизатора использует UIE, а другие используют T5, так что это смешанный файл. Ссылка загрузки предоставлена здесь, пожалуйста, обязательно используйте эту модель. HF_Models/Mix
Для получения дополнительной информации о построении наборов данных см. Построение данных.
Вы можете найти набор данных по следующей ссылке Google Drive.
Набор данных ACE05, НЕМЕРКА, 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 : название или путь предварительной модели.
data : путь к набору данных.
output : Путь сохраненной контрольной точки тонкой настройки и окончательный автоматически сгенерированный выходной путь `adakgc/output/ace05_event_h_e30_lr1e-4_b14_n0.
config : файл конфигурации по умолчанию, в каталоге config/prompt_conf конфигурация каждой задачи отличается.
mode : режим набора данных ( H , V , M или R ).
device : cuda_visible_devices.
batch : размер партии.
(См. Сценарии Bash и файлы Python для подробных параметров командной строки)
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 : путь к набору данных, который должен быть предсказан ( ace05_event , NYT или Few-NERD ).
model : Путь модели, полученная после предыдущего обучения (вывод на этапе обучения).
t5_path : базовая модель T5 (модель на этапе обучения).
task : Тип задачи (сущность, отношение, событие).
cuda : cuda_visible_devices.
mode : режим набора данных ( H , V , M или R ).
use_ssi , use_prompt , prompt_len , prompt_dim должен соответствовать временю обучения. Вы можете просмотреть и установить его в соответствующем файле конфигурации config/rasfor_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 должен соответствовать обучению.
Полный процесс, включая тонкую настройку и рассуждения (в «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| индекс | определение | F1 |
|---|---|---|
| Ent- (P/R/F1) | Оценка Micro-F1 Entity (тип сущности, SPAN ENTITY) | Spot-F1 |
| REL-Strict- (P/R/F1) | Оценки Micro-F1 для строгих режимов взаимосвязи (тип отношения, ARG1 SPAN, ARG1 TYPE, ARG2 SPAN, ARG2 TYPE) | ASOC-F1 используется для отношений, Spot-F1 используется для сущностей |
| evt-trigger- (p/r/f1) | Micro-F1 Score Trigger Event Trigger Word (тип события, триггерный пролет) | Spot-F1 |
| EVT-Role- (P/R/F1) | Micro-F1 Оценка для ролей событий (тип события, роль ARG, ARG SPAN) | ASOC-F1 |
Общий F1 относится к сумме Spot-F1 и ASOC-F1, которая может превышать 100.
Часть нашего кода заимствована у Uie и Unifiedskg, большое спасибо.
Если вы используете или расширяете нашу работу, пожалуйста, укажите бумагу следующим образом:
@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 }
}