Введение

В данной работе были проанализированы ответы респондентов на различные вопросы, связанные с списыванием (академически нечестным поведением). Опрос был создан Н.С. Калининым для более детального исследования данного феномена. Основные характеристики участников опроса будут представлены в секции “Основная информация о респондентах” для лучшего понимания контекста исследуемого вопроса. Далее последовательно будут представлены результаты анализа текстовых ответов.

Даже несмотря на то, что в данной работе не было использовано никаких сложных моделей текстового анализа, мне удалось так или иначе агрегировать пару сотен ответов в свободной форме и в среднем вычленить главную мысль их общей совокупности по каждому вопросу, а также пронаблюдать различие в содержании ответов среди разных подгрупп.

На практике (в бизнесе, маркетинге) такие задачи ставятся довольно часто (например, проанализировать отзывы о определенном товаре /сервисе/услуге и т. д.). Другими словами, главная задача - понять, что люди думают о каком-либо концепте, будь то товар, услуга или абстрактный феномен (такой как списывание), не читая все несколько сотен, а иногда и больше, ответов.

Первая часть исследования

Основная статья

Краткое описание основных результатов

В ходе работы были проанализированы и проинтерпретированы результаты ответов на 4 вопроса, касающиеся темы списывания и академически нечестного поведения. Анализу подверглись лишь студенты и преподаватели ВУЗов, поскольку количество ответов именно от этих категорий было наибольшим. Внутри каждой из этих групп была выделена подгруппа “студент/преподаватель НИУ ВШЭ” и “студент/преподаватель других ВУЗов”. Целью работы было сравнить содержание ответов между подгруппами в каждой группе (сравнить ответы в группе “преподаватели” или в группе “студенты” в зависимости от принадлежности к подгруппе “НИУ ВШЭ” или подгруппе “Другие ВУЗы”).

Ответы студентов на вопрос о том, что они понимают под “списыванием” содержали информацию вроде “использование запрещенных материалов или сторонних источников информации”. Студенты из обеих групп сошлись во мнении о том, что списывание - серьезный проступок. В остальном мнения студентов было сложно разграничить в зависимости от принадлежности к ВУЗу. Что касается преподавателей, их мнения на этот счет тоже довольно схожи: помимо прочего, преподаватели ВШЭ отмечают, что списывание - это “бездумный копипаст”, в то время как преподаватели других ВУЗов иногда подчеркивают роль фотографической памяти, способствующей списыванию.

На вопрос “Должно ли наказываться списывание, и если должно, то как?” студенты ВШЭ ответили, что списывание может наказываться снижением оценки, а в более суровых случаях - дисциплинарным взысканием. Студенты других ВУЗов подчеркивали возможную альтернативу - задать дополнительный вопрос. В более серьезных случаях - пересдача либо другие эквивалентные методы административного взыскания. Также студенты других ВУЗов отмечают, что преподаватель скорее всего сделает определенные выводы о студенте, что послужит ему определённой формой наказания в будущем. Мнение преподавателей НИУ ВШЭ сводится к определенной градации наказания: пойман один раз - дисциплинарное замечание, а вот в следующий раз последует более серьезное наказание. Также отмечается, что списывание категорически недопустимо при написании дипломных работа, а также проектов, участвующих в конкурсах. Что касается мнения преподавателей других ВУЗов, во избежание прецедентов списывания, предлагается рассаживать студентов для более объективной проверки их знаний на текущий момент.

На третий вопрос о том, почему студенты не списывали, если такая возможность была, студенты НИУ ВШЭ в основном отвечали, что существенную роль играют доверительные отношения с преподавателем, а также личная заинтересованность в предмете и попытка избежать мук совести в дальнейшем. Студенты других ВУЗов аналогично упоминали существование определенных моральных установок, а также факт того, что попытки объяснения материала другим существенно повышают уровень понимания материала, и, следовательно, понижают необходимость списывать в дальнейшем.

На вопрос по поводу особенностей, которыми обладали предметы, на которых не принято было списывать, студенты ВШЭ отмечали, что такие предметы вдохновляют на получение знаний, а отношения с преподавателем основаны на взаимном доверии. Однако, в качестве контрастного примера, провоцирующего списывание, упоминается особенно жестокий контроль за списыванием во время экзаменов. Студенты других ВУЗов акцентируют внимание на профильности предмета и полезности знаний для будущей профессии, а также степени интереса к заданной теме.

Описание переменных

В данной таблице представлено описание переменных, которые будут использованы для дальнейшей работы. В оригинальном опросе переменных больше, но для текстового анализа были выбраны лишь некоторые из них, поскольку в других переменных было слишком много пропущенных значений (что определенно мешает корректной интерпретации результатов) либо сама формулировка вопроса лишь отдаленно была связана с тематикой списывания.

Основная информация о респондентах

Возраст

data_stat = cheating %>% drop_na(age) %>% group_by(occupation) %>% summarise(count = n(), mean_age = round(mean(age),1), median_age = median(age), SD = round(sd(age),2)) %>% arrange(-count)

formattable(data_stat, 
            align =c("l","c","c","c","c", "c", "c", "c", "r"), 
            list(`Indicator Name` = formatter(
            "span", style = ~ style(color = "grey",font.weight = "bold"))))
occupation count mean_age median_age SD
студент, учусь 143 20.4 19 3.26
преподаватель вуза 103 35.9 35 7.63
другое 45 35.1 34 9.78
педагог в школе 14 35.2 33 12.45
учусь в школе 13 16.7 17 1.25

Основное занятие респондента

cheating$occupation <- ordered(cheating$occupation, 
          levels = c("учусь в школе","педагог в школе","другое","преподаватель вуза","студент, учусь"))

