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 |
exclude <- c("сириза", "сиризы", "сиризе", "сиризу", "сириус", "сириуса", "ассирийской", "ассирии", "ассирийская", "ассирийский", "ассирийца", "ассирийцев", "ассирийцы", "мокрыми", "сири", "ириль", "осирис", "осириса", "окусири", "сириндон", "сирино", "сирин", "сирилло", "сирило")
print(exclude)
## [1] "сириза" "сиризы" "сиризе" "сиризу" "сириус"
## [6] "сириуса" "ассирийской" "ассирии" "ассирийская" "ассирийский"
## [11] "ассирийца" "ассирийцев" "ассирийцы" "мокрыми" "сири"
## [16] "ириль" "осирис" "осириса" "окусири" "сириндон"
## [21] "сирино" "сирин" "сирилло" "сирило"
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")
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 = "")
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 = "")
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")
# max(tidyCorpus$date, na.rm = TRUE)
# min(tidyCorpus$date, na.rm = TRUE)
length(unique(tidyCorpus$id))
## [1] 115369
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 = "")
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 = "")