2018 프로야구 기사로 본 이모저모

탐색적 데이터 분석(EDA)

Dr.Kevin 12/20/2018

2018년 프로야구는 SK 와이번즈의 우승으로 막을 내렸습니다. 그저 TV로만 가끔 관심 있는 경기를 시청하는 미지근한 팬의 한 명으로서, 올해 많은 고생을 한 프로야구 관계자분들께 감사하다는 말씀을 드리고 싶습니다.

평소 프로야구 기사와 댓글을 즐겨 읽기 때문에 그 안에 담긴 공통된 생각을 정리해보고 싶었습니다. 그동안 시간이 없어서 엄두를 내지 못했는데요. 이번에 관련 기사를 모두 모아 간단한 분석 몇 가지를 수행해봤습니다. 전체 작업 프로세스는 아래와 같습니다.

데이터 수집 프로세스 (전처리 과정 포함)

  1. 네이버 프로야구 최신뉴스 웹페이지에서 일자별로 등록된 뉴스의 링크를 수집합니다. 이 과정에서 뉴스등록일자, (네이버가 부여한) 언론사ID, (네이버가 부여한) 뉴스ID, 뉴스제목, 링크(url), 언론사명 등을 수집할 수 있습니다. 2018년 1월 1일부터 11월 30일까지 수집한 건수는 49,076건이었습니다만 이 숫자는 매일 바뀝니다. 그리고 무엇보다 같은 뉴스가 서로 다른 날짜에 등록되기도 합니다. 그래서 링크로 중복을 제거하니 42,390건으로 줄었습니다.

  2. 프로야구 뉴스 링크(url)를 모두 모았으면 해당 뉴스별로 본문, 반응, 댓글 등 3가지를 나눠서 수집할 수 있습니다. 본문을 수집하면 정규식을 활용하여 해당 기사를 작성한 기자의 이름이메일을 추출할 수 있는데요. 문제는 언론사별로 양식이 제각각이라 깔끔한 정규식으로는 해결이 되지 않아 지저분한 방식을 모두 동원해야 했습니다.

  3. 다음으로 반응 데이터를 수집하면 다음과 같은 5가지 숫자를 얻을 수 있습니다. 좋아요, 슬퍼요, 화나요, 팬이에요(힘내요), 후속기사(원해요), 그리고 이 5가지 숫자를 더한 총반응을 계산합니다. 이 반응 값을 기준으로 언론사별, 기자별, 구단별 다양한 현황을 살펴볼 수 있었습니다.

  4. 마지막으로 댓글 데이터를 수집할 수 있는데요. 댓글을 모두 모으니 5백만 건이 넘었습니다. 뉴스별로 댓글의 숫자를 계산했습니다. 댓글은 따로 텍스트 마이닝을 하려고 했는데요. 이번 발표에는 포함시키지 못했습니다. 일단 데이터량이 방대하기도 했고, 시간도 부족했습니다. 나중에 12월 뉴스 데이터까지 추가로 수집한 다음에 시간이 있으면 꼭 정리해보도록 하겠습니다.

  5. 이상의 4가지 데이터셋을 수집한 다음 하나의 커다란 마스터 데이터셋을 만들었습니다.[1] 마스터 데이터셋에는 링크와 뉴스 제목, 언론사명, 기자명, 이메일, 반응 데이터, 댓글 수, 그리고 관련 선수와 구단 등의 컬럼으로 구성되어 있습니다. 직접 분석을 해보시기 바랍니다.

2018 프로야구 기사로 살펴본 이모저모

지금부터 마스터 데이터를 가지고 여러 가지 그래프를 그려볼 예정입니다. 데이터를 먼저 불러와야 되겠죠?

# 마스터 데이터를 읽습니다. 
news <- readRDS(file = '../data/naver_baseball_news_2018.RDS')

# 데이터의 구조를 확인합니다. 
str(object = news)
## 'data.frame':    42390 obs. of  18 variables:
##  $ oid     : chr  "001" "001" "001" "001" ...
##  $ aid     : chr  "0009775779" "0009783524" "0009783968" "0009785759" ...
##  $ url     : chr  "https://sports.news.naver.com/kbaseball/news/read.nhn?oid=001&aid=0009775779" "https://sports.news.naver.com/kbaseball/news/read.nhn?oid=001&aid=0009783524" "https://sports.news.naver.com/kbaseball/news/read.nhn?oid=001&aid=0009783968" "https://sports.news.naver.com/kbaseball/news/read.nhn?oid=001&aid=0009785759" ...
##  $ date    : chr  "20180102" "20180101" "20180101" "20180103" ...
##  $ title   : chr  "kt 류택현·신명철·고영민 1군 코치로…최영필 합류" "정운찬 KBO 총재 시대…한국 야구 어떻게 달라질까" "정운찬 KBO총재 신년사 \"야구가 삶에 '힐링'이 될 수 있도록\"" "프로야구 스프링캠프 'D-30'…2018년 우승 향한 '위대한 도전'" ...
##  $ press   : chr  "연합뉴스" "연합뉴스" "연합뉴스" "연합뉴스" ...
##  $ email   : chr  "abbie@yna.co.kr" "cany9900@yna.co.kr" "hosu1@yna.co.kr" "cany9900@yna.co.kr" ...
##  $ rname   : chr  "최인영" "장현구" "배진남" "임헌정" ...
##  $ reporter: chr  "연합뉴스\n최인영" "연합뉴스\n장현구" "연합뉴스\n배진남" "연합뉴스\n임헌정" ...
##  $ angry   : num  2 13 21 5 96 3 0 2 0 12 ...
##  $ fan     : num  3 0 1 13 26 4 0 0 0 1 ...
##  $ like    : num  10 3 15 52 112 12 0 6 1 3 ...
##  $ sad     : num  0 0 0 3 4 1 0 0 0 0 ...
##  $ want    : num  1 1 0 5 7 2 0 0 0 4 ...
##  $ resp    : num  16 17 37 78 245 22 0 8 1 20 ...
##  $ comt    : num  27 42 78 84 532 55 0 7 8 27 ...
##  $ name    : chr  NA NA NA NA ...
##  $ team    : chr  "KT" NA NA NA ...

제가 불러온 마스터 데이터는 42390 행, 18 열을 갖는 데이터 프레임입니다.

다음으로 막대그래프에 적용할 나의 테마를 설정하면 준비가 완료됩니다.

# 나의 테마를 설정합니다. 
mytheme <- theme(
  plot.title = element_text(size = 14, face = 'bold', hjust = 0.5),
  axis.title.x = element_text(color = 'blue', size = 12, face = 'bold'),
  axis.title.y = element_text(color = '#993333', size = 12, face = 'bold'),
  axis.text.x = element_text(family = 'NanumGothic', size = 10, face = 'bold'),
  axis.text.y = element_text(family = 'NanumGothic', size = 10, face = 'bold'),
  axis.ticks.length = unit(0, 'cm'),
  panel.background = element_blank(),
  panel.grid = element_blank() )

