텍스트 처리

  1. HTML, URL, etc..
  2. 토큰화 (띄어쓰기, 구두점 등)
  3. 불용어 제거
  4. 표준화 (stemming, lemmatization)
  5. POS tagging (형태소 분석), Named Entity Recognition (NER)
  6. Zipf’s law, TF-IDF

빅카인즈 데이터 전처리 예시

데이터 프레임 구조화

수집한 뉴스기사를 분석을 위한 데이터 프레임으로 불러온다.

library(readxl)
cv <- read_excel("bigkinds_corona_vaccine.xlsx", sheet = 1)
cv
## # A tibble: 2,442 x 11
##    DATE   COMPANY BYLINE HEADLINE PERSON PLACE ORG   KEYWORD FEATURE TEXT  URL  
##    <chr>  <chr>   <chr>  <chr>    <chr>  <chr> <chr> <chr>   <chr>   <chr> <chr>
##  1 20210~ 조선일보~ 신정훈 기~ "코로나 백신~ <NA>   충북,충~ 아스트라~ 코로나,백신~ 종사자,충북~ "충북에~ http~
##  2 20210~ 중앙일보~ 서유진(s~ "임신중 백신~ 러드닉,채~ 이스라엘~ WPBF~ 임신,백신,~ 미국,코로나~ "미국에~ http~
##  3 20210~ 조선일보~ 김승현 기~ "코로나 백신~ 트럼프,빌~ 미국  폭스뉴스~ 코로나,백신~ 코로나,미국~ "도널드~ http~
##  4 20210~ 영남일보~ 김기태 "포항가속기硏~ 강흥식 독일,미~ 포항가속~ 포항가속기,~ 가속기,포항~ "인류 ~ http~
##  5 20210~ 세계일보~ 김현주 "英 전문가 ~ 앨버트,피~ 최고경영~ HBO,~ 코로나,전문~ 코로나19,~ "미국 ~ http~
##  6 20210~ 국민일보~ 권남영 "임신 중 코~ <NA>   플로리다~ 모더나~ 임신,코로나~ 미국,코로나~ "미국에~ http~
##  7 20210~ 중앙일보~ 나운채(n~ "이란도 코로~ 파크리자데~ 소도,중~ AP통신~ 이란도,코로~ 코로나19,~ "이란이~ http~
##  8 20210~ 충청투데이~ 조선교 기~ "백신 이상반~ <NA>   대전을지~ 대전,아~ 백신,반응,~ 의료진,코로~ "[충청~ http~
##  9 20210~ 강원도민일보~ 양희문 "접종 후 두~ 이창률 강원도~ 춘천성심~ 접종,두통,~ 이상반응,관~ "\"경~ www.~
## 10 20210~ 국제신문~ 방종근 기~ "울산 첫 코~ <NA>   울산,중~ 울산,예~ 울산,개소,~ 동천체육관,~ "울산에~ http~
## # ... with 2,432 more rows
  1. 데이터 정제 고려사항
  1. 분석 대상 텍스트 선정
  2. 중복 기사 제거: 행 단위
  3. 날짜 순 정렬
  4. 불필요한 변인 정리: 열 단위

데이터 정제를 위한 tidyverse 패키지 불러오기

데이터 정제

지금부터 tibble이라는 데이터 프레임의 형식으로 이루어진 뉴스기사 데이터를 텍스트 분석을 위한 전처리 방식에 대해서 알아보도록 하겠습니다. 이를 위해 필요한 함수를 제공하는 tidyverse 패키지에 대해서 살펴보도록 하겠습니다.

우선, tidyverse패키지의 함수들을 이용해서 트위터 데이터를 처리하는 방법을 알아보도록 하겠습니다. 우선, tidyverse 패키지를 R세션에 설치해 봅시다.

#install.packages(tidyverse")
library(tidyverse)
## -- Attaching packages --------------------------------------- tidyverse 1.3.0 --
## √ ggplot2 3.3.3     √ purrr   0.3.4
## √ tibble  3.1.0     √ dplyr   1.0.4
## √ tidyr   1.1.2     √ stringr 1.4.0
## √ readr   1.3.1     √ forcats 0.5.1
## -- Conflicts ------------------------------------------ tidyverse_conflicts() --
## x dplyr::filter() masks stats::filter()
## x dplyr::lag()    masks stats::lag()

첫번째로 살펴 볼 dplyr 패키지의 함수는 select() 입니다. 이 함수는 데이터의 변수를 선택해서 해당 변수만 남기고 나머지 변수들은 제거하는 기능을 합니다. 예를 들어서, 우리의 데이터 객체인 cv는 11개의 변수로 구성이 되어있죠. 앞서 말했듯, 이 변수들은 우리가 모은 기사들의 성격을 규정하는 역할을 합니다. 예를 들어서, 첫번째 변수의 이름을 DATE이고 이 변수에는 각 기사의 날짜가 문자 벡터 형태로 포함되어 있습니다.

# 데이터의 변수 선택은: 데이터 객체 이름에 Dollar 사인 후 변수 이름 입력
class(cv$DATE) # 문자 벡터
## [1] "character"
cv$DATE[1:10] # 첫번째 기사부터 열번째 기사의 날짜 정보보 인덱싱
##  [1] "20210317" "20210317" "20210317" "20210317" "20210317" "20210317"
##  [7] "20210317" "20210317" "20210317" "20210317"

cv 데이터는 11개의 변수로 구성되어 있고, 여기에서 우리가 필요한 변수 중 하나는 HEADLINE입니다. 이 변수에는 각 기사의 제목, 즉 우리가 분석할 어휘들로 구성된 뉴스 헤드라인이 문자열 벡터 형태로 포함되어 있습니다. 또, 언론사 정보 “COMPANY”와, 날짜 “DATE”, 리드(기사의 첫 200자) “TEXT”, 키워드 “KEYWORD” 등이 우리가 필요한 기사 정보들이라 할 수 있겠네요.

이 변수들만 남기고 나머지 변수들을 제거하기 위해서 필요한 함수가 바로 select() 입니다.

select(): 데이터의 변수(들)을 선택 및 처리

dim(cv)
## [1] 2442   11
class(cv$HEADLINE) #문자(열) 벡터
## [1] "character"
cv$HEADLINE[1:10] # 첫번째 기사부터 열번째 기사의 문자열 내용 인덱싱
##  [1] "코로나 백신 접종 요양병원 종사자 ‘확진’ 충북 첫 사례"                           
##  [2] "임신중 백신 맞은 엄마 아기는 코로나 항체 갖고 태어났다"                           
##  [3] "코로나 백신 독려 광고 빠졌던 트럼프, 돌연 “백신 맞으라” 당부"                   
##  [4] "포항가속기\u784f, 인류 사상 최고 밝은 빛 구현 \"코로나 백신 개발 우선 제공\""     
##  [5] "\u82f1 전문가 \"코로나 변이 바이러스 사라지지 않아 백신 평생 맞아야 할지도\" 우려"
##  [6] "임신 중 코로나 백신 맞은 엄마, ‘항체 보유’ 아기 출산"                           
##  [7] "이란도 코로나 백신 공개 암살된 핵 과학자 이름 붙였다"                             
##  [8] "백신 이상반응에도 다시 코로나 최전선으로"                                         
##  [9] "접종 후 두통 발열 몸살 코로나 백신공포증 확산"                                    
## [10] "울산 첫 코로나 백신 접종센터 동천체육관 개소"
cv %>% select(DATE, COMPANY, HEADLINE, TEXT, KEYWORD) # 데이터 처리 과정을 연쇄적으로 이어주는 파이프(pipe) 연산자; cv에서 다음의 변수들만 남기고 나머지는 제거
## # A tibble: 2,442 x 5
##    DATE   COMPANY  HEADLINE              TEXT               KEYWORD             
##    <chr>  <chr>    <chr>                 <chr>              <chr>               
##  1 20210~ 조선일보 "코로나 백신 접종 요양병원 종사자 ~ "충북에서도 백신 1차 접종자의~ 코로나,백신,접종,요양,병원,종사자~
##  2 20210~ 중앙일보 "임신중 백신 맞은 엄마 아기는 코로~ "미국에서 임신 중 코로나 19~ 임신,백신,엄마,아기,코로나,항체,~
##  3 20210~ 조선일보 "코로나 백신 독려 광고 빠졌던 트럼~ "도널드 트럼프 전 미국 대통령~ 코로나,백신,독려,광고,트럼프,백신~
##  4 20210~ 영남일보 "포항가속기硏, 인류 사상 최고 밝은~ "인류 사상 최고 밝기의 빛이 ~ 포항가속기,최고,인류,사상,코로나,~
##  5 20210~ 세계일보 "英 전문가 \"코로나 변이 바이러스~ "미국 제약사 화이자의 코로나1~ 코로나,전문가,코로나,바이러스,백신~
##  6 20210~ 국민일보 "임신 중 코로나 백신 맞은 엄마, ~ "미국에서 임신 중 코로나19 ~ 임신,코로나,백신,엄마,항체,보유,~
##  7 20210~ 중앙일보 "이란도 코로나 백신 공개 암살된 핵~ "이란이 세 번쨰 자체 개발 신~ 이란도,코로나,백신,공개,암살,이름~
##  8 20210~ 충청투데이~ "백신 이상반응에도 다시 코로나 최전~ "[충청투데이 조선교 기자] #~ 백신,반응,코로나,대전,대학병원,근~
##  9 20210~ 강원도민일보~ "접종 후 두통 발열 몸살 코로나 백~ "\"경미한 이상반응 이틀 내 ~ 접종,두통,발열,몸살,코로나,백신,~
## 10 20210~ 국제신문 "울산 첫 코로나 백신 접종센터 동천~ "울산에서도 코로나19 백신 접~ 울산,개소,코로나,백신,접종,센터,~
## # ... with 2,432 more rows
cv_news <- cv %>% select(DATE, COMPANY, HEADLINE, TEXT, KEYWORD)  # 위 처리 과정을 거친 데이터를 cv_news라는 새로운 객체에 할당
dim(cv_news) # 새로운 데이터 프레임 구조 확인
## [1] 2442    5

