В данной работе были проанализированы ответы респондентов на различные вопросы, связанные с списыванием (академически нечестным поведением). Опрос был создан Н.С. Калининым для более детального исследования данного феномена. Основные характеристики участников опроса будут представлены в секции “Основная информация о респондентах” для лучшего понимания контекста исследуемого вопроса. Далее последовательно будут представлены результаты анализа текстовых ответов.
Даже несмотря на то, что в данной работе не было использовано никаких сложных моделей текстового анализа, мне удалось так или иначе агрегировать пару сотен ответов в свободной форме и в среднем вычленить главную мысль их общей совокупности по каждому вопросу, а также пронаблюдать различие в содержании ответов среди разных подгрупп.
На практике (в бизнесе, маркетинге) такие задачи ставятся довольно часто (например, проанализировать отзывы о определенном товаре /сервисе/услуге и т. д.). Другими словами, главная задача - понять, что люди думают о каком-либо концепте, будь то товар, услуга или абстрактный феномен (такой как списывание), не читая все несколько сотен, а иногда и больше, ответов.
В ходе работы были проанализированы и проинтерпретированы результаты ответов на 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 % преподавателей Вышки не являются достаточно осведомленными в этом вопросе. Однако, стоит также подчеркнуть, что по сравнению в ВШЭ, более половины преподавателей других ВУЗов не знаю о формальных наказаниях за списывание.
Итак, проведя предварительный эксплораторный анализ, мы имеем более детальное представление о респондентах, а также можем оценить общую картину в целом. Теперь перейдем к анализу текствых ответов. Начнем с базовых шагов (частотность и т.д.), а затем постепенно перейдем к более сложным методам анализа.
Поработаем с каждым вопросом отдельно. Рассматриваем ответы только студентов и преподавателей вузов.
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)
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)
На этапе первичного анализа сложно пронаблюдать какие-либо явные различия между студентами ВШЭ и других ВУЗов в контексте ответа на вопрос о том, что они понимают под словом “списывание” и насколько это серьезный проступок. Обе группы в среднем сходятся во мнении о том, что списывание - это использование сторонних материалов во время экзамена (шпаргалок), которое может повлиять на оценку.
#преподователи
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 = 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 раза больше употребили слово “знание”. В добавок, студентов НИУ ВШЭ в выборке гораздо меньше, поэтому такое количество употребления этого слова можно считать значимым в данном случае. А вот слово “решение” чаще всего фигурировало в ответах студентов других ВУЗов.
Что касается преподавателей, то можно отметить, что самые интересные различия в лексиконе проявлялись во время использования таких слов как “обман” и “интернет” со стороны преподавателей других ВУЗов. По каким-то причинам преподаватели НИУ ВШЭ ни разу не упомянули слово “интернет” в своих ответах! А также слово “обман”, которое также ни разу не появилось в их ответах. Мы предполагаем, что преподаватели других ВУЗов в совокупности считают, что списывание - это скорее “найти готовое решение в интернете и записать его”, в то время как преподаватели ВШЭ, скорее, полагают, что списывание это “использовать собственные материалы и решения на экзамене, не помнить всего наизусть”. По-видимому, преподаватели ВШЭ просто знают, что ответы на задания экзаменов и контрольных бесполезно искать в Интернете :)
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)
Итак, студенты ВШЭ в среднем чаще говорят о списывании, упоминая при этом слова “оценка”, “получать”, “знание” и опять таки, слово “зависеть”. В то время как студенты других ВУЗов говоря в основном о “копировании” из сторонних “источник(ов)” на “экзамен(е)”/“контрольн(ой)”, а также отмечают, что это “плохо”.
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 = " ")
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 = " ")
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)
Также очень интересно пронаблюдать за ответами по поводу природы списывания у преподавателей.
Преподаватели НИУ ВШЭ понимают списывание как использование “запрещенного материала” или, как было очень лаконично замечено, “бездумный копипаст” :)
Преподаватели других ВУЗов акцентируют внимание на том, что “тайное переписывание готового ответа”, возможно даже с чужой работы, а возможно и вовсе с помощью “фотографической памяти”! (неужели это тоже списывание?…)
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)
Итак, идем дальше. Студенты ВШЭ отмечают, что списывание - это в какой-то степени “способ выкрутиться” из ситуации, которая “вызывает страх”(экзамен, контрольная). Это определенно считается проступком, но есть вероятность, что в каких-то ситуациях - это лишь акт “борьбы за справедливость”!
Студенты других ВУЗов тоже отмечают, что списывание обычно имеет место быть, когда студет “боиться чего-то”, ну или просто вот “бывает ситуация”, когда нужно списать.
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)
Преподаватели ВШЭ четко обозначили свою позицию: списывание - это “гоняться за стипендией” (чаще даже за скидкой скорее всего). А в остальном определения очень схожи с предыдущими.
Преподаватели других ВУЗов: списывание зачастую имеет место быть на контрольной с “автоматизированными тестами”. Также списывание “ведет к повышению” оценки, а ещё это неспособность “выучить материал” или “вникнуть в суть” предмета.
Видим, что самые информативные и интересные результаты получается с помощью коллакаций. В следующих вопросах посмотрим сразу на коллакации.
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 = " ")
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 = " ")
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)
А что думают преподаватели по поводу наказания за списывание?
Преподаватели НИУ ВШЭ: если суммировать, то первый раз попался - предупреждение, второй - отчисление. Как-то очень строго, но похоже на официальные правила НИУ ВШЭ по борьбе с плагиатом (скорее всего концепт плагиата уже включен сюда). Также преподаватели отмечают, что важно понимание предмета, особенно если студент пишет выпускную или конкурсную работу - в таких ситуациях списывание вообще неприемлемо. А вот в некоторых случаях, если преподаватель сам разрешил, то можно воспользоваться “легальной шпаргалкой”, но и она скорее всего не понадобиться, потому что преподаватель отличный!
Преподаватели других ВУЗов: за списывание студенту нужно сделать “дисциплинарное взыскание”, а также он должен быть “удален” с экзамена и получить “неудовлетворительную оценку”. Опция “Дополнительный вопрос” у преподавателей других ВУЗов тоже имеет место быть - таковы традиционные системы приема экзаменов!
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)
Что нужно сделать за списывание?
Студенты ВШЭ: как вариант - аннулировать работу, но бывают и исключения(если только “формулу подглядел”!). Теряюсь в догадках о том, что имелось ввиду по “восприимчивостью к нововведениям”, но как алтернативный вариант ещё можно “забрать телефон” или “забрать работу” (но лучше все-таки просто телефон).
Студенты других ВУЗов: “бить палкой” немного вывело меня из колеи в процессе анализа,но предлагаются и более адекватные методы борьбы со списыванием: “валить студента”!, “валить на пересдаче”!, ну а можно просто “сделать выводы” - тихо и мирно, чтобы никто не пострадал.
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)
Хорошо что хоть преподаватели не намереваются “бить палкой” за списывание!
А вот что говорят преподаватели НИУ ВШЭ: списывание это аморально, “пресечение идеала”, а ещё списывание “разрушает контакт” с преподователем [как же много инсайтов можно узнать с помощью несложного анализа текстов!]. Нужно принимать меры по предотвращению списывания,а также следить за студентами во время экзамена.
Преподаватели других ВУЗов: нужно исключить возможность списывания, а в случае удачной попытки - “отправлять на пересдачу” или “выгонять с экзамена”. Также эффективной мерой может послужить “рассаживание” студентов, чтобы “выяснить” объективный “уровень” их знаний по предмету.
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 = " ")
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)
Итак, попробуем сконструировать общее понимание того, почему студенты все-таки НЕ списывают, даже когда есть такая возможность?
Студенты ВШЭ: для “сдачи экзамена” на “высокую оценку” хватает собственных знаний. Почему? “Долгая подготовка”. Также отсутствие списывания можно объяснить личной заинтересованностью в предмете, а также опасением перед “муками совести”. А вообще есть очень “маленький шанс” что списывание поможет.
Студенты других ВУЗов: вероятно, поскольку экзамены в других ВУЗах проводятся в форме “живого общения” - списать особо не получается, особенно если есть “личное уважение” к преподавателю. Аналогично предыдущему примеру, некоторые студенты других ВУЗов руководствуются “моральными установками”, а ещё, если ты круглый отличник, то это вроде как ещё одна причина не списывать (потому что совестно или потому что итак оценку завысят?
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)
Что ещё интересного скажут студенты?
ВШЭ: списывать не нужно, если “выучил базу”, а ещё если “голова думает”, конечно же. Также необходимость списывать пропадает, если аналогичный вопрос уже был проработан или в вопросе есть подсказка. В общем и целом, если предмет нравится - то и списывать не хочется.
Другие ВУЗы: если знаешь материал с предмета - списывать нет необходимости. Нужно постараться “выудить из памяти” всю необходимую информацию, и все будет хорошо. А если ты ведешь практику - то точно во всем сам разберешься задолго до экзамена.
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 = " ")
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 = " ")
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)
А что вспомнят по этому поводу преподаватели?
Преподаватели НИУ ВШЭ: также отмечают доверительные отношения с преподавателем,а также какой-то таинственный “желтый лист”. Также отсутствие списывания можно объяснить “соответствующей культурой” и хорошим коллективом.
Преподаватели других вузов: на старших курсах списывать не надо, а ещё обычно не списывают на иностранных языках. Если сдача предмета комфортная - то и списывать не нужно, а если ещё и преподавателя любишь - так вообще отлично.
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)
Что ещё скажут студенты по поводу особенностей предметов, на которых не принято было списывать?
Студенты ВШЭ: на таких предметах обычно вдохновляешься и стремишься к знаниям. Очень круто - если предмет имеет для тебя смысл, а если ты программированием планируешь заниматься - то точно без списывания живем.
Студенты других ВУЗов: аналогично предыдущему случаю, важно видеть смысл в изучаемом предмете, а ещё важно выбрать для себя интересную тему, если пишешь выпускную/курсовую работу и тогда потребность в списывании будет минимизирована.
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 = " ")
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 = " ")
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)
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)
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)
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 = " ")
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 = " ")
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)
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)
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)
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 = " ")
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 = " ")
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)
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)
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)