Check words: “украин”, “крым”, “сири”

Make sure that we are catching the right words

tidyCorpusByDate <- readRDS(file = "2017-03-10 - 1tvRu - tidyCorpusByDate.rds")
terms <- c("украин", "крым", "сири")

# make sure that we are catching the right words

wordFreq <- tidyCorpusByDate %>% filter(stringr::str_detect(pattern = paste(terms, collapse = "|"), string = word)) %>% group_by(word) %>% count(word, sort = TRUE) %>% ungroup()
kable(wordFreq)
word nn
украины 1343
украине 1154
сирии 1118
украинской 911
украинских 904
украинские 903
украина 859
украинского 827
украинский 711
украину 709
украинская 677
крыму 631
сирийской 627
крыма 573
крым 510
украинским 506
украиной 498
сирийского 456
сирию 443
украинскими 424
сирийских 397
украинском 382
сирийские 370
украинцев 364
украинскую 350
украинцы 343
сирийская 324
украинское 290
сирийский 288
сирия 268
украинскому 241
сирийском 216
сирийским 210
сирией 208
сирийскую 187
крымского 181
сирийское 164
сирийскому 158
крымских 147
крымский 146
крымчан 144
крымской 141
сирийцев 135
крымском 121
сирийскими 118
крымские 117
украинцам 117
крымчане 113
сирийцы 110
крымом 108
украинец 82
крымско 75
сирийско 70
крымске 59
мокрым 58
украински 51
межсирийских 49
украинцами 47
крымская 45
крымчанам 45
крымска 42
украинка 41
крымским 40
крымск 39
сирийцам 39
сириец 38
крыме 37
украинца 34
крымскому 31
всеукраинского 26
сирийцами 25
крымскими 24
сириза 24
крымчанами 23
крымское 22
межсирийские 22
сириус 21
внутриукраинского 20
крымскую 20
украинистики 20
сирийца 19
межсирийский 18
украинско 18
всеукраинский 17
межсирийского 17
украино 16
внутрисирийского 13
крымчанин 13
украинки 13
крымску 12
крымчанка 11
украинку 10
антиукраинской 9
общекрымского 9
украинцем 9
украинцу 9
крыминформ 8
украинке 8
украинкой 8
внутриукраинский 7
всеукраинской 7
крымчанина 7
сиризы 7
украинок 7
антисирийской 6
внутрисирийский 6
межсирийском 6
сириуса 6
антиукраинскую 5
ассирийской 5
всекрымского 5
всеукраинском 5
крымнаш 5
межсирийским 5
мокрыми 5
сирийцах 5
сирийцем 5
антиукраинские 4
антиукраинское 4
межсирийскому 4
проукраинских 4
сири 4
сириль 4
украинизацию 4
антиукраинская 3
антиукраински 3
антиукраинским 3
антиукраинскими 3
внутриукраинскими 3
внутриукраинских 3
проукраинские 3
сиригу 3
сириусе 3
украинцах 3
антисирийскую 2
антиукраинский 2
антиукраинских 2
ассирийские 2
ассирийских 2
внутриукраинская 2
внутриукраинском 2
всеукраинская 2
всеукраинское 2
всеукраинскую 2
крымов 2
крымскотатарский 2
минкрым 2
минкрыма 2
нашеукраинцы 2
неукраинский 2
неукраинцев 2
общекрымский 2
общекрымском 2
общеукраинский 2
общеукраинского 2
осирис 2
осириса 2
проукраинская 2
проукраински 2
проукраинский 2
проукраинской 2
сиризе 2
сирийцу 2
украинизации 2
украинизация 2
украинками 2
украинство 2
антисирийских 1
антисирийском 1
антиукраинского 1
антиукраинцем 1
ассирии 1
ассирийская 1
ассирийский 1
ассирийца 1
ассирийцев 1
ассирийцы 1
вещдоки.украина 1
внутрисирийских 1
внутриукраинским 1
внутриукраинское 1
внутриукраинской 1
внутриукраинскому 1
всекрымский 1
всеукраинских 1
всеукраинскому 1
вукраинцы 1
евроукраинские 1
западноукраинский 1
западноукраинских 1
западноукраинского 1
западноукраинском 1
крашенинникова.украинские 1
крымаэронавигация 1
крымкина 1
крымова 1
крымроссиянавсегда 1
крымски 1
крымскотатарском 1
крымтелеком 1
крымчакам 1
крымчаке 1
крымчаков 1
крымчанах 1
крымчанкам 1
крымчанки 1
крымчацкий 1
крымчацком 1
крымчнам 1
межсирийскими 1
межсирийское 1
межсирийской 1
накукраины 1
нацбанкукраины 1
недоукраинсцами 1
недоукраинцев 1
неукраинцу 1
общекрымскому 1
общесирийский 1
общесирийского 1
общеукраинских 1
общеукраинское 1
окусири 1
посткрымский 1
просирийских 1
проукраинским 1
россиякрымнавсегда 1
свободеукраинская 1
сириан 1
сиризу 1
сириии 1
сирийка 1
сирийки 1
сирийскиой 1
сирилло 1
сирило 1
сирин 1
сириндон 1
сирино 1
сирио 1
сириского 1
сирию.в 1
сирию.перед 1
столицы.украина 1
сукраинцами 1
украин 1
украинаская 1
украине.якобы 1
украинизировать 1
украинизироваться 1
украинизируется 1
украинкам 1
украинкам.украинские 1
украиной:четыре 1
украиноматерящих 1
украиноязычное 1
украиноязычными 1
украиноязычных 1
украинсккому 1
украинскости 1
украинскость 1
украинскьку 1
украинства 1
украины.за 1
украины.но 1
украины.о 1
украины.так 1
украины.это 1
украины2 1
украиныпётр 1
южноукраинской 1