filter(): 데이터의 기사(observation)를 선택 및 처리

기사 데이터를 처리하는데 있어, 특정 관측치를 선택할 필요 filter() 함수는 입력된 조건에 부합하는 행들만 남기고 나머지는 지워주는 역할을 합니다. 가령, 어떤 기사의 텍스트에 특정 단어가 포함되어 있는지 여부에 따라 해당 기사만 출력하기 위해 필요한 함수는: str_detect() - 해당 벡터의 값 중 원하는 문자열이 포함되어 있는지 아닌지 판별하는 기능

library(stringr)

cv_news %>% filter(str_detect(HEADLINE, "코로나")) %>% dim()
## [1] 2442    5
cv_news %>% filter(str_detect(HEADLINE, "백신")) %>% dim()
## [1] 2442    5

만약 해당 문자열을 포함하지 않는 기사를 추출하기 위해 필요한 연산자는: !

! 는 논리 연산에서 부정의 뜻을 의미: ~~이 아니다.

cv_news %>% filter(str_detect(HEADLINE, regex("AZ", ignore_case = T))) 
## # A tibble: 14 x 5
##    DATE   COMPANY  HEADLINE              TEXT               KEYWORD             
##    <chr>  <chr>    <chr>                 <chr>              <chr>               
##  1 20210~ 매일신문 "\"文대통령, 코로나 백신 접종 계~ "문재인 대통령이 오는 6월 영~ 대통령,미확정,코로나,백신,접종,계~
##  2 20210~ 강원도민일보~ "청 \"문 대통령도 이달 말 AZ ~ "\"G7 정상회의 일정 감안해~ 대통령,이달,예정,AZ,코로나,백신~
##  3 20210~ 중앙일보 "코로나 걸렸던 우크라 대통령도 AZ~ "볼로디미르 젤렌스키 우크라이나~ 코로나,우크라,대통령,AZ,백신,볼~
##  4 20210~ 문화일보 "코로나 19 백신 첫날 1만8489~ "중앙재난안전대책본부(중대본)는~ 코로나,백신,첫날,AZ,접종,중앙재~
##  5 20210~ 동아일보 "코로나 백신 접종 D-1 군 경찰 ~ "코로나 19 백신 접종을 하루~ 코로나,백신,접종,경찰,호위,호위,~
##  6 20210~ 국민일보 "코로나 병동은 화이자, 일반 병동은~ "서울의 한 코로나19 전담병원~ 코로나,병동,일반,병동,AZ,백신,~
##  7 20210~ 경인일보 "AZ백신 출하 '코로나 사태' 종식~ "'SK바이오사이언스' 위탁 생~ AZ,백신,출하,코로나,사태,뗐다,~
##  8 20210~ 중앙일보 "AZ 코로나 백신 첫 출하...25~ "“국민 안전을 위한 백신 수송~ 백신,AZ,코로나,출하,25일,전국~
##  9 20210~ 세계일보 "AZ 코로나 백신 접종 26일 개시~ "신종 코로나바이러스 감염증(코~ AZ,코로나,백신,접종,개시,집단면~
## 10 20210~ 무등일보 "광주 전남 코로나 백신 1호(AZ)~ "국내 코로나19 백신 첫 접종~ 광주,전남,1호,코로나,백신,AZ,~
## 11 20210~ 문화일보 "국방부 수뇌부 화상회의서 코로나 백~ "서욱 국방장관 화상회의서 “성~ 화상회의,국방부,수뇌부,화상,회의,~
## 12 20210~ 동아일보 "“AZ 26일, 화이자 27일부터”~ "정부가 신종 코로나바이러스 감~ AZ,화이자,정부,코로나,백신,접종~
## 13 20210~ 세계일보 "내주부터 AZ 코로나 백신 접종 시~ "다음주부터 아스트라제네카(AZ~ 내주,시작,AZ,코로나,백신,접종,~
## 14 20210~ 대전일보 "\"AZ 코로나 백신 허가 5일 쯤~ "아스트라제네카(AstraZen~ 5일,결정,AZ,코로나,백신,허가,~
cv_news %>% filter(str_length(HEADLINE)>15) 
## # A tibble: 2,434 x 5
##    DATE   COMPANY  HEADLINE              TEXT               KEYWORD             
##    <chr>  <chr>    <chr>                 <chr>              <chr>               
##  1 20210~ 조선일보 "코로나 백신 접종 요양병원 종사자 ~ "충북에서도 백신 1차 접종자의~ 코로나,백신,접종,요양,병원,종사자~
##  2 20210~ 중앙일보 "임신중 백신 맞은 엄마 아기는 코로~ "미국에서 임신 중 코로나 19~ 임신,백신,엄마,아기,코로나,항체,~
##  3 20210~ 조선일보 "코로나 백신 독려 광고 빠졌던 트럼~ "도널드 트럼프 전 미국 대통령~ 코로나,백신,독려,광고,트럼프,백신~
##  4 20210~ 영남일보 "포항가속기硏, 인류 사상 최고 밝은~ "인류 사상 최고 밝기의 빛이 ~ 포항가속기,최고,인류,사상,코로나,~
##  5 20210~ 세계일보 "英 전문가 \"코로나 변이 바이러스~ "미국 제약사 화이자의 코로나1~ 코로나,전문가,코로나,바이러스,백신~
##  6 20210~ 국민일보 "임신 중 코로나 백신 맞은 엄마, ~ "미국에서 임신 중 코로나19 ~ 임신,코로나,백신,엄마,항체,보유,~
##  7 20210~ 중앙일보 "이란도 코로나 백신 공개 암살된 핵~ "이란이 세 번쨰 자체 개발 신~ 이란도,코로나,백신,공개,암살,이름~
##  8 20210~ 충청투데이~ "백신 이상반응에도 다시 코로나 최전~ "[충청투데이 조선교 기자] #~ 백신,반응,코로나,대전,대학병원,근~
##  9 20210~ 강원도민일보~ "접종 후 두통 발열 몸살 코로나 백~ "\"경미한 이상반응 이틀 내 ~ 접종,두통,발열,몸살,코로나,백신,~
## 10 20210~ 국제신문 "울산 첫 코로나 백신 접종센터 동천~ "울산에서도 코로나19 백신 접~ 울산,개소,코로나,백신,접종,센터,~
## # ... with 2,424 more rows

text 변수에 문자열 벡터로 담겨있는 텍스트 내용이 “코로나”, “우한” 또는 “중국” 문자열 포함하는 조건에 해당하는 행만 남기고 나머지는 제거

dim(cv_news)
## [1] 2442    5
?duplicated
## starting httpd help server ... done
table(duplicated(cv_news$HEADLINE))
## 
## FALSE  TRUE 
##  2425    17
cv_news %>% filter(!duplicated(HEADLINE)) %>% dim()
## [1] 2425    5
cv_news_unique <- cv_news %>% filter(!duplicated(HEADLINE))  
dim(cv_news_unique)
## [1] 2425    5
cv_news_unique$HEADLINE[1:10]
##  [1] "코로나 백신 접종 요양병원 종사자 ‘확진’ 충북 첫 사례"                           
##  [2] "임신중 백신 맞은 엄마 아기는 코로나 항체 갖고 태어났다"                           
##  [3] "코로나 백신 독려 광고 빠졌던 트럼프, 돌연 “백신 맞으라” 당부"                   
##  [4] "포항가속기\u784f, 인류 사상 최고 밝은 빛 구현 \"코로나 백신 개발 우선 제공\""     
##  [5] "\u82f1 전문가 \"코로나 변이 바이러스 사라지지 않아 백신 평생 맞아야 할지도\" 우려"
##  [6] "임신 중 코로나 백신 맞은 엄마, ‘항체 보유’ 아기 출산"                           
##  [7] "이란도 코로나 백신 공개 암살된 핵 과학자 이름 붙였다"                             
##  [8] "백신 이상반응에도 다시 코로나 최전선으로"                                         
##  [9] "접종 후 두통 발열 몸살 코로나 백신공포증 확산"                                    
## [10] "울산 첫 코로나 백신 접종센터 동천체육관 개소"

mutate(): 기존 변수를 이용하여 생성한 새로운 변수를 데이터 열에 추가

