Типичная ситуация в нынешнем образовательном процессе в школе. На часах 22:00, в электронном дневнике ребенка появляется новое задание. В лучшем случае на послезавтра, но обычно на завтра.
Вариантов реакции три:
- не делать вовсе;
- «не заметить» и отложить решение вопроса на потом;
- попробовать сделать.
Вторая реакция по сути идентична первой, поскольку снежный ком таких заданий будет стремительно накапливаться без каких-либо шансов его разобрать.
Выбирая третий вариант, в отдельных случах даже задания по русскому языку можно попробовать решить с помощью R, принимая во внимание, что на все про все есть 15-20 минут максимум. 5 минут на «экстремальное программирование», 10-15 минут на чистовое оформление. Когда принципиально задача решена оформление можно уже и утром сделать
Является продолжением серии предыдущих публикаций.
Какие задачи пытаемся решить?
Естественно, сочинение писать или думать надо самостоятельно. Но есть определенный класс задач, который выглядит как задание для робота и алгоритмизируется хорошо.
Ниже просто обобщенные примеры, наверняка, многие найдут что добавить.
Задачка 1
Составление кроссвордов (русский/английский). Существуют псевдовариации — составление в заданной геометрической структуре или же в свободной форме. Опционально может быть задана тема.
Задачка 2
Подобрать N
слов на заданную тему в которых встречаются (отсутствуют) буквы (подмножество на выбор).
Задачка 3
Подобрать N
слов, которые могут быть написаны с 'не' как слитно, так и раздельно.
Варианты решения при помощи R
Подобный класс задач подразумевает наличие большого словарного запаса. Эта «долгая» стратегия и решается она только системным чтением художественной литературы.
N
может быть реально большим (несколько десятков), а у нас есть 5 минут.
Шаг №1. Ищем и загружаем готовые корпуса русского языка. Можно использовать все, что удастся найти. Недавно хорошая подборка была здесь. Если ее там нет, то можно поглядеть в кладовке.
library(tidyverse)
library(readr)
library(magrittr)
library(stringi)
library(udpipe)
library(tictoc)
# Cловари русского языка для скачивания
# http://www.speakrus.ru/dict/
# Словарь Про-Линг, 125723 слова
voc1_df <- here::here("data", "pldf-win.zip") %>%
readr::read_delim(col_names = "word", delim = " ",
locale = locale("ru", encoding = "windows-1251"))
# Словарь русской литературы, 162232 слова
voc2_df <- here::here("data", "litf-win.zip") %>%
readr::read_delim(col_names = c("word", "freq"), delim = " ",
locale = locale("ru", encoding = "windows-1251")) %>%
select(-freq)
# Словарь А. А. Зализняка, 93392 слова
voc3_df <- here::here("data", "zdf-win.zip") %>%
readr::read_delim(col_names = "word", delim = " ",
locale = locale("ru", encoding = "windows-1251"))
# Толковый словарь под ред. C. И. Ожегова, 1991 г., 61458 статей
voc4_df <- here::here("data", "ozhegovw.zip") %>%
readr::read_delim(delim = "|", quote = "", locale = locale("ru", encoding = "windows-1251")) %>%
select(word = VOCAB)
voc_df <- bind_rows(voc1_df, voc2_df, voc3_df, voc4_df) %>%
distinct()
# --------------- udpipe
# ud_model <- udpipe_download_model(language = "russian")
ud_model <- udpipe_download_model(language = "russian-syntagrus")
Шаг №2. Решаем задачи
Решаем задачу 1. Например, нам нужны слова из 7 букв, 1-ая — 'Р', 3-я — 'Ч'
words_df <- voc_df %>%
filter(stri_length(word) == 7) %>%
filter(stri_sub(word, 3, 3) == "ч") %>%
filter(stri_sub(word, 1, 1) == "р")
Решаем задачу 2. Например, нам нужно Подобрать слова в которых встречаются буквы "В е ж з к н о с х э ю"
voc_df %>%
filter(stri_detect_regex(tolower(word), "^[вежзкносхэю]+$")) %>%
mutate(l = stri_length(word)) %>%
arrange(desc(l)) %>%
print(n = 400)
Решаем задачу 3. Какие существительные могут быть написаны с 'не' как слитно, так и раздельно?
tic("Аннотируем")
print(lubridate::now())
ann_tbl <- voc_df %>%
mutate(ne_word = stri_c("не", word)) %>%
inner_join(voc_df, by = c("ne_word" = "word")) %>%
# stri_trans_general(id ="Latin-ASCII")
{udpipe_annotate(ud_model, x = .$word, trace = TRUE)} %>%
as_tibble()
toc()
ne_tbl <- ann_tbl %>%
filter(upos == "NOUN") %>%
select(word = token) %>%
# немного постправок
filter(stri_length(word) > 3) %>%
filter(!stri_detect_regex(word, "ий$")) %>%
mutate(ne_word = stri_c("не", word)) %>%
sample_n(200) %T>%
print(n = 200)
И т.д. и т.п. Нет цели написать идеально работающий алгоритм, основная задача — отсеять максимально быстро 99% ненужного, а из оставшегося выбрать то, что интересует. Экономит много времени, сил и нервов.
P.S.
- Свои соображения и жалобы по поводу образовательного процесса пишите на kremlin.ru, писать их здесь в комментариях бессмысленно.
- Описан довольно штатный сценарий, который типичен для нынешней системы образования и один из возможных способов реакции. ОДИН ИЗ. Не стоит давать оценки кому бы то ни было, тем более что никакой конкретной информации кроме формулировки задач здесь и нет. На 100% ошибетесь.
- Будет хорошо, если каждый желающий дать совет в комментариях сначала напишет, сколько у него детей и какого возраста. Понятен будет корректирующий коэффициент к совету.
- Если надумаете писать совет или частное мнение «за жизнь» в комментариях, то публикация не предполагала никаких таких поучающих советов, их никто не спрашивал.
Предыдущая публикация — «IT Service Health Monitoring средствами R. Взгляд под иным углом».
svob
Описан Родитель-вредитель.
Решение задач для начальных классов взрослым человеком с помощью программирования — не есть повод для гордости.
Молчаливое принятие «регулярно появляющихся в 22-00 заданий на завтра» без кряков в адрес учителя — повод пересмотреть свой собственный родительский функционал.
i_shutov Автор
Светлана, Вы самостоятельно придумали тезисы, отсутствующие в тексте, и по ним всем вынесли вердикт. Учителя вообще с асфальтом сравняли. Типично, но некрасиво.
Не надо все мешать в кучу. Родительские чаты ведут в ватсапах, программу образования обсуждают в министерствах. А здесь речь про технологии.
Cost_Estimator
i_shutov Автор
Поехало по наезженной… Махать шашкой налево и направо.
Знаете, какой будет следующий шаг после вашего действия?
А еще на шаг вперед?
Знаете как внутри образовательного процесса устроена механика и какие там рельсы?
Я вот в Вашем высказывании читаю, что учитель, который преподает Вашему ребенку является сосредоточием зла, но ведь это не то, что хотели написать? Суждения, суждения...
Вообще, какую задачу хотите решить? Мир во всем мире? Самоутвердиться?
Кстати, а мнение ребенка спросили?
Начали в комментариях разводить какую-то битву не по теме. Еще раз, здесь только техника. Интересно — используете. Не интересно — не используете. Все остальные вопросы остались далеко за пределами публикации. Равно как и отношения и реакции на эти ситуации.
Cost_Estimator
Да, поехало. Попробуйте спроецировать ситуацию на себя. В 22:00 вам приходит письмо от работодателя с просьбой до завтра срочно выполнить пару-тройку задач. Небольших, по полчаса на каждую. Слова в документе местами поменять, фото к презентации подготовить, двуручный меч выковать. Но никакой дополнительной оплаты, просто сделайте это. Что, проглотите молча?
i_shutov Автор
Не надо проецировать и додумывать.
Не надо на свои проблемы смотреть через призму текста или наоборот.
Там нет и не было ничего такого.
Будьте проще, прочитайте текст просто как набор задачек.
i_shutov Автор
--
mistergrim
Дети в 22:00 вообще спать уже должны.
i_shutov Автор
в 21:00
i_shutov Автор
А на основании чего решили, что это задачи "начальных классов"?
Где про это написано?
Я не отвергаю и не подтверждаю.
Вот просто любопытно. Слово "ребенок" триггернуло?
После первого предложения тут же схватили ручку и начали ярлыки вешать...
svob
На основании задачек
i_shutov Автор
Ну а как, например, насчет изучения нового языка?
Почему так не подумать, тоже один из вариантов.
Сами сделали заключение, сами стали на него возражать.