filter_text.Rd텍스트 데이터의 전처리 과정 중 패턴 일치되는 문자열이 있는 데이터를 취하거나 제거한다.
filter_text(
doc,
as_logical = TRUE,
chunk = round(length(if (tibble::is_tibble(doc)) dplyr::pull(doc) else doc)/mc.cores),
mc.cores = parallel::detectCores(),
verbos = TRUE
)character. 문자열 필터링을 수행할 문자열 벡터
logical. 반환값을 논리벡터로 반환할지의 여부. 기본값 TRUE이면 추출한 대상을 의미하는 논리값을 반환하고, FALSE이면 대상을 추출한 문자열 벡터를 반환. tidytext 패키지를 사용할 경우에는 기본값인 TRUE를 사용하면 됨
integer. 병렬 작업 수행 시 처리 단위인 chunk
integer. 병렬 작업 수행 시 사용할 코어의 개수
logical. 메타의 Rule 당 처리된 건수를 화면에 출력할 지의 여부
character. 문자열 필터링이 수행된 문자열 벡터.
# \donttest{
##======================================================
## 문자열 매치 데이터 필터링
##======================================================
# 매치 데이터 필터링 메타 신규 등록
meta_path <- system.file("meta", package = "bitTA")
fname <- glue::glue("{meta_path}/preparation_filter.csv")
set_meta("filter", fname, fileEncoding = "utf8")
# 등록된 필터링 룰 확인하기
get_meta("filter")
#> rule_nm
#> 1 신문기사
#> 2 제품홍보
#> 3 설문조사
#> 4 출처
#> 5 이벤트
#> 6 방송
#> pattern
#> 1 (팍스넷|파이낸셜|연합|(PT)|오마이|경제)[[:space:]]*뉴스
#> 2 ((입법|정치|교육)[[:space:]]*플랫폼)|맘마미아[[:space:]]*가계부[[:print:]]*인증샷|Playtex
#> 3 좌담회|구글설문|채용대행업체
#> 4 출처[[:space:]]*:|문의처보건복지콜센터
#> 5 (증정|기념)이벤트|허니스크린|이벤트를[[:space:]]*진행
#> 6 제작진|기억저장소|추모카페|블랙홀|푸드스튜디오|연금정보넷
#> accept use
#> 1 FALSE TRUE
#> 2 FALSE TRUE
#> 3 FALSE TRUE
#> 4 FALSE TRUE
#> 5 FALSE TRUE
#> 6 FALSE TRUE
doc_content <- buzz[, "CONTENT"]
# 필터링, verbos = FALSE, chunk = 200
doc_after_logical <- filter_text(doc_content, verbos = FALSE, chunk = 200)
# 필터링, as_logical = FALSE, mc.cores = 8,
doc_after_character <- filter_text(doc_content, as_logical = FALSE, mc.cores = 8)
#> ── rejects: 방송 ──────────────────────────────────────────────────────── 3건 ──
#> ── rejects: 설문조사 ──────────────────────────────────────────────────── 1건 ──
#> ── rejects: 신문기사 ──────────────────────────────────────────────────── 1건 ──
#> ── rejects: 이벤트 ────────────────────────────────────────────────────── 1건 ──
#> ── rejects: 제품홍보 ──────────────────────────────────────────────────── 2건 ──
#> ── rejects: 출처 ──────────────────────────────────────────────────────── 2건 ──
#> ── Missing Check: Removing NA ─────────────────────────────────────────── 5건 ──
# 필터링 전/후 비교
NROW(doc_content)
#> [1] 1000
sum(doc_after_logical)
#> [1] 985
NROW(doc_after_character)
#> [1] 985
# tidyverse(혹은 tidytext)와의 협업
library(dplyr)
buzz %>%
filter(filter_text(CONTENT, verbos = FALSE)) %>%
select(KEYWORD, SRC, CONTENT)
#> # A tibble: 985 × 3
#> KEYWORD SRC CONTENT
#> <chr> <chr> <chr>
#> 1 맞벌이 17,18년 베이비맘 "지금 둘째 임신중인 어머니예요 첫째는 16년 1월생 둘…
#> 2 맞벌이 20대 수다방 "저희 부부는 맞벌이인데요 남편 회사 사람들도 거의 …
#> 3 맞벌이 20대 수다방 "신랑지출 제지출 구분해서 따로적으시나요 제가쓴돈은…
#> 4 맞벌이 20대 수다방 "너무 고민이 되서 하소연 할때 없어서 여기서 하소연 …
#> 5 맞벌이 20대 수다방 "\"이제 벌써 결혼 1년차 가까이 되어가는 동갑내기신…
#> 6 맞벌이 20대 수다방 "자가는 아니고 신랑 직장때문에 집 팔고 세들어 살고 …
#> 7 맞벌이 20대 수다방 "계획했던 임신이 아니라서 급하게 맞벌이 (주말부부)…
#> 8 맞벌이 20대 수다방 "못가지니까 기분이 안좋아요 다른것도아니고 여유가 …
#> 9 맞벌이 20대 수다방 "남편이랑 저랑 동갑에 둘 다 맞벌이에요. 저는 현재 …
#> 10 맞벌이 20대 수다방 "요즘 퇴근하고 남편이 데리러 오는데요 살빼려고 하는…
#> # … with 975 more rows
# }