cv_news_unique 
## # A tibble: 2,425 x 5
##    DATE   COMPANY  HEADLINE              TEXT               KEYWORD             
##    <chr>  <chr>    <chr>                 <chr>              <chr>               
##  1 20210~ 조선일보 "코로나 백신 접종 요양병원 종사자 ~ "충북에서도 백신 1차 접종자의~ 코로나,백신,접종,요양,병원,종사자~
##  2 20210~ 중앙일보 "임신중 백신 맞은 엄마 아기는 코로~ "미국에서 임신 중 코로나 19~ 임신,백신,엄마,아기,코로나,항체,~
##  3 20210~ 조선일보 "코로나 백신 독려 광고 빠졌던 트럼~ "도널드 트럼프 전 미국 대통령~ 코로나,백신,독려,광고,트럼프,백신~
##  4 20210~ 영남일보 "포항가속기硏, 인류 사상 최고 밝은~ "인류 사상 최고 밝기의 빛이 ~ 포항가속기,최고,인류,사상,코로나,~
##  5 20210~ 세계일보 "英 전문가 \"코로나 변이 바이러스~ "미국 제약사 화이자의 코로나1~ 코로나,전문가,코로나,바이러스,백신~
##  6 20210~ 국민일보 "임신 중 코로나 백신 맞은 엄마, ~ "미국에서 임신 중 코로나19 ~ 임신,코로나,백신,엄마,항체,보유,~
##  7 20210~ 중앙일보 "이란도 코로나 백신 공개 암살된 핵~ "이란이 세 번쨰 자체 개발 신~ 이란도,코로나,백신,공개,암살,이름~
##  8 20210~ 충청투데이~ "백신 이상반응에도 다시 코로나 최전~ "[충청투데이 조선교 기자] #~ 백신,반응,코로나,대전,대학병원,근~
##  9 20210~ 강원도민일보~ "접종 후 두통 발열 몸살 코로나 백~ "\"경미한 이상반응 이틀 내 ~ 접종,두통,발열,몸살,코로나,백신,~
## 10 20210~ 국제신문 "울산 첫 코로나 백신 접종센터 동천~ "울산에서도 코로나19 백신 접~ 울산,개소,코로나,백신,접종,센터,~
## # ... with 2,415 more rows
names(cv_news_unique)
## [1] "DATE"     "COMPANY"  "HEADLINE" "TEXT"     "KEYWORD"
cv_news_unique$DATE[1:10]
##  [1] "20210317" "20210317" "20210317" "20210317" "20210317" "20210317"
##  [7] "20210317" "20210317" "20210317" "20210317"
library(lubridate) # 날짜 정보를 다루기 위한 함수를 제공
## 
## Attaching package: 'lubridate'
## The following objects are masked from 'package:base':
## 
##     date, intersect, setdiff, union
cv_news_unique %>% mutate(date = ymd(DATE))
## # A tibble: 2,425 x 6
##    DATE   COMPANY  HEADLINE           TEXT           KEYWORD          date      
##    <chr>  <chr>    <chr>              <chr>          <chr>            <date>    
##  1 20210~ 조선일보 "코로나 백신 접종 요양병원 종~ "충북에서도 백신 1차 ~ 코로나,백신,접종,요양,병원~ 2021-03-17
##  2 20210~ 중앙일보 "임신중 백신 맞은 엄마 아기는~ "미국에서 임신 중 코로~ 임신,백신,엄마,아기,코로나~ 2021-03-17
##  3 20210~ 조선일보 "코로나 백신 독려 광고 빠졌던~ "도널드 트럼프 전 미국~ 코로나,백신,독려,광고,트럼~ 2021-03-17
##  4 20210~ 영남일보 "포항가속기硏, 인류 사상 최고~ "인류 사상 최고 밝기의~ 포항가속기,최고,인류,사상,~ 2021-03-17
##  5 20210~ 세계일보 "英 전문가 \"코로나 변이 바~ "미국 제약사 화이자의 ~ 코로나,전문가,코로나,바이러~ 2021-03-17
##  6 20210~ 국민일보 "임신 중 코로나 백신 맞은 엄~ "미국에서 임신 중 코로~ 임신,코로나,백신,엄마,항체~ 2021-03-17
##  7 20210~ 중앙일보 "이란도 코로나 백신 공개 암살~ "이란이 세 번쨰 자체 ~ 이란도,코로나,백신,공개,암~ 2021-03-17
##  8 20210~ 충청투데이~ "백신 이상반응에도 다시 코로나~ "[충청투데이 조선교 기~ 백신,반응,코로나,대전,대학~ 2021-03-17
##  9 20210~ 강원도민일보~ "접종 후 두통 발열 몸살 코로~ "\"경미한 이상반응 이~ 접종,두통,발열,몸살,코로나~ 2021-03-17
## 10 20210~ 국제신문 "울산 첫 코로나 백신 접종센터~ "울산에서도 코로나19 ~ 울산,개소,코로나,백신,접종~ 2021-03-17
## # ... with 2,415 more rows
# ymd 함수의 기능은?
cv_news_date <- cv_news_unique %>% mutate(date = ymd(DATE))

library(ggplot2) #시각화 예시
cv_news_date %>% 
  count(date) %>% 
  ggplot(aes(x=date, y=n)) +
  geom_col() + 
  scale_x_date(date_breaks = "1 month", date_labels = "%b")

cv_news_date %>% 
  count(DATE) %>% 
  ggplot(aes(x=DATE, y=n)) +
  geom_col() 

select()filter(), mutate()dplyr 패키지의 함수를 이용해서 데이터 처리하는 과정을 살펴봄.

한국어 텍스트 전처리

Tokenization using tidytext

자, 이제는 “tidy” 데이터가 무엇인지, 그 원리를 살펴보고 이를 기반으로 한 어휘 빈도수 분석에 효율적인 함수를 제공하는 “tidytext” 패키지를 소개해드리도록 하겠습니다. 특히, 이 패키지의 unnest_tokens() 함수는 텍스트 전처리에 매우 편리한 기능을 제공합니다. 특히, 트윗 텍스트의 경우에는 unnest_tweets() 함수로 편리하게 토큰화 과정이 가능합니다.

자 우선, tidytext 패키지와 텍스트 전처리에 필요한 stringr 패키지를 R세션에 설치해 봅시다.

### Corpus
library(tidytext)
library(stringr)

cv_news_date
## # A tibble: 2,425 x 6
##    DATE   COMPANY  HEADLINE           TEXT           KEYWORD          date      
##    <chr>  <chr>    <chr>              <chr>          <chr>            <date>    
##  1 20210~ 조선일보 "코로나 백신 접종 요양병원 종~ "충북에서도 백신 1차 ~ 코로나,백신,접종,요양,병원~ 2021-03-17
##  2 20210~ 중앙일보 "임신중 백신 맞은 엄마 아기는~ "미국에서 임신 중 코로~ 임신,백신,엄마,아기,코로나~ 2021-03-17
##  3 20210~ 조선일보 "코로나 백신 독려 광고 빠졌던~ "도널드 트럼프 전 미국~ 코로나,백신,독려,광고,트럼~ 2021-03-17
##  4 20210~ 영남일보 "포항가속기硏, 인류 사상 최고~ "인류 사상 최고 밝기의~ 포항가속기,최고,인류,사상,~ 2021-03-17
##  5 20210~ 세계일보 "英 전문가 \"코로나 변이 바~ "미국 제약사 화이자의 ~ 코로나,전문가,코로나,바이러~ 2021-03-17
##  6 20210~ 국민일보 "임신 중 코로나 백신 맞은 엄~ "미국에서 임신 중 코로~ 임신,코로나,백신,엄마,항체~ 2021-03-17
##  7 20210~ 중앙일보 "이란도 코로나 백신 공개 암살~ "이란이 세 번쨰 자체 ~ 이란도,코로나,백신,공개,암~ 2021-03-17
##  8 20210~ 충청투데이~ "백신 이상반응에도 다시 코로나~ "[충청투데이 조선교 기~ 백신,반응,코로나,대전,대학~ 2021-03-17
##  9 20210~ 강원도민일보~ "접종 후 두통 발열 몸살 코로~ "\"경미한 이상반응 이~ 접종,두통,발열,몸살,코로나~ 2021-03-17
## 10 20210~ 국제신문 "울산 첫 코로나 백신 접종센터~ "울산에서도 코로나19 ~ 울산,개소,코로나,백신,접종~ 2021-03-17
## # ... with 2,415 more rows

앞서 우리는 어휘 빈도수 분석을 위해서, 여러 전처리 과정을 거쳐왔습니다. 예를 들어, 문자열에서 구두점, 숫자, 알파벳 이외의 문자 등을 정규 표현을 이용해서 매칭하고 지워주거나 바꿔주는 전처리 작업을 했었죠. 그리고 이렇게 전처리 과정을 거친 텍스트를 단어 단위로 분석하기 위해서 빈칸을 기준으로 문자열을 쪼개는 작업을 거쳤습니다. 이를 위해 str_split()이라는 함수를 사용했었죠.

tidytext 패키지의 unnest_tokens() 함수는 이 과정을 한번에 그리고 편리하게 수행할 수 있도록 해주는 기능을 수행합니다. apostrophe의 축약형을 제외한 텍스트의 구두점은 자동적으로 삭제하고, 알파벳을 소문자로 변환하고 빈칸을 기준으로 단어 단위로 텍스트를 쪼개서 그 결과값을 ‘tidy’ 데이터로 만들어 줍니다. 결국, 텍스트를 토큰 단위로 쪼개서 한 행에 하나의 토큰, 여기에선 한 단어씩 위치하게하는 데이터 프레임 형식으로 변환하는 기능을 수행하는 거죠.

tidy 데이터란 각 행에 하나의 토큰(여기에선 하나의 단어)만 위치하도록 구성된 테이블을 말합니다. 결국 tidy한 데이터를 만든다는 것은 토큰의 단위를 정하고 텍스트 데이터를 토큰화하여 각 행이 하나의 토큰으로 구성되게 만든다는 것이죠. 이렇게 tidy 데이터를 구성한다는 것은 각 행이 하나의 단어씩 가지고 있기 때문에 이후 어휘 빈도수 분석 또는 사전기반 감정분석을 수행할 때 편리하게 연계 작업할 수 있다는 장점이 있습니다.

자, 다음의 R코드는 unnest_tokens() 함수를 이용해서 cv_news_date라는 기사 데이터를 토큰화한 과정을 보여주는데요.