Words to exclude

exclude <- c("сириза", "сиризы", "сиризе", "сиризу", "сириус", "сириуса", "ассирийской", "ассирии", "ассирийская",  "ассирийский",  "ассирийца", "ассирийцев", "ассирийцы", "мокрыми", "сири", "ириль", "осирис", "осириса", "окусири", "сириндон", "сирино", "сирин", "сирилло", "сирило")
print(exclude)
##  [1] "сириза"      "сиризы"      "сиризе"      "сиризу"      "сириус"     
##  [6] "сириуса"     "ассирийской" "ассирии"     "ассирийская" "ассирийский"
## [11] "ассирийца"   "ассирийцев"  "ассирийцы"   "мокрыми"     "сири"       
## [16] "ириль"       "осирис"      "осириса"     "окусири"     "сириндон"   
## [21] "сирино"      "сирин"       "сирилло"     "сирило"

Calculate rolling averages

freq <- tidyCorpusByDate %>% filter(stringr::str_detect(pattern = paste(terms, collapse = "|"), string = word)) %>% filter(!is.element(word, exclude)) %>% mutate(word = stringr::str_extract(pattern = paste(terms, collapse = "|"), string = word)) %>% group_by(word, date) %>% mutate(n = sum(n)) %>% ungroup() %>%  distinct() %>% full_join(tibble(date = seq.Date(from = as.Date("2012-05-07"), to = as.Date("2017-02-28"), by = "day")), by = "date") %>% arrange(date) %>% complete(date, word, fill = list(n = 0)) %>% group_by(word) %>%
    mutate(
        nRoll7 = zoo::rollmean(x = n, k = 7, align = "center", fill = NA),
        nRoll30 = zoo::rollmean(x = n, k = 30, align = "center", fill = NA),
        nRoll90 = zoo::rollmean(x = n, k = 90, align = "center", fill = NA)) %>% ungroup()