조건별 뉴스의 건수와 비중

  1. 전체 뉴스 중 언론사 및 기자별 건수와 비중을 확인합니다. (올해 누가 열일했는지 알 수 있겠죠?)

  2. 상위 언론사에 소속된 기자별로 건수와 비중을 확인합니다.

  3. 뉴스 제목에 언급된 구단명과 선수명을 기준으로 가장 많이 언급된 구단과 선수를 확인합니다. (어떤 선수가 가장 많은 관심을 받았을까요?)

1. 언론사별 뉴스 기사 건수와 비중

# 필요한 패키지를 불러옵니다. 
library(tidyverse)
library(magrittr)
library(knitr)

지금부터 막대그래프를 그리는 사용자 정의 함수를 몇 가지 소개해드리겠습니다. 제가 부족한 부분이 많아서 함수 모양이 예쁘지 않으니 양해해주시기 바랍니다. 함수를 보시고 스스로 응용해서 사용할 수 있는 아이디어를 얻게 되신다면 기쁠 것 같습니다. 아래 함수는 최대 20개 언론사 또는 기자에 대해 작성한 뉴스 건수별로 내림차순 정렬을 한 다음 상위 20건만 보이도록 한 것입니다.

# 데이터프레임의 변수를 설정하면 해당 변수에 속한 값으로 막대그래프를 그립니다. 
# sub 인자에는 그래프 제목에 들어갈 부제를 넣어주면 됩니다. 
bargraphVar <- function(var, sub) {
  
  # var에 할당된 문자열을 이용하여 R객체의 값을 선택할 수 있도록 설정합니다. 
  var <- str_c('news', var, sep = '$') %>% parse(text = .) %>% eval()
  
  # 지정된 컬럼으로 빈도수를 갖는 데이터프레임을 생성합니다.
  tbl <- var %>% 
    table() %>% 
    sort(decreasing = TRUE) %>% 
    as.data.frame() %>% 
    set_colnames(value = c('name', 'freq'))
  
  # 빈도수에 콤마를 추가합니다. 
  tbl$freqn <- tbl$freq %>% format(big.mark = ',')
  
  # 전체 건수 대비 비중 컬럼을 생성합니다. 
  tbl$pcnt <- (tbl$freq / sum(x = tbl$freq) * 100) %>% 
    sprintf(fmt = '%.2f', x = .) %>% 
    str_pad(width = 4, side = 'right', pad = '0')
  
  # 막대그래프로 그립니다. 
  ggplot(
    data = head(x = tbl, n = 20L), 
    mapping = aes(
      x = reorder(x = name, X = freq),
      y = freq)) + 
    geom_bar(
      stat = 'identity', 
      fill = c(rep(x = 'gray80', times = 15), 
               rep(x = 'gray30', times = 5))) +
    geom_text(
      mapping = aes(label = str_c(freqn, ' (', pcnt, '%)')), 
      hjust = -0.1, 
      size = 4) + 
    labs(
      x = '',
      y = '뉴스 건수 (비중)',
      title = str_c('2018년 프로야구 기사 빈도수 (', sub, ')')) + 
    scale_y_continuous(limits = c(0, max(x = tbl$freq) * 1.2)) + 
    coord_flip() + 
    mytheme + 
    theme(axis.text.x = element_blank() )
  
}
# 언론사별로 뉴스 건수와 비중을 확인합니다. 
bargraphVar(var = 'press', sub = '언론사')

OSEN이라는 언론사의 7302건의 기사가 네이버에 소개되었습니다. 전체 프로야구 기사의 17.23%의 비중을 차지하는 군요. 그리고 각 4천여 건의 기사가 스포츠조선과 스포티비뉴스에서 작성되었습니다.

# 기자별로 뉴스 건수와 비중을 확인합니다. 
bargraphVar(var = 'reporter', sub = '기자')

기자 중에서는 OSEN의 이상학 기자가 근소한 차이로 1위를 차지했습니다. 그 뒤를 스포티비뉴스의 한희재 기자가 바짝 따라붙었네요. 11개월 동안 1400여 건의 기사를 작성했는데 그렇다면 하루에 4.2건 정도를 기사를 (주말도 없이) 매일 작성한 것입니다. 대단합니다!!

2. 뉴스 비중 상위 언론사별 소속 기자들이 작성한 뉴스의 건수와 비중

실력이 뛰어난 분석가는 같은 코드를 중복하지 않는다고 하지만 저는 아직 갈길이 멉니다. 바쁘다는 핑계로 앞서 작성한 사용자 정의 함수를 복사해서 일부만 수정했습니다. 예컨데 언론사별로 기자를 선택하는 부분이 다르고, 해당 언론사에서 프로야구 기사를 작성한 기자의 수가 최대 20명이 되도록 설정한 것입니다.

# 언론사별 기자가 작성한 뉴스의 건수와 비중을 확인하는 사용자 정의 함수를 생성합니다. 
bargraphPress <- function(press) {
  
  # var에 할당된 문자열을 이용하여 R객체의 값을 선택할 수 있도록 설정합니다. 
  var <- news$rname[news$press == press]
  
  # 지정된 컬럼으로 빈도수를 갖는 데이터프레임을 생성합니다.
  tbl <- var %>% 
    table() %>% 
    sort(decreasing = TRUE) %>% 
    as.data.frame() %>% 
    set_colnames(value = c('name', 'freq'))
  
  # 기자의 수가 최대 20명이 되도록 설정합니다. 
  n <- min(nrow(x = tbl), 20)
  
  # 빈도수에 콤마를 추가합니다. 
  tbl$freqn <- tbl$freq %>% format(big.mark = ',')
  
  # 전체 건수 대비 비중 컬럼을 생성합니다. 
  tbl$pcnt <- (tbl$freq / sum(x = tbl$freq) * 100) %>% 
    sprintf(fmt = '%.2f', x = .) %>% 
    str_pad(width = 4, side = 'right', pad = '0')
  
  # 막대그래프로 그립니다. 
  ggplot(
    data = head(x = tbl, n = n), 
    mapping = aes(
      x = reorder(x = name, X = freq),
      y = freq)) + 
    geom_bar(
      stat = 'identity', 
      fill = c(rep(x = 'gray80', times = n - 5), 
               rep(x = 'gray30', times = 5))) +
    geom_text(
      mapping = aes(label = str_c(freqn, ' (', pcnt, '%)')), 
      hjust = -0.1, 
      size = 4) + 
    labs(
      x = '',
      y = '뉴스 건수 (비중)',
      title = str_c('2018년 프로야구 기사 빈도수 (', press, ')')) + 
    scale_y_continuous(limits = c(0, max(x = tbl$freq) * 1.2)) + 
    coord_flip() + 
    mytheme + 
    theme(axis.text.x = element_blank() )
  
}
# 1위 언론사에는 어떤 기자들이 활동했을까요? 
bargraphPress(press = 'OSEN')

