Kode Kode Kapal Schema-adaptable Knowledge Graph Construction .
Pekerjaan kami telah diterima oleh Konferensi Temuan EMNLP2023.
Untuk menjalankan kode, Anda perlu menginstal persyaratan berikut:
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
Bagian Tokenizer Model kami menggunakan UIE, dan yang lain menggunakan T5, jadi ini adalah file campuran. Tautan unduhan disediakan di sini, pastikan untuk menggunakan model ini. hf_models/campuran
Untuk informasi lebih lanjut tentang konstruksi dataset, lihat konstruksi data.
Anda dapat menemukan dataset melalui tautan Google Drive berikut.
Dataset ACE05, beberapa-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 : Nama atau jalur model pretrained.
data : Jalur ke dataset.
output : Jalur pemeriksaan fine-tuning yang disimpan, dan final yang dihasilkan secara otomatis jalur output `adakgc/output/ACE05_EVENT_H_E30_LR1E-4_B14_N0.
config : File konfigurasi default, di direktori config/prompt_conf , konfigurasi setiap tugas berbeda.
mode : Mode Dataset ( H , V , M , atau R ).
device : cuda_visible_devices.
batch : Ukuran batch.
(Lihat skrip bash dan file Python untuk parameter baris perintah terperinci)
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 : Path ke dataset yang akan diprediksi ( ace05_event , NYT atau Few-NERD ).
model : Jalur model yang diperoleh setelah pelatihan sebelumnya (output pada tahap pelatihan).
t5_path : Model dasar T5 (model dalam tahap pelatihan).
task : Tipe Tugas (Entitas, Relasi, Acara).
cuda : cuda_visible_devices.
mode : Mode Dataset ( H , V , M , atau R ).
use_ssi , use_prompt , prompt_len , prompt_dim harus konsisten dengan waktu pelatihan. Anda dapat melihat dan mengaturnya di konfigurasi konfigurasi yang sesuai/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 harus konsisten dengan pelatihan.
Proses lengkap, termasuk fine tuning dan penalaran (dalam "skrip/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| indeks | definisi | F1 |
|---|---|---|
| ent- (p/r/f1) | Skor Mikro-F1 Entitas (Jenis Entitas, Rentang Entitas) | spot-f1 |
| Rel-strict- (p/r/f1) | Skor mikro-F1 untuk mode hubungan yang ketat (tipe relasi, arg1 span, tipe arg1, arg2 span, tipe arg2) | ASOC-F1 digunakan untuk hubungan, spot-f1 digunakan untuk entitas |
| EVT-Trigger- (P/R/F1) | Skor Micro-F1 dari Kata Pemicu Acara (jenis acara, rentang pemicu) | spot-f1 |
| EVT-Role- (P/R/F1) | Skor Micro-F1 untuk Peran Acara (Jenis Peristiwa, Peran Arg, Arg Span) | ASOC-F1 |
Secara keseluruhan-F1 mengacu pada jumlah Spot-F1 dan ASOC-F1, yang dapat melebihi 100.
Bagian dari kode kami dipinjam dari Uie dan Unifiedskg, banyak terima kasih.
Jika Anda menggunakan atau memperluas pekerjaan kami, silakan kutip kertas sebagai berikut:
@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 }
}