replace_text.Rd
텍스트 데이터의 전처리 과정 중 패턴 일치되는 문자열에 대해서 다른 문자열로 대체하거나 제거, 혹은 결합한다.
replace_text(
doc,
chunk = round(length(if (tibble::is_tibble(doc)) dplyr::pull(doc) else doc)/mc.cores),
mc.cores = parallel::detectCores(),
verbos = TRUE
)
concat_text(
doc,
chunk = round(length(if (tibble::is_tibble(doc)) dplyr::pull(doc) else doc)/mc.cores),
mc.cores = parallel::detectCores(),
verbos = TRUE
)
split_text(
doc,
chunk = round(length(if (tibble::is_tibble(doc)) dplyr::pull(doc) else doc)/mc.cores),
mc.cores = parallel::detectCores(),
verbos = TRUE
)
remove_text(
doc,
chunk = round(length(if (tibble::is_tibble(doc)) dplyr::pull(doc) else doc)/mc.cores),
mc.cores = parallel::detectCores(),
verbos = TRUE
)
character. 문자열 대체/제거/결합/분리를 수행할 문자열 벡터
integer. 병렬 작업 수행 시 처리 단위인 chunk
integer. 병렬 작업 수행 시 사용할 코어의 개수
logical. 메타의 Rule 당 처리된 건수를 화면에 출력할 지의 여부
character. 문자열 대체/제거/결합이 수행된 문자열 벡터.
# \donttest{
##======================================================
## 문자열 대체
##======================================================
# 문자열 대체 메타 신규 등록
meta_path <- system.file("meta", package = "bitTA")
fname <- glue::glue("{meta_path}/preparation_replace.csv")
set_meta("replace", fname, fileEncoding = "utf8")
# 등록된 문자열 대체 룰 확인하기
get_meta("replace")
#> rule_nm rule_class
#> 1 다중 구두점 구두점 대체
#> 2 남편 유사단어 대체
#> 3 베이비시터 유사단어 대체
#> 4 텔레비전 유사단어 대체
#> 5 CCTV 유사단어 대체
#> 6 할머니 유사단어 대체
#> 7 어머니 유사단어 대체
#> 8 아버지 유사단어 대체
#> 9 아들 유사단어 대체
#> 10 딸 유사단어 대체
#> 11 화이팅 유사단어 대체
#> 12 모유량 유사단어 대체
#> 13 베개 유사단어 대체
#> 14 초산 유사단어 대체
#> 15 급여 유사단어 대체
#> pattern replace use
#> 1 (\\.){2,} \\. TRUE
#> 2 신랑|남편 남편 TRUE
#> 3 베비시터|((육아|아이|아기)[[:space:]]*(도우미|돌보미)) 베이비시터 TRUE
#> 4 TV|테레비|티브이|텔레비젼|티비 텔레비전 TRUE
#> 5 (CC|cc|씨씨)[[:space:]]?(텔레비전|티비|tv|TV) CCTV TRUE
#> 6 할(미|머님|무니|매) 할머니 TRUE
#> 7 엄마|어머님|엄니|어무니 어머니 TRUE
#> 8 아버님|아빠|아부지 아버지 TRUE
#> 9 아들(래미|아이|애|내미|램) 아들 TRUE
#> 10 딸(래미|아이|애|내미|램) 딸 TRUE
#> 11 파이팅|홧팅|퐈이팅 화이팅 TRUE
#> 12 모유[[:space:]]?[양|량] 모유량 TRUE
#> 13 [베배][게개] 베개 TRUE
#> 14 (첫|처음)[[:space:]]*출산 초산 TRUE
#> 15 월급|봉급 급여 TRUE
doc_content <- buzz[, "CONTENT"]
# 문자열 대체, verbos = FALSE, chunk = 200
doc_content_after <- replace_text(doc_content, verbos = FALSE, chunk = 200)
# 문자열 대체, chunk = 500, mc.cores = 8
doc_content_after <- replace_text(doc_content, chunk = 500, mc.cores = 8)
#> ── Replace: [구두점 대체] - 다중 구두점 ───────────────────────────────── 2건 ──
#> ── Replace: [유사단어 대체] - CCTV ────────────────────────────────────── 3건 ──
#> ── Replace: [유사단어 대체] - 급여 ────────────────────────────────────── 0건 ──
#> ── Replace: [유사단어 대체] - 남편 ──────────────────────────────────── 323건 ──
#> ── Replace: [유사단어 대체] - 딸 ──────────────────────────────────────── 0건 ──
#> ── Replace: [유사단어 대체] - 모유량 ──────────────────────────────────── 1건 ──
#> ── Replace: [유사단어 대체] - 베개 ────────────────────────────────────── 5건 ──
#> ── Replace: [유사단어 대체] - 베이비시터 ──────────────────────────────── 0건 ──
#> ── Replace: [유사단어 대체] - 아들 ────────────────────────────────────── 0건 ──
#> ── Replace: [유사단어 대체] - 아버지 ──────────────────────────────────── 0건 ──
#> ── Replace: [유사단어 대체] - 어머니 ──────────────────────────────────── 0건 ──
#> ── Replace: [유사단어 대체] - 초산 ────────────────────────────────────── 0건 ──
#> ── Replace: [유사단어 대체] - 텔레비전 ────────────────────────────────── 3건 ──
#> ── Replace: [유사단어 대체] - 할머니 ──────────────────────────────────── 0건 ──
#> ── Replace: [유사단어 대체] - 화이팅 ──────────────────────────────────── 0건 ──
# }
# \donttest{
##======================================================
## 문자열 결합
##======================================================
# 문자열 결합 메타 신규 등록
meta_path <- system.file("meta", package = "bitTA")
fname <- glue::glue("{meta_path}/preparation_concat.csv")
set_meta("concat", fname, fileEncoding = "utf8")
# 등록된 문자열 결합 룰 확인하기
get_meta("concat")
#> rule_nm pattern replace use
#> 1 (하원도우미) 붙여쓰기 하원[[:space:]]+도우미 하원도우미 TRUE
#> 2 (가사도우미) 붙여쓰기 가사[[:space:]]+도우미 가사도우미 TRUE
#> 3 (산후도우미) 붙여쓰기 산후[[:space:]]+도우미 산후도우미 TRUE
#> 4 (친정어머니) 붙여쓰기 친정[[:space:]]+어머니 친정어머니 TRUE
#> 5 (베이비시터) 붙여쓰기 베이비[[:space:]]+시터 베이비시터 TRUE
#> 6 (연말정산) 붙여쓰기 연말[[:space:]]+정산 연말정산 TRUE
#> 7 (출산휴가) 붙여쓰기 출산[[:space:]]+휴가 출산휴가 TRUE
#> 8 (시어머니) 붙여쓰기 시[[:space:]]+어머니 시어머니 TRUE
#> 9 (육아휴직) 붙여쓰기 육아[[:space:]]+휴직 육아휴직 TRUE
doc_content <- buzz[, "CONTENT"]
## verbos = FALSE, chunk = 200
doc_content_after <- concat_text(doc_content, verbos = FALSE, chunk = 200)
## chunk = 500, mc.cores = 8
doc_content_after <- concat_text(doc_content, chunk = 500, mc.cores = 8)
#> ── Concat: (가사도우미) 붙여쓰기 ─────────────────────────────────────── 22건 ──
#> ── Concat: (베이비시터) 붙여쓰기 ──────────────────────────────────────── 1건 ──
#> ── Concat: (산후도우미) 붙여쓰기 ──────────────────────────────────────── 1건 ──
#> ── Concat: (시어머니) 붙여쓰기 ────────────────────────────────────────── 1건 ──
#> ── Concat: (연말정산) 붙여쓰기 ────────────────────────────────────────── 1건 ──
#> ── Concat: (육아휴직) 붙여쓰기 ────────────────────────────────────────── 2건 ──
#> ── Concat: (출산휴가) 붙여쓰기 ────────────────────────────────────────── 1건 ──
#> ── Concat: (친정어머니) 붙여쓰기 ──────────────────────────────────────── 5건 ──
#> ── Concat: (하원도우미) 붙여쓰기 ──────────────────────────────────────── 1건 ──
# }
# \donttest{
##======================================================
## 문자열 분리
##======================================================
# 문자열 분리 메타 신규 등록
meta_path <- system.file("meta", package = "bitTA")
fname <- glue::glue("{meta_path}/preparation_split.csv")
set_meta("split", fname, fileEncoding = "utf8")
# 등록된 문자열 분리 룰 확인하기
get_meta("split")
#> rule_nm
#> 1 (도우미) 유형 띄어쓰기
#> pattern replace use
#> 1 (하원|등하원|등원|입주|교포|가사|산후|보육|산모)(도우미) \\1 \\2 TRUE
doc_content <- buzz[, "CONTENT"]
# 문자열 분리, verbos = FALSE, chunk = 200
doc_content_after <- split_text(doc_content, verbos = FALSE, chunk = 200)
# 문자열 분리, chunk = 500, mc.cores = 8
doc_content_after <- split_text(doc_content, chunk = 500, mc.cores = 8)
#> ── Split: (도우미) 유형 띄어쓰기 ──────────────────────────────────────── 6건 ──
# }
# \donttest{
##======================================================
## 문자열 제거
##======================================================
# 문자열 제거 메타 신규 등록
meta_path <- system.file("meta", package = "bitTA")
fname <- glue::glue("{meta_path}/preparation_remove.csv")
set_meta("remove", fname, fileEncoding = "utf8")
#> Warning: incomplete final line found by readTableHeader on '/private/var/folders/2g/sk4df3sn3bdbxh2rb9kdt_5c0000gn/T/Rtmp6Wbem3/temp_libpath11e541d401a05/bitTA/meta/preparation_remove.csv'
# 등록된 문자열 제거 룰 확인하기
get_meta("remove")
#> rule_nm pattern use
#> 1 카페 안내문구 1 게시판[[:space:]]*이용전[[:print:]]*이동됩니다. TRUE
#> 2 카페 안내문구 2 카페이용 전[[:print:]]*참고\\) TRUE
#> 3 카페 안내문구 3 게시글 작성[[:print:]]*35756864 TRUE
#> 4 카페 안내문구 4 흥부야[[:print:]]*기타 하고 싶은 말 TRUE
#> 5 URL 문구 (http|www)([a-zA-Z0-9\\>\\/\\.\\:\\=\\&\\_])* TRUE
doc_content <- buzz[, "CONTENT"]
## verbos = FALSE, chunk = 800
doc_content_after <- remove_text(doc_content, verbos = FALSE, chunk = 800)
## chunk = 500, mc.cores = 8
doc_content_after <- remove_text(doc_content, chunk = 500, mc.cores = 8)
#> ── Removes: URL 문구 ─────────────────────────────────────────────────── 40건 ──
#> ── Removes: 카페 안내문구 1 ──────────────────────────────────────────── 33건 ──
#> ── Removes: 카페 안내문구 2 ───────────────────────────────────────────── 9건 ──
#> ── Removes: 카페 안내문구 3 ──────────────────────────────────────────── 47건 ──
#> ── Removes: 카페 안내문구 4 ──────────────────────────────────────────── 16건 ──
# }