# 2위와 3위 언론사도 한 번 살펴보겠습니다. 
bargraphPress(press = '스포츠조선')

bargraphPress(press = '스포티비뉴스')

# 마지막으로 제가 가장 관심 있는 기자가 속한 언론사입니다. 
bargraphPress(press = '국민일보')

역시 국민일보의 에이스는 김영석 기자, 일명 영석이형이었습니다.

혹시 이밖에 다른 언론사 현황이 궁금하시면 직접 해보시기 바랍니다.

3. 뉴스 제목에서 언급된 구단 및 선수별 건수

# 뉴스 제목에서 언급된 구단별 뉴스 건수를 확인합니다. (중복 있음)
mostTeam <- news$team %>% 
  str_split(pattern = ',') %>% 
  unlist() %>% 
  table() %>% 
  sort(decreasing = TRUE) %>% 
  as.data.frame(stringsAsFactors = FALSE) %>% 
  set_colnames(c('구분', '빈도'))

kable(x = mostTeam, caption = '뉴스 제목에 가장 많이 언급된 구단 (역순)')
구분 빈도
한화 5424
LG 5231
두산 5181
롯데 4739
KIA 4429
넥센 3904
SK 3703
삼성 3308
NC 2201
KT 2153

올 한 해 가장 많은 기사로 언급된 구단은 바로 한화 이글즈였습니다. 가을야구에 진출한 것이 11년만이어서 일까요? 아무튼 대단한 사랑을 받았습니다.

# 뉴스 제목에서 언급된 선수별 뉴스 건수를 확인합니다.  (중복 있음)
mostName <- news$name %>% 
  str_split(pattern = ',') %>% 
  unlist() %>% 
  table() %>% 
  sort(decreasing = TRUE) %>% 
  as.data.frame(stringsAsFactors = FALSE) %>% 
  set_colnames(c('구분', '빈도'))

kable(x = mostName[1:10, ], caption = '뉴스 제목에 가장 많이 언급된 선수 (역순)')
구분 빈도
박병호 795
김재환 572
양현종 567
김현수 565
김광현 518
오지환 512
이정후 471
이대호 451
호잉 451
양의지 450

가장 많이 언급된 선수는 넥센 히어로즈박병호 선수였습니다. 제 예상과 달라서 조금 당황스러웠어요.

뉴스 기사의 반응 항목별 현황

이번에는 각 뉴스 기사마다 좋아요, 슬퍼요, 화나요, 팬이에요(힘내요), 후속기사(원해요) 등 다섯 가지 항목에 대해 팬들의 반응 데이터로 여러 가지를 살펴보겠습니다. 순서는 아래와 같습니다.

  1. 각 항목별 가장 높은 반응을 받은 상위 기사 제목을 출력해봅니다.

  2. 언론사 및 기자별로 작성한 뉴스 기사에 대한 평균 반응값을 확인하고 특징을 연구해봅니다. (이걸로 어워드를 드릴 수도)

  3. 구단 및 선수별로 관련 기사의 평균 반응을 확인합니다.

  4. 구단별 관련 기사 중 가장 높은 반응을 받은 기사의 제목을 출력해봅니다.

1. 각 항목별로 가장 높은 반응을 받은 기사 목록

# 반응 항목별로 가장 인기 있었던 기사를 확인하는 사용자 정의 함수를 생성합니다. 
checkResponse <- function(data, resp, top = 5, cap) {
  
  # data와 resp 인자를 문자로 받아 R 객체의 값을 불러오도록 설정합니다. 
  dtn <- deparse(expr = substitute(expr = data))
  var <- str_c(dtn, resp, sep = '$') %>% parse(text = .) %>% eval()
  
  # 가장 많은 표를 얻은 기사만 추출합니다.
  cols <- c('date', 'title', 'press', 'rname', 'resp', resp)
  article <- data[order(var, decreasing = TRUE), cols] %>% head(n = top)
  
  # 상위 기사를 출력합니다. 
  kable(x = article, row.names = FALSE, caption = cap)
  
}
# '좋아요'를 가장 많이 받은 기사 목록입니다.
checkResponse(data = news, resp = 'like', top = 10, cap = '좋아요를 가장 많이 받은 기사 목록')
date title press rname resp like
20180826 [AG] ‘실업 투수들에 1득점’ 한국, 대만전 충격패…金 적신호 OSEN 이상학 6940 4900
20181113 ‘한동민 결승포+김광현 SV’ SK, 두산 꺾고 8년 만에 KS 우승! 엑스포츠뉴스 조은혜 5303 4338
20180902 ‘양현종 호투-박병호 홈런’ 한국, 일본 꺾고 3회 연속 金! [AG] OSEN 이상학 9213 3387
20180607 두산 구단 발표 “이영하, 승부조작 제안받고 곧바로 신고” 스포츠조선 허상욱 3962 3317
20180914 선동열 야구감독 ‘청탁금지법’ 위반 혐의 권익위 신고당해 뉴스1 황기선 4351 3174
20181115 ‘KS 분패 후…’ 나 홀로 남아 팬들에 사인해 준 두산 선수 스타뉴스 김우종 3908 3125
20180523 ‘송광민 끝내기’ 한화의 재역전 드라마, 두산 꺾고 단독 2위 엑스포츠뉴스 조은혜 2909 2308
20181103 [PO 5차전]‘한동민 10회말 끝내기홈런’ SK, 혈투 끝 넥센 제압…6년만에 KS 진출 마이데일리 김진성 2854 2156
20180506 “사인해주세요” 외면 NO… 전부 다 해준 선수 ‘훈훈’ 스타뉴스 김우종 2444 2043
20180828 ‘대만이 이겼는데 한국사람들은 고맙다니?’ 어리둥절한 대만 언론 OSEN 서정환 2673 2000

놀랍게도 아시안게임 대만전 충격패 기사가 가장 많은 ‘좋아요’를 받았습니다. 당시 분위기로 짐작하면 충분히 가능할 일이죠.

# '슬퍼요'를 가장 많이 받은 기사 목록입니다.
checkResponse(data = news, resp = 'sad', top = 10, cap = '슬퍼요를 가장 많이 받은 기사 목록')
date title press rname resp sad
20181128 [이영미 人터뷰] 로저 버나디나, “다시 KBO리그에서 뛰고 싶다” 이영미 칼럼 이영미 3134 2208
20180604 NC 김경문 감독 사퇴, 유영준 단장 감독대행 마이데일리 윤욱재 2372 1562
20181014 힐만 감독, SK 재계약 고사… PS 끝으로 떠난다 OSEN 김태우 1803 1462
20181029 “팬 여러분 부탁드립니다” 임창용, 진실공방 속 심경고백 스포츠동아 장은상 2381 1419
20180925 “롯데, 이러면 가을야구 TV로 본다?” 연이은 불펜 방화 국민일보 김영석 1456 1304
20180619 “돌아가기 싫다” 로저스 개인 방송에서 눈물 스포티비뉴스 김건일 1204 922
20181125 ‘SK 작별’ 정경배 코치가 말한 힐만·최정·로맥, 그리고 심경 [일문일답] 스타뉴스 박수진 1103 902
20180606 ‘뼈가 조각나고도..’ 2루로 공 던진 로저스, 그리고 울었다 스타뉴스 김우종 1044 876
20181109 넥센 브리검, 동료들도 몰랐던 ‘딸을 잃은 통곡의 사연’ 스포티비뉴스 고유라 956 843
20180714 한화 떠나는 휠러의 미련, 타팀 이적 기다린다 OSEN 이상학 995 811