ggplot(data = na.omit(subset(cheating, select = occupation)),
          aes(x = occupation, y = ..count../sum(..count..), fill = occupation)) + 
          geom_bar(color = "black", alpha = 0.6, fill = "lightblue") +
          geom_text(aes(label = percent(..count../sum(..count..))), 
          size = 4, stat= "count", position = position_stack(vjust = 0.5)) +
          scale_y_continuous(labels = percent) +
          labs(title = "Tекущая занятость респондента
               ", y  = "", x = "") +
          theme_minimal() +
          guides(fill = F)+
          theme(text = element_text(size = 13), 
          plot.title = element_text(hjust = 0.5), title = element_text(size = 12))+
          coord_flip()

Поскольку основная масса ответов была предоставлена студентами и преподавателями ВУЗов, в дальнейшем анализе будут использоваться текстовые ответы только этих категорий респондентов в целях наиболее корректной интерпретации результатов и обобщения выводов.

Тем не менее, посмотрим на ещё несколько примеров для того, чтобы окончательно убедиться в различиях между группами (ВУЗ vs другие учебные заведения).

Некоторые интересные факты

ggplot(data = na.omit(subset(cheating, select = c(official, occupation))), aes(x= official,  group=occupation)) + 
    geom_bar(aes(y = ..prop.., fill = factor(..x..)), 
    stat="count", color = "black", alpha = 0.7) +
    geom_text(aes(label = scales::percent(..prop..),
    y= ..prop.. ), stat= "count", vjust = -.5, size = 4) +
    facet_grid(~occupation) +
    scale_y_continuous(labels = scales::percent)+
    guides(fill = F)+
    labs(title = "Знает ли респондент о формальном наказании за списывание?
         ", 
    x = "", y = "")+
    theme_bw()+
    scale_fill_brewer(palette="Set2")+
    theme(text = element_text(size = 13), 
          plot.title = element_text(hjust = 0.5), title = element_text(size = 12))

Видно, что учащиеся и педагоги в школах довольно плохо осведомлены об официальных мерах наказания за списывание, в то время как примерно каждый второй преподаватель ВУЗа и студент знают о санкциях за списывание. Логично предположить, что люди из категории “другое” скорее всего являются учениками или преподавателями каких-либо очных или онлайн курсов, летних/зимних школ и т.д., ведь в таком случае вопрос о списывании поднимается крайне редко, ведь как правило прохождение подобных курсов сопровождается личной мотивацией и изначальной заинтересованностью.

Сделаем разделение по ВУЗам

По имеющимся данным теоретически возможно сделать разделение на несколько вузов, но в контексте задачи текстового анализа было бы довольно сложно использовать многоуровневые категориальные переменные. Поэтому, в дальнейшей работе мы сосредоточимся на поиске различий между НИУ ВШЭ и другими ВУЗами.

Нужно признать, что разделение на группы получилось достаточно нравномерное - приблизительно 1:2 для студентов, и 1:5 для преподавателей.

#техническая предподготовка

initial = cheating
cheating$inst = cheating$school
cheating$inst = str_to_lower(cheating$inst)
cheating$inst = ifelse(str_detect(cheating$inst, "вшэ|ниу вшэ|вышка|высшая школа экономики"), "НИУ ВШЭ", cheating$inst)

pattern <- "[^НИУ ВШЭ]"
replacement <- "Другое"
cheating$inst = gsub(pattern, replacement, cheating$inst)
cheating$inst = ifelse(str_detect(cheating$inst, "Другое"), "Другие ВУЗы", cheating$inst)
cheating$inst = as.factor(cheating$inst)

students = cheating %>% filter(occupation == "студент, учусь")
teachеrs = cheating %>% filter(occupation == "преподаватель вуза")
set1 = cheating %>% filter(occupation == "студент, учусь" | occupation == "преподаватель вуза")

Соотношение студентов:

table(students$inst) #студенты
## 
## Другие ВУЗы     НИУ ВШЭ 
##          95          46

Соотношение преподавателей:

table(teachеrs$inst) #преподаватели
## 
## Другие ВУЗы     НИУ ВШЭ 
##          79          14
set1$inst <- ordered(set1$inst, 
          levels = c("НИУ ВШЭ","Другие ВУЗы"))

ggplot(data = na.omit(subset(set1,select = c(inst, official, occupation))),aes(x= official,  group = inst)) + 
    geom_bar(aes(y = ..prop.., fill = factor(..x..)), 
    stat="count", color = "black", alpha = 0.7) +
    geom_text(aes(label = scales::percent(..prop..),
    y= ..prop.. ), stat= "count", position = position_stack(vjust = 0.5), size = 4) +
    facet_grid(occupation ~ inst) +
    scale_y_continuous(labels = scales::percent)+
    guides(fill = F)+
    labs(title = "Знают ли о формальном наказании за списывание...?
         ", 
    x = NULL, y = NULL)+
    theme_bw()+
    scale_fill_brewer(palette="Set2")+
    theme(text = element_text(size = 13), 
    plot.title = element_text(hjust = 0.5), title = element_text(size = 12))

На графике можно наблюдать существенное различие между НИУ ВШЭ и другими ВУЗами: лишь около 40% студентов других ВУЗов знают о формальном наказании за списывание, в то время как уровень осведомленности по этому же поводу в 2 раза выше у студентов НИУ ВШЭ (лишь 18 % Вышкинцев не знаю о формальном наказании за списывание!).

Стоит также отметить, что доля преподавателей, не знающих о формальных наказаниях за списывание существенно выше: около 35 % преподавателей Вышки не являются достаточно осведомленными в этом вопросе. Однако, стоит также подчеркнуть, что по сравнению в ВШЭ, более половины преподавателей других ВУЗов не знаю о формальных наказаниях за списывание.

Анализ ответов в свободной форме

Итак, проведя предварительный эксплораторный анализ, мы имеем более детальное представление о респондентах, а также можем оценить общую картину в целом. Теперь перейдем к анализу текствых ответов. Начнем с базовых шагов (частотность и т.д.), а затем постепенно перейдем к более сложным методам анализа.

Поработаем с каждым вопросом отдельно. Рассматриваем ответы только студентов и преподавателей вузов.

Вопрос 1. Что Вы понимаете под списыванием? Насколько это серьёзный проступок с Вашей точки зрения (а не общепринятой)?

filtered = cheating %>% filter(occupation == "студент, учусь"| occupation == "преподаватель вуза")
q1 = filtered %>% dplyr::select(occupation, inst, cheat_idea) %>% na.omit()

q1$id = 1:nrow(q1)
initial_q1 = q1
q1$cheat_idea = str_to_lower(q1$cheat_idea) 
q1$cheat_idea = gsub("[[:punct:]]", "",q1$cheat_idea)
q1$cheat_idea = gsub("[[:digit:]]", "",q1$cheat_idea)
q1$cheat_idea = str_replace_all(q1$cheat_idea, "\n", " ")

q1$lemma <- system2("mystem", c("-c","-l","-d"), input = q1$cheat_idea,stdout = T)
q1$lemma <- str_replace_all(q1$lemma, "\\{([^}]+?)([?]+)?\\}", "\\1")

rustopwords <- data.frame(words= c(stopwords("ru"), "это", "тд", "списывать", "списывание", "который"), stringsAsFactors=FALSE) 

q1 = q1 %>% unnest_tokens(words, lemma) %>% anti_join(rustopwords, by = "words")



freq_HSE_s = q1 %>% filter(inst == "НИУ ВШЭ" & occupation == "студент, учусь") %>% group_by(words) %>% summarise(count = n()) %>% arrange(-count) %>% top_n(15, count)


freq_HSE_t = q1 %>% filter(inst == "НИУ ВШЭ" & occupation == "преподаватель вуза") %>% group_by(words) %>%  summarise(count = n()) %>% arrange(-count) %>% top_n(15, count)


freq_notHSE_s = q1 %>% filter(inst == "Другие ВУЗы" & occupation == "студент, учусь") %>% group_by(words) %>% summarise(count = n()) %>% arrange(-count) %>% top_n(15, count)


freq_notHSE_t = q1 %>% filter(inst == "Другие ВУЗы" & occupation == "преподаватель вуза") %>% group_by(words) %>%  summarise(count = n()) %>% arrange(-count) %>% top_n(15, count)

Топ 15 самых частотных слов: студенты ВШЭ VS студенты других ВУЗов соответственно

tt1 <- ttheme_default()

#студенты
grid.arrange(
  tableGrob(freq_HSE_s[1:15, 1:2], theme=tt1, rows=NULL),
  tableGrob(freq_notHSE_s[1:15, 1:2], theme=tt1, rows=NULL),
  ncol=2)

На этапе первичного анализа сложно пронаблюдать какие-либо явные различия между студентами ВШЭ и других ВУЗов в контексте ответа на вопрос о том, что они понимают под словом “списывание” и насколько это серьезный проступок. Обе группы в среднем сходятся во мнении о том, что списывание - это использование сторонних материалов во время экзамена (шпаргалок), которое может повлиять на оценку.

Топ 15 самых частотых слов: преподаватели ВШЭ VS преподаватели других ВУЗов соответственно

#преподователи
grid.arrange(
  tableGrob(freq_HSE_t[1:15, 1:2], theme=tt1, rows=NULL),
  tableGrob(freq_notHSE_t[1:15, 1:2], theme=tt1, rows=NULL),
  ncol=2)

Что касается преподавателей, то они в общем и целом сходятся на том же мнении о природе списывания.

G2 and LogRatio

G2 метрика для студентов VS преподавателей : на чем акцентируется внимание?

g2 = function(a, b) {
  c = sum(a)
  d = sum(b)
  E1 = c * ((a + b) / (c + d))
  E2 = d * ((a + b) / (c + d))
  return(2*((a*log(a/E1+1e-7)) + (b*log(b/E2+1e-7))))
}

logratio <- function(a, b) {
    return(log2((a/sum(a)/(b/sum(b)))))
}


HSE.stud <- q1 %>% filter(inst == "НИУ ВШЭ" & occupation == "студент, учусь") 
notHSE.stud <- q1 %>% filter(inst == "Другие ВУЗы" & occupation == "студент, учусь") 

table1 <- bind_rows(HSE.stud, notHSE.stud) %>%
    dplyr::count(words, inst) %>% 
    spread(inst, n, fill = 0) %>% 
  filter(`Другие ВУЗы`>5 | `НИУ ВШЭ`>5)

g2_table_stud <- table1 %>%
    mutate(g2=g2(`Другие ВУЗы`,`НИУ ВШЭ`)) %>%
    arrange(desc(g2)) %>%
    mutate(g2 = round(g2, 2)) %>%
    group_by(words) %>% mutate(notHSE_ipm = (`Другие ВУЗы` * 10e+6)/nrow(notHSE.stud), HSE_ipm = (`НИУ ВШЭ` * 10e+6)/nrow(HSE.stud))

top_g2_stud = g2_table_stud %>% head(15)


HSE.teach <- q1 %>% filter(inst == "НИУ ВШЭ" & occupation == "преподаватель вуза") 
notHSE.teach <- q1 %>% filter(inst == "Другие ВУЗы" & occupation == "преподаватель вуза") 

table2 <- bind_rows(notHSE.teach,HSE.teach) %>%
    dplyr::count(words, inst) %>% 
    spread(inst, n, fill = 0) %>% 
  filter(`Другие ВУЗы`>5 | `НИУ ВШЭ`>5)

g2_table_teach <- table2 %>%
    mutate(g2=g2(`Другие ВУЗы`,`НИУ ВШЭ`)) %>%
    arrange(desc(g2)) %>%
    mutate(g2 = round(g2, 2)) %>%
    group_by(words) %>% mutate(notHSE_ipm = (`Другие ВУЗы` * 10e+6)/nrow(notHSE.stud), HSE_ipm = (`НИУ ВШЭ` * 10e+6)/nrow(HSE.stud))

top_g2_teach = g2_table_teach %>% head(15)

grid.arrange(
  tableGrob(top_g2_stud[1:10, 1:3], theme=tt1, rows=NULL),
  tableGrob(top_g2_teach[1:10, 1:3], theme=tt1, rows=NULL),
  nrow = 1)

Студенты НИУ ВШЭ аж на 4 раза больше употребили слово “знание”. В добавок, студентов НИУ ВШЭ в выборке гораздо меньше, поэтому такое количество употребления этого слова можно считать значимым в данном случае. А вот слово “решение” чаще всего фигурировало в ответах студентов других ВУЗов.

Что касается преподавателей, то можно отметить, что самые интересные различия в лексиконе проявлялись во время использования таких слов как “обман” и “интернет” со стороны преподавателей других ВУЗов. По каким-то причинам преподаватели НИУ ВШЭ ни разу не упомянули слово “интернет” в своих ответах! А также слово “обман”, которое также ни разу не появилось в их ответах. Мы предполагаем, что преподаватели других ВУЗов в совокупности считают, что списывание - это скорее “найти готовое решение в интернете и записать его”, в то время как преподаватели ВШЭ, скорее, полагают, что списывание это “использовать собственные материалы и решения на экзамене, не помнить всего наизусть”. По-видимому, преподаватели ВШЭ просто знают, что ответы на задания экзаменов и контрольных бесполезно искать в Интернете :)

Слова, свойственные студентам НИУ ВШЭ VS студентам других ВУЗов (по log ratio) соответственно

g2_table_stud <- table1 %>%
  mutate(logratio = logratio(`Другие ВУЗы`,`НИУ ВШЭ`)) %>% 
  mutate(logratio = round(logratio,2)) %>% 
    mutate(g2=g2(`Другие ВУЗы`,`НИУ ВШЭ`)) %>%
    arrange(desc(g2)) %>%
    mutate(g2 = round(g2, 2)) %>%
    group_by(words) %>% mutate(HSE_ipm = (`НИУ ВШЭ` * 10e+6)/nrow(HSE.stud), notHSE_ipm = (`Другие ВУЗы` * 10e+6)/nrow(notHSE.stud))

g2_table_teach <- table2 %>%
  mutate(logratio = logratio(`Другие ВУЗы`,`НИУ ВШЭ`)) %>% 
  mutate(logratio = round(logratio,2)) %>% 
    mutate(g2=g2(`Другие ВУЗы`,`НИУ ВШЭ`)) %>%
    arrange(desc(g2)) %>%
    mutate(g2 = round(g2, 2)) %>%
    group_by(words) %>% mutate(HSE_ipm = (`НИУ ВШЭ` * 10e+6)/nrow(HSE.stud), notHSE_ipm = (`Другие ВУЗы` * 10e+6)/nrow(notHSE.stud))

g2_table_new_st = g2_table_stud %>%
    filter(`НИУ ВШЭ` > 0 & `Другие ВУЗы` > 0) %>%
    group_by(logratio < 0) %>%
    top_n(10, abs(logratio)) %>%
    ungroup()

g2_table_new_te = g2_table_teach %>%
    filter(`НИУ ВШЭ` > 0 & `Другие ВУЗы` > 0) %>%
    group_by(logratio < 0) %>%
    top_n(10, abs(logratio)) %>%
    ungroup()

HSE_stud_words = g2_table_new_st %>% filter(`logratio < 0` == TRUE) %>% dplyr::select(-`logratio < 0`) %>% arrange(logratio)
notHSE_stud_words = g2_table_new_st %>% filter(`logratio < 0` == FALSE) %>%  dplyr::select(-`logratio < 0`) %>% arrange(-logratio)

HSE_teach_words = g2_table_new_te %>% filter(`logratio < 0` == TRUE) %>% dplyr::select(-`logratio < 0`) %>% arrange(logratio)
notHSE_teach_words = g2_table_new_te %>% filter(`logratio < 0` == FALSE) %>%  dplyr::select(-`logratio < 0`) %>% arrange(-logratio)

grid.arrange(
  tableGrob(HSE_stud_words[1:10, 1:3], theme=tt1, rows=NULL),
  tableGrob(notHSE_stud_words[1:10, 1:3], theme=tt1, rows=NULL),
  ncol=2)

Итак, студенты ВШЭ в среднем чаще говорят о списывании, упоминая при этом слова “оценка”, “получать”, “знание” и опять таки, слово “зависеть”. В то время как студенты других ВУЗов говоря в основном о “копировании” из сторонних “источник(ов)” на “экзамен(е)”/“контрольн(ой)”, а также отмечают, что это “плохо”.

Слова, свойственные преподавателями НИУ ВШЭ VS преподавателям других ВУЗов (по log ratio) соответственно

grid.arrange(
  tableGrob(HSE_teach_words[1:10, 1:3], theme=tt1, rows=NULL),
  tableGrob(notHSE_teach_words[1:10, 1:3], theme=tt1, rows=NULL),
  nrow = 1)

Переходя к преподавателям, можно вновь отметить, что преподаватели НИУ ВШЭ чаще говорят о “запрете использования на контрольной или экзамене чужого материала/источника (скорее всего материала или знаний соседа, т.к. мы помним, что в случае ВШЭ - в Интернете ничего не найти). Преподаватели других ВУЗов концентрируют внимание на том, что”использование телефона для ответов на вопрос - это не хорошо".

Коллакации

students_q1 = students %>% dplyr::select(inst, cheat_idea) %>% na.omit()

students_q1$id = 1:nrow(students_q1)
students_q1$cheat_idea = str_to_lower(students_q1$cheat_idea) 
students_q1$cheat_idea = gsub("[[:punct:]]", "",students_q1$cheat_idea)
students_q1$cheat_idea = gsub("[[:digit:]]", "",students_q1$cheat_idea)
students_q1$cheat_idea = str_replace_all(students_q1$cheat_idea, "\n", " ")

HSE = students_q1 %>% filter(inst == "НИУ ВШЭ")
notHSE = students_q1 %>% filter(inst == "Другие ВУЗы")

model <- udpipe_download_model(language = "russian-syntagrus")
rumodel <- udpipe_load_model(file = model$file_model)

HSE.df <- udpipe_annotate(rumodel, HSE$cheat_idea) %>% 
    as.data.frame %>% anti_join(rustopwords, by = c("lemma" = "words"))

