kakao / khaiii

Kakao Hangul Analyzer III
Apache License 2.0
1.4k stars 285 forks source link

cnn 모델 학습 과정 문의 #94

Closed ullyem closed 3 years ago

ullyem commented 3 years ago

안녕하세요. cnn 모델 학습 과정이 궁금해서 세종말뭉치 몇개를 다운받아 테스트 해보고 있습니다.

ㅁ.테스트환경 :

ㅁ. 문의사항

ㅁ.테스트 결과 로그

(torch) root@khaiii:~/khaiii_kkk/train# ./train.py -i corpus INFO:root:vocab.in: 37 entries, 0 cutoff INFO:root:vocab.out: 98 entries, 0 cutoff INFO:root:restore.dic: 226 entries corpus.dev: 100%|████████████████████████████████████████████████| 61/61 [00:00<00:00, 53739.24it/s] INFO:root:corpus.dev: 15 sentences corpus.test: 100%|███████████████████████████████████████████████| 65/65 [00:00<00:00, 31186.20it/s] INFO:root:corpus.test: 15 sentences corpus.train: 100%|██████████████████████████████████████████████| 74/74 [00:00<00:00, 57766.33it/s] INFO:root:corpus.train: 18 sentences INFO:root:config: {'batch_size': 500, 'best_epoch': 0, 'context_len': 9, 'cutoff': 1, 'debug': False, 'embed_dim': 35, 'epoch': 0, 'gpu_num': -1, 'hidden_dim': 119, 'in_pfx': 'corpus', 'learning_rate': 0.001, 'logdir': './logdir', 'lr_decay': 0.9, 'model_id': 'corpus.cut1.win4.sdo0.1.emb35.lr0.001.lrd0.9.bs500', 'out_dir': './logdir/corpus.cut1.win4.sdo0.1.emb35.lr0.001.lrd0.9.bs500', 'patience': 10, 'rsc_src': '../rsc/src', 'spc_dropout': 0.1, 'window': 4} INFO:root:{{{{ training begin: 09/07 04:45:42 {{{{ EPOCH[0]: 100%|███████████████████████████████████████████████████| 18/18 [00:00<00:00, 5561.10it/s] Traceback (most recent call last): File "./train.py", line 76, in main() File "./train.py", line 72, in main run(args) File "./train.py", line 30, in run Trainer(args).train() File "/root/khaiii_kkk/src/main/python/khaiii/train/trainer.py", line 190, in train is_best = self._train_epoch() File "/root/khaiii_kkk/src/main/python/khaiii/train/trainer.py", line 270, in _train_epoch avg_loss_dev, acc_char, acc_word, f_score = self.evaluate(True) File "/root/khaiii_kkk/src/main/python/khaiii/train/trainer.py", line 367, in evaluate labels = PosSentTensor.to_tensor(sent.get_labels(self.rsc), self.cfg.gpu_num) File "/root/khaiii_kkk/src/main/python/khaiii/train/dataset.py", line 194, in get_labels return [rsc.vocab_out[tag] for pos_word in self.pos_tagged_words for tag in pos_word.tags] File "/root/khaiii_kkk/src/main/python/khaiii/train/dataset.py", line 194, in return [rsc.vocab_out[tag] for pos_word in self.pos_tagged_words for tag in pos_word.tags] File "/root/khaiii_kkk/src/main/python/khaiii/resource/vocabulary.py", line 61, in getitem raise key_err File "/root/khaiii_kkk/src/main/python/khaiii/resource/vocabulary.py", line 57, in getitem return self.dic[key] KeyError: 'I-VV:I-EP:0'

======================================

혹시 몰라 생성된, .dev, .test. *.train, restore.dic 구성 내용을 적겠습니다.

===========dev

  1. I-SN I-SF

마니교를 I-NNG I-NNG I-NNG I-JKO 이탈한 I-NNG I-NNG I-XSV:I-ETM:0 Aug.이기 I-SL I-SL I-SL I-SF I-VCP I-ETN

기독교에 I-NNG I-NNG I-NNG I-JKB 있어서 I-VV I-EC I-EC 원죄라는 I-NNG I-NNG I-VCP:I-ETM:0 I-ETM 개념은 I-NNG I-NNG I-JX 매우 I-MAG I-MAG 중요하다. I-XR I-XR I-XSA I-EF I-SF

2.<철학에의 I-SN I-SF I-SS I-NNG I-NNG I-JKB I-JKG