전 KIA 소속 외국인 타자였던 버나디나와 인터뷰한 기사가 가장 많은 ‘슬퍼요’를 받았습니다. 호타준족에 쇼맨쉽도 좋아서 그런지 많은 KIA 팬들이 아쉬움을 달래야 했습니다.

# '화나요'를 가장 많이 받은 기사 목록입니다.
checkResponse(data = news, resp = 'angry', top = 10, cap = '화나요를 가장 많이 받은 기사 목록')
date title press rname resp angry
20180902 ‘양현종 호투-박병호 홈런’ 한국, 일본 꺾고 3회 연속 金! [AG] OSEN 이상학 9213 5435
20181117 선동렬 사퇴시킨 손혜원 의원, 속 시원하십니까? OSEN 이상학 6179 5429
20180902 1년 전 오지환의 꿈과 선택, 이토록 비난 받을 일인가 OSEN 한용섭 6579 4703
20181119 두산 김재환, 금지약물 논란 딛고 최우수 선수 ‘우뚝’ 마이데일리 이후광 4488 3742
20180904 인민재판 받은 오지환, 야구인들의 안타까운 시선 [AG] OSEN 이상학 4122 3681
20180902 ‘금메달’ 오지환·박해민, 아시안게임은 해피엔딩 마이데일리 김진성 4334 3569
20181026 KIA-임창용 방출의 미스테리 일간스포츠 이형석 4323 3532
20180905 오지환 논란에 靑청원까지…“병역 혜택 취소하라” “오지환법 제정 촉구” 동아일보 김민성 3884 3229
20180114 안우진 “야구 잘하겠다”…뉘우침 없는 삐뚤어진 인식의 씁쓸함 MK스포츠 한이정 3709 3195
20180125 [공식발표] 넥센, ‘학교폭력’ 안우진에 ‘50G 출장정지’ 자체 중징계 스타뉴스 김우종 3267 2961

아시안게임 금메달 소식이 가장 많은 ‘화나요’를 받았다니 정말 슬프네요. 다시는 이런 일이 없어야 하겠습니다.

# '팬이에요'를 가장 많이 받은 기사 목록입니다.
checkResponse(data = news, resp = 'fan', top = 10, cap = '팬이에요(힘내요)를 가장 많이 받은 기사 목록')
date title press rname resp fan
20181113 ‘한동민 결승포+김광현 SV’ SK, 두산 꺾고 8년 만에 KS 우승! 엑스포츠뉴스 조은혜 5303 725
20181104 엑소 찬열, 한국시리즈 2차전 시구…애국가는 우주소녀 연정 연합뉴스 하남직 2291 479
20180523 ‘화요일의 남자’ 호잉 “부모님이 받은 박수, 나도 감격” 연합뉴스 이진욱 2529 454
20181115 ‘KS 분패 후…’ 나 홀로 남아 팬들에 사인해 준 두산 선수 스타뉴스 김우종 3908 453
20181104 [KS1] ‘한동민-박정권 투런 합창’ SK, 두산에 7-3 역전승…기선제압 OSEN 한용섭 2511 423
20180607 두산 구단 발표 “이영하, 승부조작 제안받고 곧바로 신고” 스포츠조선 허상욱 3962 422
20181111 [오!쎈 현장] “힐만!” 연호한 SK팬들, 가슴 뜨거웠던 굿바이 OSEN 서정환 2240 419
20180523 ‘송광민 끝내기’ 한화의 재역전 드라마, 두산 꺾고 단독 2위 엑스포츠뉴스 조은혜 2909 416
20181120 ‘삼성 밖에 모르는 바보’ 박한이, 영원한 삼성맨 택했다 OSEN 손찬익 2530 415
20181108 ‘켈리 완벽투+홈런 3방’ SK, 두산에 7-2 승.. 2승 1패 리드 [KS3] 스타뉴스 심혜진 2291 395

2018년 한국시리즈 우승은 SK 와이번즈가 차지했다는 뉴스가 ‘팬이에요’를 가장 많이 받았습니다. 나중에 보시면 알겠지만 샤이 SK팬이 커밍아웃을 한 것 같다는 생각이 드는 군요. ㅎㅎ

# '후속기사 원해요'를 가장 많이 받은 기사 목록입니다.
checkResponse(data = news, resp = 'want', top = 10, cap = '후속기사(원해요)를 가장 많이 받은 기사 목록')
date title press rname resp want
20180930 “오지환 사태, 책임져야 할 때” ‘감독’ 선동열 결단 필요 국민일보 김영석 4326 3337
20181008 “오지환 회의록 조작 혹은 실수?” 게임수·홈런순위 등 틀려 국민일보 김영석 2514 593
20181008 “LG 코치, ‘오지환 선발’ 절충했다?” 직접 나와 설명할 때 국민일보 김영석 1762 566
20180926 “이정후 부활…1위 ‘3리’차로 접근” 7게임, 3할7푼5리 국민일보 김영석 634 482
20181026 KIA-임창용 방출의 미스테리 일간스포츠 이형석 4323 450
20181026 KIA 임창용 방출에 팬들 ‘분노’…”헌신이 배신으로” 뉴스1 남성진 1859 341
20180923 “‘6연패’ LG, QS 1회…볼넷 남발” 차우찬, 75개 볼넷 1위 국민일보 김영석 510 290
20181007 “오지환, 유격수 2위…말이 되나?” 삼진·실책 ‘1위’ 빠져 있어 국민일보 김영석 2263 284
20181005 “비공개 전제 ‘오지환’ 자료 제출, 말이 되나?” 선동열, 전면 공개해야 국민일보 김영석 2545 276
20181001 “경기흐름 넘겨준 오지환 실책” 24개 압도적 1위 국민일보 김영석 2305 271

올해 프로야구 뉴스를 뜨겁게 달구었던 선수, 누군지 아시죠? 예상대로 줄줄이 사탕입니다. 정말 안타깝습니다.

2. 언론사 및 기자별 뉴스 평균 반응 확인

