brunch

You can make anything
by writing

C.S.Lewis

by 이영민 Jul 18. 2016

공간 감성어 후보군 추출

관광지를 표현하는 형용사와 동사 추출

관광지 관련 '공간 감성어 사전(spatial sentiment lexicon)'을 구축하기 위한 연구를 하고 있다. 연구는 크게 1. 데이터 수집, 2. 형태소 분석, 3. 감성 분석, 이렇게 세 부분으로 나눌 수 있으며, 세부적인 흐름은 아래 그림과 같다.


공간 감성어 사전 구축 프로세스



1. 데이터 수집


데이터를 수집하기 위하여 한국관광공사에서 제공하는 관광지 데이터를 이용하였다. 한국관광공사에서는 관광지를 7개의 카테고리 - 자연, 체험, 문화시설, 레포츠, 역사, 테마, 쇼핑 - 로 나누어 제공하고 있는데, 조회수가 높은 것 위주로 10~19개의 POI(point of interest, 관심지점)를 가져왔다. 결과적으로 총 106개의 POI 데이터를 수집하였으며, 그 목록은 아래와 같다.


한국관광공사에서 제공하는 관광지 데이터 중 수집한 것


위에서 수집한 POI에 대한 Place ID를 알아낸 후 구글맵 API를 통해 Place ID별 장소 리뷰를 수집하였다. 그런데 구글의 API 정책상 한 번에 콜할 수 있는 Place ID의 개수는 최대 10개로 제한되며, 하나의 Place ID 당 가져올 수 있는 리뷰의 개수는 최대 5개로 제한된다는 한계가 있었다. 결과적으로 Place ID 106개 중에 63개에 대한 리뷰글을 수집할 수 있었으며, 수집한 리뷰의 개수는 총 235개이다.



2. 형태소 분석


위에서 수집한 장소 리뷰에 대해 R을 이용하여 형태소 분석을 실시하였다. 이때 사람들이 주로 감성(감정)을 드러내는 품사인 형용사(PA) - 좋다, 아름답다, 조용하다 - 와 행위를 주로 묘사하지만 감성을 드러내기도 하는 동사(PV) - 느끼다, 신나다, 즐기다 - 를 모두 감성 단어 품사로 설정하였다. R을 이용한 형태소 분석 과정은 아래와 같다. 


1) 폴더 설정 및 데이터 불러오기

> setwd('C:/YM/02. Project/2016_여대학(원)생 공학연구팀제 사업/내연구')
> useSejongDic()
> d = scan(file = 'seoultour.txt', what='str', sep='\t', encoding='UTF-8')
> d <- unlist(d)


2) 'SimplePos22' 태그 부착하기

> d_01 <- NULL
> for (i in seq(length(d))){
      if (nchar(d[i]) > 1){ 
      d_01 <- c(d_01, SimplePos22(d[i]))
      }
   }

'SimplePos22'가 무엇인지 궁금하다면 아래 글을 참고하면 좋겠다.

https://brunch.co.kr/@mapthecity/9


3) 문자열 나누기

> d_02 <- unlist(d_01)
> d_02 <- unlist(strsplit(d_02, "\\+")) # + 기준으로 문자열 나누기
> d_02 <- unlist(strsplit(d_02, " ")) # blank 기준으로 문자열 나누기


4) 특정 품사만을 추출하기

> NC <- unlist(d_02[grep("NC$", d_02)]) # 보통명사(NC)만 추출
> NQ <- unlist(d_02[grep("NQ$", d_02)]) # 고유명사(NQ)만 추출
> PV <- unlist(d_02[grep("PV$", d_02)]) # 동사(PV)만 추출
> PX <- unlist(d_02[grep("PX$", d_02)]) # 보조용언(PX)만 추출
> PA <- unlist(d_02[grep("PA$", d_02)]) # 형용사(PA)만 추출
> MA <- unlist(d_02[grep("MV$", d_02)]) # 부사(MA)만 추출


5) 품사 부분 삭제 하기

> NC_k <- gsub("/NC", "", NC)
> NQ_k <- gsub("/NQ", "", NQ)
> PV_k <- gsub("/PV", "", PV)
> PX_k <- gsub("/PX", "", PX)
> PA_k <- gsub("/PA", "", PA)
> MA_k <- gsub("/MA", "", MA)


6) 동사, 보조용언, 형용사에 '다' 붙여주기

> PV_kk <- gsub("/PV", "다", PV)
> PX_kk <- gsub("/PX", "다", PX)
> PA_kk <- gsub("/PA", "다", PA)



3. 감성 분석(을 위한 감성 단어 후보군 확정)


감성 분석은 오픈한글 연구를 레퍼로 삼아, 집단지성, 즉 설문을 통해 긍정, 부정, 중립에 대한 퍼센테이지를 계산하려고 한다. 설문은 구글 설문지를 이용하였으며, 현재 설문이 진행 중이다(설문에 많이 참여해 주세요). 이 설문이 끝난 후에 본 연구를 마무리할 수 있겠다. 


 https://drive.google.com/open?id=1oUOrqQG9AJCRUpcuTASr8f3nurNbI6H_faReNVYmaNk



(제목 배경 사진 출처)

매거진의 이전글 KoNLP를 이용한 한국어 형태소 분석
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari