Chapter 6 정제2: 형태소

6.0.1 MeCab

6.1 RccpMeCab

형태소 분석기 설치하기

한글을 분석하기 위해서는 형태소 분석기가 필요하다. 문장 ㅐ 단어 등과 같은 요소의 품사(POS: Part-Of-Speech) 등의 속성을 파악하기 위해서다. 꼬꼬마, 코모란, 한나눔 등 다양한 형태소 분석기가 있는데, 여기서는 MeCab을 이용한다. Mecab이 설치가 간편하고 실행속도도 빠르기 때문이다.

MeCab을 R에서 쓰기 위해서는 김준혁님이 개발한 RccpMeCab패키지가 필요하다.

install.packages('RccpMeCab')
library(RcppMeCab)
test <- "한글 테스트 입니다."
pos(test)
## $`<c7><U+0471><db> <c5><U+05FD><U+00BA><U+01AE> <c0><U+0534><U+03F4><d9>.`
## [1] "<c7><d1>/SL" "<U+00B1><db> /SY" "<c5><d7>/SL" "<U+00BD><U+00BA>/SY" "<U+01AE>/SL"
## [6] "<c0><U+0534>/SY" "<U+03F4>/SL" "<d9>./SY"

한글이 깨지는 경우가 있는데, 이는 한글인코딩 방식이 맞지 않기 때문이다. 윈도는 EUC-KR방식을 확장한 CP949방식을 사용하기 때문에 UTF-8방식과 호환이 안된다. 이 경우 enc2utf8함수를 이용해 한글인코딩 방식을 UTF-8으로 변경한다.

library(tidyverse)
## -- Attaching packages --------------------------------------- tidyverse 1.3.0 --
## √ ggplot2 3.3.2     √ purrr   0.3.4
## √ tibble  3.0.4     √ dplyr   1.0.2
## √ tidyr   1.1.2     √ stringr 1.4.0
## √ readr   1.4.0     √ forcats 0.5.0
## -- Conflicts ------------------------------------------ tidyverse_conflicts() --
## x dplyr::filter() masks stats::filter()
## x dplyr::lag()    masks stats::lag()
enc2utf8(test) %>% pos
## $`한글 테스트 입니다.`
## [1] "한글/NNG"      "테스트/NNG"    "입니다/VCP+EF" "./SF"

이제 텍스트마이닝할 준비가 됐다.

참고: UTF-8을 CP949로 인코딩을 바꾸고 싶으면 iconv함수를 이용한다.

iconv(x, from = "UTF-8", to = "CP949")`

x는 문자벡터. 자세한 사용법은 ?iconv 참조.

이상의 오감도를 분석해보자.

library(RcppMeCab)