notHSE.df <- udpipe_annotate(rumodel, notHSE$cheat_idea) %>% 
    as.data.frame %>% anti_join(rustopwords, by = c("lemma" = "words"))

HSE.df$upos_min = ifelse(str_detect(HSE.df$upos, "NOUN"), "n", ifelse(str_detect(HSE.df$upos, "VERB"), "v", ifelse(str_detect(HSE.df$upos, "ADJ"), "adj", ifelse(str_detect(HSE.df$upos, "ADV"),"adv","other"))))

notHSE.df$upos_min = ifelse(str_detect(notHSE.df$upos, "NOUN"), "n", ifelse(str_detect(notHSE.df$upos, "VERB"), "v", ifelse(str_detect(notHSE.df$upos, "ADJ"), "adj", ifelse(str_detect(notHSE.df$upos, "ADV"),"adv","other"))))


HSE.df_1 = HSE.df %>% mutate(xtok = paste(lemma, upos_min, sep = "_")) %>% group_by(doc_id) %>% summarize(toksent = paste(xtok, collapse = " "))

notHSE.df_1 = notHSE.df %>% mutate(xtok = paste(lemma, upos_min, sep = "_")) %>% group_by(doc_id) %>% summarize(toksent = paste(xtok, collapse = " "))


bigrams_HSE <- HSE.df_1 %>% 
  unnest_tokens(bigram, toksent, token = "ngrams", n = 2) %>%
    dplyr::select(doc_id, bigram)

bigrams_notHSE <- notHSE.df_1 %>% 
  unnest_tokens(bigram, toksent, token = "ngrams", n = 2) %>%
    dplyr::select(doc_id, bigram)

bigrams_HSE.filtered <- bigrams_HSE %>% 
  separate(bigram, c("word1", "word2"), sep = " ")

bigrams_notHSE.filtered <- bigrams_notHSE %>% 
  separate(bigram, c("word1", "word2"), sep = " ")

Самые частые словосочетания “прил. + сущ.” для студентов НИУ ВШЭ VS студентов других ВУЗов соответственно

bigrams_HSE.a <- bigrams_HSE.filtered %>% 
  filter(str_detect(word1, "_adj$")) %>% 
  filter(str_detect(word2, "_n$"))

bifreq_HSE.a <- bigrams_HSE.a %>% 
  dplyr::count(word1, word2, sort = TRUE)

bigrams_notHSE.a <- bigrams_notHSE.filtered %>% 
  filter(str_detect(word1, "_adj$")) %>% 
  filter(str_detect(word2, "_n$"))

bifreq_notHSE.a <- bigrams_notHSE.a %>% 
  dplyr::count(word1, word2, sort = TRUE)

grid.arrange(
  tableGrob(bifreq_HSE.a[1:10, 1:3], theme=tt1, rows=NULL),
  tableGrob(bifreq_notHSE.a[1:10, 1:3], theme=tt1, rows=NULL),
  nrow = 1)

Итак, и та и другая группа студентов считает, что списывание — это серьезный проступок.

Студенты НИУ ВШЭ думают, что помимо этого, списывание можно охарактеризовать как “постороннюю помощь” или использование “стороннего источника”, а также подчеркивается связь всего этого с “хорошей оценкой”.

Студенты же других ВУЗов подчеркивают важность настоящего момента (“данный момент”), вероятнее всего отсылаясь к приемлемости единичных случаев списывания. Также, “коллективное решение” аналогично ассоциируется со списыванием. А вот как интерпретировать “нормальное явление” не совсем понятно: скорее всего имелось в виду, что бренность бытия ложится на хрупкие плечи студентов и вынуждает их прибегнуть к списыванию время от времени, что и делает это явление нормальным. А может наоборот - перед коллокацией упущена частица “не” и тогда предложение принимает диаметрально противоположный смысл.

teachers_q1 = teachеrs %>% dplyr::select(inst, cheat_idea) %>% na.omit()

teachers_q1$id = 1:nrow(teachers_q1)
teachers_q1$cheat_idea = str_to_lower(teachers_q1$cheat_idea) 
teachers_q1$cheat_idea = gsub("[[:punct:]]", "",teachers_q1$cheat_idea)
teachers_q1$cheat_idea = gsub("[[:digit:]]", "",teachers_q1$cheat_idea)
teachers_q1$cheat_idea = str_replace_all(teachers_q1$cheat_idea, "\n", " ")

HSE_t = teachers_q1 %>% filter(inst == "НИУ ВШЭ")
notHSE_t = teachers_q1 %>% filter(inst == "Другие ВУЗы")

#model <- udpipe_download_model(language = "russian-syntagrus")
#rumodel <- udpipe_load_model(file = model$file_model)

HSE.df_t <- udpipe_annotate(rumodel, HSE_t$cheat_idea) %>% 
    as.data.frame %>% anti_join(rustopwords, by = c("lemma" = "words"))

notHSE.df_t <- udpipe_annotate(rumodel, notHSE_t$cheat_idea) %>% 
    as.data.frame %>% anti_join(rustopwords, by = c("lemma" = "words"))

HSE.df_t$upos_min = ifelse(str_detect(HSE.df_t$upos, "NOUN"), "n", ifelse(str_detect(HSE.df_t$upos, "VERB"), "v", ifelse(str_detect(HSE.df_t$upos, "ADJ"), "adj", ifelse(str_detect(HSE.df_t$upos, "ADV"),"adv","other"))))

notHSE.df_t$upos_min = ifelse(str_detect(notHSE.df_t$upos, "NOUN"), "n", ifelse(str_detect(notHSE.df_t$upos, "VERB"), "v", ifelse(str_detect(notHSE.df_t$upos, "ADJ"), "adj", ifelse(str_detect(notHSE.df_t$upos, "ADV"),"adv","other"))))


HSE.df_1_t = HSE.df_t %>% mutate(xtok = paste(lemma, upos_min, sep = "_")) %>% group_by(doc_id) %>% summarize(toksent = paste(xtok, collapse = " "))

notHSE.df_1_t = notHSE.df_t %>% mutate(xtok = paste(lemma, upos_min, sep = "_")) %>% group_by(doc_id) %>% summarize(toksent = paste(xtok, collapse = " "))


bigrams_HSE_t <- HSE.df_1_t %>% 
  unnest_tokens(bigram, toksent, token = "ngrams", n = 2) %>%
    dplyr::select(doc_id, bigram)

bigrams_notHSE_t <- notHSE.df_1_t %>% 
  unnest_tokens(bigram, toksent, token = "ngrams", n = 2) %>%
    dplyr::select(doc_id, bigram)

bigrams_HSE.filtered_t <- bigrams_HSE_t %>% 
  separate(bigram, c("word1", "word2"), sep = " ")

bigrams_notHSE.filtered_t <- bigrams_notHSE_t %>% 
  separate(bigram, c("word1", "word2"), sep = " ")

Самые частые словосочетания “прил. + сущ.” для преподавателей НИУ ВШЭ VS преподавателей других ВУЗов соответственно

bigrams_HSE.a_t <- bigrams_HSE.filtered_t %>% 
  filter(str_detect(word1, "_adj$")) %>% 
  filter(str_detect(word2, "_n$"))

bifreq_HSE.a_t <- bigrams_HSE.a_t %>% 
  dplyr::count(word1, word2, sort = TRUE)

bigrams_notHSE.a_t <- bigrams_notHSE.filtered_t %>% 
  filter(str_detect(word1, "_adj$")) %>% 
  filter(str_detect(word2, "_n$"))

bifreq_notHSE.a_t <- bigrams_notHSE.a_t %>% 
  dplyr::count(word1, word2, sort = TRUE)

grid.arrange(
  tableGrob(bifreq_HSE.a_t[c(1:5,7:11), 1:3], theme=tt1, rows=NULL),
  tableGrob(bifreq_notHSE.a_t[1:10, 1:3], theme=tt1, rows=NULL),
  nrow = 1)

Также очень интересно пронаблюдать за ответами по поводу природы списывания у преподавателей.

Преподаватели НИУ ВШЭ понимают списывание как использование “запрещенного материала” или, как было очень лаконично замечено, “бездумный копипаст” :)

Преподаватели других ВУЗов акцентируют внимание на том, что “тайное переписывание готового ответа”, возможно даже с чужой работы, а возможно и вовсе с помощью “фотографической памяти”! (неужели это тоже списывание?…)

Самые частые словосочетания “сущ. + глаг.” для студентов НИУ ВШЭ VS студентов других ВУЗов соответственно

bigrams_HSE.b <- bigrams_HSE.filtered %>% 
  filter(str_detect(word1, "_v$")) %>% 
  filter(str_detect(word2, "_n$"))

bifreq_HSE.b <- bigrams_HSE.b %>% 
  dplyr::count(word1, word2, sort = TRUE)

bigrams_notHSE.b <- bigrams_notHSE.filtered %>% 
  filter(str_detect(word1, "_v$")) %>% 
  filter(str_detect(word2, "_n$"))

bifreq_notHSE.b <- bigrams_notHSE.b %>% 
  dplyr::count(word1, word2, sort = TRUE)

grid.arrange(
  tableGrob(bifreq_HSE.b[c(1:2,4:11), 1:3], theme=tt1, rows = NULL),
  tableGrob(bifreq_notHSE.b[c(1:6,8:11), 1:3], theme=tt1, rows = NULL),
  nrow = 1)

Итак, идем дальше. Студенты ВШЭ отмечают, что списывание - это в какой-то степени “способ выкрутиться” из ситуации, которая “вызывает страх”(экзамен, контрольная). Это определенно считается проступком, но есть вероятность, что в каких-то ситуациях - это лишь акт “борьбы за справедливость”!

Студенты других ВУЗов тоже отмечают, что списывание обычно имеет место быть, когда студет “боиться чего-то”, ну или просто вот “бывает ситуация”, когда нужно списать.

Самые частые словосочетания “сущ. + глаг.” для преподавателей НИУ ВШЭ VS преподавателей других ВУЗов соответственно

bigrams_HSE.b_t <- bigrams_HSE.filtered_t %>% 
  filter(str_detect(word1, "_v$")) %>% 
  filter(str_detect(word2, "_n$"))

bifreq_HSE.b_t <- bigrams_HSE.b_t %>% 
  dplyr::count(word1, word2, sort = TRUE)

bigrams_notHSE.b_t <- bigrams_notHSE.filtered_t %>% 
  filter(str_detect(word1, "_v$")) %>% 
  filter(str_detect(word2, "_n$"))

bifreq_notHSE.b_t <- bigrams_notHSE.b_t %>% 
  dplyr::count(word1, word2, sort = TRUE)

grid.arrange(
  tableGrob(bifreq_HSE.b_t[c(2:6,8:12), 1:3], theme=tt1, rows = NULL),
  tableGrob(bifreq_notHSE.b_t[1:10, 1:3], theme=tt1,rows = NULL),
  nrow = 1)

Преподаватели ВШЭ четко обозначили свою позицию: списывание - это “гоняться за стипендией” (чаще даже за скидкой скорее всего). А в остальном определения очень схожи с предыдущими.

Преподаватели других ВУЗов: списывание зачастую имеет место быть на контрольной с “автоматизированными тестами”. Также списывание “ведет к повышению” оценки, а ещё это неспособность “выучить материал” или “вникнуть в суть” предмета.

Видим, что самые информативные и интересные результаты получается с помощью коллакаций. В следующих вопросах посмотрим сразу на коллакации.

Вопрос 2. Должно ли списывание наказываться? Если да, то как?

students_q2 = students %>% dplyr::select(inst, punish) %>% na.omit()

students_q2$id = 1:nrow(students_q2)
students_q2$punish = str_to_lower(students_q2$punish) 
students_q2$punish = gsub("[[:punct:]]", "",students_q2$punish)
students_q2$punish = gsub("[[:digit:]]", "",students_q2$punish)
students_q2$punish = str_replace_all(students_q2$punish, "\n", " ")

