Так сложилось что в последние годы мне лично приходится всё больше и больше сталкиваться с различными государственными текстами, особенно законами и финансовыми документами вроде обоснований к бюджету, а также пытаться их переводить с нечеловеческого канцелярского языка в слова или визуальные схемы которые были бы понятны и мне и тем кому я потом рассказываю о том что это такое.
За всё это время у меня лично сложилось стойкое ощущение того что русский язык разделился на два его подвида — сухой канцелярский юридический официальный язык и «язык Интернета», с ново-образованными словами, жаргонизмами и значительной персонификацией. Вместе с постоянным чувством что «так дальше жизнь нельзя» всё это привело меня, вначале к поискам правильного названия того как это всё называется, а далее к тому что с этим могут делать люди умеющие программировать.
Немного истории
18 января 2011 года, Президент Обама выпустил новый указ, Executive Order, «E.O. 1356 — Improving Regulation and Regulatory Review» («Улучшение регулирования и рассмотрению вопросов регулирования»). В нем говорится, что "[наша система регулирования] должна обеспечить, чтобы правила были доступны, согласованы, написаны простым языком, и легко понимаемы.".
Написанное простым (понятным) языком — это отнюдь не расхожий термин и не оборот речи. Это сформулированные за десятилетия подход по переводу официальных текстов, документов, речей политиков, законов и всего что наполнено официальным смыслом, в форму понятную простым смертным.
Понятный язык — это четкое, краткое написание предназначенное для того чтобы читатель понимал текст, как можно быстрее и как можно полнее. В нем избегаются избыточная подробность, запутанность речи и жаргон.
При том что «plain» в английском языке означает «простой», но в русском языке ближе к переводу оказывается слово «понятный», также можно говорить «ясный» или «простой» язык.
Понятный язык, по английски — plain language, явление которое изначально звучало как «простой английский» (plain english) в англоязычных странах, но очень быстро переросло в явление общемирового масштаба с международными.
Сейчас в мире существует несколько десятков организаций которые занимаются распространением идей понятности языка. Во многих странах принимаются законы, издаются книги, публикуются официальные государственные инструкции о том как писать понятным языком и проводятся ежегодные премии за самый понятный и самый непонятный текст.
Но всё это не в России и, чтобы понять что это в мире, попробуем разобраться как оно устроено.
Из чего состоит понятность
Всё что находится вокруг понятности языка укладывается в два термина — измерение и изменение.
Измерение — это оценка текста на простоту («удобочитаемость», «читабельность»). Оно необходимо для того чтобы понять необходимо ли в дальнейшем текст упрощать или нет или для того чтобы проверить насколько успешно текст был упрощен. Примеры измерения — это формулы удобочитаемости, это специальные тесты для школьников/студентов на то насколько они могут пересказать прочитанный текст своими словами и другие способы определения того насколько текст был понятен читателям.
Изменение — это следующий шаг после измерения. Это правка текста согласно правилам, подходам и рекомендациям так чтобы упростить его насколько возможно не потеряв смысла. Примеры изменения — это специальные программы автоматически заменяющие некоторые словесные обороты, это книги инструкций о том как правильно переписывать сложные тексты, это словари «простого языка», это апробации текстов на возрастной аудитории до публикации.
Конечно практически все могут оценить понятность-непонятность текста для себя субъективно, а многие могут даже исправить сложные тексты.
Но мы поговорим о том что нам ближе. О способах измерения и изменения текстов которые можно автоматизировать. Вначале о таком способе измерения сложности как индексы удобочитаемости
Индексы удобочитаемости
Индексы удобочитаемости (readability indexes) — это математические формулы созданные для оценки сложности читаемости и понимания текстов. Как правило, эти формулы используют простые в измерении метрики текста — число предложений, число слов, число букв и слогов, на основе которых дают численную оценку, либо сложности текста, либо ожидаемого образования аудитории.
Тест Флэша-Кинкайда (Flesch-Kinkaid Readability Test)
Этот тест изначально был основан на тесте Рудольфа Флэша по оценке сложности английских текстов и бала доработана Питером Кинкайдом по контракту для ВМФ США.
В тесте заложен тезис что чем меньше слов в предложениях и чем короче слова тем более простым является текст.
Формула расчета выглядит следующим образом
и использует 3 параметра:
- total words — всего слов
- total sentences — всего предложений
- total syllabes — всего слогов.
Результатом является число лет обучения по американской градации образования необходимых для понимания текста.
Обратите внимание что это только оценка слов и предложений, но никак не их смысла. Эта формула, как и все последующие, сделаны под естественные тексты встречающиеся в жизни. Потому как всегда можно написать полную бессмысленность из коротких слов и предложений которая не будет никому нужна.
Тест Колман-Лиау (Coleman-Lian Readability Test)
Этот тест был разработан Meri Coleman и T.L. Liau для простой и механической оценки сложности текстов. В отличии от теста Флэша-Кинкайда и многих способов оценки удобочитаемости в нем используются не слоги, а буквы и формула расчета учитывает среднее число букв на слово и среднее число слов на предложение.
L — среднее число букв на 100 слов
S — среднее число предложений на 100 слов
Тест SMOG (SMOG grade)
Формула SMOG была разработана Harry McLaughlin в 1969 году и опубликована в работе «SMOG Grading — a New Readability Formula»
Идея была в том что на сложность текста более всего влияют сложные слова которые всегда являются словами со множеством слогов и чем больше слогов тем сложнее слово.
Итоговая формула SMOG grade учитывала число многосложных слов, с 3-м и более слогами, и число предложений. Фактически это оценка пропорции сложных слов к числу предложений.
Так сложилось что наибольшее применение формула SMOG получила при оценке сложности медицинских текстов и в последующих исследованиях она показала большую точность по сравнению с формулой Флэша-Кинкайда.
Формула Дэйла-Чалл (Dale-Chale readability formula)
Эта формула была разработана в 1948 году Эдгаром Дэйлом и Джоан Чалл на основе списка из 763 слов с 80% которых были знакомы большинство учеников 4-го класса, тем самым определив сложные слова. В 1995 году появилась обновленная формула этого же теста которая учитывала уже 3000 узнаваемых слов.
Сама формула рассчитывается довольно просто
Однако в виду специфики оценки она в основном использовалась и используется для проверки текстов для школьников начиная с 4-го класса.
Автоматизированный индекс удобочитаемости (Automated Readability Index)
Эта формула была опубликована в 1967 и, как и формула Колеман-Лиау, была построена на оценке сложности текстов по числу букв. Это позволило использовать формулу в электрических печатных машинках для измерения сложности текстов в реальном времени.
Другие формулы
Кроме того за скобками осталось множество формул которые также активно используются:
- Fry readability formula
- Gunning fog index
- Spache Readability Formula
- Raygor Readability Estimate
- Linsear Write
- Lexile
- LIX
- Flesch Reading Ease Readability Formula
- FORCAST
Все они рассчитываются на схожих принципах и многие из них активно используются на практике.
Подробнее об основных формулах удобочитаемости в Википедии: https://en.wikipedia.org/wiki/Category:Readability_tests
При том что формулы удобочитаемости есть для разных языков — для немецкого, японского, шведского, португальского и других, но такого их разнообразия как для английского языка их нет нигде.
На практике
- Управление социальное защиты США выпустило специальный отчет о соответствии требованиям по понятности языка и, в частности, их сотрудники используют специальное ПО — StyleWriter помогающее оценивать и упрощать тексты. SSA-2013 Plain Writing Compliance Report
- Администрация штата Орегон проверяет и выверяет все публикуемые ими тексты до уровня 10 класса школы — Oregon Readability
- В кодексе штата Вирджиния присутствуют требования по обязательном уровню удобочитаемости для всех договоров по страхованию жизни и несчастных случаев и проверка уровня удобочитаемости по формуле Flesch-Kinkaid Virginia Codex 38.2
- Огромное число публикаций, в том числе, государственных исследований посвящены именно формулам удобочитаемости science.gov grade level readability
А что с русским языком?
Русский язык и, соответственно, тексты на русском языке отличаются от текстов на английском по слогам, по длине предложений, по числу символов, по тому какие слова можно признавать многосложными. В частности, в русском языке слова, как правило, длиннее, но предложения короче. В общеупотребительной речи больше многосложных слов и коэффициенты в формулах должны быть иными.
Когда я только-только начал интересоваться темой понятности языка я, в первую очередь, попытался найти публикации на эту тему и какие-либо примеры реализаций для русского языка. Оказалось что они отсутствуют практически полностью. При том что в России много сильных команд по компьютерной лингвистике, в частности, по анализу текстов, но именно в области понятности языка практически вакуум.
Решая что с этим делать я решил пойти двумя путями сразу. Первый путь в том чтобы найти тех кому интересно заниматься этой темой, а другой в том чтобы заниматься удобочитаемостью самому в тех областях которые я понимаю.
Поиск это наш, НП «Информационная культура», ежегодный конкурс Apps4Russia в этом году его темой мы взяли тему понятности вообще. А понятность русского языка — это одна из номинаций. Главный приз по номинации — это 100 тысяч рублей, второе место 50 тысяч. Вы можете выиграть их если сделаете технологичный проект в этой области. Разработаете свою формулу, сделаете инструкцию, проведете исследование по уровню читаемости, например, условий использования на сайтах, улучшите имеющуюся формулу, сделаете сервис для браузера по исправлению или измерению текстов или специальный веб-сервис. Вариантов много, ничего более не требуется кроме как чуть-чуть подумать над идеей и воплотить её в жизнь.
А вот второе направление — это то привело меня к тому прежде чем создавать словари понятности и инструкции по переписыванию сложных языков. И прежде чем стоит говорить с чиновниками о том что они говорят на жутком канцелярите. Прежде всего этого нужно сделать формулы оценки удобочитаемости для русского языка.
Повозившись немного с моделированием коэффициентов я довольно быстро столкнулся с тем что американские формулы разрабатывались практически все с сопутствующим тестированием в школах и университетах. Они делались как научные исследования и по ним публиковались научные статьи. Иначе говоря — всё было по науке. У меня же пока не было возможности и ресурсов провести оффлайновое тестирование и много времени ушло на то чтобы подобрать правильный подход.
Он заключается в том чтобы подобрать правильные коэффициенты посредством текстов которые были предварительны идентифицированы под то для какой аудитории они написаны. Самое очевидное тут было взять тексты внеклассного чтения. У всех из них есть, обычно, точная пометка для какого класса они предназначены. К ним были добавлены уже известные трудночитаемые официальные тексты которые я использовал как примеры.
Чтобы проверить это было сделано предположение что есть зависимость между параметрами участвующим в формулах оценки удобочитаемости. И, в частности, что чем больше слов в предложениях, тем больше в них в слогов.
Этот тезис и был опробован и получились вот такие графики
Зависимость сложности текста от среднего числа слогов
Зависимость сложности текста от среднего числа слов в предложении
Зависимость среднего числа слогов на слово от среднего числа слов в предложении
Итого получилось 55 текстов по которым нам было известно:
- уровень образования необходимый для их понимания
- качественные метрики по каждому тексту: среднее число слогов на слово, среднее число слов на предложение, среднее число букв на слово и так далее
Далее задача была в том чтобы перевернуть формулы и решить систему с 3-мя неизвестными и 55 формулами.
Константы в формуле рассматривались как неизвестные, а параметры брались по каждому тексту.
Оставалась лишь одна простая задача — подбор этих констант.
Возможно у неё было и есть и красивое математическое решение, но я лично решил всё в лоб по следующей схеме:
- для констант был задан диапазон их вероятных значений с шагом 0.0001
- для каждого тройки констант рассчитывались метрики удобочитаемости по выбранной формуле
- далее рассчитывалось отклонение от правильного значения по каждому тексту
- отклонения по всем текстам пересчитывались и получалось среднее отклонение по массиву
В результате из всех вариантов констант отбирались те по которым средние отклонения минимальны.
Всё это моделирование и расчеты заняли несколько недель. Но в итоге удалось адаптировать по русский язык практически все алгоритмы, с той лишь оговоркой что пока они не пройдут полноценной экспериментальной проверки — то все значения формул условны.
Я приведу результат для одной из формул — Automated Readability Index
Значения констант там — 6.26, 0.2805 и 31.04
Поскольку в русском языке короче предложения, то больше константа для среднего числа предложений на слово, поскольку слова длиннее, то меньше константа для среднего числа букв на слово. Плюс подобран корректирующий коэффициент помогающий выровнять для оценки текста под уровень образования.
Вот так выглядит исходный код на Python для её расчета.
ARI_X_GRADE = 6.26
ARI_Y_GRADE = 0.2805
ARI_Z_GRADE = 31.04
def calc_ARI_index(n_letters, n_words, n_sent):
""" Метрика Automated Readability Index (ARI) для русского языка с константными параметрами """
if n_words == 0 or n_sent == 0: return 0
n = ARI_X_GRADE * (float(n_letters) / n_words) + ARI_Y_GRADE * (float(n_words) / n_sent) - ARI_Z_GRADE
return n
Все формулы реализованы в виде сервиса онлайн — ru.readability.io. Собственно там опробованы все адаптированные формулы которые я продолжаю развивать и корректировать. Там есть API и возможность получить метрики удобочитаемости по любому тексту.
А для всех кто захочет захочет самостоятельно разработать свои формулы на Github'е есть вся та обучающая выборка текстов https://github.com/infoculture/plainrussian/ и рассчитанные по ним метрики.
Просто, но не слишком просто
Индексы удобочитаемости — это, конечно, прикольная и полезная штука, но они также весьма ограничены. В западной практики работы над понятностью языка всегда упоминается что формулами надо пользоваться аккуратно, не полагаясь на них на 100% потому как они могут давать иногда ошибочный или недостаточно точный результат. Поэтому, несмотря на широкое применение, возникает вопрос об их развитии.
И вот этот вопрос я хотел бы обсудить тут на Хабре.
Какие еще подходы мы можем использовать для оценки сложности текстов?
Может быть какие-нибудь типовые канцелярские речевые обороты?
Может быть сложные согласования в внутри предложения?
Наверняка есть что-то что позволит продвинуться дальше.
* Изображение под Creative Commons 2.0 Attribution, Sharealike
* оригинал — secure.flickr.com/photos/visualpunch/8746310544/
Автор: ibegtin