Niños, ruso y R

Una situación típica en el proceso educativo actual en la escuela. A las 22:00, aparece una nueva tarea en el diario electrónico del niño. En el mejor de los casos, pasado mañana, pero normalmente mañana.







Hay tres opciones de reacción:







  • no hagas nada;
  • “No avisar” y posponer la solución del problema para más tarde;
  • intenta hacerlo.


La segunda reacción es esencialmente idéntica a la primera, ya que la bola de nieve de tales tareas se acumulará rápidamente sin posibilidad de desmontarla.







Al elegir la tercera opción, en algunos casos incluso las tareas en idioma ruso se pueden resolver usando R, teniendo en cuenta que hay un máximo de 15-20 minutos para todo. 5 minutos para "programación extrema", 10-15 minutos para terminar. Cuando el problema se haya resuelto en principio, el registro se puede hacer por la mañana.







Es una continuación de una serie de publicaciones anteriores .







¿Qué tareas estamos intentando resolver?



Naturalmente, tienes que escribir o pensar un ensayo tú mismo. Pero hay una cierta clase de tareas que parece una tarea para un robot y está bien algorítmica.







A continuación se muestran solo ejemplos generalizados, seguramente muchos encontrarán algo que agregar.







Problema 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.







  1. kremlin.ru, .
  2. , . . , . 100% .
  3. , , . .
  4. « » , , .


Publicación anterior - "Monitoreo del estado del servicio de TI mediante R. Vista desde un ángulo diferente" .








All Articles