freq
## # A tibble: 5,277 × 6
##          date   word     n nRoll7 nRoll30 nRoll90
##        <date>  <chr> <dbl>  <dbl>   <dbl>   <dbl>
## 1  2012-05-07   крым     0     NA      NA      NA
## 2  2012-05-07   сири     5     NA      NA      NA
## 3  2012-05-07 украин     0     NA      NA      NA
## 4  2012-05-08   крым     0     NA      NA      NA
## 5  2012-05-08   сири     1     NA      NA      NA
## 6  2012-05-08 украин     5     NA      NA      NA
## 7  2012-05-09   крым     0     NA      NA      NA
## 8  2012-05-09   сири     0     NA      NA      NA
## 9  2012-05-09 украин     2     NA      NA      NA
## 10 2012-05-10   крым     0      0      NA      NA
## # ... with 5,267 more rows
write.xlsx(x = freq, file = "UkrSyria1tv.xlsx")

Example graph, 90 days rolling average

ggplot2::ggplot(data = freq, mapping = ggplot2::aes(x = date, y = nRoll90, colour = word)) +
    ggplot2::geom_line(size = 1) +
    scale_y_continuous(name = "") +
    scale_x_date(name = "") +
    expand_limits(y = 0) +
    theme_minimal() +
    labs(title = "Daily mentions of 'Ukraine', 'Crimea' and 'Syria' on Pervy Kanal", subtitle = "From beginning of Putin's presidency on 7 May 2012 to 1 March 2017", caption = "Calculated on a 90-days rolling average for clarity") +
    theme(legend.title=element_blank()) 

  #  geom_text(vjust=-0.5)

hchart(object = freq, type = "line", mapping = hcaes(x = date, y = round(nRoll90), group = word)) %>%
    hc_title(text = "Daily mentions of 'Ukraine', 'Crimea' and 'Syria' on Pervy Kanal") %>%
    hc_subtitle(text = "From beginning of Putin's presidency on 7 May 2012 to 1 March 2017") %>%
    hc_credits(enabled = TRUE, text = "*90 days rolling average") %>%
    hc_exporting(enabled = TRUE) %>%
    hc_xAxis(title = "") %>%
    hc_yAxis(title = "")

Example graph, 30 days rolling average

ggplot2::ggplot(data = freq, mapping = ggplot2::aes(x = date, y = nRoll30, colour = word)) +
    ggplot2::geom_line(size = 1) +
    scale_y_continuous(name = "") +
    scale_x_date(name = "") +
    expand_limits(y = 0) +
    theme_minimal() +
    labs(title = "Daily mentions of 'Ukraine', 'Crimea' and 'Syria' on Pervy Kanal", subtitle = "From beginning of Putin's presidency on 7 May 2012 to 1 March 2017", caption = "Calculated on a 30-days rolling average for clarity") +
    theme(legend.title=element_blank()) 

  #  geom_text(vjust=-0.5)

hchart(object = freq, type = "line", mapping = hcaes(x = date, y = round(nRoll30), group = word)) %>%
    hc_title(text = "Daily mentions of 'Ukraine', 'Crimea' and 'Syria' on Pervy Kanal") %>%
    hc_subtitle(text = "From beginning of Putin's presidency on 7 May 2012 to 1 March 2017") %>%
    hc_credits(enabled = TRUE, text = "*30 days rolling average") %>%
    hc_exporting(enabled = TRUE) %>%
    hc_xAxis(title = "") %>%
    hc_yAxis(title = "")

Number of articles including reference to Ukraine

tidyCorpus <- readRDS(file = "2017-03-10 - 1tvRu - tidyCorpus.rds")

articlesMentioningUkraine <- 
    tidyCorpus %>% mutate(date = as.Date(date)) %>%  filter(is.na(date)==FALSE) %>%  arrange(date) %>% mutate(MentionsUkraine = stringr::str_detect(pattern = "украин", string = word)) %>% group_by(id) %>% mutate(MentionsUkraine = if_else(sum(MentionsUkraine)>0, true = TRUE, false = FALSE)) %>% select(id, date, MentionsUkraine) %>% ungroup() %>%  distinct() %>% group_by(date) %>% mutate(nArticlePerDay = n(), nArticleUkraine = sum(MentionsUkraine)) %>% ungroup %>% select(-id, -MentionsUkraine) %>%  distinct() %>% mutate(Share=nArticleUkraine/nArticlePerDay)