HSE = students_q2 %>% filter(inst == "НИУ ВШЭ")
notHSE = students_q2 %>% filter(inst == "Другие ВУЗы")

#model <- udpipe_download_model(language = "russian-syntagrus")
#rumodel <- udpipe_load_model(file = model$file_model)

HSE.df <- udpipe_annotate(rumodel, HSE$punish) %>% 
    as.data.frame %>% anti_join(rustopwords, by = c("lemma" = "words"))

notHSE.df <- udpipe_annotate(rumodel, notHSE$punish) %>% 
    as.data.frame %>% anti_join(rustopwords, by = c("lemma" = "words"))

HSE.df$upos_min = ifelse(str_detect(HSE.df$upos, "NOUN"), "n", ifelse(str_detect(HSE.df$upos, "VERB"), "v", ifelse(str_detect(HSE.df$upos, "ADJ"), "adj", ifelse(str_detect(HSE.df$upos, "ADV"),"adv","other"))))

notHSE.df$upos_min = ifelse(str_detect(notHSE.df$upos, "NOUN"), "n", ifelse(str_detect(notHSE.df$upos, "VERB"), "v", ifelse(str_detect(notHSE.df$upos, "ADJ"), "adj", ifelse(str_detect(notHSE.df$upos, "ADV"),"adv","other"))))


HSE.df_1 = HSE.df %>% mutate(xtok = paste(lemma, upos_min, sep = "_")) %>% group_by(doc_id) %>% summarize(toksent = paste(xtok, collapse = " "))

notHSE.df_1 = notHSE.df %>% mutate(xtok = paste(lemma, upos_min, sep = "_")) %>% group_by(doc_id) %>% summarize(toksent = paste(xtok, collapse = " "))


bigrams_HSE <- HSE.df_1 %>% 
  unnest_tokens(bigram, toksent, token = "ngrams", n = 2) %>%
    dplyr::select(doc_id, bigram)

bigrams_notHSE <- notHSE.df_1 %>% 
  unnest_tokens(bigram, toksent, token = "ngrams", n = 2) %>%
    dplyr::select(doc_id, bigram)

bigrams_HSE.filtered <- bigrams_HSE %>% 
  separate(bigram, c("word1", "word2"), sep = " ")

bigrams_notHSE.filtered <- bigrams_notHSE %>% 
  separate(bigram, c("word1", "word2"), sep = " ")

Самые частые словосочетания “прил. + сущ.” для студентов НИУ ВШЭ VS студентов других ВУЗов соответственно

bigrams_HSE.a <- bigrams_HSE.filtered %>% 
  filter(str_detect(word1, "_adj$")) %>% 
  filter(str_detect(word2, "_n$"))

bifreq_HSE.a <- bigrams_HSE.a %>% 
  dplyr::count(word1, word2, sort = TRUE)

bigrams_notHSE.a <- bigrams_notHSE.filtered %>% 
  filter(str_detect(word1, "_adj$")) %>% 
  filter(str_detect(word2, "_n$"))

bifreq_notHSE.a <- bigrams_notHSE.a %>% 
  dplyr::count(word1, word2, sort = TRUE)

grid.arrange(
  tableGrob(bifreq_HSE.a[1:10, 1:3], theme=tt1, rows = NULL),
  tableGrob(bifreq_notHSE.a[1:10, 1:3], theme=tt1, rows = NULL),
  nrow = 1)

Итак, должно ли списывание наказываться?

Студенты ВШЭ: за списывание вроде как положено “дисциплинарное взыскание”, но нужно и на “контекст” ситуации посмотреть должным образом. Приемлемо также “возможное понижение” или “аннулирование” оценки.

Студенты других ВУЗов: Списал? Ну ничего, просто задайте “дополнительный вопрос”! Ну или сразу на “пересдачу” иди, чего уж церемониться. Среднего не дано. Но а вообще наказание должно быть “адекватным”, так сказать, в стиле “административных методов”.

teachers_q2 = teachеrs %>% dplyr::select(inst, punish) %>% na.omit()

teachers_q2$id = 1:nrow(teachers_q2)
teachers_q2$punish = str_to_lower(teachers_q2$punish) 
teachers_q2$punish = gsub("[[:punct:]]", "",teachers_q2$punish)
teachers_q2$punish = gsub("[[:digit:]]", "",teachers_q2$punish)
teachers_q2$punish = str_replace_all(teachers_q2$punish, "\n", " ")

HSE_t = teachers_q2 %>% filter(inst == "НИУ ВШЭ")
notHSE_t = teachers_q2 %>% filter(inst == "Другие ВУЗы")

#model <- udpipe_download_model(language = "russian-syntagrus")
#rumodel <- udpipe_load_model(file = model$file_model)

HSE.df_t <- udpipe_annotate(rumodel, HSE_t$punish) %>% 
    as.data.frame %>% anti_join(rustopwords, by = c("lemma" = "words"))

notHSE.df_t <- udpipe_annotate(rumodel, notHSE_t$punish) %>% 
    as.data.frame %>% anti_join(rustopwords, by = c("lemma" = "words"))

HSE.df_t$upos_min = ifelse(str_detect(HSE.df_t$upos, "NOUN"), "n", ifelse(str_detect(HSE.df_t$upos, "VERB"), "v", ifelse(str_detect(HSE.df_t$upos, "ADJ"), "adj", ifelse(str_detect(HSE.df_t$upos, "ADV"),"adv","other"))))

notHSE.df_t$upos_min = ifelse(str_detect(notHSE.df_t$upos, "NOUN"), "n", ifelse(str_detect(notHSE.df_t$upos, "VERB"), "v", ifelse(str_detect(notHSE.df_t$upos, "ADJ"), "adj", ifelse(str_detect(notHSE.df_t$upos, "ADV"),"adv","other"))))


HSE.df_1_t = HSE.df_t %>% mutate(xtok = paste(lemma, upos_min, sep = "_")) %>% group_by(doc_id) %>% summarize(toksent = paste(xtok, collapse = " "))

notHSE.df_1_t = notHSE.df_t %>% mutate(xtok = paste(lemma, upos_min, sep = "_")) %>% group_by(doc_id) %>% summarize(toksent = paste(xtok, collapse = " "))


bigrams_HSE_t <- HSE.df_1_t %>% 
  unnest_tokens(bigram, toksent, token = "ngrams", n = 2) %>%
    dplyr::select(doc_id, bigram)

bigrams_notHSE_t <- notHSE.df_1_t %>% 
  unnest_tokens(bigram, toksent, token = "ngrams", n = 2) %>%
    dplyr::select(doc_id, bigram)

bigrams_HSE.filtered_t <- bigrams_HSE_t %>% 
  separate(bigram, c("word1", "word2"), sep = " ")

bigrams_notHSE.filtered_t <- bigrams_notHSE_t %>% 
  separate(bigram, c("word1", "word2"), sep = " ")

Самые частые словосочетания “прил. + сущ.” для преподавателей НИУ ВШЭ VS преподавателей других ВУЗов соответственно

bigrams_HSE.a_t <- bigrams_HSE.filtered_t %>% 
  filter(str_detect(word1, "_adj$")) %>% 
  filter(str_detect(word2, "_n$"))

bifreq_HSE.a_t <- bigrams_HSE.a_t %>% 
  dplyr::count(word1, word2, sort = TRUE)

bigrams_notHSE.a_t <- bigrams_notHSE.filtered_t %>% 
  filter(str_detect(word1, "_adj$")) %>% 
  filter(str_detect(word2, "_n$"))

bifreq_notHSE.a_t <- bigrams_notHSE.a_t %>% 
  dplyr::count(word1, word2, sort = TRUE)

grid.arrange(
  tableGrob(bifreq_HSE.a_t[c(1:6,8:11), 1:3], theme=tt1,rows = NULL),
  tableGrob(bifreq_notHSE.a_t[1:10, 1:3], theme=tt1,rows = NULL),
  nrow = 1)

А что думают преподаватели по поводу наказания за списывание?

Преподаватели НИУ ВШЭ: если суммировать, то первый раз попался - предупреждение, второй - отчисление. Как-то очень строго, но похоже на официальные правила НИУ ВШЭ по борьбе с плагиатом (скорее всего концепт плагиата уже включен сюда). Также преподаватели отмечают, что важно понимание предмета, особенно если студент пишет выпускную или конкурсную работу - в таких ситуациях списывание вообще неприемлемо. А вот в некоторых случаях, если преподаватель сам разрешил, то можно воспользоваться “легальной шпаргалкой”, но и она скорее всего не понадобиться, потому что преподаватель отличный!

Преподаватели других ВУЗов: за списывание студенту нужно сделать “дисциплинарное взыскание”, а также он должен быть “удален” с экзамена и получить “неудовлетворительную оценку”. Опция “Дополнительный вопрос” у преподавателей других ВУЗов тоже имеет место быть - таковы традиционные системы приема экзаменов!

Самые частые словосочетания “сущ. + глаг.” для студентов НИУ ВШЭ VS студентов других ВУЗов соответственно

bigrams_HSE.b <- bigrams_HSE.filtered %>% 
  filter(str_detect(word1, "_v$")) %>% 
  filter(str_detect(word2, "_n$"))

bifreq_HSE.b <- bigrams_HSE.b %>% 
  dplyr::count(word1, word2, sort = TRUE)

bigrams_notHSE.b <- bigrams_notHSE.filtered %>% 
  filter(str_detect(word1, "_v$")) %>% 
  filter(str_detect(word2, "_n$"))

bifreq_notHSE.b <- bigrams_notHSE.b %>% 
  dplyr::count(word1, word2, sort = TRUE)

grid.arrange(
  tableGrob(bifreq_HSE.b[c(1:2,6:13), 1:3], theme=tt1,rows = NULL),
  tableGrob(bifreq_notHSE.b[c(1:4,6:11), 1:3], theme=tt1,rows = NULL),
  nrow = 1)

Что нужно сделать за списывание?

Студенты ВШЭ: как вариант - аннулировать работу, но бывают и исключения(если только “формулу подглядел”!). Теряюсь в догадках о том, что имелось ввиду по “восприимчивостью к нововведениям”, но как алтернативный вариант ещё можно “забрать телефон” или “забрать работу” (но лучше все-таки просто телефон).

Студенты других ВУЗов: “бить палкой” немного вывело меня из колеи в процессе анализа,но предлагаются и более адекватные методы борьбы со списыванием: “валить студента”!, “валить на пересдаче”!, ну а можно просто “сделать выводы” - тихо и мирно, чтобы никто не пострадал.

Самые частые словосочетания “сущ. + глаг.” для преподавателей НИУ ВШЭ VS преподавателей других ВУЗов соответственно

bigrams_HSE.b_t <- bigrams_HSE.filtered_t %>% 
  filter(str_detect(word1, "_v$")) %>% 
  filter(str_detect(word2, "_n$"))

bifreq_HSE.b_t <- bigrams_HSE.b_t %>% 
  dplyr::count(word1, word2, sort = TRUE)

bigrams_notHSE.b_t <- bigrams_notHSE.filtered_t %>% 
  filter(str_detect(word1, "_v$")) %>% 
  filter(str_detect(word2, "_n$"))

bifreq_notHSE.b_t <- bigrams_notHSE.b_t %>% 
  dplyr::count(word1, word2, sort = TRUE)

grid.arrange(
  tableGrob(bifreq_HSE.b_t[2:11, 1:3], theme=tt1, rows = NULL),
  tableGrob(bifreq_notHSE.b_t[1:10, 1:3], theme=tt1, rows = NULL),
  nrow = 1)

Хорошо что хоть преподаватели не намереваются “бить палкой” за списывание!

