클로이의 데이터 여행기

[R] R을 이용한 텍스트마이닝_Word2vec(코드 및 설명) 본문

R

[R] R을 이용한 텍스트마이닝_Word2vec(코드 및 설명)

징느K 2019. 5. 31. 15:38

 

오늘은 R의 wordVectors 패키지를 활용하여 word2vec 알고리즘을 다루는 방법에 대해 소개하고자 합니다.

 

 

1. word2vec이란?

word2vec은 '비슷한 의미를 갖는 단어는 문서에서 근처에 존재할 것'이라는 가정을 전제로 하여, 

단어에 벡터값을 부여하여 의미론적으로 유사한 단어를 거리 기반으로 매핑하는 방법입니다.

 

 

 

2. word2vec의 활용

 

① 키워드 사전 확장

 

어떤 카테고리의 데이터(사전)를 구축할 때, 단순히 빈도에 기반하다 보면 한계점이 찾아올 때가 있는데요.

 

이럴 때에 word2vec을 활용하면 구축된 고빈도 키워드의 유사키워드(빈도는 다소 낮아 빈도에 기반해서는 잘 뽑히지 않았던 키워드)를 뽑아서 데이터를 확장하여 구축하는 수단으로 사용하고 있습니다.

 

② 복합어/복합명사 추출

 

word2vec은 중심단어를 기준으로 근처의 단어(word's of co-occurrence)를 뽑는 알고리즘이기 때문에

명사+명사로 이루어진 복합명사를 뽑을 때에 가장 유용하게 사용될 수 있습니다.

 

 

 

3. R에서의 word2vec

 

R에서는 'wordVector'라는 패키지를 통해 word2vec을 간단하게 활용해볼 수 있습니다.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
library(wordVectors)
library(readr)
 
 
# 1. word2vec 모델링 -------------------------------------------------------------------------------------------------------------------------------------------------------------
 
#모델 Training (오래걸림 ㅠㅠ)
#train_word2vec 함수 (threads = cpu를 몇개 쓸 것인가, 많이 쓸 수록 빠르지만 PC사양에 맞추어사용)
model = train_word2vec(train_file = "./word2vec/RecData.txt"
                       , threads=3                  #cpu 개수
                       , vectors=100                #차원의 수
                       , force = T
                       , window = 6                 #앞뒤에 볼 단어 수
                       , output_file = "./word2vec/word2vec_model.bin")        
 
#word2vector model 확인하기
model
 
# 파일로 저장된 word2vec모델 읽어오기
 
# 2.word2vec 전처리 -------------------------------------------------------------------------------------------------------------------------------------------------------------
 
# 한글자 단어 삭제하기
model = model[nchar(rownames(model))>1,]
 
# 불용어 삭제하기
stopWordDic = read_csv("./dictionary/remove.csv")
 
model = model[!(rownames(model) %in% stopWordDic$stopword),]
model
 
# 3. word2vec에서 연관단어 추출 -------------------------------------------------------------------------------------------------------------------------------------------------------------
#연관 키워드 추출하기(가까이 등장한 단어,코사인거리임)
 
result <- nearest_to(model, model[["마케팅"]], 20)
result
 
http://colorscripter.com/info#e" target="_blank" style="color:#4f4f4f; text-decoration:none">Colored by Color Scripter
http://colorscripter.com/info#e" target="_blank" style="text-decoration:none; color:white">cs

 

 

위의 코드를 실행하면 아래와 같은 결과를 보실 수 있습니다.

 

 

 

 

'마케팅'의 유사/연관 키워드는 '전략,영업,프로모션,바이럴,유통채널관리' 등의 순이네요.

분석 대상 데이터에 따라 같은 키워드라도 전혀 다른 결과가 나올 수 있습니다. 참고 부탁드립니다.

 

이상입니다. 감사합니다 : )

 

(*패스트캠퍼스의 'R을 활용한 텍스트마이닝' 수업에서 배운 내용을 활용하였습니다.)

Comments