torch==1.7.1
transformers==4.10.0
pandas==1.1.5
scikit-learn==0.24.1
matplotlib==3.3.4
tqdm==4.51.0
numpy==1.19.2
glob2==0.7
pip install -r requirements.txt
hyperparameter_search.py
inference.py
load_data.py
loss.py
model.py
new_mlm.py
: MLM ์ ์ฉtrain.py
utils.py
train_v1.csv
: 40% of no_relation data
SM_CHANNEL_TRAIN=[train csv data dir] SM_MODEL_DIR=[model saving dir] python train.py
SM_CHANNEL_EVAL=[test csv dir] SM_CHANNEL_MODEL=[model saved dir] SM_OUTPUT_DATA_DIR=[inference output dir] python inference.py
๊ด๊ณ ์ถ์ถ(Relation Extraction)์ด๋ ๋ฌธ์ฅ์ ๋จ์ด(Entity)์ ๋ํ ์์ฑ๊ณผ ๊ด๊ณ๋ฅผ ์์ธกํ๋ ๋ฌธ์ ์ ๋๋ค.
๋ฌธ์ฅ ์์์ ๋จ์ด๊ฐ์ ๊ด๊ณ์ฑ์ ํ์ ํ๋ ๊ด๊ณ ์ถ์ถ(Relation Extraction)์ ์ง์ ๊ทธ๋ํ ๊ตฌ์ถ์ ์ํ ํต์ฌ ๊ตฌ์ฑ ์์๋ก, ๊ตฌ์กฐํ๋ ๊ฒ์, ๊ฐ์ ๋ถ์, ์ง๋ฌธ ๋ต๋ณํ๊ธฐ, ์์ฝ๊ณผ ๊ฐ์ ์์ฐ์ด์ฒ๋ฆฌ ์์ฉ ํ๋ก๊ทธ๋จ์์ ์ค์ํฉ๋๋ค. ๋น๊ตฌ์กฐ์ ์ธ ์์ฐ์ด ๋ฌธ์ฅ์์ ๊ตฌ์กฐ์ ์ธ triple์ ์ถ์ถํด ์ ๋ณด๋ฅผ ์์ฝํ๊ณ , ์ค์ํ ์ฑ๋ถ์ ํต์ฌ์ ์ผ๋ก ํ์ ํ ์ ์์ต๋๋ค.
์ฃผ์ด์ง ๋ฌธ์ฅ๊ณผ ๋ฌธ์ฅ์ ๋จ์ด(subject entity, object entity)๋ฅผ ์ด์ฉํ์ฌ,
subject entity์ object entity๊ฐ ์ด๋ค ๊ด๊ณ๊ฐ ์๋์ง ์์ธกํ๋ ์์คํ or ๋ชจ๋ธ ๊ตฌ์ถํ๊ธฐ
- GPU V100 ์๊ฒฉ ์๋ฒ
- PyCharm ๋๋ Visual Studio Code | Python 3.7(or over)
- train.csv: ์ด 32470๊ฐ
- test_data.csv: ์ด 7765๊ฐ (์ ๋ต ๋ผ๋ฒจ์ blind = 100์ผ๋ก ์์ ํํ)
- Input: ๋ฌธ์ฅ๊ณผ ๋ Entity์ ์์น(start_idx, end_idx)
- Target: ์นดํ ๊ณ ๋ฆฌ 30๊ฐ ์ค 1๊ฐ
- ํฌ๊ฒ no-relation, org, per๊ธฐ์ค 30๊ฐ์ ํด๋์ค๋ก ๋ถ๋ฅ
# ๋จ์ผ ๋ชจ๋ธ train ์
$ python new_mlm.py
- RoBERTa
- klue/roberta-small(https://huggingface.co/klue/roberta-small)
- klue/roberta-base(https://huggingface.co/klue/roberta-base)
- klue/roberta-large(https://huggingface.co/klue/roberta-large/tree/main)
- BERT
- klue/bert-base(https://huggingface.co/klue/bert-base)
- xlm-roberta-base
- koelectra-base
# ๋จ์ผ ๋ชจ๋ธ train ์
$ python train.py
from sklearn.model_selection import StratifiedKFold
# cross_validation ์ฌ์ฉํด train ์
$ python train.py --cv True
train.py
cross_validation ํจ์
# cross_validation ์ ์ฌ์ฉ์ํ ์
$ python inference.py \
--model_name={kinds of models} \
--model_dir={model_filepath} \
--output_name={output_filename} \
--inference_type=default \
--run_name = exp\
--cv = False\
--tem = (typed entitiy ์ฌ์ฉ์ True, ์๋๋ฉด False)
# cross_validation ์ ์ฌ์ฉํด ๋์จ model 5๊ฐ๋ฅผ ํตํด inference ์
$ python inference.py \
--model_name={kinds of models} \
--model_dir={model_filepath} \
--output_name={output_filename} \
--inference_type = cv\
--run_name = exp\
--cv = True\
--tem = (if typed entity: True, else: False)