А вот что говорят преподаватели НИУ ВШЭ: списывание это аморально, “пресечение идеала”, а ещё списывание “разрушает контакт” с преподователем [как же много инсайтов можно узнать с помощью несложного анализа текстов!]. Нужно принимать меры по предотвращению списывания,а также следить за студентами во время экзамена.

Преподаватели других ВУЗов: нужно исключить возможность списывания, а в случае удачной попытки - “отправлять на пересдачу” или “выгонять с экзамена”. Также эффективной мерой может послужить “рассаживание” студентов, чтобы “выяснить” объективный “уровень” их знаний по предмету.

Вопрос 3. Если случалось так, что была возможность списать, и никакого наказания бы точно не было, но Вы не списали - то почему не списали? (только для студентов)

students_q3 = students %>% dplyr::select(inst, why_not) %>% na.omit()

students_q3$id = 1:nrow(students_q3)
students_q3$why_not = str_to_lower(students_q3$why_not) 
students_q3$why_not = gsub("[[:punct:]]", "",students_q3$why_not)
students_q3$why_not = gsub("[[:digit:]]", "",students_q3$why_not)
students_q3$why_not = str_replace_all(students_q3$why_not, "\n", " ")

HSE = students_q3 %>% filter(inst == "НИУ ВШЭ")
notHSE = students_q3 %>% filter(inst == "Другие ВУЗы")

#model <- udpipe_download_model(language = "russian-syntagrus")
#rumodel <- udpipe_load_model(file = model$file_model)

HSE.df <- udpipe_annotate(rumodel, HSE$why_not) %>% 
    as.data.frame %>% anti_join(rustopwords, by = c("lemma" = "words"))

notHSE.df <- udpipe_annotate(rumodel, notHSE$why_not) %>% 
    as.data.frame %>% anti_join(rustopwords, by = c("lemma" = "words"))

HSE.df$upos_min = ifelse(str_detect(HSE.df$upos, "NOUN"), "n", ifelse(str_detect(HSE.df$upos, "VERB"), "v", ifelse(str_detect(HSE.df$upos, "ADJ"), "adj", ifelse(str_detect(HSE.df$upos, "ADV"),"adv","other"))))

notHSE.df$upos_min = ifelse(str_detect(notHSE.df$upos, "NOUN"), "n", ifelse(str_detect(notHSE.df$upos, "VERB"), "v", ifelse(str_detect(notHSE.df$upos, "ADJ"), "adj", ifelse(str_detect(notHSE.df$upos, "ADV"),"adv","other"))))


HSE.df_1 = HSE.df %>% mutate(xtok = paste(lemma, upos_min, sep = "_")) %>% group_by(doc_id) %>% summarize(toksent = paste(xtok, collapse = " "))

notHSE.df_1 = notHSE.df %>% mutate(xtok = paste(lemma, upos_min, sep = "_")) %>% group_by(doc_id) %>% summarize(toksent = paste(xtok, collapse = " "))


bigrams_HSE <- HSE.df_1 %>% 
  unnest_tokens(bigram, toksent, token = "ngrams", n = 2) %>%
    dplyr::select(doc_id, bigram)

bigrams_notHSE <- notHSE.df_1 %>% 
  unnest_tokens(bigram, toksent, token = "ngrams", n = 2) %>%
    dplyr::select(doc_id, bigram)

bigrams_HSE.filtered <- bigrams_HSE %>% 
  separate(bigram, c("word1", "word2"), sep = " ")

bigrams_notHSE.filtered <- bigrams_notHSE %>% 
  separate(bigram, c("word1", "word2"), sep = " ")

Самые частые словосочетания “прил. + сущ.” для студентов НИУ ВШЭ VS студентов других ВУЗов соответственно

bigrams_HSE.a <- bigrams_HSE.filtered %>% 
  filter(str_detect(word1, "_adj$")) %>% 
  filter(str_detect(word2, "_n$"))

bifreq_HSE.a <- bigrams_HSE.a %>% 
  dplyr::count(word1, word2, sort = TRUE)

bigrams_notHSE.a <- bigrams_notHSE.filtered %>% 
  filter(str_detect(word1, "_adj$")) %>% 
  filter(str_detect(word2, "_n$"))

bifreq_notHSE.a <- bigrams_notHSE.a %>% 
  dplyr::count(word1, word2, sort = TRUE)

grid.arrange(
  tableGrob(bifreq_HSE.a[1:10, 1:3], theme=tt1, rows = NULL),
  tableGrob(bifreq_notHSE.a[c(1:3,5:11), 1:3], theme=tt1, rows = NULL),
  nrow = 1)

Итак, попробуем сконструировать общее понимание того, почему студенты все-таки НЕ списывают, даже когда есть такая возможность?

Студенты ВШЭ: для “сдачи экзамена” на “высокую оценку” хватает собственных знаний. Почему? “Долгая подготовка”. Также отсутствие списывания можно объяснить личной заинтересованностью в предмете, а также опасением перед “муками совести”. А вообще есть очень “маленький шанс” что списывание поможет.

