Корней Чуковский опубликовал книгу "От двух до пяти" в 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-е годы.