HanBERT-54kN
ํ๊ตญ์ด BERT (HanBert-54kN) Model & Code Download
- HanBERT 54kN 500๋ง Steps ๋ชจ๋ธ์ ๊ณต๊ฐํฉ๋๋ค.
- ๋น์์ ์ ์ธ ์ฐ๊ตฌ์ ๊ต์ก, ๊ทธ๋ฆฌ๊ณ ๊ฒฝ์ง๋ํ์ ํ์ฉํ์ ๋ ๋ฉ๋๋ค.
- ์์ ์ ๋ชฉ์ ์ ํ์ฉ (์๋น์ค ํน์ ์ ํ์ ํฌํจํ๋ ๊ฒฝ์ฐ)์ ๋ํด์๋ ํ์ฌ์ ํ์ํ์ฌ ์ฃผ์๊ธฐ ๋ฐ๋๋๋ค. info@twoblockai.com
- ๊ธฐ์ ์์์ ํ์ฉ์ ๋น์์ ์ ๋ชฉ์ ์ผ๋ก ๋ณผ ์ ์๊ธฐ ๋๋ฌธ์, ๋ผ์ด์ผ์ค ๊ตฌ์ ๋ฌธ์๋ฅผ ํด์ฃผ์๋ฉด ๊ฐ์ฌํ๊ฒ ์ต๋๋ค.
- ์ฐธ๊ณ ํ์ด์ง : https://twoblockai.com/resource-2/
- ๋ค์ด๋ก๋ ํ์ด์ง : https://twoblockai.com/2020/01/22/hanbert%EB%A5%BC-%EA%B3%B5%EA%B0%9C%ED%95%A9%EB%8B%88%EB%8B%A4/
- ๊ตฌ๊ธ ๋๋ผ์ด๋ธ์์ ์ง์ ๋ค์ด๋ก๋ : https://drive.google.com/file/d/1EcrsAIWrhnWDoo0O6M-ikmYT3R-z0Kna/view?usp=sharing
Pre-trained Hangul-BERT (HanBERT-54kN)
-
HanBERT-54kN : HanBERT ๊ธฐ๋ณธ ๋ชจ๋ธ (500๋ง Step ํ์ต)
- bert_config.json
- checkpoint
- model.ckpt-5000000.data-00000-of-00001
- model.ckpt-5000000.meta
- model.ckpt-5000000.index
- vocab_54k.txt
-
HanBERT-54kN-MRC : ๊ธฐ๊ณ๋ ํด ํ์ต ๋ฐ์ดํฐ๋ก Fine-tuning๋ ๋ชจ๋ธ (mrc_test.py์์ ์ฌ์ฉ)
- bert_config.json
- checkpoint
- model.ckpt-60000.data-00000-of-00001
- model.ckpt-60000.meta
- model.ckpt-60000.index
- vocab_54k.txt
-
usr_local_moran : ํ๊ตญ์ด ๋ถ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ DB
- libmoran4dnlp.so
- moran.db
- udict.txt
- uentity.txt
-
src :
-
๊ตฌ๊ธ์์ ๋ฐฐํฌํ ํ๋ก๊ทธ๋จ
- modeling.py
- optimization.py
-
๊ตฌ๊ธ์์ ๋ฐฐํฌํ ํ๋ก๊ทธ๋จ์ ๊ตฌ๋ฏธ์ ๋ง๊ฒ ์์ ํ ํ๋ก๊ทธ๋จ by TwoBlock Ai
- mrc_test.py : ๊ธฐ๊ณ ๋ ํด ๋ง๋ณด๊ธฐ
- run_korquad_1.0.py : ๊ธฐ๊ณ ๋ ํด (KorQuAD 1.0 ํ์ต ํ๋ก๊ทธ๋จ)
-
๊ตฌ๊ธ์์ ๋ฐฐํฌํ ํ๋ก๊ทธ๋จ์ ๊ตฌ๋ฏธ์ ๋ง๊ฒ ์์ ํ ํ๋ก๊ทธ๋จ by TwoBlock Ai
- tokenization.py : ํ๊ธ ํ ํฌ๋์ด์ (moran ๊ตฌ๋ ๋ชจ๋ ํฌํจ)
- tokenization_test.py : ํ๊ธ ํ ํฌ๋์ด์ ํ ์คํธ
-
ํฌ๋ธ๋ญAi์์ ๋ฐฐํฌํ๋ ํํ์ ๋ถ์ ๊ตฌ๋ ํ๋ก๊ทธ๋จ by TwoBlock Ai
- moran.py
- moran_test.py
-
Training Settings
-
ํ์ต ์ฝํผ์ค (์ผ๋ฐ ๋ฌธ์)
- size : 3.5์ต๊ฐ ๋ฌธ์ฅ, 113์ต๊ฐ ํํ์, 70G๋ฐ์ดํธ
- Dup : 1 ~ 10 (์ฝํผ์ค ์ฑ๊ฒฉ์ ๋ฐ๋ผ ์กฐํฉ)
-
ํ์ต ์ฝํผ์ค (ํนํ ๋ฌธ์)
- size : 3.7์ต๊ฐ ๋ฌธ์ฅ, 150์ต๊ฐ ํํ์, 75G๋ฐ์ดํธ
- Dup : 2
-
ํ์ต ํ๊ฒฝ
- Google TPU V3-8
- ๊ธฐ๋ณธ ํ์ต Step์ : 500๋ง (๊ณต๊ฐ ๋ฒ์ ผ์ 300๋ง)
- ํนํ ์ถ๊ฐ Step์ : 600๋ง (์ผ๋ฐ 500๋ง + ํนํ๋ฌธ์ 100๋ง)
-
ํ๊ตญ์ด ํํ์ ๋ถ์
- moran wiki ๋ฒ์ ผ : moran-2013 ๋ฒ์ ผ ํํ์ ๋ถ์๊ธฐ์ Deep NLP ๋ฒ์ ผ
- ํ์ฌ๋ฅผ ํ์ํ์ง ์๊ณ ์์ ๋จ์๋ก ๋ถ์ ๋ฐ ~๊ธฐํธ ๋ถ์ฐฉ
- ์์ ํํ์์ ๋ถ์ฌ์ผ ํ๋ ๊ฒฝ์ฐ ~, ๊ทธ๋ฐ๋ฐ ๊ธฐ๋ฅ์ด์๋ ๊ฒฝ์ฐ ~~
- moran.db (126M) : ๊ธฐ๋ณธ ์ง์ (64๋ง๋จ์ด + 57๋ง ๊ธฐ๋ถ์์ฌ์ + 174๋ง ๋ช ์นญ์ด) + wiki ํ์ ์ด (445,701 ๋จ์ด)
- ์ด๋น 0.5M ์์ค์ ๋ถ์ ์๋ (ํํ์ ๋ถ์ํ, ๋ถ์ + ๊ธฐํธ ๋ถ์ฐฉ)
-
Vocab
- ํฌ๊ธฐ : ์ด 54000ํ์ ์ด : 53800๊ฐ ๋จ์ด + 200๊ฐ์ ์ฌ์ ๊ณต๊ฐ
Requirements
- Python : 3.6.8
- tensorflow-gpu : 1.11.0
- OS : ubuntu 18.04
How to Install
- ๋ชจ๋ธ๊ณผ DB File์ ํฌ๊ธฐ๊ฐ 2.6G์ ๋๋ค. Git ๋ฐฐํฌ ์ฉ๋์ ์ด๊ณผํฉ๋๋ค.
- ์๋์ฐ ๋ฒ์ ผ์ด๋, ubuntu 18.04์ ํธํ๋์ง ์๋ ํ๊ฒฝ์ ์ฝ๋๋ฅผ ์ง์ํ๊ณ ์์ง ์์ต๋๋ค.
- ๊ธ์ ์๋๋ถ๋ถ์ ์๋ [๋ค์ด๋ก๋]๋ฅผ ๋๋ฌ์ hanbert54kN.tar.gz๋ฅผ ๋ค์ด๋ก๋ํฉ๋๋ค.
- hanbert54kN.tar.gz๋ฅผ ํ๋ฉด, ๋งจ์ฒ์ ํด์ผ ํ๋ ์ผ์ moran์ ํ์ฑํ์ ๋๋ค.
- moran์ ์ฌ์ฉํ๊ธฐ ์ํด์๋ ์๋์ ๊ฐ์ด ํน์ ๋๋ ํ ๋ฆฌ์ ๋ณต์ฌ๊ฐ ํ์ํฉ๋๋ค.
- ๋ณต์ฌ๋ง ํ๋ฉด, ๊ทธ๋๋ก ์ฌ์ฉํ ์ ์์ต๋๋ค.
- ๋ค๋ฅธ ๋๋ ํ ๋ฆฌ์ ์ฌ์ฉํ๊ณ ์ถ์ ๊ฒฝ์ฐ๋ ์ด ๊ธ์ ์๋๋ถ๋ถ์ ์ค๋ช ๋์ด ์์ต๋๋ค.
tar xvfz hanbert.tar.gz
cd HanBert-54kN/
sudo mkdir /usr/local/moran
cp usr_local_moran/* /usr/local/moran
-
Moran์ ๋์์ฌ๋ถ ํ์ธ
$ python src/tokenization_test.py Cat.12๊ฐ 600 Mbps, 12 ~~๊ฐ 600 ~mbps ['cat.12', '~~๊ฐ', '600', 'mbps', ','] cat.12 ~~๊ฐ 600 mbps , Cat.12๊ฐ 600 Mbps ['๋', '~~๋', '๊ฑธ์ด๊ฐ', '~~๊ณ ', '์', '~~๋', '์ค', '~~์ ', '~~๋๋ค', '.', '๋๋๊ฑธ์ด', '๊ฐ', '~~๊ณ ', '~์', '~~๋', '์ค', '~~์ ', '~~๋๋ค', '.', '์', '๋ถ๋ฅ', '~~๋', '~~๊ธฐ', '~~๋', 'ํ', '~~๋ค', '.', '์', '๋จน', '~~๊ธฐ', '~~๋', 'ํ', '~~๋ค', '.'] ๋ ~~๋ ๊ฑธ์ด๊ฐ ~~๊ณ ์ ~~๋ ์ค ~~์ ~~๋๋ค . ๋๋๊ฑธ์ด ๊ฐ ~~๊ณ ~์ ~~๋ ์ค ~~์ ~~๋๋ค . ์ ๋ถ๋ฅ ~~๋ ~~๊ธฐ ~~๋ ํ ~~๋ค . ์ ๋จน ~~๊ธฐ ~~๋ ํ ~~๋ค . ['๋', '~~๋', '๊ฑธ์ด๊ฐ', '~~๊ณ ', '์', '~~๋', '์ค', '~~์ ', '~~๋๋ค', '.', '๋', '##๋๊ฑธ', '##์ด', '๊ฐ', '~~๊ณ ', '~์', '~~๋', '์ค', '~~์ ', '~~๋๋ค', '.', '์', '๋ถ๋ฅ', '~~๋', '~~๊ธฐ', '~~๋', 'ํ', '~~๋ค', '.', '์', '๋จน', '~~๊ธฐ', '~~๋', 'ํ', '~~๋ค', '.']
-
HanBERT ๋ํด์๋ ๋ ์ด์์ ํ์์ฌํญ์ด ์์ต๋๋ค.
-
์ถ๊ฐ์ ์ธ ์ฌํญ๋ค์ ๊ตฌ๊ธ์์ ๊ณต๊ฐํ https://github.com/google-research/bert ์คํ ํ๊ฒฝ๊ณผ ๋์ผํฉ๋๋ค.
- Python : 3.6.8
- tensorflow-gpu : 1.11.0
- KorQuAD 1.0 ํ์ต (https://korquad.github.io/category/1.0_KOR.html)
- KorQuAD 1.0์ ๋ฐ์ดํฐ๋ฅผ ๋ค์ด๋ก๋ ๋ฐ์ผ์ธ์. KorQuAD_v1.0_train.json, KorQuAD_v1.0_dev.json
- ํ๊ฐ์ฉ ํ๋ก๊ทธ๋จ์ ๋ค์ด๋ก๋ ๋ฐ์ผ์ธ์. KorQuAD_v1.0_dev.json
- ์์ ๋ก ๋์์๋ ์ฝ๋๋ฅผ ์คํํด ๋ณด์ธ์
python src/run_korquad_1.0.py --init_checkpoint=HanBert-54kN --bert_config_file=HanBert-54kN/bert_config.json --vocab_file=HanBert-54kN/vocab_54k.txt --do_train=true --do_predict=true --train_batch_size=16 --num_train_epochs=1.0 --learning_rate=3e-5 --train_file=korquad.1.0/KorQuAD_v1.0_train.json --predict_file=korquad.1.0/KorQuAD_v1.0_dev.json --output_dir=result python evaluate-v1.0.py korquad.1.0/KorQuAD_v1.0_dev.json result/predictions.json
๊ธฐ๊ณ ๋ ํด ๋ง๋ณด๊ธฐ
-
GPU๋ง ์์ผ๋ฉด ์คํํด ๋ณผ ์ ์์ต๋๋ค.
-
๋ฏธ๋ฆฌ ํ์ต์ ์ํจ ๊ธฐ๊ณ ๋ ํด ๋ชจ๋ธ๋ก ๋๊ปด๋ณด์ค ์ ์๋๋ก ํ์ต๋ ๋ชจ๋ธ์ ๊ณต๊ฐํฉ๋๋ค.
- Model๋ช : HanBert-54kN-MRC
- epochs : 3.0
-
ํ์ต ๋ฐ์ดํฐ๊ฐ ์๋ก ๋ค๋ฅธ ์ง์นจ์ผ๋ก ์์ฑ๋์ด์ ๋์ผํ ํ์์ ์ง๋ฌธ์ ๊ฐ๊ฐ ๋ค๋ฅธ ๋ต๋ณ์ ์ ํ์ด ์กด์ฌํฉ๋๋ค.
- ํ์ต๋ฐ์ดํฐ์ ํ์ง์ ๋ํด์๋ ์๊ตฌ์ฌ์ด ์์ง๋ง, ๊ณต๊ฐ๋์ด ์๋ ํ์ต๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉํ์ฌ ํ์ตํ์์ต๋๋ค.
- ๋ฌธ์ ์ ๋๋ ๊ฒ๋ค :
- ์ : ์ด๋์์ ์ถ๋ฐํด? A) ๋ถ์ฐ B) ๋ถ์ฐ์์
- ํ์ต๋ฐ์ดํฐ์ ํ์ง์ ๋ํด์๋ ์๊ตฌ์ฌ์ด ์์ง๋ง, ๊ณต๊ฐ๋์ด ์๋ ํ์ต๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉํ์ฌ ํ์ตํ์์ต๋๋ค.
-
ํ์ต ๋ฐ์ดํฐ
- HanBert-54kN + ๊ธฐ๊ณ๋
ํด ํ์ต ๋ฐ์ดํฐ (์ด 253,466๊ฑด)
- NIA์ ๊ธฐ๊ณ๋ ํด ๋ฐ์ดํฐ : 162,632๊ฑด
- KorQuAD 1.0์ ๋ฐ์ดํฐ : 66,181๊ฑด
- KorQuAD 2.0์ ๋ฐ์ดํฐ : 24,653๊ฑด
- HanBert-54kN + ๊ธฐ๊ณ๋
ํด ํ์ต ๋ฐ์ดํฐ (์ด 253,466๊ฑด)
-
์คํ ๋ฐฉ๋ฒ๊ณผ ์์
-
HanBert-54kN-MRC ๋๋ ํ ๋ฆฌ์ ์๋ bert_config์ model, vocab์ ์ฌ์ฉํ์ธ์.
-
src/mrc_test.py ์ฝ๋์ ๊ธฐ๋ณธ์ผ๋ก ์ง์ ๋์ด ์์ผ๋, ๋๋ ํ ๋ฆฌ๊ฐ ๋ณ๊ฒฝ๋ ๊ฒฝ์ฐ์ ์ง์ ํด ์ฃผ์ ์ผ ํฉ๋๋ค.
$ python src/mrc_test.py --example_file=korquad.1.0/KorQuAD_v1.0_dev.json =========== ๊ธฐ๊ณ๋ ํด ์๋ฌธ 964๊ฑด Loadind Done ... by TBai ============== * ๋ช ๋ น์ด : 1) ๋ด์ฉ๋ณด๊ธฐ, 2) ๋ค์ ์์ , 3) ๋๋ด๊ธฐ * ์ง์๋ฌธ : 1 ์์ : 1989๋ 2์ 15์ผ ์ฌ์๋ ๋๋ฏผ ํญ๋ ฅ ์์๋ฅผ ์ฃผ๋ํ ํ์(ํญ๋ ฅํ์๋ฑ์ฒ๋ฒ์๊ดํ๋ฒ๋ฅ ์๋ฐ)์ผ๋ก ์ง๋ช ์๋ฐฐ๋์๋ค. 1989๋ 3์ 12์ผ ์์ธ์ง๋ฐฉ๊ฒ์ฐฐ์ฒญ ๊ณต์๋ถ๋ ์์ข ์์ ์ฌ์ ๊ตฌ์์์ฅ์ ๋ฐ๋ถ๋ฐ์๋ค. ๊ฐ์ ํด 6์ 30์ผ ํ์์ถ์ ์ ์์๊ฒฝ์ ๋ํ๋ก ํ๊ฒฌํ์ฌ ๊ตญ๊ฐ๋ณด์๋ฒ์๋ฐ ํ์๊ฐ ์ถ๊ฐ๋์๋ค. ๊ฒฝ์ฐฐ์ 12์ 18์ผ~20์ผ ์ฌ์ด ์์ธ ๊ฒฝํฌ๋ํ๊ต์์ ์์ข ์์ด ์ฑ๋ช ๋ฐํ๋ฅผ ์ถ์งํ๊ณ ์๋ค๋ ์ฒฉ๋ณด๋ฅผ ์ ์ํ๊ณ , 12์ 18์ผ ์ค์ 7์ 40๋ถ ๊ฒฝ ๊ฐ์ค์ด๊ณผ ์ ์๋ด์ผ๋ก ๋ฌด์ฅํ ํน๊ณต์กฐ ๋ฐ ๋๊ณต๊ณผ ์ง์ 12๋ช ๋ฑ 22๋ช ์ ์ฌ๋ณต ๊ฒฝ์ฐฐ์ ์น์ฉ์ฐจ 8๋์ ๋๋์ด ๊ฒฝํฌ๋ํ๊ต์ ํฌ์ ํ๋ค. 1989๋ 12์ 18์ผ ์ค์ 8์ 15๋ถ ๊ฒฝ ์์ธ์ฒญ๋๋ฆฌ๊ฒฝ์ฐฐ์๋ ํธ์ ํ์ 5๋ช ๊ณผ ํจ๊ป ๊ฒฝํฌ๋ํ๊ต ํ์ํ๊ด ๊ฑด๋ฌผ ๊ณ๋จ์ ๋ด๋ ค์ค๋ ์์ข ์์ ๋ฐ๊ฒฌ, ๊ฒ๊ฑฐํด ๊ตฌ์์ ์งํํ๋ค. ์์ข ์์ ์ฒญ๋๋ฆฌ๊ฒฝ์ฐฐ์์์ ์ฝ 1์๊ฐ ๋์ ์กฐ์ฌ๋ฅผ ๋ฐ์ ๋ค ์ค์ 9์ 50๋ถ ๊ฒฝ ์์ธ ์ฅ์๋์ ์์ธ์ง๋ฐฉ๊ฒฝ์ฐฐ์ฒญ ๊ณต์๋ถ์ค๋ก ์ธ๊ณ๋์๋ค. * ๋ช ๋ น์ด : 1) ๋ด์ฉ๋ณด๊ธฐ, 2) ๋ค์ ์์ , 3) ๋๋ด๊ธฐ * ์ง์๋ฌธ : ๋ช์๊ฐ ๋์ ์กฐ์ฌ ๋ฐ์์ด? ... Reading : 1 pages Start ... Done ... ๋ต๋ณ ์ ๋ขฐ๋ : (8.460, 75.38%) ๋ ํด๊ฒฐ๊ณผ : 1์๊ฐ * ๋ช ๋ น์ด : 1) ๋ด์ฉ๋ณด๊ธฐ, 2) ๋ค์ ์์ , 3) ๋๋ด๊ธฐ * ์ง์๋ฌธ : ๋ช์์ ๊ณต์๋ถ์ค๋ก ์ธ๊ณ๋์์ด? ... Reading : 1 pages Start ... Done ... ๋ต๋ณ ์ ๋ขฐ๋ : (15.47, 91.88%) ๋ ํด๊ฒฐ๊ณผ : ์ค์ 9์ 50๋ถ * ๋ช ๋ น์ด : 1) ๋ด์ฉ๋ณด๊ธฐ, 2) ๋ค์ ์์ , 3) ๋๋ด๊ธฐ * ์ง์๋ฌธ : 2 ๋ค์ ๋ฌธ์๋ก ๊ฐ๋๋ค. * ๋ช ๋ น์ด : 1) ๋ด์ฉ๋ณด๊ธฐ, 2) ๋ค์ ์์ , 3) ๋๋ด๊ธฐ * ์ง์๋ฌธ : 1 ์์ : "๋ด๊ฐ๊ณผ ์ฅ๊ด๋ค์ด ์์ธ๋๊ณ ๋ํต๋ น๋น์์ค์ ๊ถํ์ด ๋๋ฌด ํฌ๋ค", "ํ๋ณด๊ฐ ๋น์ ๋ณธ์ฐ์ ์ญํ ์ ๋ฒ์ด๋๋ค"๋ ์๊ฒฌ์ด ์ ๊ธฐ๋์๋ค. ๋ํ์ ์ธ ์๊ฐ 10์ฐจ ๊ฐํ์ ๋ฐํ์ด๋ค. ์๋ก ํ๋ฒํ์์ธ ํ์ ๊ฒฝํฌ๋ ์์ข๊ต์๋ ์ ๋ถ์ ํ๋ฒ๊ฐ์ ์ ์ค๋น ๊ณผ์ ์ ๋ํด "์ฒญ์๋ ๋น์์ค์ด ์๋ ๊ตญ๋ฌดํ์ ์ค์ฌ์ผ๋ก ์ด๋ค์ก์ด์ผ ํ๋ค"๊ณ ์ง์ ํ๋ค. '๊ตญ๋ฌดํ์์ ์ฌ์๋ฅผ ๊ฑฐ์ณ์ผ ํ๋ค'(์ 89์กฐ)๋ ํ๋ฒ ๊ท์ ์ ์ถฉ์คํ์ง ์์๋ค๋ ๊ฒ์ด๋ค. ๊ทธ๋ฌ๋ฉด์ "๋ฒ๋ฌด๋ถ ์ฅ๊ด์ ์ ์ณ๋๊ณ ๋ฏผ์ ์์์ด ๊ฐ์ ์์ ์ค๋ช ํ๋ ๊ฒ ์ดํด๊ฐ ์ ๋๋ค"๊ณ ์ง์ ํ๋ค. ๋ฏผ์ ์์์ ๊ตญํ์์์ ๋ํด ์ฑ ์์ง๋ ๋ฒ๋ฌด๋ถ ์ฅ๊ด๋ ์๋๊ณ , ๊ตญ๋ฏผ์ ๋ํด ์ฑ ์์ง๋ ์ฌ๋๋ ์๋๊ธฐ ๋๋ฌธ์ ์ ๋น์ฑ์ด ์๊ณ , ๋จ์ง ๋ํต๋ น์ ์ ์์ด ์์ ๋ฟ์ด๋ผ๋ ๊ฒ์ด๋ค. ๋ํ ๊ตญ๋ฌด์ด๋ฆฌ ์ ์ถ ๋ฐฉ์์ ๋ํ ๊ธฐ์์ ์ง๋ฌธ์ "๋ฌธ ๋ํต๋ น๋ ์ทจ์ ์ ์ ๊ตญ๋ฌด์ด๋ฆฌ์๊ฒ ์ค์ง์ ๊ถํ์ ์ฃผ๊ฒ ๋ค๊ณ ํ์ง๋ง ๊ทธ๋ฌ์ง ๋ชปํ๊ณ ์๋ค. ๋ํต๋ น๋น์์ค์ฅ๋ง๋ ๋ชปํ ๊ถํ์ ํ์ฌํ๊ณ ์๋ค."๊ณ ๋ต๋ณํ๋ค. * ๋ช ๋ น์ด : 1) ๋ด์ฉ๋ณด๊ธฐ, 2) ๋ค์ ์์ , 3) ๋๋ด๊ธฐ * ์ง์๋ฌธ : ๊ฒฝํฌ๋ ์์ข๊ต์๊ฐ ๋๊ตฌ์ผ? ... Reading : 1 pages Start ... Done ... ๋ต๋ณ ์ ๋ขฐ๋ : (16.08, 99.84%) ๋ ํด๊ฒฐ๊ณผ : ํ์ * ๋ช ๋ น์ด : 1) ๋ด์ฉ๋ณด๊ธฐ, 2) ๋ค์ ์์ , 3) ๋๋ด๊ธฐ * ์ง์๋ฌธ : ๊ตญ๋ฌดํ์์ ์ฌ์๋ฅผ ๊ฑฐ์ณ์ผ ํ๋ค๋ ๊ฒ์ ํ๋ฒ ๋ช์กฐ์ผ? ... Reading : 1 pages Start ... Done ... ๋ต๋ณ ์ ๋ขฐ๋ : (17.55, 93.74%) ๋ ํด๊ฒฐ๊ณผ : ์ 89์กฐ * ๋ช ๋ น์ด : 1) ๋ด์ฉ๋ณด๊ธฐ, 2) ๋ค์ ์์ , 3) ๋๋ด๊ธฐ * ์ง์๋ฌธ : 3 ํฌ๋ธ๋ญ์์ด์์ด์์ ์ ๊ณตํ์ฌ ๋๋ ธ์ต๋๋ค. https://twoblockai.com/
Moran (ํ๊ตญ์ด ๋ฌธ์ฅ์ Deep NLP์ฉ ํ๊ตญ์ด ํํ์ผ๋ก ๋ณํ) ์์
- moran.db, libmoran4dnlp.so์ ๊ธฐ๋ณธ ์์น๋ /usr/local/moran ์ ๋๋ค.
- moran.py์ ์์ค์ฝ๋์์ ํด๋น so์ ์์น๋ฅผ ์์ ํ์ค ์ ์์ต๋๋ค.
- moran.db๋ moran์์ ์ฌ์ฉํ๋ ์ฌ์ ๊ณผ ๋ฌธ๋ฒ์ด ํฉ์ณ์ง ๊ฒ์ ๋๋ค. ํญ์ /usr/local/moran์ ์์ด์ผ ํฉ๋๋ค.
- udict.txt๋ ์ฌ์ฉ์ ๊ธฐ๋ถ์-์ฌ์ ์ ๋๋ค. ๋์ด์ฐ๊ธฐ ๋จ์์ธ ์ด์ ์ ๋ํ ๋ถ์ ๊ฒฐ๊ณผ๋ฅผ ๋ฑ๋กํ ์ ์์ต๋๋ค. ํญ์ /usr/local/moran์ ์์ด์ผ ํฉ๋๋ค.
- uentity.txt๋ ์ฌ์ฉ์ ๋ช ์นญ์ด ์ฌ์ ์ ๋๋ค. ํ์ฌ๋ฒ์ ผ์์๋ ์ ๊ณต๋์ง ์๋ ๊ธฐ๋ฅ์ด๋ฏ๋ก, ๊ทธ๋๋ก ๋์๋ฉด ๋ฉ๋๋ค. ํญ์ /usr/local/moran์ ์์ด์ผ ํฉ๋๋ค.
python
>>> import moran
>>> moran_tokenizer = moran.MoranTokenizer()
>>> x = 'ํ๊ตญ์ด BERT๋ฅผ ์๊ฐํฉ๋๋ค.'
>>> moran_line = moran.text2moran(x, moran_tokenizer)
>>> print(moran_line)
['ํ๊ตญ์ด', 'bert', '~~๋ฅผ', '์๊ฐ', '~~ํฉ', '~~๋๋ค', '.']
>>> x = '<table> <tr> <td> ํ๊ตญ์ด BERT๋ฅผ ์๊ฐํฉ๋๋ค. </td> </tr> </table>'
>>> moran_line = moran.text2moran(x, moran_tokenizer)
>>> print(moran_line)
['<table>', '<tr>', '<td>', 'ํ๊ตญ์ด', 'bert', '~~๋ฅผ', '๊ฐ', '~~ํฉ', '~~๋๋ค', '.', '</td>', '</tr>', '</table>']
KorQuAD 1.0 ํ์ต๊ณผ ์ถ๋ก
- ๊ตฌ๊ธ์ Code๋ฅผ ์ผ๋ถ ์์ ํ์์ต๋๋ค.
- ์๋์ ๊ฐ์ ๊ฒฐ๊ณผ๋ฅผ ๋ณด์ ๋ค๋ฉด ์ ์์ ์ผ๋ก ์๋ํ๋ ๊ฒ์ผ๋ก ๋ณด์ ๋๋ค.
$ python src/run_korquad_1.0.py --init_checkpoint=HanBert-54kN/HanBert-54kN --bert_config_file=HanBert-54kN/HanBert-54kN/bert_config.json --vocab_file=HanBert-54kN/HanBert-54kN/vocab_54k.txt --do_train=true --do_predict=true --train_batch_size=16 --num_train_epochs=5.0 --learning_rate=3e-5 --train_file=KorQuAD_v1.0_train.json --predict_file=KorQuAD_v1.0_dev.json --output_dir=54kN-result
$ time python src/run_korquad_1.0.py --init_checkpoint=HanBert-54kN/HanBert-54kN-IP --bert_config_file=HanBert-54kN/HanBert-54kN-IP/bert_config.json --vocab_file=HanBert-54kN/HanBert-54kN-IP/vocab_54k.txt --do_train=true --do_predict=true --train_batch_size=16 --num_train_epochs=5.0 --learning_rate=3e-5 --train_file=KorQuAD_v1.0_train.json --predict_file=KorQuAD_v1.0_dev.json --output_dir=54kN-IP-result
real 130m5.984s
user 54m54.364s
sys 28m56.004s
$ python evaluate-v1.0.py KorQuAD_v1.0_dev.json 54kN-result/predictions.json
EM = 83.495 F1 = 93.146
$ python evaluate-v1.0.py KorQuAD_v1.0_dev.json 54kN-IP-result/predictions.json
EM = 81.902 F1 = 92.026
Version History
- v.0.1 : ์ด๊ธฐ ๋ชจ๋ธ ๋ฆด๋ฆฌ์ฆ
- v.1.0 : 500๋ง Step ๋ชจ๋ธ ๋ฆด๋ฆฌ์ฆ
Contacts
- info@twoblockai.com, ์ฃผ์ํ์ฌ ํฌ๋ธ๋ญ์์ด์์ด, https://twoblockai.com/
- HanBert์ Moran์ ๊ธฐ์ ๋ฐ Resouce ๋์ ๊ณผ ํ๋, ํ์ ์ ์ฉ ๋ฑ์ ์์ ์ ์ด์ฉ์ ์ํ ๋ฌธ์๋ฅผ ํ์ํฉ๋๋ค.
- HanBERT_MRC, HanBERT_NER์ ๋ผ์ด์ผ์ค์ ๋ํ ๋ฌธ์๋ฅผ ํ์ํฉ๋๋ค.
- ์์ฒด ๋ณด์ ์ค์ธ ์ฝํผ์ค์ ํฌ๋ธ๋ญAi๊ฐ ๋ณด์ ํ ์ ์ ๋ ์ฝํผ์ค๋ฅผ ํตํฉํ์ฌ ์์ฒด์ ์ธ BERT๋ฅผ ๊ฐ๋ฐํ๊ธฐ ์ํ ๋ฌธ์๋ฅผ ํ์ํฉ๋๋ค.