Студенты других ВУЗов: вероятно, поскольку экзамены в других ВУЗах проводятся в форме “живого общения” - списать особо не получается, особенно если есть “личное уважение” к преподавателю. Аналогично предыдущему примеру, некоторые студенты других ВУЗов руководствуются “моральными установками”, а ещё, если ты круглый отличник, то это вроде как ещё одна причина не списывать (потому что совестно или потому что итак оценку завысят?

Самые частые словосочетания “сущ. + глаг.” для студентов НИУ ВШЭ VS студентов других ВУЗов соответственно

bigrams_HSE.b <- bigrams_HSE.filtered %>% 
  filter(str_detect(word1, "_v$")) %>% 
  filter(str_detect(word2, "_n$"))

bifreq_HSE.b <- bigrams_HSE.b %>% 
  dplyr::count(word1, word2, sort = TRUE)

bigrams_notHSE.b <- bigrams_notHSE.filtered %>% 
  filter(str_detect(word1, "_v$")) %>% 
  filter(str_detect(word2, "_n$"))

bifreq_notHSE.b <- bigrams_notHSE.b %>% 
  dplyr::count(word1, word2, sort = TRUE)

grid.arrange(
  tableGrob(bifreq_HSE.b[1:10, 1:3], theme=tt1, rows = NULL),
  tableGrob(bifreq_notHSE.b[1:10, 1:3], theme=tt1, rows = NULL),
  nrow = 1)

Что ещё интересного скажут студенты?

ВШЭ: списывать не нужно, если “выучил базу”, а ещё если “голова думает”, конечно же. Также необходимость списывать пропадает, если аналогичный вопрос уже был проработан или в вопросе есть подсказка. В общем и целом, если предмет нравится - то и списывать не хочется.

Другие ВУЗы: если знаешь материал с предмета - списывать нет необходимости. Нужно постараться “выудить из памяти” всю необходимую информацию, и все будет хорошо. А если ты ведешь практику - то точно во всем сам разберешься задолго до экзамена.

Вопрос 4. Если были у вас во время обучения предметы, где было не принято списывать - то что необычного было в таких предметах? Почему было не принято?

students_q4 = students %>% dplyr::select(inst, no_cheat) %>% na.omit()

students_q4$id = 1:nrow(students_q4)
students_q4$no_cheat= str_to_lower(students_q4$no_cheat) 
students_q4$no_cheat = gsub("[[:punct:]]", "",students_q4$no_cheat)
students_q4$no_cheat = gsub("[[:digit:]]", "",students_q4$no_cheat)
students_q4$no_cheat = str_replace_all(students_q4$no_cheat, "\n", " ")

HSE = students_q4 %>% filter(inst == "НИУ ВШЭ")
notHSE = students_q4 %>% filter(inst == "Другие ВУЗы")

#model <- udpipe_download_model(language = "russian-syntagrus")
#rumodel <- udpipe_load_model(file = model$file_model)

HSE.df <- udpipe_annotate(rumodel, HSE$no_cheat) %>% 
    as.data.frame %>% anti_join(rustopwords, by = c("lemma" = "words"))

notHSE.df <- udpipe_annotate(rumodel, notHSE$no_cheat) %>% 
    as.data.frame %>% anti_join(rustopwords, by = c("lemma" = "words"))

HSE.df$upos_min = ifelse(str_detect(HSE.df$upos, "NOUN"), "n", ifelse(str_detect(HSE.df$upos, "VERB"), "v", ifelse(str_detect(HSE.df$upos, "ADJ"), "adj", ifelse(str_detect(HSE.df$upos, "ADV"),"adv","other"))))

notHSE.df$upos_min = ifelse(str_detect(notHSE.df$upos, "NOUN"), "n", ifelse(str_detect(notHSE.df$upos, "VERB"), "v", ifelse(str_detect(notHSE.df$upos, "ADJ"), "adj", ifelse(str_detect(notHSE.df$upos, "ADV"),"adv","other"))))


HSE.df_1 = HSE.df %>% mutate(xtok = paste(lemma, upos_min, sep = "_")) %>% group_by(doc_id) %>% summarize(toksent = paste(xtok, collapse = " "))

notHSE.df_1 = notHSE.df %>% mutate(xtok = paste(lemma, upos_min, sep = "_")) %>% group_by(doc_id) %>% summarize(toksent = paste(xtok, collapse = " "))


bigrams_HSE <- HSE.df_1 %>% 
  unnest_tokens(bigram, toksent, token = "ngrams", n = 2) %>%
    dplyr::select(doc_id, bigram)

bigrams_notHSE <- notHSE.df_1 %>% 
  unnest_tokens(bigram, toksent, token = "ngrams", n = 2) %>%
    dplyr::select(doc_id, bigram)

bigrams_HSE.filtered <- bigrams_HSE %>% 
  separate(bigram, c("word1", "word2"), sep = " ")

bigrams_notHSE.filtered <- bigrams_notHSE %>% 
  separate(bigram, c("word1", "word2"), sep = " ")

Самые частые словосочетания “прил. + сущ.” для студентов НИУ ВШЭ VS студентов других ВУЗов соответственно

bigrams_HSE.a <- bigrams_HSE.filtered %>% 
  filter(str_detect(word1, "_adj$")) %>% 
  filter(str_detect(word2, "_n$"))

bifreq_HSE.a <- bigrams_HSE.a %>% 
  dplyr::count(word1, word2, sort = TRUE)

bigrams_notHSE.a <- bigrams_notHSE.filtered %>% 
  filter(str_detect(word1, "_adj$")) %>% 
  filter(str_detect(word2, "_n$"))

bifreq_notHSE.a <- bigrams_notHSE.a %>% 
  dplyr::count(word1, word2, sort = TRUE)

grid.arrange(
  tableGrob(bifreq_HSE.a[1:10, 1:3], theme=tt1, rows = NULL),
  tableGrob(bifreq_notHSE.a[1:10, 1:3], theme=tt1, rows = NULL),
  nrow = 1)

Итак, что необычного в предметах, на которых не принятно списывать?

Студенты ВШЭ: это предмет, важный для освоения, высокого уровня сложности. С преподавателем выстроены доверительные отношения. Также отсутствию списывающих может послужить жесткий контроль - на пересдаче никому идти не хочется.

Другие ВУЗы: это важный профильный предмет, где объясняются базовые вещи, которые нужно понимать. Присутствует большое уважение к преподавателю, который, к тому же, ещё и высококлассный. Отсутствие списывания можно также связать с получением знаний, которые пригодяться в дальнейшей деятельности (работе).

teachers_q4 = teachеrs %>% dplyr::select(inst, no_cheat) %>% na.omit()

teachers_q4$id = 1:nrow(teachers_q4)
teachers_q4$no_cheat = str_to_lower(teachers_q4$no_cheat) 
teachers_q4$no_cheat = gsub("[[:punct:]]", "",teachers_q4$no_cheat)
teachers_q4$no_cheat = gsub("[[:digit:]]", "",teachers_q4$no_cheat)
teachers_q4$no_cheat = str_replace_all(teachers_q4$no_cheat, "\n", " ")

HSE_t = teachers_q4 %>% filter(inst == "НИУ ВШЭ")
notHSE_t = teachers_q4 %>% filter(inst == "Другие ВУЗы")

#model <- udpipe_download_model(language = "russian-syntagrus")
#rumodel <- udpipe_load_model(file = model$file_model)

HSE.df_t <- udpipe_annotate(rumodel, HSE_t$no_cheat) %>% 
    as.data.frame %>% anti_join(rustopwords, by = c("lemma" = "words"))

notHSE.df_t <- udpipe_annotate(rumodel, notHSE_t$no_cheat) %>% 
    as.data.frame %>% anti_join(rustopwords, by = c("lemma" = "words"))

HSE.df_t$upos_min = ifelse(str_detect(HSE.df_t$upos, "NOUN"), "n", ifelse(str_detect(HSE.df_t$upos, "VERB"), "v", ifelse(str_detect(HSE.df_t$upos, "ADJ"), "adj", ifelse(str_detect(HSE.df_t$upos, "ADV"),"adv","other"))))

notHSE.df_t$upos_min = ifelse(str_detect(notHSE.df_t$upos, "NOUN"), "n", ifelse(str_detect(notHSE.df_t$upos, "VERB"), "v", ifelse(str_detect(notHSE.df_t$upos, "ADJ"), "adj", ifelse(str_detect(notHSE.df_t$upos, "ADV"),"adv","other"))))


HSE.df_1_t = HSE.df_t %>% mutate(xtok = paste(lemma, upos_min, sep = "_")) %>% group_by(doc_id) %>% summarize(toksent = paste(xtok, collapse = " "))

notHSE.df_1_t = notHSE.df_t %>% mutate(xtok = paste(lemma, upos_min, sep = "_")) %>% group_by(doc_id) %>% summarize(toksent = paste(xtok, collapse = " "))


bigrams_HSE_t <- HSE.df_1_t %>% 
  unnest_tokens(bigram, toksent, token = "ngrams", n = 2) %>%
    dplyr::select(doc_id, bigram)

bigrams_notHSE_t <- notHSE.df_1_t %>% 
  unnest_tokens(bigram, toksent, token = "ngrams", n = 2) %>%
    dplyr::select(doc_id, bigram)

bigrams_HSE.filtered_t <- bigrams_HSE_t %>% 
  separate(bigram, c("word1", "word2"), sep = " ")

bigrams_notHSE.filtered_t <- bigrams_notHSE_t %>% 
  separate(bigram, c("word1", "word2"), sep = " ")

Самые частые словосочетания “прил. + сущ.” для преподавателей НИУ ВШЭ VS преподавателей других ВУЗов соответственно

bigrams_HSE.a_t <- bigrams_HSE.filtered_t %>% 
  filter(str_detect(word1, "_adj$")) %>% 
  filter(str_detect(word2, "_n$"))

bifreq_HSE.a_t <- bigrams_HSE.a_t %>% 
  dplyr::count(word1, word2, sort = TRUE)

bigrams_notHSE.a_t <- bigrams_notHSE.filtered_t %>% 
  filter(str_detect(word1, "_adj$")) %>% 
  filter(str_detect(word2, "_n$"))

bifreq_notHSE.a_t <- bigrams_notHSE.a_t %>% 
  dplyr::count(word1, word2, sort = TRUE)

grid.arrange(
  tableGrob(bifreq_HSE.a_t[1:10, 1:3], theme=tt1, rows = NULL),
  tableGrob(bifreq_notHSE.a_t[1:10, 1:3], theme=tt1, rows = NULL),
  nrow = 1)

А что вспомнят по этому поводу преподаватели?

Преподаватели НИУ ВШЭ: также отмечают доверительные отношения с преподавателем,а также какой-то таинственный “желтый лист”. Также отсутствие списывания можно объяснить “соответствующей культурой” и хорошим коллективом.

Преподаватели других вузов: на старших курсах списывать не надо, а ещё обычно не списывают на иностранных языках. Если сдача предмета комфортная - то и списывать не нужно, а если ещё и преподавателя любишь - так вообще отлично.

Самые частые словосочетания “сущ. + глаг.” для студентов НИУ ВШЭ VS студентов других ВУЗов соответственно

bigrams_HSE.b <- bigrams_HSE.filtered %>% 
  filter(str_detect(word1, "_v$")) %>% 
  filter(str_detect(word2, "_n$"))

bifreq_HSE.b <- bigrams_HSE.b %>% 
  dplyr::count(word1, word2, sort = TRUE)

bigrams_notHSE.b <- bigrams_notHSE.filtered %>% 
  filter(str_detect(word1, "_v$")) %>% 
  filter(str_detect(word2, "_n$"))

bifreq_notHSE.b <- bigrams_notHSE.b %>% 
  dplyr::count(word1, word2, sort = TRUE)

grid.arrange(
  tableGrob(bifreq_HSE.b[2:11, 1:3], theme=tt1, rows = NULL),
  tableGrob(bifreq_notHSE.b[1:10, 1:3], theme=tt1, rows = NULL),
  nrow = 1)

Что ещё скажут студенты по поводу особенностей предметов, на которых не принято было списывать?

Студенты ВШЭ: на таких предметах обычно вдохновляешься и стремишься к знаниям. Очень круто - если предмет имеет для тебя смысл, а если ты программированием планируешь заниматься - то точно без списывания живем.

Студенты других ВУЗов: аналогично предыдущему случаю, важно видеть смысл в изучаемом предмете, а ещё важно выбрать для себя интересную тему, если пишешь выпускную/курсовую работу и тогда потребность в списывании будет минимизирована.

Дополнительная информация (Ответы на нижеперечисленные вопросы были немногочисленными)

Вопрос 5. Как администрация заведения, где Вы учитесь (преподаёте) относится к списыванию? Например, администрация может считать, что это вопрос взаимоотношения учащихся и учащих, и ничего об этом знать не хочет.

students_q5 = students %>% dplyr::select(inst, admin) %>% na.omit()

students_q5$id = 1:nrow(students_q5)
students_q5$admin = str_to_lower(students_q5$admin) 
students_q5$admin = gsub("[[:punct:]]", "",students_q5$admin)
students_q5$admin = gsub("[[:digit:]]", "",students_q5$admin)
students_q5$admin = str_replace_all(students_q5$admin, "\n", " ")

HSE = students_q5 %>% filter(inst == "НИУ ВШЭ")
notHSE = students_q5 %>% filter(inst == "Другие ВУЗы")

#model <- udpipe_download_model(language = "russian-syntagrus")
#rumodel <- udpipe_load_model(file = model$file_model)

HSE.df <- udpipe_annotate(rumodel, HSE$admin) %>% 
    as.data.frame %>% anti_join(rustopwords, by = c("lemma" = "words"))

notHSE.df <- udpipe_annotate(rumodel, notHSE$admin) %>% 
    as.data.frame %>% anti_join(rustopwords, by = c("lemma" = "words"))

HSE.df$upos_min = ifelse(str_detect(HSE.df$upos, "NOUN"), "n", ifelse(str_detect(HSE.df$upos, "VERB"), "v", ifelse(str_detect(HSE.df$upos, "ADJ"), "adj", ifelse(str_detect(HSE.df$upos, "ADV"),"adv","other"))))

notHSE.df$upos_min = ifelse(str_detect(notHSE.df$upos, "NOUN"), "n", ifelse(str_detect(notHSE.df$upos, "VERB"), "v", ifelse(str_detect(notHSE.df$upos, "ADJ"), "adj", ifelse(str_detect(notHSE.df$upos, "ADV"),"adv","other"))))


HSE.df_1 = HSE.df %>% mutate(xtok = paste(lemma, upos_min, sep = "_")) %>% group_by(doc_id) %>% summarize(toksent = paste(xtok, collapse = " "))

notHSE.df_1 = notHSE.df %>% mutate(xtok = paste(lemma, upos_min, sep = "_")) %>% group_by(doc_id) %>% summarize(toksent = paste(xtok, collapse = " "))


bigrams_HSE <- HSE.df_1 %>% 
  unnest_tokens(bigram, toksent, token = "ngrams", n = 2) %>%
    dplyr::select(doc_id, bigram)

bigrams_notHSE <- notHSE.df_1 %>% 
  unnest_tokens(bigram, toksent, token = "ngrams", n = 2) %>%
    dplyr::select(doc_id, bigram)

bigrams_HSE.filtered <- bigrams_HSE %>% 
  separate(bigram, c("word1", "word2"), sep = " ")

bigrams_notHSE.filtered <- bigrams_notHSE %>% 
  separate(bigram, c("word1", "word2"), sep = " ")

Самые частые словосочетания “прил. + сущ.” для студентов НИУ ВШЭ VS студентов других ВУЗов соответственно

bigrams_HSE.a <- bigrams_HSE.filtered %>% 
  filter(str_detect(word1, "_adj$")) %>% 
  filter(str_detect(word2, "_n$"))

bifreq_HSE.a <- bigrams_HSE.a %>% 
  dplyr::count(word1, word2, sort = TRUE)

bigrams_notHSE.a <- bigrams_notHSE.filtered %>% 
  filter(str_detect(word1, "_adj$")) %>% 
  filter(str_detect(word2, "_n$"))

bifreq_notHSE.a <- bigrams_notHSE.a %>% 
  dplyr::count(word1, word2, sort = TRUE)

grid.arrange(
  tableGrob(bifreq_HSE.a[1:10, 1:3], theme=tt1, rows = NULL),
  tableGrob(bifreq_notHSE.a[1:10, 1:3], theme=tt1, rows = NULL),
  nrow = 1)

teachers_q5 = teachеrs %>% dplyr::select(inst, admin) %>% na.omit()

teachers_q5$id = 1:nrow(teachers_q5)
teachers_q5$admin = str_to_lower(teachers_q5$admin) 
teachers_q5$admin = gsub("[[:punct:]]", "",teachers_q5$admin)
teachers_q5$admin = gsub("[[:digit:]]", "",teachers_q5$admin)
teachers_q5$admin = str_replace_all(teachers_q5$admin, "\n", " ")

HSE_t = teachers_q5 %>% filter(inst == "НИУ ВШЭ")
notHSE_t = teachers_q5 %>% filter(inst == "Другие ВУЗы")

#model <- udpipe_download_model(language = "russian-syntagrus")
#rumodel <- udpipe_load_model(file = model$file_model)

HSE.df_t <- udpipe_annotate(rumodel, HSE_t$admin) %>% 
    as.data.frame %>% anti_join(rustopwords, by = c("lemma" = "words"))

notHSE.df_t <- udpipe_annotate(rumodel, notHSE_t$admin) %>% 
    as.data.frame %>% anti_join(rustopwords, by = c("lemma" = "words"))

HSE.df_t$upos_min = ifelse(str_detect(HSE.df_t$upos, "NOUN"), "n", ifelse(str_detect(HSE.df_t$upos, "VERB"), "v", ifelse(str_detect(HSE.df_t$upos, "ADJ"), "adj", ifelse(str_detect(HSE.df_t$upos, "ADV"),"adv","other"))))

notHSE.df_t$upos_min = ifelse(str_detect(notHSE.df_t$upos, "NOUN"), "n", ifelse(str_detect(notHSE.df_t$upos, "VERB"), "v", ifelse(str_detect(notHSE.df_t$upos, "ADJ"), "adj", ifelse(str_detect(notHSE.df_t$upos, "ADV"),"adv","other"))))


HSE.df_1_t = HSE.df_t %>% mutate(xtok = paste(lemma, upos_min, sep = "_")) %>% group_by(doc_id) %>% summarize(toksent = paste(xtok, collapse = " "))

notHSE.df_1_t = notHSE.df_t %>% mutate(xtok = paste(lemma, upos_min, sep = "_")) %>% group_by(doc_id) %>% summarize(toksent = paste(xtok, collapse = " "))


bigrams_HSE_t <- HSE.df_1_t %>% 
  unnest_tokens(bigram, toksent, token = "ngrams", n = 2) %>%
    dplyr::select(doc_id, bigram)

bigrams_notHSE_t <- notHSE.df_1_t %>% 
  unnest_tokens(bigram, toksent, token = "ngrams", n = 2) %>%
    dplyr::select(doc_id, bigram)

bigrams_HSE.filtered_t <- bigrams_HSE_t %>% 
  separate(bigram, c("word1", "word2"), sep = " ")

bigrams_notHSE.filtered_t <- bigrams_notHSE_t %>% 
  separate(bigram, c("word1", "word2"), sep = " ")

Самые частые словосочетания “прил. + сущ.” для преподавателей НИУ ВШЭ VS преподавателей других ВУЗов соответственно

bigrams_HSE.a_t <- bigrams_HSE.filtered_t %>% 
  filter(str_detect(word1, "_adj$")) %>% 
  filter(str_detect(word2, "_n$"))

bifreq_HSE.a_t <- bigrams_HSE.a_t %>% 
  dplyr::count(word1, word2, sort = TRUE)

bigrams_notHSE.a_t <- bigrams_notHSE.filtered_t %>% 
  filter(str_detect(word1, "_adj$")) %>% 
  filter(str_detect(word2, "_n$"))

bifreq_notHSE.a_t <- bigrams_notHSE.a_t %>% 
  dplyr::count(word1, word2, sort = TRUE)

grid.arrange(
  tableGrob(bifreq_HSE.a_t[c(1:8,10:11), 1:3], theme=tt1, rows = NULL),
  tableGrob(bifreq_notHSE.a_t[1:10, 1:3], theme=tt1, rows = NULL),
  nrow=1)

Самые частые словосочетания “сущ. + глаг.” для студентов НИУ ВШЭ VS студентов других ВУЗов соответственно

bigrams_HSE.b <- bigrams_HSE.filtered %>% 
  filter(str_detect(word1, "_v$")) %>% 
  filter(str_detect(word2, "_n$"))

bifreq_HSE.b <- bigrams_HSE.b %>% 
  dplyr::count(word1, word2, sort = TRUE)

bigrams_notHSE.b <- bigrams_notHSE.filtered %>% 
  filter(str_detect(word1, "_v$")) %>% 
  filter(str_detect(word2, "_n$"))

bifreq_notHSE.b <- bigrams_notHSE.b %>% 
  dplyr::count(word1, word2, sort = TRUE)

grid.arrange(
  tableGrob(bifreq_HSE.b[1:10, 1:3], theme=tt1, rows = NULL),
  tableGrob(bifreq_notHSE.b[1:10, 1:3], theme=tt1, rows = NULL),
  nrow = 1)

Самые частые словосочетания “сущ. + глаг.” для преподавателей НИУ ВШЭ VS преподавателей других ВУЗов соответственно

bigrams_HSE.b_t <- bigrams_HSE.filtered_t %>% 
  filter(str_detect(word1, "_v$")) %>% 
  filter(str_detect(word2, "_n$"))

bifreq_HSE.b_t <- bigrams_HSE.b_t %>% 
  dplyr::count(word1, word2, sort = TRUE)

bigrams_notHSE.b_t <- bigrams_notHSE.filtered_t %>% 
  filter(str_detect(word1, "_v$")) %>% 
  filter(str_detect(word2, "_n$"))

bifreq_notHSE.b_t <- bigrams_notHSE.b_t %>% 
  dplyr::count(word1, word2, sort = TRUE)

grid.arrange(
  tableGrob(bifreq_HSE.b_t[1:10, 1:3], theme=tt1, rows = NULL),
  tableGrob(bifreq_notHSE.b_t[1:10, 1:3], theme=tt1, rows = NULL),
  nrow = 1)

Вопрос 6. Приходилось ли Вам участвовать в конфликтах из-за списывания (с любой стороны)? Если да, насколько это было эмоционально тяжело?

students_q6 = students %>% dplyr::select(inst, conflict) %>% na.omit()

students_q6$id = 1:nrow(students_q6)
students_q6$conflict = str_to_lower(students_q6$conflict) 
students_q6$conflict = gsub("[[:punct:]]", "",students_q6$conflict)
students_q6$conflict = gsub("[[:digit:]]", "",students_q6$conflict)
students_q6$conflict = str_replace_all(students_q6$conflict, "\n", " ")

HSE = students_q6 %>% filter(inst == "НИУ ВШЭ")
notHSE = students_q6 %>% filter(inst == "Другие ВУЗы")

#model <- udpipe_download_model(language = "russian-syntagrus")
#rumodel <- udpipe_load_model(file = model$file_model)

HSE.df <- udpipe_annotate(rumodel, HSE$conflict) %>% 
    as.data.frame %>% anti_join(rustopwords, by = c("lemma" = "words"))

notHSE.df <- udpipe_annotate(rumodel, notHSE$conflict) %>% 
    as.data.frame %>% anti_join(rustopwords, by = c("lemma" = "words"))

HSE.df$upos_min = ifelse(str_detect(HSE.df$upos, "NOUN"), "n", ifelse(str_detect(HSE.df$upos, "VERB"), "v", ifelse(str_detect(HSE.df$upos, "ADJ"), "adj", ifelse(str_detect(HSE.df$upos, "ADV"),"adv","other"))))

notHSE.df$upos_min = ifelse(str_detect(notHSE.df$upos, "NOUN"), "n", ifelse(str_detect(notHSE.df$upos, "VERB"), "v", ifelse(str_detect(notHSE.df$upos, "ADJ"), "adj", ifelse(str_detect(notHSE.df$upos, "ADV"),"adv","other"))))


HSE.df_1 = HSE.df %>% mutate(xtok = paste(lemma, upos_min, sep = "_")) %>% group_by(doc_id) %>% summarize(toksent = paste(xtok, collapse = " "))

notHSE.df_1 = notHSE.df %>% mutate(xtok = paste(lemma, upos_min, sep = "_")) %>% group_by(doc_id) %>% summarize(toksent = paste(xtok, collapse = " "))


bigrams_HSE <- HSE.df_1 %>% 
  unnest_tokens(bigram, toksent, token = "ngrams", n = 2) %>%
    dplyr::select(doc_id, bigram)

bigrams_notHSE <- notHSE.df_1 %>% 
  unnest_tokens(bigram, toksent, token = "ngrams", n = 2) %>%
    dplyr::select(doc_id, bigram)

bigrams_HSE.filtered <- bigrams_HSE %>% 
  separate(bigram, c("word1", "word2"), sep = " ")

bigrams_notHSE.filtered <- bigrams_notHSE %>% 
  separate(bigram, c("word1", "word2"), sep = " ")

Самые частые словосочетания “прил. + сущ.” для студентов НИУ ВШЭ VS студентов других ВУЗов соответственно

bigrams_HSE.a <- bigrams_HSE.filtered %>% 
  filter(str_detect(word1, "_adj$")) %>% 
  filter(str_detect(word2, "_n$"))

bifreq_HSE.a <- bigrams_HSE.a %>% 
  dplyr::count(word1, word2, sort = TRUE)

bigrams_notHSE.a <- bigrams_notHSE.filtered %>% 
  filter(str_detect(word1, "_adj$")) %>% 
  filter(str_detect(word2, "_n$"))

bifreq_notHSE.a <- bigrams_notHSE.a %>% 
  dplyr::count(word1, word2, sort = TRUE)

grid.arrange(
  tableGrob(bifreq_HSE.a[1:10, 1:3], theme=tt1, rows = NULL),
  tableGrob(bifreq_notHSE.a[1:10, 1:3], theme=tt1, rows = NULL),
  nrow = 1)

teachers_q6 = teachеrs %>% dplyr::select(inst, conflict) %>% na.omit()

teachers_q6$id = 1:nrow(teachers_q6)
teachers_q6$conflict = str_to_lower(teachers_q6$conflict) 
teachers_q6$conflict = gsub("[[:punct:]]", "",teachers_q6$conflict)
teachers_q6$conflict = gsub("[[:digit:]]", "",teachers_q6$conflict)
teachers_q6$conflict = str_replace_all(teachers_q6$conflict, "\n", " ")

HSE_t = teachers_q6 %>% filter(inst == "НИУ ВШЭ")
notHSE_t = teachers_q6 %>% filter(inst == "Другие ВУЗы")

#model <- udpipe_download_model(language = "russian-syntagrus")
#rumodel <- udpipe_load_model(file = model$file_model)

HSE.df_t <- udpipe_annotate(rumodel, HSE_t$conflict) %>% 
    as.data.frame %>% anti_join(rustopwords, by = c("lemma" = "words"))

notHSE.df_t <- udpipe_annotate(rumodel, notHSE_t$conflict) %>% 
    as.data.frame %>% anti_join(rustopwords, by = c("lemma" = "words"))

HSE.df_t$upos_min = ifelse(str_detect(HSE.df_t$upos, "NOUN"), "n", ifelse(str_detect(HSE.df_t$upos, "VERB"), "v", ifelse(str_detect(HSE.df_t$upos, "ADJ"), "adj", ifelse(str_detect(HSE.df_t$upos, "ADV"),"adv","other"))))

notHSE.df_t$upos_min = ifelse(str_detect(notHSE.df_t$upos, "NOUN"), "n", ifelse(str_detect(notHSE.df_t$upos, "VERB"), "v", ifelse(str_detect(notHSE.df_t$upos, "ADJ"), "adj", ifelse(str_detect(notHSE.df_t$upos, "ADV"),"adv","other"))))


HSE.df_1_t = HSE.df_t %>% mutate(xtok = paste(lemma, upos_min, sep = "_")) %>% group_by(doc_id) %>% summarize(toksent = paste(xtok, collapse = " "))

notHSE.df_1_t = notHSE.df_t %>% mutate(xtok = paste(lemma, upos_min, sep = "_")) %>% group_by(doc_id) %>% summarize(toksent = paste(xtok, collapse = " "))


bigrams_HSE_t <- HSE.df_1_t %>% 
  unnest_tokens(bigram, toksent, token = "ngrams", n = 2) %>%
    dplyr::select(doc_id, bigram)

bigrams_notHSE_t <- notHSE.df_1_t %>% 
  unnest_tokens(bigram, toksent, token = "ngrams", n = 2) %>%
    dplyr::select(doc_id, bigram)

bigrams_HSE.filtered_t <- bigrams_HSE_t %>% 
  separate(bigram, c("word1", "word2"), sep = " ")

bigrams_notHSE.filtered_t <- bigrams_notHSE_t %>% 
  separate(bigram, c("word1", "word2"), sep = " ")

Самые частые словосочетания “прил. + сущ.” для преподавателей НИУ ВШЭ VS преподавателей других ВУЗов соответственно

bigrams_HSE.a_t <- bigrams_HSE.filtered_t %>% 
  filter(str_detect(word1, "_adj$")) %>% 
  filter(str_detect(word2, "_n$"))

bifreq_HSE.a_t <- bigrams_HSE.a_t %>% 
  dplyr::count(word1, word2, sort = TRUE)

bigrams_notHSE.a_t <- bigrams_notHSE.filtered_t %>% 
  filter(str_detect(word1, "_adj$")) %>% 
  filter(str_detect(word2, "_n$"))

bifreq_notHSE.a_t <- bigrams_notHSE.a_t %>% 
  dplyr::count(word1, word2, sort = TRUE)

grid.arrange(
  tableGrob(bifreq_HSE.a_t[1:10, 1:3], theme=tt1, rows = NULL),
  tableGrob(bifreq_notHSE.a_t[1:10, 1:3], theme=tt1, rows = NULL),
  nrow = 1)

Самые частые словосочетания “сущ. + глаг.” для студентов НИУ ВШЭ VS студентов других ВУЗов соответственно

bigrams_HSE.b <- bigrams_HSE.filtered %>% 
  filter(str_detect(word1, "_v$")) %>% 
  filter(str_detect(word2, "_n$"))

bifreq_HSE.b <- bigrams_HSE.b %>% 
  dplyr::count(word1, word2, sort = TRUE)

bigrams_notHSE.b <- bigrams_notHSE.filtered %>% 
  filter(str_detect(word1, "_v$")) %>% 
  filter(str_detect(word2, "_n$"))

bifreq_notHSE.b <- bigrams_notHSE.b %>% 
  dplyr::count(word1, word2, sort = TRUE)

grid.arrange(
  tableGrob(bifreq_HSE.b[1:10, 1:3], theme=tt1, rows = NULL),
  tableGrob(bifreq_notHSE.b[1:10, 1:3], theme=tt1, rows = NULL),
  nrow = 1)

Самые частые словосочетания “сущ. + глаг.” для преподавателей НИУ ВШЭ VS преподавателей других ВУЗов соответственно

bigrams_HSE.b_t <- bigrams_HSE.filtered_t %>% 
  filter(str_detect(word1, "_v$")) %>% 
  filter(str_detect(word2, "_n$"))

bifreq_HSE.b_t <- bigrams_HSE.b_t %>% 
  dplyr::count(word1, word2, sort = TRUE)

bigrams_notHSE.b_t <- bigrams_notHSE.filtered_t %>% 
  filter(str_detect(word1, "_v$")) %>% 
  filter(str_detect(word2, "_n$"))

bifreq_notHSE.b_t <- bigrams_notHSE.b_t %>% 
  dplyr::count(word1, word2, sort = TRUE)

grid.arrange(
  tableGrob(bifreq_HSE.b_t[1:10, 1:3], theme=tt1, rows = NULL),
  tableGrob(bifreq_notHSE.b_t[1:10, 1:3], theme=tt1, rows = NULL),
  nrow = 1)

Вопрос 7. Считаете ли Вы списывание серьёзной проблемой современного образования? (да, потому что… ) или (нет, потому что…)

students_q7 = students %>% dplyr::select(inst, problem) %>% na.omit()

students_q7$id = 1:nrow(students_q7)
students_q7$problem = str_to_lower(students_q7$problem) 
students_q7$problem = gsub("[[:punct:]]", "",students_q7$problem)
students_q7$problem = gsub("[[:digit:]]", "",students_q7$problem)
students_q7$problem = str_replace_all(students_q7$problem, "\n", " ")

HSE = students_q7 %>% filter(inst == "НИУ ВШЭ")
notHSE = students_q7 %>% filter(inst == "Другие ВУЗы")

#model <- udpipe_download_model(language = "russian-syntagrus")
#rumodel <- udpipe_load_model(file = model$file_model)

HSE.df <- udpipe_annotate(rumodel, HSE$problem) %>% 
    as.data.frame %>% anti_join(rustopwords, by = c("lemma" = "words"))

notHSE.df <- udpipe_annotate(rumodel, notHSE$problem) %>% 
    as.data.frame %>% anti_join(rustopwords, by = c("lemma" = "words"))

HSE.df$upos_min = ifelse(str_detect(HSE.df$upos, "NOUN"), "n", ifelse(str_detect(HSE.df$upos, "VERB"), "v", ifelse(str_detect(HSE.df$upos, "ADJ"), "adj", ifelse(str_detect(HSE.df$upos, "ADV"),"adv","other"))))

notHSE.df$upos_min = ifelse(str_detect(notHSE.df$upos, "NOUN"), "n", ifelse(str_detect(notHSE.df$upos, "VERB"), "v", ifelse(str_detect(notHSE.df$upos, "ADJ"), "adj", ifelse(str_detect(notHSE.df$upos, "ADV"),"adv","other"))))


HSE.df_1 = HSE.df %>% mutate(xtok = paste(lemma, upos_min, sep = "_")) %>% group_by(doc_id) %>% summarize(toksent = paste(xtok, collapse = " "))

notHSE.df_1 = notHSE.df %>% mutate(xtok = paste(lemma, upos_min, sep = "_")) %>% group_by(doc_id) %>% summarize(toksent = paste(xtok, collapse = " "))


bigrams_HSE <- HSE.df_1 %>% 
  unnest_tokens(bigram, toksent, token = "ngrams", n = 2) %>%
    dplyr::select(doc_id, bigram)

bigrams_notHSE <- notHSE.df_1 %>% 
  unnest_tokens(bigram, toksent, token = "ngrams", n = 2) %>%
    dplyr::select(doc_id, bigram)

bigrams_HSE.filtered <- bigrams_HSE %>% 
  separate(bigram, c("word1", "word2"), sep = " ")

bigrams_notHSE.filtered <- bigrams_notHSE %>% 
  separate(bigram, c("word1", "word2"), sep = " ")

Самые частые словосочетания “прил. + сущ.” для студентов НИУ ВШЭ VS студентов других ВУЗов соответственно

bigrams_HSE.a <- bigrams_HSE.filtered %>% 
  filter(str_detect(word1, "_adj$")) %>% 
  filter(str_detect(word2, "_n$"))

bifreq_HSE.a <- bigrams_HSE.a %>% 
  dplyr::count(word1, word2, sort = TRUE)

bigrams_notHSE.a <- bigrams_notHSE.filtered %>% 
  filter(str_detect(word1, "_adj$")) %>% 
  filter(str_detect(word2, "_n$"))

bifreq_notHSE.a <- bigrams_notHSE.a %>% 
  dplyr::count(word1, word2, sort = TRUE)

grid.arrange(
  tableGrob(bifreq_HSE.a[1:10, 1:3], theme=tt1, rows = NULL),
  tableGrob(bifreq_notHSE.a[1:10, 1:3], theme=tt1, rows = NULL),
  nrow = 1)

teachers_q7 = teachеrs %>% dplyr::select(inst, problem) %>% na.omit()

teachers_q7$id = 1:nrow(teachers_q7)
teachers_q7$problem = str_to_lower(teachers_q7$problem) 
teachers_q7$problem = gsub("[[:punct:]]", "",teachers_q7$problem)
teachers_q7$problem = gsub("[[:digit:]]", "",teachers_q7$problem)
teachers_q7$problem = str_replace_all(teachers_q7$problem, "\n", " ")

HSE_t = teachers_q7 %>% filter(inst == "НИУ ВШЭ")
notHSE_t = teachers_q7 %>% filter(inst == "Другие ВУЗы")

#model <- udpipe_download_model(language = "russian-syntagrus")
#rumodel <- udpipe_load_model(file = model$file_model)

HSE.df_t <- udpipe_annotate(rumodel, HSE_t$problem) %>% 
    as.data.frame %>% anti_join(rustopwords, by = c("lemma" = "words"))

notHSE.df_t <- udpipe_annotate(rumodel, notHSE_t$problem) %>% 
    as.data.frame %>% anti_join(rustopwords, by = c("lemma" = "words"))

HSE.df_t$upos_min = ifelse(str_detect(HSE.df_t$upos, "NOUN"), "n", ifelse(str_detect(HSE.df_t$upos, "VERB"), "v", ifelse(str_detect(HSE.df_t$upos, "ADJ"), "adj", ifelse(str_detect(HSE.df_t$upos, "ADV"),"adv","other"))))

notHSE.df_t$upos_min = ifelse(str_detect(notHSE.df_t$upos, "NOUN"), "n", ifelse(str_detect(notHSE.df_t$upos, "VERB"), "v", ifelse(str_detect(notHSE.df_t$upos, "ADJ"), "adj", ifelse(str_detect(notHSE.df_t$upos, "ADV"),"adv","other"))))


HSE.df_1_t = HSE.df_t %>% mutate(xtok = paste(lemma, upos_min, sep = "_")) %>% group_by(doc_id) %>% summarize(toksent = paste(xtok, collapse = " "))

notHSE.df_1_t = notHSE.df_t %>% mutate(xtok = paste(lemma, upos_min, sep = "_")) %>% group_by(doc_id) %>% summarize(toksent = paste(xtok, collapse = " "))


bigrams_HSE_t <- HSE.df_1_t %>% 
  unnest_tokens(bigram, toksent, token = "ngrams", n = 2) %>%
    dplyr::select(doc_id, bigram)

bigrams_notHSE_t <- notHSE.df_1_t %>% 
  unnest_tokens(bigram, toksent, token = "ngrams", n = 2) %>%
    dplyr::select(doc_id, bigram)

bigrams_HSE.filtered_t <- bigrams_HSE_t %>% 
  separate(bigram, c("word1", "word2"), sep = " ")

bigrams_notHSE.filtered_t <- bigrams_notHSE_t %>% 
  separate(bigram, c("word1", "word2"), sep = " ")

Самые частые словосочетания “прил. + сущ.” для преподавателей НИУ ВШЭ VS преподавателей других ВУЗов соответственно

bigrams_HSE.a_t <- bigrams_HSE.filtered_t %>% 
  filter(str_detect(word1, "_adj$")) %>% 
  filter(str_detect(word2, "_n$"))

bifreq_HSE.a_t <- bigrams_HSE.a_t %>% 
  dplyr::count(word1, word2, sort = TRUE)

bigrams_notHSE.a_t <- bigrams_notHSE.filtered_t %>% 
  filter(str_detect(word1, "_adj$")) %>% 
  filter(str_detect(word2, "_n$"))

bifreq_notHSE.a_t <- bigrams_notHSE.a_t %>% 
  dplyr::count(word1, word2, sort = TRUE)

grid.arrange(
  tableGrob(bifreq_HSE.a_t[1:10, 1:3], theme=tt1, rows = NULL),
  tableGrob(bifreq_notHSE.a_t[1:10, 1:3], theme=tt1, rows = NULL),
  nrow = 1)

Самые частые словосочетания “сущ. + глаг.” для студентов НИУ ВШЭ VS студентов других ВУЗов соответственно

bigrams_HSE.b <- bigrams_HSE.filtered %>% 
  filter(str_detect(word1, "_v$")) %>% 
  filter(str_detect(word2, "_n$"))

bifreq_HSE.b <- bigrams_HSE.b %>% 
  dplyr::count(word1, word2, sort = TRUE)

bigrams_notHSE.b <- bigrams_notHSE.filtered %>% 
  filter(str_detect(word1, "_v$")) %>% 
  filter(str_detect(word2, "_n$"))

bifreq_notHSE.b <- bigrams_notHSE.b %>% 
  dplyr::count(word1, word2, sort = TRUE)

grid.arrange(
  tableGrob(bifreq_HSE.b[1:10, 1:3], theme=tt1, rows = NULL),
  tableGrob(bifreq_notHSE.b[1:10, 1:3], theme=tt1, rows = NULL),
  nrow = 1)

Самые частые словосочетания “сущ. + глаг.” для преподавателей НИУ ВШЭ VS преподавателей других ВУЗов соответственно

bigrams_HSE.b_t <- bigrams_HSE.filtered_t %>% 
  filter(str_detect(word1, "_v$")) %>% 
  filter(str_detect(word2, "_n$"))

bifreq_HSE.b_t <- bigrams_HSE.b_t %>% 
  dplyr::count(word1, word2, sort = TRUE)

bigrams_notHSE.b_t <- bigrams_notHSE.filtered_t %>% 
  filter(str_detect(word1, "_v$")) %>% 
  filter(str_detect(word2, "_n$"))

bifreq_notHSE.b_t <- bigrams_notHSE.b_t %>% 
  dplyr::count(word1, word2, sort = TRUE)

grid.arrange(
  tableGrob(bifreq_HSE.b_t[1:10, 1:3], theme=tt1, rows = NULL),
  tableGrob(bifreq_notHSE.b_t[1:10, 1:3], theme=tt1, rows = NULL),
  nrow = 1)