cv_news_date %>% arrange(date)  # dplyr의 arrange() 함수는 해당 변수를 순차적으로 정렬 (작은 것부터); 시간의 경우 오래된 데이터부터 정렬
## # A tibble: 2,425 x 6
##    DATE   COMPANY  HEADLINE         TEXT            KEYWORD           date      
##    <chr>  <chr>    <chr>            <chr>           <chr>             <date>    
##  1 20200~ OBS      "전 세계 코로나 3천만 명~ "【앵커】 \r\n\r\n~ 3천만,세계,코로나,백신,갈등~ 2020-09-17
##  2 20200~ 국민일보 "정은경 “코로나 종식 기대~ "정은경 중앙방역대책본부장~ 종식,정은경,코로나,마스크,백~ 2020-09-17
##  3 20200~ 한국일보 "'스포트라이트', 코로나 ~ "JTBC ‘이규연의 스포~ 스포트라이트,코로나,백신,추척~ 2020-09-17
##  4 20200~ 한국일보 "코로나 백신 '입도선매' ~ "전 세계 신종 코로나바이~ 입도선매,코로나,백신,외국,회~ 2020-09-17
##  5 20200~ 한국일보 "안전 불안감 점점 커지는 ~ "신종 코로나바이러스 감염~ 안전,불안감,코로나,백신,존슨~ 2020-09-17
##  6 20200~ 한국일보 "美 CDC국장 \"일반인용~ "미국 보건당국은 내년 2~ 백신,CDC,국장,일반,코로나~ 2020-09-17
##  7 20200~ YTN      "트럼프 \"코로나 백신, ~ "도널드 트럼프 미국 대통~ 백신,트럼프,코로나,4주,도널~ 2020-09-17
##  8 20200~ 한국일보 "\"전 국민 무료ㆍ2회 접~ "미국 정부가 가능하면 올~ 국민,무료,2회,접종,당국,마~ 2020-09-17
##  9 20200~ 한국일보 "유럽 코로나 확산 '3월 ~ "유럽의 신종 코로나바이러~ 대유행,유럽,코로나,확산,백신~ 2020-09-18
## 10 20200~ 조선일보 "[복지4.0] 빌 게이츠가~ "빌 게이츠 마이크로소프트~ 게이츠,선두,코로나,백신,김민~ 2020-09-18
## # ... with 2,415 more rows
cv_news_date %>% arrange(date) %>% unnest_tokens(word, HEADLINE, token = "words")
## # A tibble: 22,075 x 6
##    DATE   COMPANY TEXT                   KEYWORD                date       word 
##    <chr>  <chr>   <chr>                  <chr>                  <date>     <chr>
##  1 20200~ OBS     "【앵커】 \r\n\r\n여러분 안녕하~ 3천만,세계,코로나,백신,갈등,앵커,안~ 2020-09-17 전   
##  2 20200~ OBS     "【앵커】 \r\n\r\n여러분 안녕하~ 3천만,세계,코로나,백신,갈등,앵커,안~ 2020-09-17 세계 
##  3 20200~ OBS     "【앵커】 \r\n\r\n여러분 안녕하~ 3천만,세계,코로나,백신,갈등,앵커,안~ 2020-09-17 코로나~
##  4 20200~ OBS     "【앵커】 \r\n\r\n여러분 안녕하~ 3천만,세계,코로나,백신,갈등,앵커,안~ 2020-09-17 3    
##  5 20200~ OBS     "【앵커】 \r\n\r\n여러분 안녕하~ 3천만,세계,코로나,백신,갈등,앵커,안~ 2020-09-17 천만 
##  6 20200~ OBS     "【앵커】 \r\n\r\n여러분 안녕하~ 3천만,세계,코로나,백신,갈등,앵커,안~ 2020-09-17 명   
##  7 20200~ OBS     "【앵커】 \r\n\r\n여러분 안녕하~ 3천만,세계,코로나,백신,갈등,앵커,안~ 2020-09-17 넘어 
##  8 20200~ OBS     "【앵커】 \r\n\r\n여러분 안녕하~ 3천만,세계,코로나,백신,갈등,앵커,안~ 2020-09-17 美   
##  9 20200~ OBS     "【앵커】 \r\n\r\n여러분 안녕하~ 3천만,세계,코로나,백신,갈등,앵커,안~ 2020-09-17 백신 
## 10 20200~ OBS     "【앵커】 \r\n\r\n여러분 안녕하~ 3천만,세계,코로나,백신,갈등,앵커,안~ 2020-09-17 갈등 
## # ... with 22,065 more rows
cv_news_date %>% arrange(date) %>% unnest_regex(word, HEADLINE, pattern="[[:space:]]") # dplyr의 slice() 함수는 특정 범위의 행(들)만 추출해서 보여주는 기능을 함
## # A tibble: 20,277 x 6
##    DATE   COMPANY  TEXT                  KEYWORD                date       word 
##    <chr>  <chr>    <chr>                 <chr>                  <date>     <chr>
##  1 20200~ OBS      "【앵커】 \r\n\r\n여러분 안녕~ 3천만,세계,코로나,백신,갈등,앵커,안~ 2020-09-17 전   
##  2 20200~ OBS      "【앵커】 \r\n\r\n여러분 안녕~ 3천만,세계,코로나,백신,갈등,앵커,안~ 2020-09-17 세계 
##  3 20200~ OBS      "【앵커】 \r\n\r\n여러분 안녕~ 3천만,세계,코로나,백신,갈등,앵커,안~ 2020-09-17 코로나~
##  4 20200~ OBS      "【앵커】 \r\n\r\n여러분 안녕~ 3천만,세계,코로나,백신,갈등,앵커,안~ 2020-09-17 3천만
##  5 20200~ OBS      "【앵커】 \r\n\r\n여러분 안녕~ 3천만,세계,코로나,백신,갈등,앵커,안~ 2020-09-17 명   
##  6 20200~ OBS      "【앵커】 \r\n\r\n여러분 안녕~ 3천만,세계,코로나,백신,갈등,앵커,안~ 2020-09-17 넘어 
##  7 20200~ OBS      "【앵커】 \r\n\r\n여러분 안녕~ 3천만,세계,코로나,백신,갈등,앵커,안~ 2020-09-17 美,  
##  8 20200~ OBS      "【앵커】 \r\n\r\n여러분 안녕~ 3천만,세계,코로나,백신,갈등,앵커,안~ 2020-09-17 백신 
##  9 20200~ OBS      "【앵커】 \r\n\r\n여러분 안녕~ 3천만,세계,코로나,백신,갈등,앵커,안~ 2020-09-17 갈등 
## 10 20200~ 국민일보 "정은경 중앙방역대책본부장이 전 세계~ 종식,정은경,코로나,마스크,백신,확산,~ 2020-09-17 정은경~
## # ... with 20,267 more rows

이 코드는 cv_news_date는 데이터를 unnest_tokens()함수를 이용하여, HEADLINE라는 변수의 문자열을 빈칸 기준으로 쪼개서 word라는 새로운 변수에 저장해주라는 명령을 수행합니다. 여기에서 토큰화 단위는 즉, 문자열을 쪼개고자 하는 기본 단위는 token이라는 인자를 “words”로 설정했죠. 이를 통해 단어 단위로 문자열을 토큰화하라는 설정이 취해진 것입니다.

unnest_tokens() 함수의 기능은 문자열을 단어 단위로 토큰화하라는 것 이외에 정규 표현식을 이용해서 텍스트를 토큰화하도록 할 수 있다는 점인데요. 따라서 텍스트를 쪼개는 토큰의 단위를 다양하게 설정할 수 있는 장점이 있습니다. 예를 들어서, 우리가 다루는 기사 데이터에 경우, 키워드에 단어들이 쉼표로 구분되어 있어 이를 기준으로 토큰화 방법이 필요하고, 이 때 unnest_regex()는 유용한 기능을 합니다.

cv_news_date
## # A tibble: 2,425 x 6
##    DATE   COMPANY  HEADLINE           TEXT           KEYWORD          date      
##    <chr>  <chr>    <chr>              <chr>          <chr>            <date>    
##  1 20210~ 조선일보 "코로나 백신 접종 요양병원 종~ "충북에서도 백신 1차 ~ 코로나,백신,접종,요양,병원~ 2021-03-17
##  2 20210~ 중앙일보 "임신중 백신 맞은 엄마 아기는~ "미국에서 임신 중 코로~ 임신,백신,엄마,아기,코로나~ 2021-03-17
##  3 20210~ 조선일보 "코로나 백신 독려 광고 빠졌던~ "도널드 트럼프 전 미국~ 코로나,백신,독려,광고,트럼~ 2021-03-17
##  4 20210~ 영남일보 "포항가속기硏, 인류 사상 최고~ "인류 사상 최고 밝기의~ 포항가속기,최고,인류,사상,~ 2021-03-17
##  5 20210~ 세계일보 "英 전문가 \"코로나 변이 바~ "미국 제약사 화이자의 ~ 코로나,전문가,코로나,바이러~ 2021-03-17
##  6 20210~ 국민일보 "임신 중 코로나 백신 맞은 엄~ "미국에서 임신 중 코로~ 임신,코로나,백신,엄마,항체~ 2021-03-17
##  7 20210~ 중앙일보 "이란도 코로나 백신 공개 암살~ "이란이 세 번쨰 자체 ~ 이란도,코로나,백신,공개,암~ 2021-03-17
##  8 20210~ 충청투데이~ "백신 이상반응에도 다시 코로나~ "[충청투데이 조선교 기~ 백신,반응,코로나,대전,대학~ 2021-03-17
##  9 20210~ 강원도민일보~ "접종 후 두통 발열 몸살 코로~ "\"경미한 이상반응 이~ 접종,두통,발열,몸살,코로나~ 2021-03-17
## 10 20210~ 국제신문 "울산 첫 코로나 백신 접종센터~ "울산에서도 코로나19 ~ 울산,개소,코로나,백신,접종~ 2021-03-17
## # ... with 2,415 more rows
cv_news_date %>% arrange(date) %>% unnest_regex(word, KEYWORD, pattern="[,]") %>% slice(1:30) # dplyr의 slice() 함수는 특정 범위의 행(들)만 추출해서 보여주는 기능을 함
## # A tibble: 30 x 6
##    DATE   COMPANY HEADLINE           TEXT                      date       word  
##    <chr>  <chr>   <chr>              <chr>                     <date>     <chr> 
##  1 20200~ OBS     전 세계 코로나 3천만 명 넘어~ "【앵커】 \r\n\r\n여러분 안녕하십니까~ 2020-09-17 3천만 
##  2 20200~ OBS     전 세계 코로나 3천만 명 넘어~ "【앵커】 \r\n\r\n여러분 안녕하십니까~ 2020-09-17 세계  
##  3 20200~ OBS     전 세계 코로나 3천만 명 넘어~ "【앵커】 \r\n\r\n여러분 안녕하십니까~ 2020-09-17 코로나
##  4 20200~ OBS     전 세계 코로나 3천만 명 넘어~ "【앵커】 \r\n\r\n여러분 안녕하십니까~ 2020-09-17 백신  
##  5 20200~ OBS     전 세계 코로나 3천만 명 넘어~ "【앵커】 \r\n\r\n여러분 안녕하십니까~ 2020-09-17 갈등  
##  6 20200~ OBS     전 세계 코로나 3천만 명 넘어~ "【앵커】 \r\n\r\n여러분 안녕하십니까~ 2020-09-17 앵커  
##  7 20200~ OBS     전 세계 코로나 3천만 명 넘어~ "【앵커】 \r\n\r\n여러분 안녕하십니까~ 2020-09-17 안녕  
##  8 20200~ OBS     전 세계 코로나 3천만 명 넘어~ "【앵커】 \r\n\r\n여러분 안녕하십니까~ 2020-09-17 누적확진자~
##  9 20200~ OBS     전 세계 코로나 3천만 명 넘어~ "【앵커】 \r\n\r\n여러분 안녕하십니까~ 2020-09-17 세계  
## 10 20200~ OBS     전 세계 코로나 3천만 명 넘어~ "【앵커】 \r\n\r\n여러분 안녕하십니까~ 2020-09-17 코로나19~
## # ... with 20 more rows

