Поморский компонент в языке сказок Б. Шергина

Author

Гурьева Владлена Кирилловна

Б.Шергин и его сказки

Краткая биография Б.Шергина

Б.В. Шергин (16.07.1893 - 30.10.1973) - один из самых известных сказителей Архангельского Севера, хотя, пожалуй, не только в этой области нашей страны. Он родился и вырос в Архангельске, в семье морехода. С детства увлекался историями из жизни поморов. Срисовывал орнаменты и заставки старинных книг, учился писать иконы в поморском стиле, расписывал утварь. Еще в школьные годы стал собирать и записывать северные народные сказки, былины, песни, плачи. Печатался с 1912 г. Б. Шергин, это не только писатель, он очень любил сказывать свои произведения, особенно детям, иногда сопровождая их пением. Статья о Б.Шергине

Б.В. Шергин

В 70-80-е гг. по мотивам сказок Б. Шергина сняли несколько мультфильмов, которые и сделали его имя известным по всей России (“Волшебное кольцо”, “Мартынко”, “Про Ерша Ершовича” и др.).

Постановка исследовательского вопроса

Поморы играли большую роль в жизни и творчестве писателя, поскольку он среди них вырос и долгое время жил и работал (возрождение северных ремесел). Его произведения буквально пестрят сюжетами, пословицами, присказками из жизни поморов. Может ли такое оказаться, что и в литературном языке Б.Шергина отразился тот “поморский говор”, который ему привычно было слышать с детских лет? Играл ли он такую же значительную роль в сказках, как сюжеты из поморского фольклора?

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

Стратегия решения вопроса

Мы имеем в виде данных 10 самых известных сказок Б.Шергина. Задача состоит в том, чтобы найти в этих сказках слова с “поморским говором”, подсчитать их долю в общем количестве слов и визуализировать результаты. Распределение “поморского говора” в сказках покажет, насколько значительную роль они играли в литературном языке сказителя. # Решение вопроса в коде ## Подготовка данных Для начала необходимо подгрузить все нужные библиотеки.

library(rvest)
library(tidyverse)
── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
✔ dplyr     1.1.4     ✔ readr     2.1.5
✔ forcats   1.0.0     ✔ stringr   1.5.1
✔ ggplot2   3.5.1     ✔ tibble    3.2.1
✔ lubridate 1.9.3     ✔ tidyr     1.3.1
✔ purrr     1.0.2     
── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
✖ dplyr::filter()         masks stats::filter()
✖ readr::guess_encoding() masks rvest::guess_encoding()
✖ dplyr::lag()            masks stats::lag()
ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
library(tidytext)
Warning: пакет 'tidytext' был собран под R версии 4.4.2
library(stringr)
library(stopwords)
Warning: пакет 'stopwords' был собран под R версии 4.4.2
library(packrat)
library(rsconnect)

Работа с html: Сохраняю ссылку на сказки Б.Шергина и читаю их.Забираю ссылки на сказки, превращаю в тиббл. Сохраняю ссылки на сказки.Создаю функцию, которая будет забирать тексты сказок. Забираю тексты сказок и создаю тиббл.

Http <- "https://peskarlib.ru/b-shergin/"
html_2 <- read_html(Http)

Сказки <- html_2 |> 
  html_elements(".h2-link")

lib <- tibble(
  title = Сказки |> 
    html_text2(),
  href = Сказки |> 
    html_attr("href"))
Ссылки_сказки <- lib |> 
  mutate(link = paste0("https://peskarlib.ru", href)) |> 
  select(-href)

https <- Ссылки_сказки |> 
  pull(link)

pick_up_the_text <- function(url) {
  read_html(url) |> 
    html_elements(".cl-sst") |> 
    html_text2() |> 
    paste(collapse= " ")
}
texts <- map(https, pick_up_the_text)
texts <- texts |>
  flatten_chr() |> 
  as_tibble()

Создаю датасет со сказками Б.Шергина (название сказки, текст).

Сказки_Шергина <- Ссылки_сказки |> 
  bind_cols(texts) |> 
  select(-link)
Сказки_Шергина
# A tibble: 10 × 2
   title                    value                                               
   <chr>                    <chr>                                               
 1 Дивный гудочек           "У отца, у матери был сынок Романушко и дочка — дев…
 2 Пронька Грезной          "Было три брата, три американа, и сидели они за мор…
 3 Мартынко                 "Мартынко с артелью матросов в море ходил, и ему жи…
 4 Золоченые лбы            "На веках невкотором осударстве царь да ише другой …
 5 Судное дело Ерша с Лещом "Зачинается-починается сказка долгая, повесть добра…
 6 Пойга и Лиса             "Жил юный Пойга Корелянин. Жил житьем у вершины рек…
 7 Варвара Ивановна         "У Якуньки была супруга Варвара Ивановна. И кажной …
 8 Волшебное кольцо         "Жили Ванька двоима с матерью. Житьишко было само п…
 9 Данило и Ненила          "В некотором месте королешко был старой, утлой, тол…
10 Шиш Московский           "Шишовы напасти\n\n\r\n\n\r\n\nЖили в соседях Шиш М…

Разбиваю текст сказок на слова, чтобы легче было искать совпадения и делать подсчеты “поморского говора”.

Сказки_Шергина_слова <- Сказки_Шергина |> 
  unnest_tokens("word", "value")