프랑스의 I-NNP I-NNP I-NNP I-JKG 세계적인 I-NNG I-NNG I-XSN I-VCP:I-ETM:0 의상 I-NNG I-NNG 디자이너 I-NNG I-NNG I-NNG I-NNG 엠마누엘 I-NNP I-NNP I-NNP I-NNP 웅가로가 I-NNP I-NNP I-NNP I-JKS 실내 I-NNG I-NNG 장식용 I-NNG I-NNG I-XSN 직물 I-NNG I-NNG 디자이너로 I-NNG I-NNG I-NNG I-NNG I-JKB 나섰다. I-VV I-VV:I-EP:0 I-EF I-SF

데리다는 I-NNP I-NNP I-NNP I-JX 육질이 I-NNG I-NNG I-JKS 단단한 I-XR I-XR I-XSA:I-ETM:0 살코기와 I-NNG I-NNG I-NNG I-JKB 같다. I-VA I-EF I-SF

철학은 I-NNG I-NNG I-JX 질문하고 I-NNG I-NNG I-XSV I-EC 종교는 I-NNG I-NNG I-JX 대답한다. I-NNG I-NNG I-XSV:I-EF:0 I-EF I-SF

때로는 I-MAG I-MAG I-JX 의역을 I-NNG I-NNG I-JKO 했더라면 I-VV:I-EP:0 I-EC I-EC I-EC 좋지 I-VA I-EC 않았을까. I-VX I-EP I-EF I-EF I-SF

Aug.의 I-SL I-SL I-SL I-SF I-JKG

그렇다면 I-VA I-VA I-EC I-EC 우리는 I-NP I-NP I-JX 철학적.예언자적 I-NNG I-NNG I-XSN I-SF I-NNG I-NNG I-NNG I-XSN

(120쪽). I-SS I-SN I-SN I-SN I-NNB I-SS I-SF

Aug.에 I-SL I-SL I-SL I-SF I-JKB

Aug.보다 I-SL I-SL I-SL I-SF I-JKB I-JKB

그러나 I-MAJ I-MAJ I-MAJ Aug.의 I-SL I-SL I-SL I-SF I-JKG

