Chapter 6 정제2: 형태소
6.0.1 MeCab
6.1 RccpMeCab
형태소 분석기 설치하기
한글을 분석하기 위해서는 형태소 분석기가 필요하다. 문장 ㅐ 단어 등과 같은 요소의 품사(POS: Part-Of-Speech) 등의 속성을 파악하기 위해서다. 꼬꼬마, 코모란, 한나눔 등 다양한 형태소 분석기가 있는데, 여기서는 MeCab을 이용한다. Mecab이 설치가 간편하고 실행속도도 빠르기 때문이다.
MeCab을 R에서 쓰기 위해서는 김준혁님이 개발한 RccpMeCab
패키지가 필요하다.
- RcppMeCab https://github.com/junhewk/RcppMeCab
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)