Сказки_Шергина_слова
# A tibble: 19,724 × 2
   title          word     
   <chr>          <chr>    
 1 Дивный гудочек у        
 2 Дивный гудочек отца     
 3 Дивный гудочек у        
 4 Дивный гудочек матери   
 5 Дивный гудочек был      
 6 Дивный гудочек сынок    
 7 Дивный гудочек романушко
 8 Дивный гудочек и        
 9 Дивный гудочек дочка    
10 Дивный гудочек девка    
# ℹ 19,714 more rows

Теперь нужно избавиться от шумных слов. Для этого сохраняем словарь со стоп-словами, немного преобразуем его, а затем удалим стоп-слова.

stopwords_ru <- c(
  stopwords("ru", source = "snowball"),
  stopwords("ru", source = "marimo"),
  stopwords("ru", source = "nltk"))
stopwords_ru <- sort(unique(stopwords_ru))

idx <- which(stopwords_ru == "жизнь" | stopwords_ru == "человек")
stopwords_ru <- stopwords_ru[-idx]

stopwords_ru <- c(stopwords_ru, "коль", "скоро", "ко", "во", "это", "ладно", "твоего", "обо", "эко")

Чистые_сказки <- Сказки_Шергина_слова |> 
  anti_join(tibble(word = stopwords_ru))
Joining with `by = join_by(word)`

Поиск поморского компонента

Чтобы найти поморский компонент в литературном языке сказителя, используем регулярное выражение, в котором зашифруем особенности “поморского говора” (Дуров 2011) Затем найдем совпадения в текстах сказок и подсчитаем их количество для каждой сказки.

patt <- ".*осе$|.*(цё|ць|ця|цего|щё)|.*(ыу|еу|ау|иу)$|ёц|ёць|.*(ьня|ьнё|ьни|итце)$|шш|ёй|ёр"

result <- Чистые_сказки |>  
  mutate(matches = str_count(word, patt)) |> 
  group_by(title) |> 
  summarise(count_matches = sum(matches))
result
# A tibble: 10 × 2
   title                    count_matches
   <chr>                            <int>
 1 Варвара Ивановна                    10
 2 Волшебное кольцо                    11
 3 Данило и Ненила                      2
 4 Дивный гудочек                       0
 5 Золоченые лбы                       13
 6 Мартынко                            16
 7 Пойга и Лиса                         0
 8 Пронька Грезной                     14
 9 Судное дело Ерша с Лещом             0
10 Шиш Московский                       8

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

Count_words <- Сказки_Шергина_слова |> 
  group_by(title) |> 
  summarise(n = n()) |> 
  select(n)
Count_words
# A tibble: 10 × 1
       n
   <int>
 1  1647
 2  1928
 3  3227
 4   657
 5  2494
 6  2357
 7   977
 8  1621
 9  1296
10  3520

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

Общий <- result |> 
  bind_cols(Count_words)

Результаты <- Общий |> 
  mutate(share = count_matches/n*100)
Результаты
# A tibble: 10 × 4
   title                    count_matches     n  share
   <chr>                            <int> <int>  <dbl>
 1 Варвара Ивановна                    10  1647 0.607 
 2 Волшебное кольцо                    11  1928 0.571 
 3 Данило и Ненила                      2  3227 0.0620
 4 Дивный гудочек                       0   657 0     
 5 Золоченые лбы                       13  2494 0.521 
 6 Мартынко                            16  2357 0.679 
 7 Пойга и Лиса                         0   977 0     
 8 Пронька Грезной                     14  1621 0.864 
 9 Судное дело Ерша с Лещом             0  1296 0     
10 Шиш Московский                       8  3520 0.227 
Результаты |> 
  ggplot(aes(title, share), fill = title) +
  geom_col(color = "blue") +
  coord_flip() +
  theme_bw() +
  labs(title = "Поморский компонент в сказках Б. Шергина",
       x = NULL) +
  scale_color_brewer(palette = "Spectral") +
  theme(text=element_text(size=12, family="serif", color = "darkblue"),
        axis.text = element_text(color = "darkblue"))

#Результаты исследования

Выводы, не претендующие на научные

Поморский компонент крайне слабо представлен в литературном языке сказок Б.Шергина. В трех сказках он совсем не выявлен, исходя из введенных особенностей поморского говора. В качестве яркой особенности можно отметить часто встречаемое в словах двойное “шш” на месте “щ” или “ш”. Такое произношение более характерно для территорий, испытавших влияние западных финнов.

Рефлексия

  1. Не учтен весь массив данных. Поскольку данные не удалось лемматизировать не подошла ни одна модель, не получилось выявить совпадения для многих особенностей “поморского говора”, характерных для разных частей речи. Например, автором использовались географические названия в качестве персонификаций (Вовка Корелянин и др.). Их выявить не удалось. А значит, результаты, далеко не полные и не могут отражать реалии.
  2. Отрицательный результат, тоже результат, есть к чему стремиться. Возможно, когда-нибудь получится обучить модель, которая бы воспринимала диалектные особенности текста.
  3. Возможно, несколько неправильный подход к высчитыванию доли, поскольку учитывались только уникальные слова среди всего объема, а ведь они повторяются иногда в тексте.

References

Дуров, Иван Матвеевич. 2011. Словарь Живого Поморского Языка в Его Бытовом и Этнографическом Применении. КарНЦ РАН.