รหัสกระดาษ Schema-adaptable Knowledge Graph Construction
ผลงานของเราได้รับการยอมรับจากการประชุม Furnefertings 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
โมเดล Tokenizer Part ใช้ 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 : ชื่อหรือเส้นทางของโมเดล pretrained
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 : ขนาดแบทช์
(ดู Scripts 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 ต้องสอดคล้องกับเวลาการฝึกอบรม คุณสามารถดูและตั้งค่าได้ในไฟล์กำหนดค่าที่สอดคล้องกันกำหนดค่า/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 ต้องสอดคล้องกับการฝึกอบรม
กระบวนการที่สมบูรณ์รวมถึงการปรับแต่งและการให้เหตุผลอย่างละเอียด (ใน "สคริปต์/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 (ประเภทเอนทิตี, ช่วงเอนทิตี) | สปอต F1 |
| Rel-Strict- (P/R/F1) | คะแนน Micro-F1 สำหรับโหมดความสัมพันธ์ที่เข้มงวด (ประเภทความสัมพันธ์, Span Arg1, ประเภท Arg1, Arg2 Span, ประเภท Arg2) | ASOC-F1 ใช้สำหรับความสัมพันธ์จะใช้สปอต F1 สำหรับเอนทิตี |
| EVT-TRIGGER- (P/R/F1) | คะแนน MICRO-F1 ของ Word Trigger Event (ประเภทเหตุการณ์, Trigger Span) | สปอต 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 }
}