Word2Vec (2)

하지만, 시간이 지남에 따라 세상은 사람조차 스스로 어떻게 하는지 모르는 영역을 요구하기 시작했다.

저번 글에서 언급한대로 나무위키의 데이터베이스를 사용하여 Word2Vec 모델을 세워보았다. 나무위키 말고 다른 말뭉치(Corpus)를 사용하고 싶었으나, 한국어로 된 마땅한 말뭉치가 없어서(세종 코퍼스는 Raw Text가 아닌 XML로 묶여있고, 코퍼스가 파편화 되어있으며, 어휘량도 많지 않아보여서 패스했다.) 결국 나무위키 데이터베이스를 사용하였다.

모델의 아키텍쳐로는 Gensim이 제공하는 cbow와 skipgram중 skipgram을 사용하였다. Feature Vector의 크기는 300이 넘어가면 정확도의 변화량이 미미하다고 해서 300으로 설정하였다. Vocabulary로는 Gensim의 models.phrases로 token들을 한번 묶어서 bigram vocabulary를 사용하였다.


2015-07-27 17:40:12,095 : INFO : training model with 8 workers on 782573 vocabulary and 300 features, using 'skipgram'=1 'hierarchical softmax'=1 'subsample'=0 and 'negative sampling'=0
2015-07-27 17:40:18,615 : INFO : PROGRESS: at 0.03% words, alpha 0.02500, 17977 words/s
...
2015-07-27 20:05:44,042 : INFO : PROGRESS: at 93.31% words, alpha 0.00171, 40912 words/s
2015-07-27 20:05:44,046 : INFO : training on 357238956 words took 8732.0s, 40912 words/s

↑ 로그파일 일부

트레이닝하는데 약 2시간 20분이 소요되었고,  bigram vocabulary를 만드는데는 약 1시간 40분이 소요되었다. (총 4시간)

데모는 링크에서 확인할 수 있다.

몇몇 쿼리들에 대한 저번 글에서 인용한 나무위키 + 한국어 위키백과 기반 모델과의 비교표를 작성하면서 마친다.

 데모http://w.elnn.kr/
버락_오바마-미국+러시아블라디미르/Noun_푸틴/Noun-
버락_오바마-미국+스타워즈아나킨/Noun_스카이워커/Noun-
아카라카-연세대학교+고려대학교입실렌티/Noun입실렌티/Noun
아이폰-휴대폰+노트북아이패드/Noun아이패드/Noun
컴퓨터공학-자연과학+인문학법학/Noun게임학/Noun
플레이스테이션-소니+마이크로소프트엑스박스/Noun_360/NumberMSX/Alpha
한국-서울+파리프랑스/Noun프랑스/Noun
컴퓨터-기계+인간운영체제/Noun일반인/Noun
게임+공부프로그래밍/Noun덕질/Noun
박보영-배우+가수애프터스쿨/Noun허각/Noun
밥+했는지끓였/Verb저녁밥/Noun
사랑+이별그리움/Noun추억/Noun
삼성-한화노트북/Noun후지필름/Noun
소녀시대-소녀+아줌마아이유/Noun에이핑크/Noun
수학-증명경영학/Noun이산수학/Noun
스파게티-소시지+김치칼국수/Noun비빔국수/Noun
아버지-남자+여자어머니/Noun어머니/Noun
아이유-노래+연기송중기/Noun송중기/Noun
안드로이드-자유iOS/Alpha아이폰/Noun
우주-빛태양계/Noun_밖/NounNASA/Alpha
인간-직업짐승/Noun볼뉴르크/Noun
최현석_셰프-허세+셰프이연/Noun_복/Noun-
패스트푸드-체인점영국/Noun_요리/Noun철물/Noun

밥+했는지의 경우 는지/Eomi가 붙는 밥에 관련된 용언(끓였/Verb, 볶았/Verb, 구웠/Verb)들이 제시되었다.

(버락_오바마-미국)의 feature vector가 [지도자 벡터]를 잘 표현하는듯 하다. [지도자 벡터] + 국가를 하면 해당 국가의 지도자(일본=>아베 신조, 한국=>이명박, 중국=>시진핑)가 높은 정확도로 등장했다.

삼성-한화의 경우 나무위키에 야구 관련 document가 많아서 삼성에서 [야구팀 벡터]를 제거한 결과가 나온듯 하다.

컴퓨터-기계+인간의 경우 운영체제가 인간이 결정하는 여러 Policy들에 의해서 만들어진것을 감안했을때 만족스러운 대답이었다.

“Word2Vec (2)”에 대한 2개의 생각

  1. 위키백과의 덤프 파일에서 한글 파일 추출해서 word2vec 생성 할려고 하는데 JVM에서 메모리 오류가 계속 발생하네요. 혹시 작업 하신 컴퓨터 사양 알수 있을가요?

    1. 위키백과의 덤프를 사용하진 않고 나무위키의 덤프만 사용했습니다.
      위키백과의 덤프를 사용한 http://w.elnn.kr/search/ 의 주인분이 작업하신 컴퓨터 사양은 제가 알지 못합니다.
      나무위키의 덤프를 사용할때에는 32GB의 램에서 in-memory로 훈련했습니다.

답글 남기기

이메일은 공개되지 않습니다. 필수 입력창은 * 로 표시되어 있습니다.