연구방향
팀의 모든 연구원님들이 자연어 처리 분야에서 모르는 부분이 서로 다 다르기 때문에 자신이 부족한 부분을 중점으로 개념을 공부하고 연구하는 방식으로 진행이 되었습니다. 또한 자신이 흥미로워 하거나 재미있는 주제를 선정하고 간단하게 코드를 작성하고 프로그램을 돌려 결과를 도출해 내는 등의 활발한 연구활동을 하였습니다.
연구활동
김현우 : 자연어 처리에서 중요한 부분인 형태소 분석기를 외부 라이브러리를 가져다가 사용만 하는 개발자의 입장에서 형태소 분석기가 어떻게 작동하는지에 대한 궁금증을 가지게 되어 형태소 분석기의 일반적인 형태소 분석 원리와 개념을 연구한 후 이해한 내용을 바탕으로 미팅에서 모든 팀원들에게 어떻게 동작하는지 그 원리와 개념을 가장 많이 사용하는 알고리즘인 Tabular Parsing Algorithm을 설명하는 활동을 하였습니다. 번외로 개인적으로 공부하던 Word2Vec의 개념과 학습방법의 원리 (One-Hot-Encoding, 분산표상, CBOW, Skip-Gram)등을 공부하여 발표자료를 제작하였습니다. 아래의 파일주소를 참고하여 주시기 바랍니다.
연구활동 파일: https://drive.google.com/file/d/1qFdOf72TnnnsNDFdz_OOFTE4gDy3Dc0c/view?usp=sharing
민홍 : 현재 좀 더 Realistic Text generate를 목표로 연구 중이며, 지난 주 모임에서는 이전에 수행했던 NLP 프로젝트에서 데이터를 얻고 처리했던 과정에 대해 브리핑을 했습니다. (이전에 수행했던 NLP 프로젝트는 Leak Gan을 통해 한국어 시를 생성하는 프로젝트 였습니다. Uduntu14.04에서 python3로 작성하였습니다.)
Semantic Web Research Center (SWRC)는 기계 번역(Machine Translation), 시맨틱 웹(Semantic Web), 온톨로지(Ontology) 를 포함한 자연어처리를 연구하는 연구소이며, 다양한 한국어 자연어 데이터베이스를 제공합니다. 그 중 KAIST Corpus 데이터베이스에서 KAIST Raw corpus 을 다운받았습니다. 본 데이터세트는 교과서, 법, 대중매체, 종교, 문학 등의 카테고리에 따라 텍스트를 구분하여 정리해 놓았습니다. 저는 문학 > 시의 근대시 텍스트 파일 100개에 대해 전처리 과정을 거쳐, 103,704행의 데이터 세트를 구축했습니다.
전처리 과정에서 텍스트를 불러와 읽는 단계에서부터 문제가 발생했습니다. 원인은 한글 인코딩 방식이 크게 UTF-8 과 EUC-KR로 나뉘기 때문이었습니다. UTF-8은 자음과 모음을 초성, 중성, 종성으로 구분하여 문자를 작성하는 조합형 방식의 문자집합(Charater Set)이고, EUC-KR 은 하나의 완성되어져 있는 글자로 구성된 문자표를 토대로 문자를 인식한는 완성형 방식의 문자집합입니다. EUC-KR 방식은 조합형 방식에 비해 확장성이 떨어질 뿐 아니라, EUC-KR을 사용하는 국가에서만 제대로 문자가 제대로 보인다는 단점이 있습니다. 따라서 조합형방식이 한글을 표현하기에 더 적합한 방식입니다.
일반적으로 리눅스 계열은 유니코드를 지원합니다. 현재 개발되는 윈도우도 유니코드를 지원하지만, 이전에는 마이크로 소프트사에서 직접 EUC-KR 방식에서 확장시켜 개발한 방식인 CP949 ( MS949라고도 부른다 )을 사용해왔기 때문에 각자 다른 운영체제에서 인코딩된 한글을 디코딩하는 오류가 생기는 문제가 있었습니다.
KAIST Raw corpus 의 다수의 텍스트 파일이 CP949으로 인코딩되어 있었기 때문에, 리눅스 환경에서 이를 디코딩하는데 오류가 있었던 것입니다. 그래서 파일들을 CP949 방식으로 디코딩한 후 사용했습니다. 또 한 Corpus에 있는 텍스트 파일들이 서로 다른 방식으로 인코딩되어있을 때, 일괄적으로 읽어들이기 위해 try, except문을 활용해 UnicodeDecodeError가 있는 파일은 그냥 처리하지않고 통과시키는 방법이 있습니다.
전은광 : 현재 진행사항으로 A simple neural network module for relational reasoning 논문과 Relation Memory Network: A Simple Neural architecture for Text-based Reasoning 논문을 통해 간단하게 LSTM 구조에 관계 네트워크 모듈을 추가하면서 관계 네트워크에 대해 연구중에 있습니다. 아직 논문 분석이 끝나지 않아 결과물을 없는 상태입니다. 다음주 모임(30일)에 발표 예정입니다. 관계 네트워크는 모델이 아닌 모듈 구조라 어떤 모델에도 적용이 가능하여 general 하다고 볼 수 있는것 같으며 적용 분야가 다양하다고 생각합니다.
박산희 : Gensim을 이용하여 Word-Embedding이 어떻게 되는지 간단하게 코드를 작성하고 결과를 도출해보는 연구를 해보고 실제로 결과를 도출해보면서 결과값에 대한 새로운 의문을 가지게 되고 연쇄적인 연구활동을 하게 되었습니다. 발표 자료는 아래의 파일 주소를 참고해 주시기 바랍니다.
연구활동 파일: https://drive.google.com/file/d/0B4RCWt0z1kFwb3pUTFBSTnU2anNFWWtyVEVMM1FjazZ2LTFR/view?usp=sharing
홍권일 : 샴 네트워크를 통해 기존 단어 사전을 먼저 구성하고 데이터 셋으로 단어간 유사성을 판단하여 신조어에 대한 토크나이징을 구성해보는 연구를 하였습니다. 연구한 내용을 자세히 설명하면 다음과 같습니다. (자세한 내용은 다음 미팅에서 Lab 대표로 발표할 예정입니다.)
샴 네트워크는 파라미터를 자동으로 학습하여 거리 값에 곱해주고 다른 딥러닝과 마찬가지로 데이터 수가 적거나 데이터의 패턴이 복잡할 경우 과적합이 발생할 것이라는 결과가 나왔습니다. 원샷러닝으로 생각하고 시도를 해 보았으나 실험 결과 어느정도의 데이터를 확보하고 있어야 한다는 결과가 도출되었습니다.
좌측의 모델과 우측의 모델을 구성하는 과정중에 처음에 우측모델이 편집거리에 대하여 유의미한 데이터를 나타내지 못했는데 고민끝에 그 이유를 되찾았습니다. 그 이유는 실수 예측 부분에 반복문을 돌려서 확률을 추출하는데 모델의 값에 b순번이 아닌 w순번을 넣어 앞에서 예측한 마지막 단어에 대한 예측값을 계속 뽑아내는 탓에 확률 값이 동일하게 나오게 된 것이였습니다.
아래와 같습니다.
print(base_data, '뒤 "'+words[b]+'" 붙을 확률 :', s_loader.model.predict([data_x, text_vec([words[w]])])[0][0])
----> print(base_data, '뒤 "'+words[b]+'" 붙을 확률 :', s_loader.model.predict([data_x, text_vec([words[b]])])[0][0])
그렇게 해서 정상적으로 예측한 결과는
타겟 단어 : 안녕
안녕 앞 " " 붙을 확률 : 0.7532246
안녕 앞 "안녕" 붙을 확률 : 0.21218403
안녕 앞 "하세" 붙을 확률 : 0.08929408
안녕 앞 "요" 붙을 확률 : 0.34877133
--------------------------------------
안녕 뒤 " " 붙을 확률 : 0.027319342
안녕 뒤 "안녕" 붙을 확률 : 0.21218403
안녕 뒤 "하세" 붙을 확률 : 0.6417925
안녕 뒤 "요" 붙을 확률 : 0.11079279
안녕 앞에는 공백이 붙고 뒤에는 하세가 붙는다 입니다.
그리고 한가지 알아낸 것은 base_data를 바꾸려면 모델도 바꿔야 한다는 사실
애초에 모델은 안녕을 기준으로 학습되어 있기 때문에
베이스 데이터가 바뀌면 예측값이 잘 나오지 않네요.
타겟 단어 : 화훼
화훼 앞 " " 붙을 확률 : 0.94630045
화훼 앞 "안녕" 붙을 확률 : 0.92530733
화훼 앞 "하세" 붙을 확률 : 0.81850785
화훼 앞 "요" 붙을 확률 : 0.9609887
--------------------------------------
화훼 뒤 " " 붙을 확률 : 0.0060672336
화훼 뒤 "안녕" 붙을 확률 : 0.013907663
화훼 뒤 "하세" 붙을 확률 : 0.08577516
화훼 뒤 "요" 붙을 확률 : 0.006869446
소스파일 : https://drive.google.com/file/d/1MZ4rt9tDdfz7g6dixEbHuxz3a68jUAZe/view?usp=sharing
유연수 : 서울과 거리가 멀어 1차 미팅에서는 참석을 하지 못하였지만 한달 동안 자연어처리 관련 논물을 보면서 딥러닝 공부를 하였습니다.