비판철학(J. I-NNG I-NNG I-NNG I-NNG I-SS I-SL I-SF

=============*.test Aug.는 I-SL I-SL I-SL I-SF I-JX

  1. I-SN I-SF

Aug.가 I-SL I-SL I-SL I-SF I-JKS

오스틴(J.L.Austin)은 I-NNP I-NNP I-NNP I-SS I-SL I-SF I-SL I-SF I-SL I-SL I-SL I-SL I-SL I-SL I-SS I-JX

윤리학은 I-NNG I-NNG I-NNG I-JX 크게 I-VA I-EC 세 I-MM 분야로 I-NNG I-NNG I-JKB 나뉘어진다. I-VV I-VV I-EC I-VX:I-EF:0 I-EF I-SF

죄수 I-NNG I-NNG 세 I-MM 명이 I-NNB I-JKS 있었다. I-VV I-EP I-EF I-SF

그만큼 I-MAG I-MAG I-MAG 영양가도 I-NNG I-NNG I-NNG I-JX 있다. I-VV I-EF I-SF

더구나 I-MAJ I-MAJ I-MAJ "데리다에 I-SS I-NNP I-NNP I-NNP I-JKB 의해 I-VV I-VV:I-EC:0 데카르트는 I-NNP I-NNP I-NNP I-NNP I-JX <새로운 I-SS I-VA I-VA:0 I-ETM:0 옷을 I-NNG I-JKO 입고> I-VV I-EC I-SS 철학사에 I-NNG I-NNG I-NNG I-JKB 나타나게 I-VV I-VV I-VV I-EC 되었다. I-VX I-EP I-EF I-SF

철학함에 I-NNG I-NNG I-XSV:I-ETN:0 I-JKB 어떻게 I-VA I-VA I-EC 다가갈 I-VV I-VV I-VV:I-ETM:0 것인가 I-NNB I-VCP:I-EC:0 I-EC 강영계 I-NNP I-NNP I-NNP S.M.오너 I-SL I-SF I-SL I-SF I-NNG I-NNG

T.C.헌트/곽신환, I-SL I-SF I-SL I-SF I-NNP I-NNP I-SP I-NNP I-NNP I-NNP I-SP

하나님의 I-NNP I-NNP I-NNP I-JKG 은총으로만 I-NNG I-NNG I-JKB I-JKB I-JX 그것이 I-NP I-NP I-JKS 가능함을 I-XR I-XR I-XSA:I-ETN:0 I-JKO 내세운다. I-VV I-VV I-VV:I-EF:0 I-EF I-SF

J.L오스틴 I-SL I-SF I-SL I-NNP I-NNP I-NNP

왜냐하면 I-MAJ I-MAJ I-MAJ I-MAJ Aug.는 I-SL I-SL I-SL I-SF I-JX

그러므로 I-MAJ I-MAJ I-MAJ I-MAJ 종교란 I-NNG I-NNG I-VCP:I-ETM:0 무엇을 I-NP I-NP I-JKO 안다고 I-VV:I-EC:0 I-EC I-EC 하는 I-VV I-ETM 인식(Er-kennen)이 I-NNG I-NNG I-SS I-SL I-SL I-SS I-SL I-SL I-SL I-SL I-SL I-SL I-SS I-JKC 아니라 I-VCN I-VCN I-EC 고백(Be-kennen)이다. I-NNG I-NNG I-SS I-SL I-SL I-SS I-SL I-SL I-SL I-SL I-SL I-SL I-SS I-VCP I-EF I-SF

Aug.의 I-SL I-SL I-SL I-SF I-JKG

====================*.train

강성위 I-NNP I-NNP I-NNP

  1. I-SN I-SF

'중요한 I-SS I-XR I-XR I-XSA:I-ETM:0 것이 I-NNB I-JKS 있을까?' I-VV I-EF I-EF I-SF I-SS

Aug.의 I-SL I-SL I-SL I-SF I-JKG

믿었던 I-VV I-EP I-ETM 것이다. I-NNB I-VCP I-EF I-SF

엠마누엘 I-NNP I-NNP I-NNP I-NNP 웅가로 I-NNP I-NNP I-NNP / I-SP 의상서 I-NNG I-NNG I-JKB 실내 I-NNG I-NNG 장식품으로… I-NNG I-NNG I-NNG I-JKB I-JKB I-SE 디자인 I-NNG I-NNG I-NNG 세계 I-NNG I-NNG 넓혀 I-VV I-VV:I-EC:0

사랑하라! I-NNG I-NNG I-XSV I-EF I-SF

적절할 I-XR I-XR I-XSA:I-ETM:0 것이다. I-NNB I-VCP I-EF I-SF

위대함은 I-XR I-XR I-XSA:I-ETN:0 I-JX 여기에 I-NP I-NP I-JKB 그치지를 I-VV I-VV I-EC I-JKO 않는다. I-VX I-EF I-EF I-SF

에드워드 I-NNP I-NNP I-NNP I-NNP W.사이드 I-SL I-SF I-NNG I-NNG I-NNG

이러한 I-VA I-VA I-VA:I-ETM:0 친절은 I-NNG I-NNG I-JX 없었더라도 I-VA I-EP I-EC I-EC I-EC 괜찮을 I-VA I-VA I-ETM 것이다. I-NNB I-VCP I-EF I-SF

"그것은 I-SS I-NP I-NP I-JX 하나의 I-NR I-NR I-JKG 형이상학이다. I-NNG I-NNG I-NNG I-NNG I-VCP I-EF I-SF

단단한 I-XR I-XR I-XSA:I-ETM:0 연약한 I-XR I-XR I-XSA:I-ETM:0 이에겐 I-NP I-JKB I-JKB:I-JX:0

라고 I-JKQ I-JKQ 하고 I-VV I-EC 있다. I-VX I-EF I-SF

법철학(H.L.A.Hart), I-NNG I-NNG I-NNG I-SS I-SL I-SF I-SL I-SF I-SL I-SF I-SL I-SL I-SL I-SL I-SS I-SP

  1. I-SN I-SF

이러한 I-VA I-VA I-VA:I-ETM:0 화담집의 I-NNP I-NNP I-NNP I-JKG 번역본은 I-NNG I-NNG I-NNG I-JX 그동안 I-NNG I-NNG I-NNG 두서너 I-MM I-MM I-MM 가지 I-NNB I-NNB 나온 I-VV I-VV:I-ETM:0 것으로 I-NNB I-JKB I-JKB 알고 I-VV I-EC 있다. I-VX I-EF I-SF

그러므로 I-MAJ I-MAJ I-MAJ I-MAJ '사랑하라! I-SS I-NNG I-NNG I-XSV I-EF I-SF

그렇다고 I-VA I-VA I-EC I-EC Aug.를 I-SL I-SL I-SL I-SF I-JKO

=======================restore.dic

김/I-VV:I-ETN:0 기/I-VV ㅁ/I-ETN 해/I-XSV:I-EC:0 하/I-XSV 아/I-EC 해/I-XSA:I-EC:0 하/I-XSA 아/I-EC 할/I-VX:I-ETM:0 하/I-VX ㄹ/I-ETM 한/I-XSA:I-ETM:0 하/I-XSA ㄴ/I-ETM 닌/I-VCN:I-EC:0 니/I-VCN ㄴ/I-EC 한/I-VX:I-EF:0 하/I-VX ㄴ/I-EF 한/I-VA:I-ETM:0 하/I-VA ㄴ/I-ETM 인/I-VCP:I-ETM:0 이/I-VCP ㄴ/I-ETM 서/I-EC:I-EC:0 아/I-EC 서/I-EC 서/I-EC:I-EC:1 어/I-EC 서/I-EC 한/I-VV:I-EF:0 하/I-VV ㄴ/I-EF 닌/I-VCN:I-ETM:0 니/I-VCN ㄴ/I-ETM 해/I-VV:I-EC:0 하/I-VV 아/I-EC 릴/I-VX:I-ETM:0 리/I-VX ㄹ/I-ETM 란/I-VA:I-ETM:0 랗/I-VA ㄴ/I-ETM 들/I-VV:I-ETM:0 들/I-VV ㄹ/I-ETM 함/I-XSA:I-ETN:0 하/I-XSA ㅁ/I-ETN 된/I-VX:I-EC:0 되/I-VX ㄴ/I-EC 임/I-VCP:I-ETN:0 이/I-VCP ㅁ/I-ETN 달/I-VV:0 닫/I-VV 된/I-VX:I-EF:0 되/I-VX ㄴ/I-EF 될/I-XSV:I-ETM:0 되/I-XSV ㄹ/I-ETM 됨/I-VV:I-ETN:0 되/I-VV ㅁ/I-ETN 한/I-VV:I-EC:0 하/I-VV ㄴ/I-EC 제/I-NP:I-JKG:0 저/I-NP 의/I-JKG 출/I-VV:I-ETM:0 추/I-VV ㄹ/I-ETM 줄/I-VV:I-ETM:0 주/I-VV ㄹ/I-ETM 준/I-VX:I-EF:0 주/I-VX ㄴ/I-EF 할/I-VV:I-ETM:0 하/I-VV ㄹ/I-ETM 온/I-VV:I-EC:0 오/I-VV ㄴ/I-EC 로/I-VA:0 롭/I-VA 운/I-ETM:0 ㄴ/I-ETM 해/I-VX:I-EC:0 하/I-VX 아/I-EC 한/I-XSV:I-ETM:0 하/I-XSV ㄴ/I-ETM 질/I-VX:I-ETM:0 지/I-VX ㄹ/I-ETM 인/I-VCP:I-EC:0 이/I-VCP ㄴ/I-EC 라/I-VCP:I-ETM:0 이/I-VCP 라/I-ETM 할/I-XSV:I-ETM:0 하/I-XSV ㄹ/I-ETM 큰/I-VA:I-ETM:0 크/I-VA ㄴ/I-ETM 난/I-VX:I-ETM:0 나/I-VX ㄴ/I-ETM 한/I-VV:I-ETM:0 하/I-VV ㄴ/I-ETM 움/I-ETN:0 ㅁ/I-ETN 져/I-VV:I-EC:0 지/I-VV 어/I-EC 졌/I-VX:I-EP:0 지/I-VX 었/I-EP 한/I-VX:I-EC:0 하/I-VX ㄴ/I-EC 한/I-VX:I-ETM:0 하/I-VX ㄴ/I-ETM 된/I-VX:I-ETM:0 되/I-VX ㄴ/I-ETM 불/I-VV:I-VV:0 부/I-VV 르/I-VV 러/I-EC:0 어/I-EC 린/I-VV:I-ETM:0 리/I-VV ㄴ/I-ETM 곤/I-EC:I-JX:0 고/I-EC ㄴ/I-JX 온/I-VV:I-ETM:0 오/I-VV ㄴ/I-ETM 인/I-VCP:I-EF:0 이/I-VCP ㄴ/I-EF 거/I-VA:0 겁/I-VA 드/I-VV:0 들/I-VV 난/I-VV:I-ETM:0 나/I-VV ㄴ/I-ETM 왔/I-VX:I-EP:0 오/I-VX 았/I-EP 른/I-VA:I-ETM:0 르/I-VA ㄴ/I-ETM 친/I-VA:I-ETM:0 칠/I-VA ㄴ/I-ETM 했/I-VX:I-EP:0 하/I-VX 았/I-EP 닌/I-VV:I-ETM:0 니/I-VV ㄴ/I-ETM 했/I-XSV:I-EP:0 하/I-XSV 았/I-EP 낸/I-VV:I-EF:0 내/I-VV ㄴ/I-EF 일/I-VCP:I-ETM:0 이/I-VCP ㄹ/I-ETM 아/I-VV:0 알/I-VV 케/I-XSV:I-EC:0 하/I-XSV 게/I-EC 겨/I-VV:I-EC:0 기/I-VV 어/I-EC 진/I-VX:I-EF:0 지/I-VX ㄴ/I-EF 닌/I-VCN:I-EF:0 니/I-VCN ㄴ/I-EF 했/I-VV:I-EP:0 하/I-VV 았/I-EP 근/I-VA:I-ETM:0 글/I-VA ㄴ/I-ETM 가/I-VV:I-EC:0 가/I-VV 아/I-EC 졌/I-VV:I-EP:0 지/I-VV 었/I-EP 난/I-VV:I-EF:0 나/I-VV ㄴ/I-EF 킬/I-XSV:I-ETM:0 키/I-XSV ㄹ/I-ETM 나/I-VV:I-EC:0 나/I-VV 아/I-EC 볼/I-VV:I-ETM:0 보/I-VV ㄹ/I-ETM 한/I-XSV:I-EF:0 하/I-XSV ㄴ/I-EF 켜/I-XSV:I-EC:0 키/I-XSV 어/I-EC 한/I-XSV:I-EC:0 하/I-XSV ㄴ/I-EC 게/I-NNB:I-JKC:0 것/I-NNB 이/I-JKC 란/I-VCP:I-ETM:0 이/I-VCP 란/I-ETM 안/I-VV:I-EC:0 알/I-VV ㄴ/I-EC 름/I-VA:I-ETN:0 르/I-VA ㅁ/I-ETN 쉬/I-VA:0 쉽/I-VA 혀/I-VV:I-EC:0 히/I-VV 어/I-EC 온/I-VX:I-ETM:0 오/I-VX ㄴ/I-ETM 와/I-VV:I-EC:0 오/I-VV 아/I-EC 된/I-XSV:I-EF:0 되/I-XSV ㄴ/I-EF 든/I-VCP:I-EC:0 이/I-VCP 든/I-EC 올/I-VV:I-ETM:0 오/I-VV ㄹ/I-ETM 긴/I-VV:I-EF:0 기/I-VV ㄴ/I-EF 된/I-XSV:I-ETM:0 되/I-XSV ㄴ/I-ETM 였/I-VCP:I-EP:0 이/I-VCP 었/I-EP 든/I-VA:I-ETM:0 들/I-VA ㄴ/I-ETM 낸/I-VV:I-ETM:0 내/I-VV ㄴ/I-ETM 럴/I-VA:I-ETM:0 렇/I-VA ㄹ/I-ETM 선/I-VV:I-EF:0 서/I-VV ㄴ/I-EF 본/I-VX:I-EF:0 보/I-VX ㄴ/I-EF 함/I-XSV:I-ETN:0 하/I-XSV ㅁ/I-ETN 킨/I-XSV:I-ETM:0 키/I-XSV ㄴ/I-ETM 할/I-XSA:I-ETM:0 하/I-XSA ㄹ/I-ETM 칠/I-VV:I-EC:0 치/I-VV ㄹ/I-EC 칠/I-VV:I-ETM:0 치/I-VV ㄹ/I-ETM 갔/I-VV:I-EP:0 가/I-VV 았/I-EP 킴/I-XSV:I-ETN:0 키/I-XSV ㅁ/I-ETN 운/I-VV:I-EF:0 우/I-VV ㄴ/I-EF 라/I-VCP:I-EC:0 이/I-VCP 라/I-EC 된/I-VA:I-ETM:0 되/I-VA ㄴ/I-ETM 여/I-VV:I-EC:0 이/I-VV 어/I-EC 진/I-VV:I-ETM:0 지/I-VV ㄴ/I-ETM 갈/I-VV:I-ETM:0 가/I-VV ㄹ/I-ETM 날/I-VV:I-ETM:0 나/I-VV ㄹ/I-ETM 먼/I-VA:I-ETM:0 멀/I-VA ㄴ/I-ETM 진/I-VV:I-EF:0 지/I-VV ㄴ/I-EF 닌/I-VV:I-EF:0 니/I-VV ㄴ/I-EF 모/I-VV:I-VV:0 모/I-VV 으/I-VV 란/I-VV:I-EC:0 라/I-VV ㄴ/I-EC 밀/I-VV:I-ETM:0 미/I-VV ㄹ/I-ETM 할/I-VV:I-EC:0 하/I-VV ㄹ/I-EC 지/I-VCP:I-EC:0 이/I-VCP 지/I-EC 줄/I-VX:I-ETM:0 주/I-VX ㄹ/I-ETM 함/I-VX:I-ETN:0 하/I-VX ㅁ/I-ETN 혔/I-VV:I-EP:0 히/I-VV 었/I-EP 럼/I-VA:I-ETN:0 렇/I-VA ㅁ/I-ETN 친/I-VV:I-ETM:0 치/I-VV ㄴ/I-ETM 릴/I-VV:I-ETM:0 리/I-VV ㄹ/I-ETM 러/I-XSA:0 럽/I-XSA 킨/I-VV:I-EF:0 키/I-VV ㄴ/I-EF 랬/I-VA:I-EP:0 렇/I-VA 었/I-EP 까/I-VA:0 깝/I-VA 려/I-VA:0 렵/I-VA 야/I-EC:I-EC:0 아/I-EC 야/I-EC 줘/I-VX:I-EC:0 주/I-VX 어/I-EC 런/I-XSA:I-ETM:0 럽/I-XSA ㄴ/I-ETM 알/I-VV:I-ETM:0 알/I-VV ㄹ/I-ETM 겐/I-JKB:I-JX:0 게/I-JKB ㄴ/I-JX 간/I-VV:I-EF:0 가/I-VV ㄴ/I-EF 마/I-VA:0 맙/I-VA 워/I-EC:0 어/I-EC 요/I-VCP:I-EC:0 이/I-VCP 요/I-EC 일/I-VV:I-ETM:0 이/I-VV ㄹ/I-ETM 엔/I-JKB:I-JX:0 에/I-JKB ㄴ/I-JX 들/I-VA:I-ETM:0 들/I-VA ㄹ/I-ETM 진/I-VA:I-ETM:0 지/I-VA ㄴ/I-ETM 닐/I-VCN:I-ETM:0 니/I-VCN ㄹ/I-ETM 런/I-VA:I-EC:0 렇/I-VA ㄴ/I-EC 가/I-VX:I-EC:0 가/I-VX 아/I-EC 될/I-VX:I-ETM:0 되/I-VX ㄹ/I-ETM 된/I-VV:I-ETM:0 되/I-VV ㄴ/I-ETM 른/I-VV:I-EF:0 르/I-VV ㄴ/I-EF 온/I-VV:I-EF:0 오/I-VV ㄴ/I-EF 문/I-VA:I-ETM:0 물/I-VA ㄴ/I-ETM 다/I-VCP:I-EF:0 이/I-VCP 다/I-EF 려/I-VV:I-EC:0 리/I-VV 어/I-EC 진/I-VX:I-ETM:0 지/I-VX ㄴ/I-ETM 본/I-VV:I-ETM:0 보/I-VV ㄴ/I-ETM 긴/I-VV:I-ETM:0 기/I-VV ㄴ/I-ETM 왔/I-VV:I-EP:0 오/I-VV 았/I-EP 일/I-VCP:I-EC:0 이/I-VCP ㄹ/I-EC 녔/I-VV:I-EP:0 니/I-VV 었/I-EP 든/I-VV:I-ETM:0 들/I-VV ㄴ/I-ETM 볼/I-VX:I-ETM:0 보/I-VX ㄹ/I-ETM 치/I-VV:I-EC:0 하/I-VV 지/I-EC 인/I-VV:I-ETM:0 이/I-VV ㄴ/I-ETM 치/I-VA:I-EC:0 하/I-VA 지/I-EC 쩔/I-VV:I-ETM:0 쩌/I-VV ㄹ/I-ETM 함/I-VV:I-ETN:0 하/I-VV ㅁ/I-ETN 띈/I-VV:I-EF:0 띄/I-VV ㄴ/I-EF 를/I-VA:I-ETM:0 르/I-VA ㄹ/I-ETM 민/I-VV:I-ETM:0 미/I-VV ㄴ/I-ETM 울/I-ETM:0 ㄹ/I-ETM 펴/I-VV:I-EC:0 피/I-VV 어/I-EC 본/I-VX:I-EC:0 보/I-VX ㄴ/I-EC 서/I-VV:I-EC:0 서/I-VV 어/I-EC 앎/I-VV:I-ETN:0 알/I-VV ㅁ/I-ETN 져/I-VX:I-EC:0 지/I-VX 어/I-EC 른/I-VV:I-ETM:0 르/I-VV ㄴ/I-ETM 갈/I-VX:I-ETM:0 가/I-VX ㄹ/I-ETM 간/I-VA:I-ETM:0 갛/I-VA ㄴ/I-ETM 십/I-EP:I-EF:0 시/I-EP ㅂ/I-EF 할/I-VX:I-EC:0 하/I-VX ㄹ/I-EC 도/I-VV:0 돌/I-VV 은/I-VV:I-ETM:0 으/I-VV ㄴ/I-ETM 러/I-VA:0 럽/I-VA 닐/I-VCN:I-EF:0 니/I-VCN ㄹ/I-EF 를/I-VV:I-ETM:0 르/I-VV ㄹ/I-ETM 럼/I-VV:I-ETN:0 러/I-VV ㅁ/I-ETN 겼/I-VV:I-EP:0 기/I-VV 었/I-EP 럴/I-VV:I-ETM:0 러/I-VV ㄹ/I-ETM 할/I-XSA:I-EF:0 하/I-XSA ㄹ/I-EF 로/I-XSA:0 롭/I-XSA 진/I-VX:I-EC:0 지/I-VX ㄴ/I-EC 인/I-VV:I-EF:0 이/I-VV ㄴ/I-EF 일/I-VCP:I-EF:0 이/I-VCP ㄹ/I-EF 케/I-XSA:I-EC:0 하/I-XSA 게/I-EC 선/I-JKB:I-JX:0 서/I-JKB ㄴ/I-JX 낸/I-VV:I-EC:0 내/I-VV ㄴ/I-EC 본/I-VX:I-ETM:0 보/I-VX ㄴ/I-ETM 질/I-VV:I-ETM:0 지/I-VV ㄹ/I-ETM ,/I-EC:I-SP:0 아/I-EC ,/I-SP 진/I-VV:I-EC:0 지/I-VV ㄴ/I-EC 힐/I-VV:I-ETM:0 히/I-VV ㄹ/I-ETM 라/I-VA:0 랍/I-VA 난/I-VA:I-ETM:0 나/I-VA ㄴ/I-ETM 꿀/I-VV:I-ETM:0 꾸/I-VV ㄹ/I-ETM 길/I-ETN:I-JKO:0 기/I-ETN ㄹ/I-JKO 란/I-VV:I-EF:0 라/I-VV ㄴ/I-EF 냈/I-VX:I-EP:0 내/I-VX 었/I-EP 들/I-VV:0 듣/I-VV 된/I-VV:I-EF:0 되/I-VV ㄴ/I-EF 누/I-NP:I-NP:0 누/I-NP 구/I-NP 둠/I-VX:I-ETN:0 두/I-VX ㅁ/I-ETN 간/I-VX:I-EF:0 가/I-VX ㄴ/I-EF 린/I-VV:I-EF:0 리/I-VV ㄴ/I-EF 긴/I-VA:I-ETM:0 길/I-VA ㄴ/I-ETM 준/I-VV:I-EF:0 주/I-VV ㄴ/I-EF 된/I-XSV:I-EC:0 되/I-XSV ㄴ/I-EC 랄/I-VV:I-ETM:0 라/I-VV ㄹ/I-ETM 춘/I-VV:I-ETM:0 추/I-VV ㄴ/I-ETM 편/I-VV:I-EF:0 펴/I-VV ㄴ/I-EF 싼/I-VV:I-ETM:0 싸/I-VV ㄴ/I-ETM 된/I-XSA:I-ETM:0 되/I-XSA ㄴ/I-ETM 들/I-VX:I-ETM:0 들/I-VX ㄹ/I-ETM 섰/I-VV:I-EP:0 서/I-VV 었/I-EP

krikit commented 3 years ago

CNN 모델 학습 과정을 보시면,

1) 음절 단위 정렬 2) 학습 코퍼스 분할 3) vocab 생성 4) 모델 학습