언론사 및 기자별로 작성한 뉴스의 평균 반응 데이터를 할당하면 해당 항목에 대해 막대그래프를 출력하는 사용자 정의 함수를 만듭니다. 이 과정을 통해 어떤 언론사에서 또는 어떤 기자가 작성한 뉴스가 평균적으로 얼마나 많은 좋아요화나요를 받았는지 확인할 수 있습니다. 그러니까 일종의 어그로를 끄는 언론사와 기자가 누군지 가늠해볼 수 있다고 할 것입니다. 이 부분은 왠지 떨리네요.

# 뉴스 평균 반응 데이터로 막대그래프를 그리는 사용자 정의 함수를 생성합니다. 
bargraphResp <- function(data, resp, top = 10) {
  
  # data와 resp 인자를 문자로 받아 R 객체의 값을 불러오도록 설정합니다. 
  dtn <- deparse(expr = substitute(expr = data))
  var <- eval(expr = parse(text = str_c(dtn, resp, sep = '$')))
  
  # 반응 항목의 위치를 지정합니다. 
  loc <- which(x = colnames(x = data) == resp)
  
  # 조건 내림차순으로 정렬하고 필요 컬럼만 추출합니다. 
  df <- data[order(x = var, decreasing = TRUE), c(1, loc)] %>% 
    head(n = top)
  
  # 컬럼명을 변경합니다. 
  colnames(x = df) <- c('구분' ,'평균')
  
  # 막대그래프에 출력할 컬럼을 추가합니다. 
  df$출력 <- df$평균 %>%
    sprintf(fmt = '%.1f', x = .) %>%
    str_pad(width = 3, side = 'right', pad = '0')
  
  # 막대그래프를 그립니다. 
  ggplot(
    data = df, 
    mapping = aes(
      x = reorder(x = 구분, X = -평균), 
      y = 평균)) + 
    geom_col(
      fill = c(rep(x = 'gray30', times = 5), 
               rep(x = 'gray80', times = top - 5))) + 
    geom_text(
      mapping = aes(label = 출력), 
      vjust = -0.5,
      size = 4) + 
    labs(
      x = '',
      y = '',
      title = str_c('관련 기사 평균 반응수 (', resp, ')')) + 
    mytheme 
  
}
# 언론사별로 뉴스 기사 평균 반응을 구합니다.
pressResp <- news %>% 
  dplyr::rename(언론사 = press) %>% 
  group_by(언론사) %>% 
  dplyr::summarise(
    기사건수 = n(), 
    총반응 = sum(x = resp),
    좋아요 = sum(x = like),
    슬퍼요 = sum(x = sad),
    화나요 = sum(x = angry),
    힘내요 = sum(x = fan),
    원해요 = sum(x = want)) %>% 
  dplyr::filter(기사건수 >= 100) %>% 
  mutate(
    총반응 = round(x = 총반응 / 기사건수, digits = 2L),
    좋아요 = round(x = 좋아요 / 기사건수, digits = 2L),
    슬퍼요 = round(x = 슬퍼요 / 기사건수, digits = 2L),
    화나요 = round(x = 화나요 / 기사건수, digits = 2L),
    힘내요 = round(x = 힘내요 / 기사건수, digits = 2L),
    원해요 = round(x = 원해요 / 기사건수, digits = 2L)) 
# '좋아요' 평균 반응이 가장 높은 언론사는 어디일까요? 
bargraphResp(data = pressResp, resp = '좋아요')

# 슬픈 기사는 어떤 언론사에서 가장 많이 작성했을까요?
bargraphResp(data = pressResp, resp = '슬퍼요')

# 프로야구 팬들을 자주 화나게 한 언론사는 어디일가요?
bargraphResp(data = pressResp, resp = '화나요')

# '팬이에요'라는 응원을 가장 많이 받은 언론사는? 
bargraphResp(data = pressResp, resp = '힘내요')

# 마지막으로 '후속기사'를 원하도록 궁금증을 유발한 언론사를 확인합니다. 
bargraphResp(data = pressResp, resp = '원해요')

국민일보가 각 항목에서 상위에 진입해 있는 경우가 많네요. 특히 ‘후속기사 원해요’는 압도적이네요. 혹시 영석이형 때문인가요?

# 기자별로 뉴스 기사 평균 반응을 구합니다. 
reprtResp <- news %>% 
  dplyr::rename(기자 = reporter) %>% 
  group_by(기자) %>% 
  dplyr::summarise(
    기사건수 = n(), 
    총반응 = sum(x = resp),
    좋아요 = sum(x = like),
    슬퍼요 = sum(x = sad),
    화나요 = sum(x = angry),
    힘내요 = sum(x = fan),
    원해요 = sum(x = want)) %>% 
  dplyr::filter(기사건수 >= 100) %>% 
  mutate(
    총반응 = round(x = 총반응 / 기사건수, digits = 2L),
    좋아요 = round(x = 좋아요 / 기사건수, digits = 2L),
    슬퍼요 = round(x = 슬퍼요 / 기사건수, digits = 2L),
    화나요 = round(x = 화나요 / 기사건수, digits = 2L),
    힘내요 = round(x = 힘내요 / 기사건수, digits = 2L),
    원해요 = round(x = 원해요 / 기사건수, digits = 2L)) 
# '좋아요'를 가장 많이 받은 기자입니다. 
bargraphResp(data = reprtResp, resp = '좋아요')

# '슬픈 기사' 전문 기자 명단입니다. 
bargraphResp(data = reprtResp, resp = '슬퍼요')

# 팬들을 화나게 한 건 뉴스인가요? 아니면 기자인가요?
bargraphResp(data = reprtResp, resp = '화나요')

# 팬들로부터 받는 응원은 기자를 춤추게 할까요?
bargraphResp(data = reprtResp, resp = '힘내요')

# 후속기사가 필요 없도록 한 번에 시원하게 부탁합니다! 
bargraphResp(data = reprtResp, resp = '원해요')

저는 이 부분에 대해서는 더이상 언급 안하렵니다. 알아서 판단하시기 바랍니다.

3. 뉴스 제목에 언급된 구단 및 선수별 평균 반응

기사 평균 반응 데이터로 살펴보는 마지막 항목은 뉴스 기사에 언급된 구단 및 선수별 관련 기사의 평균 반응입니다. 이것으로 각 구단과 선수에 대한 팬들의 반응을 엿볼 수 있을 것이라 기대됩니다. 막대그래프 그리는 함수는 이전에 만든 것을 사용하지만, 구단과 선수별 평균 반응을 구하는 함수를 별도로 만들어야 합니다.