write.xlsx(x = articlesMentioningUkraine, file = "articlesMentioningUkraineDaily.xlsx")


articlesMentioningUkrainePerMonth <- articlesMentioningUkraine %>% mutate(date = cut(date, breaks = "month")) %>% group_by(date) %>% transmute(nArticlePerMonth = sum(nArticlePerDay), nArticleUkrainePerMonth = sum(nArticleUkraine)) %>% mutate(share = nArticleUkrainePerMonth/nArticlePerMonth) %>% ungroup() %>% distinct() %>% arrange(date)

write.xlsx(x = articlesMentioningUkrainePerMonth, file = "articlesMentioningUkraineMonthly.xlsx")
library("scales")
ggplot(data = articlesMentioningUkrainePerMonth, mapping = aes(x=date, y = share)) +geom_col() + theme_minimal() +theme(axis.text.x = element_text(angle = 90, hjust = 1)) + scale_y_continuous(name = "", labels = percent) + scale_x_discrete(name = "") + labs(title = "Share of articles including reference to Ukraine") 

Total number of articles

# max(tidyCorpus$date, na.rm = TRUE)
# min(tidyCorpus$date, na.rm = TRUE)

length(unique(tidyCorpus$id))
## [1] 115369

Check words: “днр”, “лнр”, etc.

Make sure that we are catching the right words

tidyCorpusByDate <- readRDS(file = "2017-03-10 - 1tvRu - tidyCorpusByDate.rds")
terms <- c("днр", "лнр", "донбас", "донецк","луганск", "новоросси")

# make sure that we are catching the right words

wordFreq <- tidyCorpusByDate %>% filter(stringr::str_detect(pattern = paste(terms, collapse = "|"), string = word)) %>% group_by(word) %>% count(word, sort = TRUE) %>% ungroup()
kable(wordFreq)
word nn
донбассе 636
донецкой 629
донбасса 609
донецка 564
днр 548
донецке 544
луганской 535
донецк 431
лнр 377
донбасс 371
луганска 353
луганске 339
луганск 300
донецком 288
донецкого 222
луганском 207
новороссии 136
донецкий 121
донецку 119
донецкая 112
донецкую 112
донбассом 97
луганская 92
луганскую 90
донбассу 86
луганского 85
донецких 74
донецкие 58
новороссийска 56
луганску 55
новороссийске 53
новороссийск 41
луганский 38
донецкое 35
луганских 32
донецким 29
луганские 23
новороссия 17
донбасского 15
новороссийском 15
донецкому 14
донбасских 11
донецкими 10
луганским 10
луганское 10
новороссийского 10
новороссию 10
донбасской 9
новороссийской 9
донбасским 8
новороссийский 7
северодонецке 7
донбасский 6
донбаса 5
донбасские 5
донбас 4
луганскими 4
новороссийская 4
северодонецк 4
северодонецка 4
луганскому 3
новороссийские 3
донбасе 2
донбасское 2
донецко 2
новороссией 2
новороссийску 2
новороссийскую 2
северодонецком 2
алексаднр 1
артдонбасс 1
г.донецк 1
г.донецка 1
днровца 1
донбасее 1
донбасовцы 1
донбассакак 1
донбассе.обоим 1
донбассе.так 1
донбасская 1
донбасском 1
донбасскую 1
донбассов 1
донбассовцам 1
донбассовцы 1
донбасстрансгаз 1
донбасстрансгаза 1
донбассцев 1
донбассцы 1
донбассы 1
донецкесвидетелем 1
луганска.после 1
лугансклой 1
новороссийскканала 1
новороссийско 1
новороссийцев 1
новороссийцы 1
новороссиск 1
полнростью 1
северодонецку 1
freq <- tidyCorpusByDate %>% filter(stringr::str_detect(pattern = paste(terms, collapse = "|"), string = word)) %>% mutate(word = stringr::str_extract(pattern = paste(terms, collapse = "|"), string = word)) %>% group_by(word, date) %>% mutate(n = sum(n)) %>% ungroup() %>%  distinct() %>% full_join(tibble(date = seq.Date(from = as.Date("2012-05-07"), to = as.Date("2017-02-28"), by = "day")), by = "date") %>% arrange(date) %>% complete(date, word, fill = list(n = 0)) %>% group_by(word) %>%
    mutate(
        nRoll7 = zoo::rollmean(x = n, k = 7, align = "center", fill = NA),
        nRoll30 = zoo::rollmean(x = n, k = 30, align = "center", fill = NA),
        nRoll90 = zoo::rollmean(x = n, k = 90, align = "center", fill = NA)) %>% ungroup()