이 순서로 진행하셨으리라 생각합니다.

학습 코퍼스가 충분히 크다면, 분할한 코퍼스의 train 셋에 나타난 'I-VV:I-EP:0'와 같은 output vocab 엔트리가 dev, test 셋에도 나타날텐데, 그렇지 못해 train 셋으로 한 epoch을 마치고 dev 셋에서 평가하는 중에 KeyError가 발생한 것 같습니다.

작은 세종 테스트 코퍼스에서 학습되는 것을 확인하고 싶으신 경우, vocab 생성 부분을 생략하고 이미 rsc 디렉터리 아래에 만들어진 vocab 파일을 그냥 사용하시거나, train, dev, test 전부 이용해서 vocab을 생성해서 시도해 보시기 바랍니다.

아니면 전체 세종 코퍼스를 이용하여 split 하시고, dev, test 셋은 각각 1% 정도씩만 해도 충분합니다.

ullyem commented 3 years ago

답변주셔서 감사합니다.

의견주신대로, 1) 원본 vocab.out 2) train, dev, test를 모두 vocab을 생성해서 한로 합쳐서 사용

하는 것도 테스트 해봤습니다. 두 경우 모두 KeyError를 사라졌습니다. 와우!

그런데 또 다른 결과가 나와서 문의 드립니다.