자, 이러한 tidytext 방식의 토큰화를 거치면, 뉴스 텍스트가 어휘 단위로 구분된 새로운 데이터를 얻게 되는데요. 이를 이용하면 어휘 빈도수 분석이 매우 용이합니다.

cv_keyword_count <- cv_news_date %>% 
  unnest_regex(word, KEYWORD, pattern="[,]") %>% 
  count(word, sort = TRUE) 
cv_keyword_count
## # A tibble: 28,433 x 2
##    word         n
##    <chr>    <int>
##  1 백신     26650
##  2 접종     14110
##  3 코로나19  8276
##  4 코로나    5548
##  5 미국      3190
##  6 정부      3162
##  7 시작      2257
##  8 확보      2102
##  9 예방      1846
## 10 임상      1838
## # ... with 28,423 more rows

dplyr의 count() 함수는 해당 변수 즉 벡터를 구성하는 값들의 빈도수를 계산합니다. sort 인자는 빈도수를 내림차순을 정렬할 수 있게 합니다.

단어 빈도수가 데이터 형식으로 저장된 cv_word_count의 내용을 인덱싱

cv_keyword_count[1:10,] # 데이터 프레임 인덱싱 방법, 대괄호에 쉼표 앞에 숫자 또는 그 범위는 해당 행의 범위, 쉼표 뛰는 해당 열의 범위
## # A tibble: 10 x 2
##    word         n
##    <chr>    <int>
##  1 백신     26650
##  2 접종     14110
##  3 코로나19  8276
##  4 코로나    5548
##  5 미국      3190
##  6 정부      3162
##  7 시작      2257
##  8 확보      2102
##  9 예방      1846
## 10 임상      1838

위의 방법으로 우리는 “코로나”와 “백신”을 포함한 기사 텍스트를 단어 단위로 토큰화한 결과의 어휘 빈도수를 확인할 수 있습니다.

만약, “KEYWORD” 정보와 달리 헤드라인이나 리드와 같이 정제되지 않은 형태의 텍스트 자료를 분석할 경우에는?

cv_news_date %>% 
  unnest_regex(word, TEXT, pattern="[[:space:]]") %>% 
  count(word, sort = TRUE) 
## # A tibble: 29,534 x 2
##    word                 n
##    <chr>            <int>
##  1 백신              2706
##  2 코로나19          1928
##  3 백신을             905
##  4 신종               793
##  5 코로나바이러스     760
##  6 코로나             679
##  7 감염증(코로나19)   661
##  8 접종               644
##  9 미국               627
## 10 ..                 571
## # ... with 29,524 more rows
cv_news_date %>% 
  unnest_tokens(word, TEXT, token = "words") 
## # A tibble: 120,973 x 6
##    DATE   COMPANY  HEADLINE           KEYWORD                  date       word  
##    <chr>  <chr>    <chr>              <chr>                    <date>     <chr> 
##  1 20210~ 조선일보 코로나 백신 접종 요양병원 종사~ 코로나,백신,접종,요양,병원,종사자,확진,~ 2021-03-17 충북에서도~
##  2 20210~ 조선일보 코로나 백신 접종 요양병원 종사~ 코로나,백신,접종,요양,병원,종사자,확진,~ 2021-03-17 백신  
##  3 20210~ 조선일보 코로나 백신 접종 요양병원 종사~ 코로나,백신,접종,요양,병원,종사자,확진,~ 2021-03-17 1     
##  4 20210~ 조선일보 코로나 백신 접종 요양병원 종사~ 코로나,백신,접종,요양,병원,종사자,확진,~ 2021-03-17 차    
##  5 20210~ 조선일보 코로나 백신 접종 요양병원 종사~ 코로나,백신,접종,요양,병원,종사자,확진,~ 2021-03-17 접종자의~
##  6 20210~ 조선일보 코로나 백신 접종 요양병원 종사~ 코로나,백신,접종,요양,병원,종사자,확진,~ 2021-03-17 코로나
##  7 20210~ 조선일보 코로나 백신 접종 요양병원 종사~ 코로나,백신,접종,요양,병원,종사자,확진,~ 2021-03-17 확진  
##  8 20210~ 조선일보 코로나 백신 접종 요양병원 종사~ 코로나,백신,접종,요양,병원,종사자,확진,~ 2021-03-17 판정  
##  9 20210~ 조선일보 코로나 백신 접종 요양병원 종사~ 코로나,백신,접종,요양,병원,종사자,확진,~ 2021-03-17 사례가
## 10 20210~ 조선일보 코로나 백신 접종 요양병원 종사~ 코로나,백신,접종,요양,병원,종사자,확진,~ 2021-03-17 나왔다
## # ... with 120,963 more rows
cv_news_date %>% 
  unnest_tokens(word, HEADLINE, token = "words") %>% 
  count(word, sort = TRUE) 
## # A tibble: 5,754 x 2
##    word       n
##    <chr>  <int>
##  1 코로나  2383
##  2 백신    2284
##  3 접종     683
##  4 화이자   165
##  5 1        162
##  6 2        150
##  7 美       144
##  8 명       132
##  9 3        106
## 10 개발     102
## # ... with 5,744 more rows
cv_news_date %>% 
  unnest_regex(word, HEADLINE, pattern="[[:space:]]") %>% 
  count(word, sort = TRUE) 
## # A tibble: 7,514 x 2
##    word           n
##    <chr>      <int>
##  1 "백신"      1943
##  2 "코로나"    1726
##  3 "접종"       539
##  4 "“코로나"    238
##  5 "\"코로나"   203
##  6 "백신,"      161
##  7 "화이자"     120
##  8 "美"          99
##  9 "치료제"      85
## 10 "개발"        82
## # ... with 7,504 more rows
cv_news_date
## # A tibble: 2,425 x 6
##    DATE   COMPANY  HEADLINE           TEXT           KEYWORD          date      
##    <chr>  <chr>    <chr>              <chr>          <chr>            <date>    
##  1 20210~ 조선일보 "코로나 백신 접종 요양병원 종~ "충북에서도 백신 1차 ~ 코로나,백신,접종,요양,병원~ 2021-03-17
##  2 20210~ 중앙일보 "임신중 백신 맞은 엄마 아기는~ "미국에서 임신 중 코로~ 임신,백신,엄마,아기,코로나~ 2021-03-17
##  3 20210~ 조선일보 "코로나 백신 독려 광고 빠졌던~ "도널드 트럼프 전 미국~ 코로나,백신,독려,광고,트럼~ 2021-03-17
##  4 20210~ 영남일보 "포항가속기硏, 인류 사상 최고~ "인류 사상 최고 밝기의~ 포항가속기,최고,인류,사상,~ 2021-03-17
##  5 20210~ 세계일보 "英 전문가 \"코로나 변이 바~ "미국 제약사 화이자의 ~ 코로나,전문가,코로나,바이러~ 2021-03-17
##  6 20210~ 국민일보 "임신 중 코로나 백신 맞은 엄~ "미국에서 임신 중 코로~ 임신,코로나,백신,엄마,항체~ 2021-03-17
##  7 20210~ 중앙일보 "이란도 코로나 백신 공개 암살~ "이란이 세 번쨰 자체 ~ 이란도,코로나,백신,공개,암~ 2021-03-17
##  8 20210~ 충청투데이~ "백신 이상반응에도 다시 코로나~ "[충청투데이 조선교 기~ 백신,반응,코로나,대전,대학~ 2021-03-17
##  9 20210~ 강원도민일보~ "접종 후 두통 발열 몸살 코로~ "\"경미한 이상반응 이~ 접종,두통,발열,몸살,코로나~ 2021-03-17
## 10 20210~ 국제신문 "울산 첫 코로나 백신 접종센터~ "울산에서도 코로나19 ~ 울산,개소,코로나,백신,접종~ 2021-03-17
## # ... with 2,415 more rows

한국어 텍스트 전처리

