Machine Learning, NLP

Оценка сложности и удобочитаемости текста

Время прочтения: 4 мин.

            В 2011 году в США был выпущен указ, в котором говорится, что система регулирования должна обеспечивать легко понимаемые правила. Таким образом, понятность текста – это сформулированный годами подход по написанию документов, законов, официальных докладов, чтобы такие тексты смогли понять большинство людей.

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

            Измерение удобочитаемости текста это одна из задач, решаемых в NLP. В естественном языке читаемость текста зависит от его содержания (сложности его словарного запаса и синтаксиса). Она фокусируется на словах, которые мы помещаем в предложения, и требуется, чтобы содержание было достаточно простым для чтения и понимания. Далее, на основе полученных индексов удобочитаемости можно будет применить изменение непонятных текстов с помощью NLP.

Индексы удобочитаемости (readability indexes), это формулы, дающие численный ответ сложности текста. Далее будут представлены основные формулы, применяемые для русского языка, рассчитанные на языке Python. Однако в западных источниках отмечено, что данные метрики могут выдавать неточный результат. Также, данные формулы разнятся для всех языков, так как в каждом языке своя длина слов и предложений, речевые обороты. Для каждого языка необходимо рассчитывать свои коэффициенты. В английском языке насчитывается самое большое количество формул для измерения сложности текста.

Flesch-Kinkaid Readability Test

def Flesh_Kincaid_Grade(syllabes, words, sent):

    if words == 0 or sent == 0: return 0

    n = 0.318 * (float(words) / sent) + 14,2 * (float(syllabes) / words) – 30,5

    return n

где words – количество слов в тексте; syllables – количество слогов в тексте; sent – количество предложений в тексте

Из формулы вытекает, что чем короче слова и чем их меньше по количеству, тем понятнее текст.

Coleman-Lian Readability Test

def Coleman_Liau(letters, words, sent):

    if words == 0: return 0

    n = 0.055 * (letters * (100/ words)) – 0,35 * (sent * (100 / words)) – 20,33

    return n

letters –число букв, words – число слов, sent – число предложений

Здесь необходимо знать среднее количество букв в слове и среднее количество слов в предложении

SMOG grade

def SMOG(psyl, sent):

    n = 1.1 * sqrt((float(64.6) / sent) * psyl) + 0.05

    return n

где psyl – число слов с 3-мя и более слогами; sent – число предложений

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

Dale-Chale Readability formula

def Dale_Chale(psyl, words, sent):

    n = 0.552 * (100 * psyl / words) + 0.273 * (float(words) / sent)

    return n

где psyl – количество сложных слов, words – общее количество слов, sent – количество предложений

Однако, количество сложных слов будет определить сложно, так как закладывалось, что ученикам 4-го класса дается список слов порядка 1000, и они отмечают, какие слова являются для них сложными. Далее эти слова ищутся в нужном нам тексте и считается их количество. Таким образом, на вход данной формуле необходим словарь слов, что затрудняет расчет данной метрики.

Automated Readability Index

def calc_ARI_index(n_letters, n_words, n_sent):

    if n_words == 0 or n_sent == 0: return 0

    n = 6,26 * (float(n_letters) / n_words) + 0,2805 * (float(n_words) / n_sent) – 31,04

    return n

где n_letters – количество букв в тексте, n_words – количество слов, n_sent – количество предложений

Учет количества букв позволил использовать данную формулу в электрических печатных машинках.

Однако для грамотного расчета формул сначала необходимо корректно почистить текст от цифр, пунктуации, символов, стоп-слов, чтобы они не выделялись в отдельные слова при токенизации.

Также для измерения лексического богатства можно рассчитать меру Тип-токен (TTR). Идея данной метрики заключается в том, что, если автор использует разнообразный словарный запас, тогда существует большее количество типов (уникальных слов). Таким образом, TTR рассчитывается как отношение количества типов на количество токенов в тексте.

Советуем почитать