# 구단 및 선수별 뉴스 기사의 평균 반응을 구하는 사용자 정의 함수를 생성합니다.
meanResp <- function(gb, gbNm) {
  
  if (gb == 'team') {
    dt <- news %>% dplyr::filter(str_detect(string = team, pattern = gbNm))
  } else if (gb == 'name') {
    dt <- news %>% dplyr::filter(str_detect(string = name, pattern = gbNm))
  }
    
  meanResp <- dt %>% 
    dplyr::summarise(
      기사건수 = n(), 
      총반응 = sum(x = resp),
      좋아요 = sum(x = like),
      슬퍼요 = sum(x = sad),
      화나요 = sum(x = angry),
      힘내요 = sum(x = fan),
      원해요 = sum(x = want)) %>% 
    dplyr::filter(기사건수 >= 100) %>% 
    mutate(
      총반응 = round(x = 총반응 / 기사건수, digits = 2L),
      좋아요 = round(x = 좋아요 / 기사건수, digits = 2L),
      슬퍼요 = round(x = 슬퍼요 / 기사건수, digits = 2L),
      화나요 = round(x = 화나요 / 기사건수, digits = 2L),
      힘내요 = round(x = 힘내요 / 기사건수, digits = 2L),
      원해요 = round(x = 원해요 / 기사건수, digits = 2L)) 
  
  meanResp <- cbind(구분 = gbNm, meanResp)  
  
  return(meanResp)
  
}

이 사용자 정의 함수를 사용하여 구단별 평균 반응을 구하겠습니다.

# 10개 구단별 뉴스의 평균 반응을 구합니다. 
teamResp <- data.frame()
teams <- mostTeam$구분

for (team in teams) {
  
  df <- meanResp(gb = 'team', gbNm = team)
  teamResp <- rbind(teamResp, df)
  
}
# '좋아요'를 가장 많이 받는 구단은 어디일까요? 
bargraphResp(data = teamResp, resp = '좋아요')

# 팬들을 슬프게한 구단을 알아봅시다. 
bargraphResp(data = teamResp, resp = '슬퍼요')

# 어느 구단인지 대충 짐작이 갑니다. 
bargraphResp(data = teamResp, resp = '화나요')

# 팬들의 사랑을 많이 받았으니 올해 행복했을 겁니다. 
bargraphResp(data = teamResp, resp = '힘내요')

# 후속기사가 필요한 구단이라면 의심스러운 구석이 많겠죠? 
bargraphResp(data = teamResp, resp = '원해요')

뉴스 제목에 언급된 선수별로도 같은 분석을 실시해보겠습니다.

# 선수별 뉴스의 평균 반응을 구합니다.
nameResp <- data.frame()
names <- mostName$구분[1:10]

for (name in names) {
  
  df <- meanResp(gb = 'name', gbNm = name)
  nameResp <- rbind(nameResp, df)
  
}
# 팬들이 가장 좋아했던 그 선수, 누굽니까?
bargraphResp(data = nameResp, resp = '좋아요')

# 부상 때문일까요? 무엇이 팬들을 슬프게 했을까요? 
bargraphResp(data = nameResp, resp = '슬퍼요')

# 이건 척하면 척이죠. 
bargraphResp(data = nameResp, resp = '화나요')

# 사랑과 격려를 한 몸에 받은 그대, 행복했나요? 
bargraphResp(data = nameResp, resp = '힘내요')

# 아~ 눈물납니다. 
bargraphResp(data = nameResp, resp = '원해요')

저는 이 내용에 대해서도 자세한 언급을 피하겠습니다.

4. 구단별 관련 기사 중 가장 많은 반응을 받은 뉴스 목록

# 구단 관련 뉴스 중 가장 인기 있었던 뉴스 제목을 추출하는 사용자 정의 함수를 생성합니다. 
teamResponse <- function(teamName, resp, top = 5, cap) {
  
  # 조건에 맞는 데이터셋 추출
  data <- news %>% dplyr::filter(team == teamName)
  
  # 조건으로 내림차순 정렬한 기사 출력 
  checkResponse(data = data, resp = resp, top = top, cap = cap)
  
}

올해 뜨거운 반응을 받은 한화와 LG 구단에 대해서 살펴보겠습니다.

먼저 한화 구단입니다.

