Мадонёнок с огонёнком. Как Чуковский конструирует детскую речь

от автора

Корней Чуковский опубликовал книгу «От двух до пяти» в 1928 году. Во время расцвета самого отчаянного советского новояза писатель вдохновился совсем другой темой и написал трогательное исследование о потребностях и поисках детской души. Несомненно, многие детские авторы позже использовали находки Чуковского в своих произведениях для детей и о детях. Мне стало интересно с помощью Python посмотреть, как Чуковский конструирует детскую речь и за счет чего у него это получается забавно и поучительно.

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

В книге у Чуковского много новых невиданных и смешных слов, которые автор относит к «детскому языку», хотя порой юмор это понятен только взрослым.

Юра с гордостью думал, что у него самая толстая няня. Вдруг на прогулке в парке он встретил еще более толстую.

— Эта тетя заднее тебя, — укоризненно сказал он своей няне.

Я решил посмотреть, с помощью каких инструментов Чуковский так мастерки создает новые детские слова. С помощью этого кода я выявляю структуру слов, разделяю их на обычные и новые, нестандартные. Так же я вычисляю здесь частотность суффиксов и приставок. Здесь код работает так. Если анализатор получет высокие score больше 0,85 и уверен в нормативности слова, оно помечается как «норма». В другом случае, если score низкий или слово расходится с леммой – код помечает его как новое, детское.

def extract_morphology(word):    w = word.lower()    # Префиксы    prefs = [p for p in PREFIXES if w.startswith(p)]    # суффиксы    suffs = [s for s in SUFFIXES if w.endswith(s)]    stem = w    for p in sorted(prefs, key=len, reverse=True):        if w.startswith(p): stem = w[len(p):]; break    base = stem    for s in sorted(suffs, key=len, reverse=True):        if stem.endswith(s): base = stem[:-len(s)]; break    parse = morph.parse(w)[0]    norm = parse.normal_form    pos = parse.tag.POS    score = parse.score    return {        'word': word, 'prefix': ', '.join(prefs) or '-', 'suffix': ', '.join(suffs) or '-',        'base': base, 'stem': stem, 'normal_form': norm, 'pos': pos, 'score': score    }df = pd.DataFrame([extract_morphology(w) for w in INNOVATIONS])

Код выявил топ-3 самых продуктивных суффиксов. Вот как Чуковский конструирует детскую речь. Все, кто был когда-то ребенком и еще сохранил в памяти свое детство, согласятся, что это так.

Частотность суффиксов и приставок

Частотность суффиксов и приставок
Соотношение нормативных форм и инноваций

Соотношение нормативных форм и инноваций

Любопытно, что атрибут score у объекта parse в pymorphy3 это не строгая математическая вероятность, а вес уверенности анализатора. Он формируется на основе частотности, то есть оценки того, как часто слово встречается в обучающем корпусе. Частотные формы получают вес ближе к 1.0.Так же pymorphy3 оценивает, как слово укладывается в стандартные таблицы склонения русского языка. Аномальные формы получают низкий вес. В pymorphy3 работает и марковская модель, по ней алгоритм оценивает совместимость морфем.

— Дай мне нитку, я буду нанитывать бусы.

Полученные метрики дают четкую картину механизма детского словотворчества, ставшую обильной позднее почвой для многих детских книг и целого фольклора. Получается, что дети не просто копируют слова, а тестируют гипотезы. «Если добавить «-ник» к основе, получится тот, кто выполняет действие». Современным взрослым людям понятно, что изобретение слов это не просто фонетическая игра, а освоение социальных ролей. Куда более удивительно. что Чуковский смог так точно и трогательно описать эти находки в совсем не благополучные 20-е годы.

ссылка на оригинал статьи https://habr.com/ru/articles/1042410/