*보편적 고려사항: Basic-level 1) 띄어쓰기 (white space) 2) 구두점 (punctuation) 3) 한국어 (UTF-8) 이외의 문자 (e.g., ASCII code characters, 한자, 이모티콘) 4) 형태소 분석

# 1) space
cv_news_date$TEXT[1]
## [1] "충북에서도 백신 1차 접종자의 코로나 확진 판정 사례가 나왔다. \r\n \r\n17일 충북도 등에 따르면 충주시 모 요양병원 원무과에서 근무하는 30대 A씨가 이날 코로나 ‘양성’ 판정을 받았다. \r\n \r\nA씨는 매주 두 차례씩 진행되는 요양시설 종사자 등에 대한 선제 검사에서 양성으로 나왔다. 지난 12일 직전 검사에서는 음성 판정을 받았다. \r\n \r\n1분기 접종 대.."
str_squish(cv_news_date$TEXT[1]) 
## [1] "충북에서도 백신 1차 접종자의 코로나 확진 판정 사례가 나왔다. 17일 충북도 등에 따르면 충주시 모 요양병원 원무과에서 근무하는 30대 A씨가 이날 코로나 ‘양성’ 판정을 받았다. A씨는 매주 두 차례씩 진행되는 요양시설 종사자 등에 대한 선제 검사에서 양성으로 나왔다. 지난 12일 직전 검사에서는 음성 판정을 받았다. 1분기 접종 대.."
# 2) punctuation
cv_news_date$TEXT[1]
## [1] "충북에서도 백신 1차 접종자의 코로나 확진 판정 사례가 나왔다. \r\n \r\n17일 충북도 등에 따르면 충주시 모 요양병원 원무과에서 근무하는 30대 A씨가 이날 코로나 ‘양성’ 판정을 받았다. \r\n \r\nA씨는 매주 두 차례씩 진행되는 요양시설 종사자 등에 대한 선제 검사에서 양성으로 나왔다. 지난 12일 직전 검사에서는 음성 판정을 받았다. \r\n \r\n1분기 접종 대.."
str_replace_all(cv_news_date$TEXT[1], "[[:punct:]]+", " ") 
## [1] "충북에서도 백신 1차 접종자의 코로나 확진 판정 사례가 나왔다  \r\n \r\n17일 충북도 등에 따르면 충주시 모 요양병원 원무과에서 근무하는 30대 A씨가 이날 코로나  양성  판정을 받았다  \r\n \r\nA씨는 매주 두 차례씩 진행되는 요양시설 종사자 등에 대한 선제 검사에서 양성으로 나왔다  지난 12일 직전 검사에서는 음성 판정을 받았다  \r\n \r\n1분기 접종 대 "
str_replace_all(cv_news_date$TEXT[1], "[^[:word:]]+", " ") 
## [1] "충북에서도 백신 1차 접종자의 코로나 확진 판정 사례가 나왔다 17일 충북도 등에 따르면 충주시 모 요양병원 원무과에서 근무하는 30대 A씨가 이날 코로나 양성 판정을 받았다 A씨는 매주 두 차례씩 진행되는 요양시설 종사자 등에 대한 선제 검사에서 양성으로 나왔다 지난 12일 직전 검사에서는 음성 판정을 받았다 1분기 접종 대 "
# 3) 한국어 이외의 문자? 한자?
cv_news_date$TEXT[1]
## [1] "충북에서도 백신 1차 접종자의 코로나 확진 판정 사례가 나왔다. \r\n \r\n17일 충북도 등에 따르면 충주시 모 요양병원 원무과에서 근무하는 30대 A씨가 이날 코로나 ‘양성’ 판정을 받았다. \r\n \r\nA씨는 매주 두 차례씩 진행되는 요양시설 종사자 등에 대한 선제 검사에서 양성으로 나왔다. 지난 12일 직전 검사에서는 음성 판정을 받았다. \r\n \r\n1분기 접종 대.."
str_replace_all(cv_news_date$TEXT[1], "[[:ascii:]]+", " ")
## [1] "충북에서도 백신 차 접종자의 코로나 확진 판정 사례가 나왔다 일 충북도 등에 따르면 충주시 모 요양병원 원무과에서 근무하는 대 씨가 이날 코로나 ‘양성’ 판정을 받았다 씨는 매주 두 차례씩 진행되는 요양시설 종사자 등에 대한 선제 검사에서 양성으로 나왔다 지난 일 직전 검사에서는 음성 판정을 받았다 분기 접종 대 "
str_extract_all(cv_news_date$HEADLINE, "[^a-zA-Z가-힣0-9[:punct:]]") %>% 
  unlist() %>% table() %>% sort(decreasing = TRUE)
## .
##        \u7f8e \u6587 \u5317 \u82f1 \u65e5 \u4e2d      ~     ↑ \u318d      < 
##  17879    144     61     49     41     31     27     18     12     11     10 
##      > \u91ce \u9751 \u97d3      + <U+00A0>     ↓ \u8207 \u8ecd \u4e01     → 
##     10     10     10     10      8      7      7      7      6      5      4 
## \u5927 \uf981 \u7537 \u7121 \u9806 \u524d \u5146      `     ˚     ②     ℃ 
##      3      3      2      2      2      2      2      1      1      1      1 
## \u339e \u33a1 \u679c \uf90a \u4f01 \u6a5f \u5c3c \u6bd2 \u7368 \u53cd \u6b65 
##      1      1      1      1      1      1      1      1      1      1      1 
## \u4f5b \u793e \u5148 \u8996 \u65b0 \u5931 \u784f \u725b \u6708 \u6709 \u91ab 
##      1      1      1      1      1      1      1      1      1      1      1 
## \uf9e1 \u5370 \u5168 \u6230 \u682a \u6065 \u5354 \u864e \u5f8c 
##      1      1      1      1      1      1      1      1      1
# cv_news_date$HEADLINE <- str_replace_all(cv_news_date$HEADLINE,  "[^a-zA-Z가-힣0-9[:punct:]]", " ") 

# 4) 형태소 분석기  
library(RmecabKo)
library(RcppMeCab)
## 
## Attaching package: 'RcppMeCab'
## The following object is masked from 'package:RmecabKo':
## 
##     pos
cv_news_date$HEADLINE[1:10]
##  [1] "코로나 백신 접종 요양병원 종사자 ‘확진’ 충북 첫 사례"                           
##  [2] "임신중 백신 맞은 엄마 아기는 코로나 항체 갖고 태어났다"                           
##  [3] "코로나 백신 독려 광고 빠졌던 트럼프, 돌연 “백신 맞으라” 당부"                   
##  [4] "포항가속기\u784f, 인류 사상 최고 밝은 빛 구현 \"코로나 백신 개발 우선 제공\""     
##  [5] "\u82f1 전문가 \"코로나 변이 바이러스 사라지지 않아 백신 평생 맞아야 할지도\" 우려"
##  [6] "임신 중 코로나 백신 맞은 엄마, ‘항체 보유’ 아기 출산"                           
##  [7] "이란도 코로나 백신 공개 암살된 핵 과학자 이름 붙였다"                             
##  [8] "백신 이상반응에도 다시 코로나 최전선으로"                                         
##  [9] "접종 후 두통 발열 몸살 코로나 백신공포증 확산"                                    
## [10] "울산 첫 코로나 백신 접종센터 동천체육관 개소"
cv_news_date$TEXT[1:10]
##  [1] "충북에서도 백신 1차 접종자의 코로나 확진 판정 사례가 나왔다. \r\n \r\n17일 충북도 등에 따르면 충주시 모 요양병원 원무과에서 근무하는 30대 A씨가 이날 코로나 ‘양성’ 판정을 받았다. \r\n \r\nA씨는 매주 두 차례씩 진행되는 요양시설 종사자 등에 대한 선제 검사에서 양성으로 나왔다. 지난 12일 직전 검사에서는 음성 판정을 받았다. \r\n \r\n1분기 접종 대.."
##  [2] "미국에서 임신 중 코로나 19 백신을 접종한 여성이 항체를 가진 아기를 출산했다. \r\n \r\n 16일(현지시간) 미국 WPBF방송과 영국 가디언 등에 따르면 미국 플로리다 팜비치 카운티에서 출산 전 코로나 19 백신을 맞은 여성이 낳은 아기가 항체를 가진 것이 확인됐다. \r\n \r\n 의료 종사자인 이 여성은 임신 36주차이던 지난 1월 미국 제약업체 모더나가 개발.."        
##  [3] "도널드 트럼프 전 미국 대통령이 16일(현지 시각) 폭스 뉴스와의 인터뷰에서 자신의 지지자들에게 코로나 백신을 맞으라고 당부했다. 수개월동안 코로나 백신 접종에 관심을 두지 않던 트럼프 전 대통령이 공개적으로 백신 접종을 권한 것이다. \r\n \r\n폭스뉴스와 USA투데이 등에 따르면, 트럼프 전 대통령은 이날 20분간 진행된 폭스 뉴스와의 전화 인터뷰에서 “안.."  
##  [4] "인류 사상 최고 밝기의 빛이 국내 연구진에 의해 개발됐다.\r\n\r\n포항가속기연구소(PAL)는 16일 강흥식 박사 연구팀이 4세대 방사광가속기(선형)의 셀프시딩(Self-Seeding) 시스템을 개발해 인류가 만든 빛 중에서 최고 밝기의 빛을 만드는 데 성공했다고 밝혔다. 이번 연구는 광학 분야의 국제학술지인 네이처 포토닉스 15일자(현지시각)에 실렸다.\r\n\r\n포.."        
##  [5] "미국 제약사 화이자의 코로나19 백신. AFP연합뉴스 신종 코로나바이러스 감염증(코로나19)을 일으키는 바이러스의 변이가 사라지지 않아 백신을 평생 맞아야 할 수 있다는 예상이 나왔다. \r\n \r\n 로이터 통신은 15일(현지시간) 영국 코로나19 유전체학 컨소시엄(COG-UK) 국장인 샤론 피콕 교수가 기존 백신을 보강하는 이른바 '부스터 샷'을 정기적으로 .."             
##  [6] "미국에서 임신 중 코로나19 백신을 접종한 여성이 항체를 보유한 아기를 출산한 첫 사례가 나왔다. \r\n \r\n16일(현지시간) 미 매체 더힐에 따르면 미국 플로리다주 팜비치카운티에서 출산 몇 주 전 코로나19 백신을 맞은 여성이 항체가 있는 아기를 출산했다. \r\n \r\n일선 의료 종사자인 이 여성은 임신 36주차이던 지난 1월 미국 제약업체 모더나가 개발한 백신 .."   
##  [7] "이란이 세 번쨰 자체 개발 신종 코로나바이러스 감염증(코로나19) 백신을 공개했다. 백신 명칭은 지난해 암살당한 최고위급 핵 과학자 모센 파크리자데의 이름을 따 ‘파크라(Fakhra)’라고 지었다.\r\n \r\n \r\n 16일(현지시간) AP통신 및 현지 매체 등에 따르면 이란의 ‘국방 혁신 연구 기구’는 코로나19 백신 파크라의 임상시험에 돌입한다고 밝혔다. \r\n .."       
##  [8] "[충청투데이 조선교 기자] #. 대전의 한 대학병원에 근무하는 A 간호사는 최근 코로나19(이하 코로나) 화이자 백신을 접종했다. 접종 뒤 30여분간 모니터링을 거쳤고 이후 몇 시간이 지나지 않아 이상반응을 느꼈다. 그러나 그는 접종 당일 증상이 가라앉을 때까지 버틴 뒤 야간(나이트) 근무에 나섰다. 접종에 앞서 의료진끼리 휴무(오프)와 근무시간대 조정.."           
##  [9] "\"경미한 이상반응 이틀 내 회복\"전국적 사망사례 이상반응 잇따라내달 2분기 접종  신고 급증 전망방역당국 \"두통 발열 등 흔한 증상집단면역 위해 코로나 백신 맞아야\" [강원도민일보 양희문 기자]강원도내 코로나19 백신 접종이 순조롭게 이뤄지고 있지만 연일 접종 후 사망사례와 이상반응 신고가 이어지면서 불안감이 확산되고 있다.방역당국과 의료계는 백신과 .."
## [10] "울산에서도 코로나19 백신 접종센터가 16일 문을 열었다.\r\n\r\n중구 동천체육관에 설치된 울산의 1호 코로나19 예방접종센터는 각각 영하 75도와 영하 20도에서 보관해야 하는 화이자와 모더나 백신 접종이 가능하도록 극저온 냉동시설을 갖췄다. 특히, 순간 정전이 됐을 때 냉동시설 전력이 끊어지지 않도록 하는 무정전 전원장치(UPS)와 장시간 정전에 대비한 .."
cv_news_date$HEADLINE[2]
## [1] "임신중 백신 맞은 엄마 아기는 코로나 항체 갖고 태어났다"
RcppMeCab::pos(cv_news_date$HEADLINE[2])
## $`임신중 백신 맞은 엄마 아기는 코로나 항체 갖고 태어났다`
##  [1] "임신/NNG"     "중/NNB"       "백신/NNG"     "맞/VV"        "은/ETM"      
##  [6] "엄마/NNG"     "아기/NNG"     "는/JX"        "코로나/NNG"   "항체/NNG"    
## [11] "갖/VV"        "고/EC"        "태어났/VV+EP" "다/EC"
RcppMeCab::pos(cv_news_date$HEADLINE[2]) %>% unlist() %>% 
  str_c(collapse=" ")