# '좋아요'를 가장 많이 받는 한화 구단 관련 상위 뉴스 
teamResponse(teamName = '한화', resp = 'like', top = 10, cap = '좋아요를 가장 많이 받은 한화 구단 관련 기사')
date title press rname resp like
20180523 ‘화요일의 남자’ 호잉 “부모님이 받은 박수, 나도 감격” 연합뉴스 이진욱 2529 1997
20180415 이용규 심경 고백 “혼자 한 욕설, 잘못됐다. 하지만…” 스포티비뉴스 곽혜미 2711 1987
20180925 ‘어느 한화 레전드가 어린 팬들에 한 만행(?)’, 진실은 [인터뷰] 스타뉴스 김우종 2174 1791
20180416 이게 실화입니까, ‘단독 3위’ 한화-불펜 ERA 1위 OSEN 이상학 2149 1658
20180526 [이영미 人터뷰] 한화 팬들의 호잉 사랑, 부모의 무한 감동 이영미 칼럼 이영미 1835 1556
20181016 한용덕 감독의 포용, 송광민 용서했다…PS 합류 OSEN 이상학 1786 1299
20180218 [오피셜] 한화, FA 정근우와 2+1년 총액 35억원 계약 완료 스타뉴스 심혜진 1708 1255
20181027 떠나는 호잉, “최강 한화팬들과 함께해 행복했다” OSEN 이상학 1750 1207
20180514 “다친 아들에게 한마디만” 한화 선수에게 부탁하자 생긴 일(사진) 국민일보 신은정 1337 1167
20181019 “미안해요” 반복한 한화 직원들…대전구장은 11년 만에 폭발 직전 스포츠경향 이석우 1411 1073
# '슬퍼요'를 가장 많이 받는 한화 구단 관련 상위 뉴스 
teamResponse(teamName = '한화', resp = 'sad', top = 10, cap = '슬퍼요를 가장 많이 받은 한화 구단 관련 기사')
date title press rname resp sad
20180714 한화 떠나는 휠러의 미련, 타팀 이적 기다린다 OSEN 이상학 995 811
20180503 한화, 외야수 장민석 웨이버 공시 신청 OSEN 이상학 599 417
20180529 김태균, 종아리 근육 파열…한화 또 부상 악재 OSEN 이상학 774 369
20180713 ‘유종의 미’ 휠러, 한화 교체 작업 마무리 단계 OSEN 이상학 537 354
20180729 한화 헤일, 고열 증세로 등판 불발…김범수로 교체 엑스포츠뉴스 채정연 570 333
20180506 [오!쎈 인터뷰] ‘웨이버’ 장민석, “한화에 죄송, 야구 포기 못해” OSEN 이상학 468 306
20180507 [SPO 톡] 정근우 “지금 내가 말 앞세울 때 아니다” 스포티비뉴스 한희재 665 305
20180523 ‘헤드샷 사구’ 최재훈, 어지럼증+목 근육 경직 증상으로 교체 스타뉴스 심혜진 848 303
20181118 [단독]배영수 한화와 결별, 현역 연장 택했다…박정진도 떠난다 스포티비뉴스 한희재 507 278
20180525 한화 이동걸 선수 은퇴 “공 던질 몸상태 아냐” 조이뉴스24 류한준 316 244
# '화나요'를 가장 많이 받는 한화 구단 관련 상위 뉴스 
teamResponse(teamName = '한화', resp = 'angry', top = 10, cap = '화나요를 가장 많이 받은 한화 구단 관련 기사')
date title press rname resp angry
20180524 이용철 편파해설 논란…과거에도 한화 비판 데일리안 NA 2446 2181
20180414 KBO “욕설 퇴장 이용규, 상벌위 회부 검토” OSEN 한용섭 1931 1544
20180520 [집중분석]좁디좁은 주심ST존 버텨낸 샘슨, 성장했다! 스포츠조선 김경민 1353 1125
20180417 [오피셜] KBO, 이용규 퇴장 추가 징계 없다…엄중 경고 OSEN 한용섭 1144 880
20181014 “말 안들어서”…교제 여성 폭행한 전 한화이글스 엄태용’ 벌금형’ 뉴스1 김태진 946 807
20180623 한화, ‘폭행혐의’ 포수 엄태용 전격 퇴단 ‘엄단’ OSEN 이상학 1122 781
20180329 김태균 만루 ‘싹쓸이 실책’ 프로에서 나와도 되나 스포츠조선 고재완 1023 766
20180304 ‘前 한화’ 김원석, “팬들께 정말 죄송, 야구 포기 못해” OSEN 이상학 930 741
20180414 한화 이용규, S존 어필하다 즉각 퇴장 처분 OSEN 이상학 849 739
20180414 [오!쎈 현장] 심판진이 밝힌 이용규 퇴장 사유는 ‘욕설’ OSEN 이상학 953 739
# '팬이에요'를 가장 많이 받는 한화 구단 관련 상위 뉴스 
teamResponse(teamName = '한화', resp = 'fan', top = 10, cap = '팬이에요(힘내요)를 가장 많이 받은 한화 구단 관련 기사')
date title press rname resp fan
20180523 ‘화요일의 남자’ 호잉 “부모님이 받은 박수, 나도 감격” 연합뉴스 이진욱 2529 454
20180416 이게 실화입니까, ‘단독 3위’ 한화-불펜 ERA 1위 OSEN 이상학 2149 304
20180925 ‘어느 한화 레전드가 어린 팬들에 한 만행(?)’, 진실은 [인터뷰] 스타뉴스 김우종 2174 295
20181027 떠나는 호잉, “최강 한화팬들과 함께해 행복했다” OSEN 이상학 1750 279
20180509 [IS 인터뷰] ‘OPS 전체 1위’ 호잉, “한국행 후회는 없다. 오길 잘했다” 일간스포츠 배중현 1171 232
20180526 [이영미 人터뷰] 한화 팬들의 호잉 사랑, 부모의 무한 감동 이영미 칼럼 이영미 1835 215
20180514 “이 세상에 그 누가 부러울까요” 한화팬은 지금 행복합니다 스포츠경향 NA 1238 200
20180727 ‘한화 팬’ 박보영, ‘이글스파크’서 포착…“야구에 빠졌다” 동아일보 NA 930 198
20180415 한화, 1079일만에 단독 3위…2006년 이후 최단 10승 OSEN 이상학 1153 193
20180512 “젠틀맨 그 자체” 호잉이 사랑받는 또 다른 이유 OSEN 이상학 911 192
# '후속기사 원해요'를 가장 많이 받는 한화 구단 관련 상위 뉴스 
teamResponse(teamName = '한화', resp = 'want', top = 10, cap = '후속기사(원해요)를 가장 많이 받은 한화 구단 관련 기사')
date title press rname resp want
20180524 이용철 편파해설 논란…과거에도 한화 비판 데일리안 NA 2446 96
20180415 이용규 심경 고백 “혼자 한 욕설, 잘못됐다. 하지만…” 스포티비뉴스 곽혜미 2711 87
20180414 KBO “욕설 퇴장 이용규, 상벌위 회부 검토” OSEN 한용섭 1931 72
20180520 [집중분석]좁디좁은 주심ST존 버텨낸 샘슨, 성장했다! 스포츠조선 김경민 1353 64
20180416 이게 실화입니까, ‘단독 3위’ 한화-불펜 ERA 1위 OSEN 이상학 2149 56
20180117 한화 2년 제안에 막힌 정근우 협상, 기한도 없다 OSEN 이상학 557 54
20181003 송광민 전격 2군행, 흥분한 한용덕 감독 “팀을 위한 조치” 스포츠조선 허상욱 1050 52
20181027 떠나는 호잉, “최강 한화팬들과 함께해 행복했다” OSEN 이상학 1750 52
20180526 [이영미 人터뷰] 한화 팬들의 호잉 사랑, 부모의 무한 감동 이영미 칼럼 이영미 1835 48
20180122 [핫포커스]정근우-한화 꼬여버린 FA협상, 앙금은 남기지 말아야 스포츠조선 박재호 634 47

다음으로 LG 구단입니다.

