Как определить оценки уровня чтения с помощью python

При разработке аналитики эффективности маркетинга часто упускается из виду уровень чтения контента. Это должно быть частью анализа или вашей модели? Если вы решите, что это так, как бы вы легко пометили свои различные документы или креативы текущим уровнем чтения? Сегодня я расскажу, как использовать python для анализа уровня чтения и создания отчета. Мы сосредоточимся на английском как на основном языке. Этот же метод можно использовать для определения удобочитаемости вашего другого контента, например блогов Medium.

Почему удобочитаемость важна

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

Кто ваш читатель?

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

Что делать, если вы не совсем уверены в уровне образования вашей аудитории? Некоторые отраслевые правила могут помочь.

Письменный текст, который оценивается на уровне от 4-го до 6-го класса, обычно считается «легким для чтения». Если вы пытаетесь объяснить сложные концепции просто для широкой аудитории, это ваш диапазон. Подумайте об общих блогах и образовательных материалах.

Письменный текст с 7 по 9 класс оценивается как средний по сложности. Эти читатели ожидают более сложной лексики. Они ожидают, что им, возможно, потребуется перечитать часть текста, чтобы понять ее полностью. Статьи с практическими рекомендациями могут попадать в этот диапазон.

Любой текст с рейтингом 10-го класса и выше считается очень сложным. Это должно быть зарезервировано для официальных документов, технического письма или литературы, когда вы уверены, что ваша аудитория «готова» для этого и / или ожидает этого. Ваш читатель прилагает немало умственных усилий, чтобы прочитать и усвоить ваш контент. Вы знаете, когда вы читаете книгу, которая утомляет вас? Это тот диапазон.

Каковы ограничения?

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

Код

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

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



Есть несколько пакетов, которые вы можете использовать в своем анализе, в том числе textstat и readability. В этом примере я буду использовать textstat. Его легко использовать.

import textstat  # https://pypi.org/project/textstat/
import os
import glob       # using to read in many files
import docx2txt   # because I'm reading in word docs
# where is the folder with your content?
folderPath = '<path to your top folder>\\'
# I want to search in all of the folders, so I set recursive=True
docs=[]
docs = glob.glob(folderPath + '/**/*.txt',recursive=True)
docs.extend(glob.glob(folderPath + '/**/*.docx',recursive=True))
#... keep adding whatever types you need
print(docs)
# the language is English by default so no need to set the language
# Loop through my docs
for doc in docs:
    if os.path.isfile(doc):
        text = docx2txt.process(os.path.join(folderPath,doc))
        
        print('Document:                     ' + doc)
        print('Flesch Reading Ease:          ' + str(textstat.flesch_reading_ease(text)))
        print('Smog Index:                   ' + str(textstat.smog_index(text)))
        print('Flesch Kincaid Grade:         ' + str(textstat.flesch_kincaid_grade(text)))
        print('Coleman Liau Index:           ' + str(textstat.coleman_liau_index(text)))
        print('Automated Readability Index:  ' + str(textstat.automated_readability_index(text)))
        print('Dale Chall Readability Score: ' + str(textstat.dale_chall_readability_score(text)))
        print('Difficult Words:              ' + str(textstat.difficult_words(text)))
        print('Linsear Write Formula:        ' + str(textstat.linsear_write_formula(text)))
        print('Gunning Fog:                  ' + str(textstat.gunning_fog(text)))
        print('Text Standard:                ' + str(textstat.text_standard(text)))
        print('*********************************************************************************')
"""Flesch-Kincaid Grade Level = This is a grade formula in that a score of 9.3 means that a ninth grader would be able to read the document"""
"""Gunning Fog = This is a grade formula in that a score of 9.3 means that a ninth grader would be able to read the document."""
"""SMOG - for 30 sentences or more  =This is a grade formula in that a score of 9.3 means that a ninth grader would be able to read the document."""
"""Automated Readability Index = Returns the ARI (Automated Readability Index) which outputs a number that approximates the grade level needed to comprehend the text."""
""" Coleman Liau Index = Returns the grade level of the text using the Coleman-Liau Formula."""
"""Linsear = Returns the grade level using the Linsear Write Formula."""
""" Dale Chall = Different from other tests, since it uses a lookup table of the most commonly used 3000 English words. Thus it returns the grade level using the New Dale-Chall Formula."""

Результаты моих четырех документов. Первый — это блог. Второй - этот блог, с удаленными ссылками. Третья — статья USAToday, а четвертая — статья USAToday с удаленными заголовком и фотографиями.

Document:                     C:...readability\sampleblog.docx
Flesch Reading Ease:          56.59  (Fairly Difficult)
Smog Index:                   13.8
Flesch Kincaid Grade:         11.1
Coleman Liau Index:           11.9
Automated Readability Index:  14.1
Dale Chall Readability Score: 7.71 (average 9th or 10th-grade student)
Difficult Words:              124
Linsear Write Formula:        10.833333333333334
Gunning Fog:                  12.86
Text Standard:                10th and 11th grade
*********************************************************************************
Document:                     C:...readability\sampleblognolinks.docx
Flesch Reading Ease:          58.52 (Fairly Difficult)
Smog Index:                   12.9
Flesch Kincaid Grade:         10.3
Coleman Liau Index:           10.5
Automated Readability Index:  12.2
Dale Chall Readability Score: 7.48
Difficult Words:              101
Linsear Write Formula:        10.833333333333334
Gunning Fog:                  11.95
Text Standard:                10th and 11th grade
*********************************************************************************
Document:                     C:...readability\usatoday article no header photos.docx
Flesch Reading Ease:          21.47 (Very Confusing)
Smog Index:                   19.8
Flesch Kincaid Grade:         24.6
Coleman Liau Index:           13.19
Automated Readability Index:  32.2
Dale Chall Readability Score: 9.49
Difficult Words:              317
Linsear Write Formula:        16.25
Gunning Fog:                  27.01
Text Standard:                24th and 25th grade
*********************************************************************************
Document:                     C:...\readability\usatoday article.docx
Flesch Reading Ease:          21.47 (Very Confusing)
Smog Index:                   19.8
Flesch Kincaid Grade:         24.6
Coleman Liau Index:           13.19
Automated Readability Index:  32.2
Dale Chall Readability Score: 9.49
Difficult Words:              317
Linsear Write Formula:        16.25
Gunning Fog:                  27.01
Text Standard:                24th and 25th grade
*********************************************************************************

Для этого блога на оценку повлияло удаление ссылок. Статья USAToday НЕ была затронута удалением заголовка и фотографий.

Ссылки и ресурсы

В 2019 году был интересный конкурс, в ходе которого я применил оценки удобочитаемости, чтобы улучшить объявления о вакансиях в городе Лос-Анджелес. Вы можете видеть, что различные конкуренты используют различные методы.



Вывод

Читаемость текста — очень интересная тема. Очень важно узнать, кто ваша аудитория и как они потребляют ваш контент. Игнорируйте эту информацию, и вы можете не попасть в цель.