## [1] "임신/NNG 중/NNB 백신/NNG 맞/VV 은/ETM 엄마/NNG 아기/NNG 는/JX 코로나/NNG 항체/NNG 갖/VV 고/EC 태어났/VV+EP 다/EC"
RmecabKo::words(iconv(cv_news_date$TEXT[1], to="UTF-8"))
## [[1]]
## [1] "NA"
library(rvest)
## 
## Attaching package: 'rvest'
## The following object is masked from 'package:readr':
## 
##     guess_encoding
RmecabKo::words(repair_encoding(cv_news_date$TEXT[1])) %>% unlist()
## Warning: `html_encoding_repair()` was deprecated in rvest 1.0.0.
## Instead, re-load using the `encoding` argument of `read_html()`
## Best guess: UTF-8 (100% confident)
##  [1] "충북"   "백신"   "차"     "접종"   "코로나" "확진"   "판정"   "사례"  
##  [9] "나왔"   "일"     "충북"   "등"     "따르"   "충주시" "모"     "요양"  
## [17] "병원"   "원무"   "과"     "근무"   "대"     "A"      "씨"     "이날"  
## [25] "코로나" "양성"   "판정"   "받"     "A"      "씨"     "매주"   "두"    
## [33] "차례"   "진행"   "요양"   "시설"   "종사자" "등"     "대한"   "선제"  
## [41] "검사"   "양성"   "나왔"   "지난"   "일"     "직전"   "검사"   "음성"  
## [49] "판정"   "받"     "분기"   "접종"   "대"
RmecabKo::nouns(repair_encoding(cv_news_date$TEXT[1]))
## Best guess: UTF-8 (100% confident)
## $...
## [1] "충북"   "백신"   "차"     "접종"   "코로나" "확진"   "판정"   "사례"  
## 
## $<NA>
## NULL
## 
## $<NA>
##  [1] "일"     "충북"   "등"     "충주시" "모"     "요양"   "병원"   "원무"  
##  [9] "과"     "근무"   "대"     "씨"     "이날"   "코로나" "양성"   "판정"  
## 
## $<NA>
## NULL
## 
## $<NA>
##  [1] "씨"     "차례"   "진행"   "요양"   "시설"   "종사자" "등"     "선제"  
##  [9] "검사"   "양성"   "일"     "직전"   "검사"   "음성"   "판정"  
## 
## $<NA>
## NULL
## 
## $<NA>
## [1] "분기" "접종"
RmecabKo::pos(repair_encoding(cv_news_date$TEXT[1]))
## Best guess: UTF-8 (100% confident)
## $...
##  [1] "충북/NNP"   "에서/JKB"   "도/JX"      "백신/NNG"   "1/SN"      
##  [6] "차/NNBC"    "접종/NNG"   "자/XSN"     "의/JKG"     "코로나/NNG"
## [11] "확진/NNG"   "판정/NNG"   "사례/NNG"   "가/JKS"     "나왔/VV+EP"
## [16] "다/EF"      "./SF"      
## 
## $<NA>
## NULL
## 
## $<NA>
##  [1] "17/SN"      "일/NNBC"    "충북/NNP"   "도/JX"      "등/NNB"    
##  [6] "에/JKB"     "따르/VV"    "면/EC"      "충주시/NNP" "모/NNG"    
## [11] "요양/NNG"   "병원/NNG"   "원무/NNG"   "과/NNG"     "에서/JKB"  
## [16] "근무/NNG"   "하/XSV"     "는/ETM"     "30/SN"      "대/NNBC"   
## [21] "A/SL"       "씨/NNB"     "가/JKS"     "이날/NNG"   "코로나/NNG"
## [26] "‘/SY"      "양성/NNG"   "’/SY"      "판정/NNG"   "을/JKO"    
## [31] "받/VV"      "았/EP"      "다/EF"      "./SF"      
## 
## $<NA>
## NULL
## 
## $<NA>
##  [1] "A/SL"        "씨/NNB"      "는/JX"       "매주/MAG"    "두/MM"      
##  [6] "차례/NNG"    "씩/XSN"      "진행/NNG"    "되/XSV"      "는/ETM"     
## [11] "요양/NNG"    "시설/NNG"    "종사자/NNG"  "등/NNB"      "에/JKB"     
## [16] "대한/VV+ETM" "선제/NNG"    "검사/NNG"    "에서/JKB"    "양성/NNG"   
## [21] "으로/JKB"    "나왔/VV+EP"  "다/EF"       "./SF"        "지난/VV+ETM"
## [26] "12/SN"       "일/NNBC"     "직전/NNG"    "검사/NNG"    "에서/JKB"   
## [31] "는/JX"       "음성/NNG"    "판정/NNG"    "을/JKO"      "받/VV"      
## [36] "았/EP"       "다/EF"       "./SF"       
## 
## $<NA>
## NULL
## 
## $<NA>
## [1] "1/SN"     "분기/NNG" "접종/NNG" "대/VV+EF" "./SF"     "./SF"
RcppMeCab::pos(cv_news_date$HEADLINE[1:10])
## $`코로나 백신 접종 요양병원 종사자 ‘확진’ 충북 첫 사례`
##  [1] "코로나/NNP" "백신/NNG"   "접종/NNG"   "요양/NNG"   "병원/NNG"  
##  [6] "종사자/NNG" "‘/SY"      "확진/NNG"   "’/SY"      "충북/NNP"  
## [11] "첫/XPN"     "사례/NNG"  
## 
## $`임신중 백신 맞은 엄마 아기는 코로나 항체 갖고 태어났다`
##  [1] "임신/NNG"     "중/NNB"       "백신/NNG"     "맞/VV"        "은/ETM"      
##  [6] "엄마/NNG"     "아기/NNG"     "는/JX"        "코로나/NNG"   "항체/NNG"    
## [11] "갖/VV"        "고/EC"        "태어났/VV+EP" "다/EC"       
## 
## $`코로나 백신 독려 광고 빠졌던 트럼프, 돌연 “백신 맞으라” 당부`
##  [1] "코로나/NNP" "백신/NNG"   "독려/NNG"   "광고/NNG"   "빠졌/VV+EP"
##  [6] "던/ETM"     "트럼프/NNG" ",/SC"       "돌연/MAG"   "“/SSO"    
## [11] "백신/NNG"   "맞/VV"      "으라/EC"    "”/SSC"     "당부/NNG"  
## 
## $`포항가속기\u784f, 인류 사상 최고 밝은 빛 구현 "코로나 백신 개발 우선 제공"`
##  [1] "포항/NNP"   "가속기/NNG" "\u784f/NNG" ",/SC"       "인류/NNG"  
##  [6] "사상/NNG"   "최고/NNG"   "밝/VA"      "은/ETM"     "빛/NNG"    
## [11] "구현/NNG"   "\"/SY"      "코로나/NNP" "백신/NNG"   "개발/NNG"  
## [16] "우선/MAG"   "제공/NNG"   "\"/SY"     
## 
## $`\u82f1 전문가 "코로나 변이 바이러스 사라지지 않아 백신 평생 맞아야 할지도" 우려`
##  [1] "\u82f1/NNG"   "전문가/NNG"   "\"/SY"        "코로나/NNP"   "변이/NNG"    
##  [6] "바이러스/NNG" "사라지/VV"    "지/EC"        "않/VX"        "아/EC"       
## [11] "백신/NNG"     "평생/NNG"     "맞/VV"        "아야/EC"      "할지/VX+EC"  
## [16] "도/JX"        "\"/SY"        "우려/NNG"    
## 
## $`임신 중 코로나 백신 맞은 엄마, ‘항체 보유’ 아기 출산`
##  [1] "임신/NNG"   "중/NNB"     "코로나/NNG" "백신/NNG"   "맞/VV"     
##  [6] "은/ETM"     "엄마/NNG"   ",/SC"       "‘/SY"      "항체/NNG"  
## [11] "보유/NNG"   "’/SY"      "아기/NNG"   "출산/NNG"  
## 
## $`이란도 코로나 백신 공개 암살된 핵 과학자 이름 붙였다`
##  [1] "이란/NNP"   "도/JX"      "코로나/NNG" "백신/NNG"   "공개/NNG"  
##  [6] "암살/NNG"   "된/XSV+ETM" "핵/NNG"     "과학자/NNG" "이름/NNG"  
## [11] "붙였/VV+EP" "다/EC"     
## 
## $`백신 이상반응에도 다시 코로나 최전선으로`
## [1] "백신/NNG"   "이상/NNG"   "반응/NNG"   "에/JKB"     "도/JX"     
## [6] "다시/MAG"   "코로나/NNG" "최전선/NNG" "으로/JKB"  
## 
## $`접종 후 두통 발열 몸살 코로나 백신공포증 확산`
## [1] "접종/NNG"   "후/NNG"     "두통/NNG"   "발열/NNG"   "몸살/NNG"  
## [6] "코로나/NNG" "백신/NNG"   "공포증/NNG" "확산/NNG"  
## 
## $`울산 첫 코로나 백신 접종센터 동천체육관 개소`
## [1] "울산/NNP"   "첫/XPN"     "코로나/NNG" "백신/NNG"   "접종/NNG"  
## [6] "센터/NNG"   "동천/NNG"   "체육관/NNG" "개소/NNG"
dim(cv)
## [1] 2442   11
RcppMeCab::pos(iconv(cv_news_date$TEXT[1], to="UTF-8"))
## $`NA`
## [1] "NA/SL"
RcppMeCab::pos(cv_news_date$TEXT[1])
## $...
##  [1] "충북/NNP"    "에서/JKB"    "도/JX"       "백신/NNG"    "1/SN"       
##  [6] "차/NNBC"     "접종/NNG"    "자/XSN"      "의/JKG"      "코로나/NNG" 
## [11] "확진/NNG"    "판정/NNG"    "사례/NNG"    "가/JKS"      "나왔/VV+EP" 
## [16] "다/EF"       "./SF"        "17/SN"       "일/NNBC"     "충북/NNP"   
## [21] "도/JX"       "등/NNB"      "에/JKB"      "따르/VV"     "면/EC"      
## [26] "충주시/NNP"  "모/NNG"      "요양/NNG"    "병원/NNG"    "원무/NNG"   
## [31] "과/NNG"      "에서/JKB"    "근무/NNG"    "하/XSV"      "는/ETM"     
## [36] "30/SN"       "대/NNBC"     "A/SL"        "씨/NNB"      "가/JKS"     
## [41] "이날/NNG"    "코로나/NNG"  "‘/SY"       "양성/NNG"    "’/SY"      
## [46] "판정/NNG"    "을/JKO"      "받/VV"       "았/EP"       "다/EF"      
## [51] "./SF"        "A/SL"        "씨/NNB"      "는/JX"       "매주/MAG"   
## [56] "두/MM"       "차례/NNG"    "씩/XSN"      "진행/NNG"    "되/XSV"     
## [61] "는/ETM"      "요양/NNG"    "시설/NNG"    "종사자/NNG"  "등/NNB"     
## [66] "에/JKB"      "대한/VV+ETM" "선제/NNG"    "검사/NNG"    "에서/JKB"   
## [71] "양성/NNG"    "으로/JKB"    "나왔/VV+EP"  "다/EF"       "./SF"       
## [76] "지난/VV+ETM" "12/SN"       "일/NNBC"     "직전/NNG"    "검사/NNG"   
## [81] "에서/JKB"    "는/JX"       "음성/NNG"    "판정/NNG"    "을/JKO"     
## [86] "받/VV"       "았/EP"       "다/EF"       "./SF"        "1/SN"       
## [91] "분기/NNG"    "접종/NNG"    "대/VV+EF"    "./SF"        "./SF"
RcppMeCab::pos(cv_news_date$HEADLINE) %>% 
  unlist() %>% 
  paste(collapse=" ") %>% 
  str_extract_all(pattern = "[가-힣]+[/]N") %>% 
  unlist() %>% 
  paste(collapse=" ") %>% 
  str_remove_all(pattern="[/]N") %>% 
  str_split(pattern=" ") %>% 
  unlist() %>% 
  table() %>% 
  sort(decreasing=T) %>% 
  head()