# '좋아요'를 가장 많이 받는 LG 구단 관련 상위 뉴스 
teamResponse(teamName = 'LG', resp = 'like', top = 10, cap = '좋아요를 가장 많이 받은 LG 구단 관련 기사')
date title press rname resp like
20181001 “경기흐름 넘겨준 오지환 실책” 24개 압도적 1위 국민일보 김영석 2305 1756
20180902 1년 전 오지환의 꿈과 선택, 이토록 비난 받을 일인가 OSEN 한용섭 6579 1656
20180930 [오!쎈 승부처] ‘엉성한 수비+병살 행진’ LG, 제 발로 들어간 17연패 터널 OSEN 이종서 1545 1259
20181007 “오지환, 유격수 2위…말이 되나?” 삼진·실책 ‘1위’ 빠져 있어 국민일보 김영석 2263 1257
20180929 선동열 감독, 오지환 문제로 국회에 출석하나? MK스포츠 강대호 1477 1174
20180812 ‘교체 검토’ 논란의 오지환 대표팀 낙마? 데일리안 NA 1489 1169
20180930 “오지환, 삼진 140개 채웠다” 역대 시즌 5위 기록 국민일보 김영석 1446 1076
20180507 ‘200여명’ 전부 다 사인해주고 떠난 LG 선수 ‘따뜻’ 스타뉴스 김우종 1134 915
20180327 변함없는 LG의 지는 패턴, 그래서 더 슬픈 개막 2연패 마이데일리 윤욱재 1709 910
20181008 이제 산술적 가능성도 0%..LG, 2년 연속 PS 탈락 확정 스타뉴스 한동훈 1103 907
# '슬퍼요'를 가장 많이 받는 LG 구단 관련 상위 뉴스 
teamResponse(teamName = 'LG', resp = 'sad', top = 10, cap = '슬퍼요를 가장 많이 받은 LG 구단 관련 기사')
date title press rname resp sad
20180520 LG “구본무 회장 별세로 응원단 앰프 자제” 마이데일리 윤욱재 645 516
20180919 [단독] ‘국대ㆍLG’ 일으킨 봉중근 재활 중단 은퇴한다 한국일보 성환희 537 426
20180928 [공식은퇴] 봉중근 “멀리 떠나는 것 아냐..LG서 큰 꿈 이룰 것” (일문일답) 스타뉴스 한동훈 382 246
20180520 LG 구본무 회장 별세…잠실구장도 추모 물결 스포츠동아 김종원 241 215
20180520 LG 트윈스 응원전 취소…야구를 사랑했던 구본무 회장 추모 노컷뉴스 박세운 235 214
20181127 LG 이상훈 코치 자진사퇴, 차명석 단장 “47번 비워놓고 기다릴 것” 스포츠서울 최승섭 369 212
20181014 [오피셜] 차우찬, 팔꿈치 뼛조각 제거 수술 받는다 OSEN 한용섭 364 175
20181126 니느님·굴비 소사…이제는 헤어져야 할 시간 경향신문 이용균 194 163
20180521 봉인된 롤렉스와 우승주…LG의 과제가 된 구본무 회장의 유산 뉴스1 박지혜 191 161
20180421 LG 박용택, 어지러움 느껴 3회 대타 교체 스타뉴스 한동훈 200 155
# '화나요'를 가장 많이 받는 LG 구단 관련 상위 뉴스 
teamResponse(teamName = 'LG', resp = 'angry', top = 10, cap = '화나요를 가장 많이 받은 LG 구단 관련 기사')
date title press rname resp angry
20180902 1년 전 오지환의 꿈과 선택, 이토록 비난 받을 일인가 OSEN 한용섭 6579 4703
20180904 인민재판 받은 오지환, 야구인들의 안타까운 시선 [AG] OSEN 이상학 4122 3681
20180902 ‘금메달’ 오지환·박해민, 아시안게임은 해피엔딩 마이데일리 김진성 4334 3569
20180905 오지환 논란에 靑청원까지…“병역 혜택 취소하라” “오지환법 제정 촉구” 동아일보 김민성 3884 3229
20180907 [엑’s 현장] 맹타 휘두른 오지환 “부모님과 팬들께 죄송하다”(일문일답) 엑스포츠뉴스 채정연 3805 2922
20180419 LG 트윈스, 적나라한 사인 훔치기?…더그아웃 ‘커닝페이퍼’ 뉴시스 류형근 3071 2776
20181005 KBO 회의록 살펴보니 “오지환, 김하성 이은 유격수 2위” 뉴스엔 안형준 3286 2719
20180904 경직된 선동열호, 정적 깬 “오지환 파이팅!” 스포티비뉴스 곽혜미 3030 2555
20180613 ‘오지환 싫다, 금메달 NO’ 저주 속에 출범하는 선동열호 뉴스엔 안형준 2971 2539
20180907 “죄송하다”는 오지환의 사과, 팬심이 달래질까 OSEN 한용섭 2931 2439
# '팬이에요'를 가장 많이 받는 LG 구단 관련 상위 뉴스 
teamResponse(teamName = 'LG', resp = 'fan', top = 10, cap = '팬이에요(힘내요)를 가장 많이 받은 LG 구단 관련 기사')
date title press rname resp fan
20180623 ‘통산 2,319안타’ LG 박용택, 양준혁 넘어 KBO 대기록 달성 스포티비뉴스 한희재 863 183
20180930 [오!쎈 승부처] ‘엉성한 수비+병살 행진’ LG, 제 발로 들어간 17연패 터널 OSEN 이종서 1545 165
20180923 “‘6연패’ LG, QS 1회…볼넷 남발” 차우찬, 75개 볼넷 1위 국민일보 김영석 510 145
20180620 [S포트라이트] ‘규정타석 진입’ 이형종, 단숨에 타율 3위 등극 STN 스포츠 윤승재 623 143
20180606 ‘운명의 일주일’ 오지환, 4안타+기민한 주루로 매력 어필 연합뉴스 김인철 753 136
20180617 1000G 4출루 오지환 “지도자 분들께 감사…앞으로 더 좋은 모습 약속” 스포츠서울 배우근 1165 132
20181019 [오피셜] LG, 차명석 신임 단장 임명…코칭스태프도 개편 OSEN 한용섭 1111 131
20180803 [오!쎈 현장분석] ‘13연패’ LG, 깨지 못한 ‘곰의 악몽’ OSEN 이종서 983 128
20180610 평균수준이라던 LG 윌슨, 활약상은 톱클래스 스포츠조선 최문영 637 122
20180618 5득점-4타점 합작 이형종-오지환, 3연승 LG 3위 도약 중앙일보 김효경 613 116
# '후속기사 원해요'를 가장 많이 받는 LG 구단 관련 상위 뉴스 
teamResponse(teamName = 'LG', resp = 'want', top = 10, cap = '후속기사(원해요)를 가장 많이 받은 LG 구단 관련 기사')
date title press rname resp want
20180930 “오지환 사태, 책임져야 할 때” ‘감독’ 선동열 결단 필요 국민일보 김영석 4326 3337
20181008 “오지환 회의록 조작 혹은 실수?” 게임수·홈런순위 등 틀려 국민일보 김영석 2514 593
20181008 “LG 코치, ‘오지환 선발’ 절충했다?” 직접 나와 설명할 때 국민일보 김영석 1762 566
20180923 “‘6연패’ LG, QS 1회…볼넷 남발” 차우찬, 75개 볼넷 1위 국민일보 김영석 510 290
20181007 “오지환, 유격수 2위…말이 되나?” 삼진·실책 ‘1위’ 빠져 있어 국민일보 김영석 2263 284
20181005 “비공개 전제 ‘오지환’ 자료 제출, 말이 되나?” 선동열, 전면 공개해야 국민일보 김영석 2545 276
20181001 “경기흐름 넘겨준 오지환 실책” 24개 압도적 1위 국민일보 김영석 2305 271
20180930 “오지환, 삼진 140개 채웠다” 역대 시즌 5위 기록 국민일보 김영석 1446 197
20180419 LG 트윈스, 적나라한 사인 훔치기?…더그아웃 ‘커닝페이퍼’ 뉴시스 류형근 3071 150
20181003 “오지환에 가려져 있는 박해민” 제대로된 말을 할 때다 국민일보 김영석 1500 105

이상으로 2018 프로야구 기사로 본 이모저모 1부를 마칩니다.

[1] 마스터 데이터셋은 다운로드 하실 수 있도록 링크를 연결해놨습니다. 다만 크롤링과 전처리에 사용한 코드를 공유해드리지 못하는 점 양해 바랍니다. 대신 직접 수행하실 때 궁금한 점을 질문하시면 제가 성심성의껏 답변드리겠습니다.

Written on December 21, 2018