에러 결과 : ZeroDivisionError: division by zero

-- INFO:root:{{{{ training begin: 09/08 00:27:29 {{{{ EPOCH[0]: 100%|███████████████████████████████████████████████████| 18/18 [00:00<00:00, 6799.74it/s] Traceback (most recent call last): File "./train.py", line 76, in main() File "./train.py", line 72, in main run(args) File "./train.py", line 30, in run Trainer(args).train() File "/root/khaiii_kkk/src/main/python/khaiii/train/trainer.py", line 190, in train is_best = self._train_epoch() File "/root/khaiii_kkk/src/main/python/khaiii/train/trainer.py", line 271, in _train_epoch is_best = self._check_epoch(loss_trains, avg_loss_dev, acc_char, acc_word, f_score) File "/root/khaiii_kkk/src/main/python/khaiii/train/trainer.py", line 288, in _check_epoch avg_loss_train = sum(loss_trains) / len(loss_trains) ZeroDivisionError: division by zero

이것은 실제로 '0'으로 나누기 해서 이런 에러가 나오는것 같은데요..

' loss_trains ' 값이 소스 코드를 보니.. 잘은 모르겠지만..'self.cfg.gpu_num'도 관련이 있는것 같은데.. 실제로 하드웨어 GPU 유무가 관련이 있는건가요? 아니면 다른 이슈일까요? 모르니까 막 질문을 던집니다.

=== trainer.py

형태소 태깅 모델 학습

        self.model.train()
        batch_outputs_pos, batch_outputs_spc = \
                self.model(PosSentTensor.to_tensor(batch_contexts, self.cfg.gpu_num),
                           PosSentTensor.to_tensor(batch_left_spc_masks, self.cfg.gpu_num),
                           PosSentTensor.to_tensor(batch_right_spc_masks, self.cfg.gpu_num))
        batch_outputs_pos.requires_grad_()
        batch_outputs_spc.requires_grad_()
        **loss_train_pos = self.criterion(batch_outputs_pos,
                                        PosSentTensor.to_tensor(batch_labels, self.cfg.gpu_num))
        loss_train_spc = self.criterion(batch_outputs_spc,
                                        PosSentTensor.to_tensor(batch_spaces, self.cfg.gpu_num))
        loss_train = loss_train_pos + loss_train_spc**
        loss_trains.append(loss_train.item())
        loss_train.backward()
        self.optimizer.step()
        self.optimizer.zero_grad()

=================================

그리고 덧으로, 세종말중치들이..utf-8로 변환하면서 생기는 이슈인지는 모르겠지만 한글자모 'ㄱ,ㄷ,ㅈ,ㅂ,....ㅎ'까지..문자 에러 있습니다.

'음절단위정렬'할때 에러가 나오면 문서파일을 일일이 열어서, 예를 들어 'ㄴ'을 다시 'ㄴ' 타이핑해줘야 하는 이슈가 있습니다.

테스트하는 제 입장에서는 크리티컬한 이슈인 세종말뭉치입니다. ㅜ ㅜ

krikit commented 3 years ago

1) ZeroDivisionError 에러가 발생한 코드의 위치로 보건데, loss_trains가 빈 리스트인 것 같습니다. 이 리스트는 학습 중 1 step (= 1 batch)을 진행 후 그 loss 값이 추가되는데, 전체 학습 데이터가 배치 크기보다 작아서 학습이 아예 진행되지 않은 것 같습니다. 참고로 배치 크기는 지정하지 않으면 기본 값이 500입니다. 즉, train 셋에서 적어도 500개 이상의 글자가 있어야 하나의 배치를 학습할 수 있습니다.

2) 한글 자모 munjong 디렉터리에 보시면 convert_jamo_to_compat.py 스크립트가 있습니다. 이에 대한 자세한 내용은 문종 프로젝트 문서를 참고하시기 바랍니다.

ullyem commented 3 years ago

답변 주셔서 감사합니다. 의견대로 세종 말뭉치를 받아서 약 200만줄의 데이터를 만들고, 가상 머신에서 돌리고 있는데 에러 없이 중간에 종료(killed)가 되네요. 그렇다고 학습이 되지 않고..

좀 더 해보고 다시 오겠습니다.

다시 한번 답변 감사드려요. ^^