Word2Vec을 이용한 한국어 관련어 네트워크 보기

Posted by 적분 ∫2tdt=t²+c
2018.09.17 17:28 프로그래밍/NLP

Word2Vec이 단어 간의 의미론적인 관계를 잘 잡아준다는 것은 이미 널리 알려진 사실이지요. 신기해서 작년에 실제로 실험도 돌려보았었구요 (https://bab2min.tistory.com/545), 당시에는 세종 말뭉치의 데이터만 가지고 Word2Vec을 학습했었는데, 꽤나 그럴싸한 결과가 나와서 놀랐던게 기억에 남네요.


한동안 잊고 지냈었는데, 최근 Kiwi 0.5 버전을 준비하면서 코퍼스에서 사전에 등록되지 않은 단어를 발견하는 기법에 대해서 알게 되었고, 이가 적용된 Kiwi 0.5버전을 이용해 실제로 나무위키의 수 몇 백만건의 문헌을 형태소 분석을 진행하여 약 20여만건의 단어를 추출해보았습니다. 하는 김에 이 단어들을 가지고 Word2Vec을 돌려보았는데요(gensim 라이브러리를 사용했고, 관련 코드에 대해서는 http://blog.theeluwin.kr/post/146591096133/%ED%95%9C%EA%B5%AD%EC%96%B4-word2vec를 참조), 역시나 결과가 재미있게 나와서 공유하고자 이렇게 포스팅을 올리게 되었습니다.


Word2Vec 결과를 그냥 단어 목록으로만 받아보면 재미가 없으니, 최근 공부하던 시각화 라이브러리(vis.js) 이용해서 시각화도 추가해보았습니다.

'남북정상회담'이라는 단어와 Word2Vec 유사도가 높은 단어 시각화


사실 놀라운 신기술 같은건 없고, 이미 널리 쓰이는 Word2Vec과 vis.js 시각화 라이브러리를 조합한 것이라서 길게 설명할 내용은 없네요.

https://lab.bab2min.pe.kr/korRelWords 에서 실제 인터랙티브 결과를 확인해보실 수 있습니다. 이것저것 둘러보는데 은근히 재미있고 시간 잘가네요...ㅎㅎ

단어 품사에 따라 색깔별로 다르게 표현되도록 하였고, 둥그렇게 표시되는 단어는 세종 말뭉치에서 등장하는 단어, 네모낳게 표시되는 단어는 세종말뭉치에서는 등장안했지만 나무위키에서 등장하는 단어입니다. 

양쪽 데이터를 모두 쓴 건 세종 말뭉치의 어휘수에는 한계가 있고, 조금 오래되었기 때문에, 새롭고 다양한 단어를 확보하고자 나무위키 데이터로 사용했던건데 그 때문에 (나무위키에 게임이나 일본문화 관련된 문서가 많다보니) 약간의 편향도 있긴합니다.


전혀 관계를 이해할수 없는 단어들이 잔뜩 출력되기도 합니다..



좀더 여유가 생긴다면 이 단어들을 자동으로 클러스터링하여 묶어주는 기능도 추가하면 좋겠네요.


앞으로도 한국어 연관어 리스트를 유용하게 써주시면 감사하겠습니다~!


https://lab.bab2min.pe.kr/korRelWords

이 댓글을 비밀 댓글로