Mecab 형태소 분석기 기반 형태소분석/품사 태깅을 통한 토큰화

morpho_mecab(
  x,
  type = c("noun", "noun2", "verb", "adj", "morpheme"),
  indiv = TRUE,
  user_dic = NULL,
  as_list = FALSE
)

Arguments

x

character. 형태소 분석에 사용할 document.

type

character. 형태소 분석의 결과 유형.모든 품사, 명사, 동사 및 형용사와 같은 토큰화 결과 유형을 지정. "morpheme", "noun", "noun2", "verb", "adj"중에서 선택. 기본값은 "noun"로 일반명사만 추출함.

indiv

logical. 복수개의 문서일 때 개별 문서를 리스트로 반환할 지를 선택함. TRUE이면 개별 리스트로 반환하고, FALSE이면 하나의 문자 벡터로 반환함. 기본값은 TRUE

user_dic

mecab-ko 형태소 분석기의 사용자 정의 사전 파일. 기본값은 NULL로 사용자 사전파일을 지정하지 않음. 시스템 사전인 "/usr/local/lib/mecab/dic/mecab-ko-dic"(Linux, Mac)를 보완하여 사용됨. 사용자 사전 파일은 mecab-dict-index 명령어로 생성되며, 확장자가 "dic"임.

as_list

logical. 문서의 개수가 한 개일 때, 결과를 리스트로 반환할지의 여부를 선택함. TRUE일 경우에는 리스트 객체로, FALSE일 경우에는 문자 벡터로 결과를 반환함 tidytext 패키지와 함께 사용할 경우에는 TRUE를 사용하는 것이 좋음. 문서 개수가 1개인 경우, 즉 행(관측치)의 개수가 1개인 경우에 데이터프레임 연산에서의 오류를 방지하기 위한 목적의 인수임

Value

Mecab 형태소 분석기 결과 구조의 character 벡터 혹은 character 벡터를 원소로 갖는 list 객체.

Details

type 인수에 따라 토큰화되는 품사의 종류는 다음과 같다.:

  • "morpheme" : 모든 품사 토큰화

  • "noun" : 일반명사(NNG) 토큰화

  • "noun2" : 모든 명사 토큰화

  • "verb" : 동사 토큰화

  • "adj" : 형용사 토큰화

Mecab 형태소 분석기의 시스템 사전의 경로는 "/usr/local/lib/mecab/dic/mecab-ko-dic"이며, NIADic이 포팅되어 들어 있음. 그러나, "/usr/local/lib/mecab/dic/mecab-ko-dic2"에는 NIADic이 포함되어 있지 않음. 이것은 bitTA 패키지에서는 참조하지 않음.

Examples

# \donttest{
## Mecab 형태소 분석
morpho_mecab("아버지가 방에 들어가신다.")
#>      NNG      NNG 
#> "아버지"     "방" 
morpho_mecab("아버지가 방에 들어가신다.", type = "morpheme")
#>      NNG      JKS      NNG      JKB       VV    EP+EF       SF 
#> "아버지"     "가"     "방"     "에" "들어가"   "신다"      "." 
morpho_mecab("아버지가 방에 들어가신다.", type = "verb")
#>       VV 
#> "들어가" 

dic_path <- system.file("dic", package = "bitTA")
dic_file <- glue::glue("{dic_path}/buzz_dic.dic")

str <- "신혼부부나 주말부부는 놀이공원 자유이용권을 즐겨 구매합니다."
morpho_mecab(str)
#>        NNG        NNG        NNG        NNG        NNG        NNG        NNG 
#>     "신혼"     "부부"     "주말"     "부부" "놀이공원"     "자유"     "이용" 
#>        NNG 
#>     "구매" 
morpho_mecab(str, user_dic = dic_file)
#>          NNG          NNG          NNG          NNG          NNG 
#>   "신혼부부"   "주말부부"   "놀이공원" "자유이용권"       "구매" 

morpho_mecab(c("무궁화꽃이 피었습니다.", "나는 어제 올갱이국밥을 먹었다."))
#> [[1]]
#>        NNG 
#> "무궁화꽃" 
#> 
#> [[2]]
#>      NNG      NNG 
#> "올갱이"   "국밥" 
#> 
morpho_mecab(c("무궁화꽃이 피었습니다.", "나는 어제 올갱이국밥을 먹었다."), indiv = FALSE)
#>        NNG        NNG        NNG 
#> "무궁화꽃"   "올갱이"     "국밥" 

# Using morpho_mecab with tidytext package
library(dplyr)
#> 
#> Attaching package: ‘dplyr’
#> The following objects are masked from ‘package:stats’:
#> 
#>     filter, lag
#> The following objects are masked from ‘package:base’:
#> 
#>     intersect, setdiff, setequal, union

nho_noun_indiv <- president_speech %>%
  filter(president %in% "노무현") %>%
  filter(stringr::str_detect(category, "^외교")) %>%
  tidytext::unnest_tokens(
    out = "speech_noun",
    input = "doc",
    token = morpho_mecab
  )
  
 nho_noun_indiv 
#> # A tibble: 47,720 × 7
#>    id       president category  type  title                        date  speec…¹
#>    <chr>    <chr>     <chr>     <chr> <chr>                        <chr> <chr>  
#>  1 DOC_0001 노무현    외교-통상 치사  "2005 한일 우정의 해 개막식… 2005… 우정   
#>  2 DOC_0001 노무현    외교-통상 치사  "2005 한일 우정의 해 개막식… 2005… 해     
#>  3 DOC_0001 노무현    외교-통상 치사  "2005 한일 우정의 해 개막식… 2005… 개막식 
#>  4 DOC_0001 노무현    외교-통상 치사  "2005 한일 우정의 해 개막식… 2005… 축하   
#>  5 DOC_0001 노무현    외교-통상 치사  "2005 한일 우정의 해 개막식… 2005… 행사   
#>  6 DOC_0001 노무현    외교-통상 치사  "2005 한일 우정의 해 개막식… 2005… 축하   
#>  7 DOC_0001 노무현    외교-통상 치사  "2005 한일 우정의 해 개막식… 2005… 참석   
#>  8 DOC_0001 노무현    외교-통상 치사  "2005 한일 우정의 해 개막식… 2005… 모두   
#>  9 DOC_0001 노무현    외교-통상 치사  "2005 한일 우정의 해 개막식… 2005… 환영   
#> 10 DOC_0001 노무현    외교-통상 치사  "2005 한일 우정의 해 개막식… 2005… 감사   
#> # … with 47,710 more rows, and abbreviated variable name ¹​speech_noun
# }