freq
## # A tibble: 10,554 × 6
##          date      word     n nRoll7 nRoll30 nRoll90
##        <date>     <chr> <dbl>  <dbl>   <dbl>   <dbl>
## 1  2012-05-07       днр     0     NA      NA      NA
## 2  2012-05-07    донбас     0     NA      NA      NA
## 3  2012-05-07    донецк     0     NA      NA      NA
## 4  2012-05-07       лнр     0     NA      NA      NA
## 5  2012-05-07   луганск     0     NA      NA      NA
## 6  2012-05-07 новоросси     0     NA      NA      NA
## 7  2012-05-08       днр     0     NA      NA      NA
## 8  2012-05-08    донбас     0     NA      NA      NA
## 9  2012-05-08    донецк     0     NA      NA      NA
## 10 2012-05-08       лнр     0     NA      NA      NA
## # ... with 10,544 more rows
write.xlsx(x = freq, file = "DNR_LNR.xlsx")
ggplot2::ggplot(data = freq, mapping = ggplot2::aes(x = date, y = nRoll30, colour = word)) +
    ggplot2::geom_line(size = 1) +
    scale_y_continuous(name = "") +
    scale_x_date(name = "") +
    expand_limits(y = 0) +
    theme_minimal()+
    theme(legend.title=element_blank()) +
  labs(title = "Daily mentions of keywords related to the conflict in Eastern Ukraine on Pervy Kanal", subtitle = "From beginning of Putin's presidency on 7 May 2012 to 1 March 2017", caption = "Calculated on a 30-days rolling average for clarity") 

  #  geom_text(vjust=-0.5)

hchart(object = freq, type = "line", mapping = hcaes(x = date, y = round(nRoll30), group = word)) %>%
    hc_title(text = "Daily mentions of keywords related to the conflict in Eastern Ukraine on Pervy Kanal") %>%
    hc_subtitle(text = "From beginning of Putin's presidency on 7 May 2012 to 1 March 2017") %>%
    hc_credits(enabled = TRUE, text = "*30 days rolling average") %>%
    hc_exporting(enabled = TRUE) %>%
    hc_xAxis(title = "") %>%
    hc_yAxis(title = "")

Starting with 2014 only

ggplot2::ggplot(data = freq %>% filter(date>as.Date("2013-12-31")), mapping = ggplot2::aes(x = date, y = nRoll30, colour = word)) +
    ggplot2::geom_line(size = 1) +
    scale_y_continuous(name = "") +
    scale_x_date(name = "") +
    expand_limits(y = 0) +
    theme_minimal()+
    theme(legend.title=element_blank()) +
  labs(title = "Daily mentions of keywords related to the conflict in Eastern Ukraine on Pervy Kanal", subtitle = "From beginning of Putin's presidency on 7 May 2012 to 1 March 2017", caption = "Calculated on a 30-days rolling average for clarity") 

  #  geom_text(vjust=-0.5)

hchart(object = freq %>% filter(date>as.Date("2013-12-31")), type = "line", mapping = hcaes(x = date, y = round(nRoll30), group = word)) %>%
    hc_title(text = "Daily mentions of keywords related to the conflict in Eastern Ukraine on Pervy Kanal") %>%
    hc_subtitle(text = "From beginning of Putin's presidency on 7 May 2012 to 1 March 2017") %>%
    hc_credits(enabled = TRUE, text = "*30 days rolling average") %>%
    hc_exporting(enabled = TRUE) %>%
    hc_xAxis(title = "") %>%
    hc_yAxis(title = "")