IT

Word2Vec을 이용한 '깃대종' 단어간 유사도 측정

유병혁 2019. 9. 11. 11:58

안녕하세요? 이번 글은 Word2Vec을 이용한 '깃대종' 단어간 유사도 측정을 정리해 보겠습니다.

Word2Vec은 인공신경망으로 말뭉치(corpus)를 입력받아, 이름 그대로 말뭉치의 단어를 벡터로

처리하는 역할을 하는데요, 이를 통해 단어간 유사성을 측정할 수 있습니다.


자, 그럼 word2vec을 직접 다뤄볼까요. 일단 기본적으로 필요한 라이브러리들을 추가해 봅니다.


KoNLPy(코엔엘파이)가 제공하는 '꼬꼬마 한글 형태소 분석기'를 추가합니다.

꼬꼬마 프로젝트 공식 홈페이지 | http://kkma.snu.ac.kr/


이전 글에서 수집한 '깃대종'이 언급된 블로그/카페 글 중 제목 컬럼을 텍스트 파일로 추출합니다.

카카오 검색 API를 이용한 '깃대종' 블로그/카페 검색 가시화 | http://blog.daum.net/geoscience/1412


꼬꼬마 한글 형태소 분석기를 통해 텍스트 파일의 단어들을 2차원 리스트로 정의하고 1자 단어, 숫자들을 필터링합니다. 


이제 말뭉치가 준비되었으니 단어간 유사도를 측정해볼까요?! Word2vec은 텐서플로(TensorFlow)를 통해서도

이용하실 수 있는데요, 여기서는 토픽 모델링 파이썬 라이브러리 'Gensim(젠심)'을 이용해 보도록 하겠습니다.


gensim – Topic Modelling in Python | https://github.com/RaRe-Technologies/gensim

Gensim whl 설치 | https://www.lfd.uci.edu/~gohlke/pythonlibs/#gensim


Word2Vec을 불러온 후, 


모형(model)을 구축해 봅니다. 중심 단어로 주변 단어를 예측하는 Skip-gram을 적용해 봤습니다.


'깃대종'과 '국립공원' 간 유사도는 0.99로 나타납니다.


'깃대종'과 가장 유사한 단어 100개를 추출하고, 이 중 10개를 나타낸 결과입니다.


이번에는 전국 22개 국립공원 명칭을 리스트로 정의하고, '깃대종' 유사어 중 포함여부를 측정해 봤습니다.


위 결과를 기반으로 지리산, 주왕산, 오대산, 북한산, 무등산 5개 국립공원에서 공통적으로 등장하는 유사어를 추출해 봅니다. 


5개 국립공원 명칭과 단어간 유사도를 평균화한 결과를 '전체' 컬럼으로 추가해 봅니다.


'전체' 컬럼을 기준으로 상위 30개 단어를 닷 플롯으로 표현해 본 결과입니다.

Dot plot with several variables | https://seaborn.pydata.org/examples/pairgrid_dotplot.html