## .
##   백신 코로나   접종     명     만 화이자 
##   2492   2449    943    287    214    174
RcppMeCab::pos(cv_news_date$HEADLINE[2]) %>% 
           unlist() %>% 
           str_c(collapse = " ")
## [1] "임신/NNG 중/NNB 백신/NNG 맞/VV 은/ETM 엄마/NNG 아기/NNG 는/JX 코로나/NNG 항체/NNG 갖/VV 고/EC 태어났/VV+EP 다/EC"
cv_news_date %>% slice(2) %>% 
  mutate(HL = RcppMeCab::pos(HEADLINE) %>% 
           unlist() %>% 
           str_c(collapse = " ")) %>% 
  unnest_tweets(word, HL)
## Using `to_lower = TRUE` with `token = 'tweets'` may not preserve URLs.
## # A tibble: 14 x 7
##    DATE   COMPANY  HEADLINE       TEXT          KEYWORD         date       word 
##    <chr>  <chr>    <chr>          <chr>         <chr>           <date>     <chr>
##  1 20210~ 중앙일보 임신중 백신 맞은 엄마 ~ "미국에서 임신 중 코~ 임신,백신,엄마,아기,코로~ 2021-03-17 임신nn~
##  2 20210~ 중앙일보 임신중 백신 맞은 엄마 ~ "미국에서 임신 중 코~ 임신,백신,엄마,아기,코로~ 2021-03-17 중nnb
##  3 20210~ 중앙일보 임신중 백신 맞은 엄마 ~ "미국에서 임신 중 코~ 임신,백신,엄마,아기,코로~ 2021-03-17 백신nn~
##  4 20210~ 중앙일보 임신중 백신 맞은 엄마 ~ "미국에서 임신 중 코~ 임신,백신,엄마,아기,코로~ 2021-03-17 맞vv 
##  5 20210~ 중앙일보 임신중 백신 맞은 엄마 ~ "미국에서 임신 중 코~ 임신,백신,엄마,아기,코로~ 2021-03-17 은etm
##  6 20210~ 중앙일보 임신중 백신 맞은 엄마 ~ "미국에서 임신 중 코~ 임신,백신,엄마,아기,코로~ 2021-03-17 엄마nn~
##  7 20210~ 중앙일보 임신중 백신 맞은 엄마 ~ "미국에서 임신 중 코~ 임신,백신,엄마,아기,코로~ 2021-03-17 아기nn~
##  8 20210~ 중앙일보 임신중 백신 맞은 엄마 ~ "미국에서 임신 중 코~ 임신,백신,엄마,아기,코로~ 2021-03-17 는jx 
##  9 20210~ 중앙일보 임신중 백신 맞은 엄마 ~ "미국에서 임신 중 코~ 임신,백신,엄마,아기,코로~ 2021-03-17 코로나n~
## 10 20210~ 중앙일보 임신중 백신 맞은 엄마 ~ "미국에서 임신 중 코~ 임신,백신,엄마,아기,코로~ 2021-03-17 항체nn~
## 11 20210~ 중앙일보 임신중 백신 맞은 엄마 ~ "미국에서 임신 중 코~ 임신,백신,엄마,아기,코로~ 2021-03-17 갖vv 
## 12 20210~ 중앙일보 임신중 백신 맞은 엄마 ~ "미국에서 임신 중 코~ 임신,백신,엄마,아기,코로~ 2021-03-17 고ec 
## 13 20210~ 중앙일보 임신중 백신 맞은 엄마 ~ "미국에서 임신 중 코~ 임신,백신,엄마,아기,코로~ 2021-03-17 태어났v~
## 14 20210~ 중앙일보 임신중 백신 맞은 엄마 ~ "미국에서 임신 중 코~ 임신,백신,엄마,아기,코로~ 2021-03-17 다ec