Открытый канал ID 76792866112233

Литературная лаборатория

Литературная лаборатория — исследуем классику с помощью статистики и компьютерного анализа. Неожиданные закономерности, особенности авторского стиля и эксперименты с художественными текстами. Понятно о сложном, с примерами на Python и R.

Каналов в рубрике
2 778
Место этого канала
№ 2 272
Открыть рубрику →
Открыть в MAX

Публикации за период

По реакциям

Поиск и вся лента — после бесплатной регистрации. Свои даты — по подписке; владелец канала видит их бесплатно. Сортировка по реакциям — по подписке. Зарегистрироваться

Загрузка…

📚 Литературная лаборатория. Что такое корпус текстов и зачем он нужен?

Представьте, что мы хотим выяснить, чем отличается язык Гоголя от языка Пушкина. Можно взять по одному роману каждого автора и посчитать слова. Но достаточно ли этого, чтобы делать выводы об их стиле?

А если один текст — комедия, а другой — исторический роман? Если произведения написаны в разные годы или один из электронных файлов содержит ошибки? Результат может оказаться обманчивым.

Поэтому исследователи работают с корпусами текстов.

🔎 Что такое корпус?

В простом понимании корпус — это собрание текстов, подготовленное для систематического изучения языка или литературы. Тексты в нём подбирают не случайно, а в соответствии с задачей исследования.

Например, можно собрать:
📖 произведения одного автора;
📖 русские романы XIX века;
📖 газетные статьи определённого периода;
📖 тексты разных авторов
, чтобы сравнить их языковые привычки.

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

📊 Чем больше текстов, тем лучше? Не всегда!

Предположим, мы исследуем язык русской классической литературы. Если добавить к романам XIX века современные рекламные объявления, переписку в интернете и технические инструкции, общий объём вырастет. Но станет ли исследование точнее? Не обязательно.

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

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

🧪 Как это связано с нашей лабораторией?

Если мы захотим сравнить Гоголя, Пушкина и Достоевского с помощью стилометрии, нам понадобится корпус произведений этих авторов. Желательно использовать тексты сопоставимого объёма, учитывать жанр и период написания, а также проверять качество электронных источников.

Только после этого можно осмысленно сравнивать частоты слов и искать статистические различия.

Корпус — это не просто много текста. Это материал, собранный по понятным правилам ради конкретного исследования.

Именно поэтому в компьютерном анализе литературы важно не только то, что мы считаем, но и то, на каком материале мы это делаем.
Просмотры: 6
Перейти в пост Открыть в MAX Сообщить о неточности
🔬 Литературная лаборатория. Как разоблачить подделку с помощью самого текста?

Задолго до появления компьютеров учёные уже пытались выяснить, кто на самом деле написал тот или иной документ. И один из самых знаменитых примеров связан с итальянским гуманистом Лоренцо Валлой.

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

В 1440 году Валла написал трактат, в котором показал, что документ не мог быть создан во времена Константина. Он внимательно анализировал язык, лексику и исторические реалии текста. Некоторые выражения и особенности языка указывали на эпоху значительно более позднюю, чем IV век, когда жил император.

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

📊А при чём здесь компьютерная статистика?

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

Можно исследовать лексику, грамматику, характерные выражения и частотность слов. Сегодня такие признаки позволяют сравнивать тексты с помощью стилометрии — количественного анализа авторского стиля.

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

История Константинова дара напоминает нам: текст способен свидетельствовать против собственной подлинности. А современные методы позволяют исследовать эти свидетельства ещё и количественно.

В следующем эксперименте попробуем разобраться, как статистика помогает сравнивать авторские стили — и почему даже самые убедительные числа требуют осторожной интерпретации.
Просмотры: 4
Перейти в пост Открыть в MAX Сообщить о неточности
🔬 Литературная лаборатория: кого чаще всего упоминают в «Мёртвых душах»?

Можно ли увидеть устройство гоголевской поэмы, просто посчитав слова? Попробуем!

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

📊Результаты подсчёта

| Персонаж | Упоминания |
|---|---:|
| Чичиков | 469 |
| Ноздрёв | 139 |
| Манилов | 106 |
| Собакевич | 106 |
| Плюшкин | 46 |
| Коробочка | 17 |

Но самое интересное обнаружилось, когда мы посмотрели на отдельные главы.

📖У каждого помещика — своя глава

— Во второй главе фамилия Манилова встречается 79 раз.

— В четвёртой главе Ноздрёв упоминается 98 раз.

— В пятой главе Собакевич выходит на второй план по частоте: 57 упоминаний.

— В шестой главе фамилия Плюшкина встречается 33 раза.

А Чичиков присутствует во всех одиннадцати главах и набирает в общей сложности 469 упоминаний.

🔎 Что это означает?

Рейтинг отражает композицию поэмы: когда Чичиков посещает очередного помещика, фамилия хозяина закономерно становится одной из самых заметных в соответствующей главе.

При этом частота фамилии — ещё не мера художественной значимости персонажа. Мы считали словесные формы фамилий, а не все случаи появления героев в повествовании.

💻 Вся работа выполнена с помощью небольшого скрипта на Python. Никакой сложной математики — только текст, несколько строк кода и любопытство.
Просмотры: 4
Перейти в пост Открыть в MAX Сообщить о неточности
🔬 Литературная лаборатория.
Сколько слов помещается в одно предложение у Гоголя?

Мы привыкли говорить, что у Гоголя длинные предложения. Но можно ли проверить это с помощью Python?

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

📊 Что получилось?

— Найдено 4 685 предложений.

— Средняя длина предложения — около 16 слов.

— Медианная длина — 11 слов. Иными словами, половина предложений содержит не более 11 слов, а другая половина — не менее 11.

— 203 предложения содержат больше 50 слов.

— Вот одно из найденных предложений насчитывает 125 слов!

125 слов:
Какие бывают эти общие залы — всякий проезжающий знает очень хорошо: те же стены, выкрашенные масляной краской, потемневшие вверху от трубочного дыма и залосненные снизу спинами разных проезжающих, а еще более туземными купеческими, ибо купцы по торговым дням приходили сюда сам-шест и сам-сём испивать свою известную пару чаю; тот же закопченный потолок; та же копченая люстра со множеством висящих стеклышек, которые прыгали и звенели всякий раз, когда половой бегал по истертым клеенкам, помахивая бойко подносом, на котором сидела такая же бездна чайных чашек, как птиц на морском берегу; те же картины во всю стену, писанные масляными красками, — словом, все то же, что и везде; только и разницы, что на одной картине изображена была нимфа с такими огромными грудями, каких читатель, верно, никогда не видывал.

📖 Что это говорит о Гоголе?

Посмотрите, как он умеет разворачивать описание. Обычная сцена превращается в целую картину: появляются детали, сравнения, новые действующие лица, авторские замечания. Мы не просто узнаём, что происходит, — мы словно наблюдаем происходящее глазами рассказчика.

При этом большинство предложений значительно короче рекордных. Именно контраст между короткими фразами и развёрнутыми периодами делает ритм повествования разнообразным.

💻 Всё это можно проверить самостоятельно с помощью нескольких строк Python. Программирование здесь — не цель, а инструмент, который помогает увидеть особенности знакомого текста.

А вы замечали, как Гоголь может превратить одно предложение в целую маленькую историю?
Просмотры: 4
Перейти в пост Открыть в MAX Сообщить о неточности
🔬 Добро пожаловать в «Литературную лабораторию»!

Можно ли узнать что-то новое о любимых книгах с помощью статистики? Какое слово чаще всего встречается в «Мёртвых душах» Гоголя? Чем отличается язык Пушкина от языка Достоевского?

«Литературная лаборатория» — любительские эксперименты с текстами и цифрами. Не претендуем на академические исследования: проверяем интересные гипотезы, ищем закономерности и учимся замечать новое в знакомых книгах. Результаты могут зависеть от издания текста и выбранного метода подсчёта.

И можно ли обнаружить особенности авторского стиля, просто внимательно вычисляя статистики?

Здесь мы будем изучать русскую классику с неожиданной стороны: искать любопытные закономерности.

📚 Литература и язык.
📊 Интересные факты и статистика.
💻 Иногда — немного кода, чтобы заглянуть за кулисы исследования.


Без сложной математики и обязательного программирования. Главное — любопытство и любовь к чтению.

Давайте посмотрим, какие секреты скрываются между строк!
И просто поговорим о литературе.


#channel_wi
#wi_литературная_лаборатория
Просмотры: 5
Перейти в пост Открыть в MAX Сообщить о неточности
🔬 Добро пожаловать в «Литературную лабораторию»!

А что, если посмотреть на литературные произведения и тексты вообще, не только глазами читателя, но и с помощью статистики, лингвистики и компьютерного анализа?

Почему одни писатели предпочитают длинные предложения, а другие — короткие? Можно ли обнаружить особенности авторского стиля по частотности слов? Насколько похожи тексты разных писателей и можно ли математически исследовать их различия?

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

📊 Статистика и анализ текстов.
📚 Русская классика и авторский стиль.
💻 Python, R и практические примеры
.

Без необходимости быть математиком или программистом. Главное — любопытство и интерес к литературе.

Читайте, исследуйте, задавайте вопросы — и давайте посмотрим, что интересного можно обнаружить между строк!

И просто поговорим о литературе.

https://max.ru/channel_wi

#channel_wi
#wi_литературная_лаборатория
Просмотры: 3
Перейти в пост Открыть в MAX Сообщить о неточности
Пример использования цепей Маркова.

Для генерации текста.

import os
import pandas as pd
import markovify
from tqdm import tqdm

# Папка с текстами
folder_path = "data"

# Чтение текстовых файлов в один DataFrame
files = [f for f in os.listdir(folder_path) if f.endswith(".txt")]

# Создаем список для хранения данных
data = []

# Чтение каждого файла и добавление в DataFrame
for file in tqdm(files, desc="Чтение файлов"):
with open(os.path.join(folder_path, file), 'r', encoding='utf-8') as f:
text = f.read().lower() # Приводим текст к нижнему регистру
data.append({'id': os.path.splitext(file)[0], 'text': text})

# Создаем DataFrame
df_texts = pd.DataFrame(data)

# Объединяем все тексты в один
all_text = " ".join(df_texts['text'])

# Строим марковскую модель
# Используем прогресс-бар для анализа текста
print("Создание марковской цепи...")
text_model = markovify.Text(all_text, state_size=2)

# Функция для генерации фразы
def generate_phrase(model, length=10):
phrase = []
current_sentence = model.make_sentence()
if not current_sentence:
return ""

phrase.append(current_sentence)

# Генерация дополнительных фраз
for _ in range(length - 1):
current_sentence = model.make_sentence()
if not current_sentence:
break
phrase.append(current_sentence)

return " ".join(phrase)

# Пример генерации фразы
generated_phrase = generate_phrase(text_model, length=10)
print("Generated phrase:", generated_phrase)
Просмотры: 3
Перейти в пост Открыть в MAX Сообщить о неточности
Поиск и работа с именами собственными в текстах.

Пример кода на Python с использованием spaCy для выделения имен собственных.

import spacy

# Загрузка многоязычной модели для spaCy
nlp = spacy.load("xx_ent_wiki_sm")

# Текст для анализа
text = "Иван и Марья Ивановна были в парке. Петр и Ирина пошли в магазин."

# Применяем spaCy для анализа текста
doc = nlp(text)

# Выделяем имена собственные (на основе модели NER)
persons = []

for ent in doc.ents:
if ent.label_ == "PERSON":
persons.append(ent.text)

# Выводим имена собственные
print("Найденные имена собственные:", persons)

================
Поиск имен собственных с использованием pymorphy3

import pandas as pd
from sklearn.feature_extraction.text import CountVectorizer
from sklearn.metrics.pairwise import cosine_similarity
import nltk
from nltk.corpus import stopwords
import pymorphy3
from wordcloud import WordCloud
import matplotlib.pyplot as plt

# Загрузка стоп-слов для русского языка
nltk.download('stopwords')
russian_stopwords = stopwords.words('russian')

# Чтение файла
with open(path_to_text_file, 'r', encoding='utf-8') as file:
text_data = file.readlines()

# Объединение текста в один большой текст для анализа
full_text = ' '.join(text_data)

# Создание экземпляра морфологического анализатора
morph = pymorphy3.MorphAnalyzer()

# Разделение текста на слова
words = full_text.split()

# Поиск имен собственных с использованием pymorphy3
proper_nouns = set()
for word in words:
parsed_word = morph.parse(word)[0]
if 'Name' in parsed_word.tag: # Проверка, является ли слово именем собственным
proper_nouns.add(word)

# Выводим найденные имена собственные таблицей
proper_nouns_df = pd.DataFrame(list(proper_nouns), columns=["Имена собственные"])
print("\nНайденные имена собственные:")
print(proper_nouns_df)
Просмотры: 3
Перейти в пост Открыть в MAX Сообщить о неточности
Работа с большими текстовыми данными

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

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

1. Анализ частот слов

Можно использовать TF-IDF (Term Frequency-Inverse Document Frequency) для оценки значимости слов в текстах. Это поможет выявить ключевые темы и идеи в сочинениях.

2. Тематическое моделирование и кластеризация

Тематическое моделирование, например, с использованием LDA (Latent Dirichlet Allocation), помогает обнаружить скрытые темы в больших объемах текстов.
Кластеризация текстов может помочь группировать сочинения по схожести содержания.

3. Анализ тональности

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

4. Семантический анализ

Использование методов обработки естественного языка (NLP) для извлечения значений и смыслов, таких как анализ синтаксиса и семантики.

5. Статистический анализ

Если необходимо сравнить характеристики разных текстов (например, стиль, длина, сложность), можно использовать более сложные метрики, такие как средняя длина предложений, количество уникальных слов и т. д.
Просмотры: 3
Перейти в пост Открыть в MAX Сообщить о неточности
NLP в R

NLP (обработка естественного языка) включает широкий спектр методов для анализа текстов и извлечения информации. R активно используется для таких задач, как:

Токенизация: Разбиение текста на слова, предложения или другие значимые элементы.
Лемматизация и стемминг: Приведение слов к их исходной или базовой форме.
Анализ тональности: Определение эмоциональной окраски текста (положительная, отрицательная, нейтральная).
Обнаружение тем: Выявление ключевых тем или скрытых структур в больших текстовых коллекциях.

Пакеты quanteda, text2vec, topicmodels и wordcloud предоставляют мощные инструменты для выполнения этих задач.

Примеры задач NLP в R:

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

Преимущества использования R для стилометрии и NLP

Обширные библиотеки: R обладает множеством пакетов, которые облегчают решение задач в области обработки текста.
Визуализация данных: Встроенные инструменты для визуализации, такие как ggplot2, позволяют создавать графики и диаграммы для представления результатов анализа.
Интеграция с другими инструментами: R легко интегрируется с другими языками и платформами, такими как Python или Hadoop, что расширяет его возможности.
Просмотры: 3
Перейти в пост Открыть в MAX Сообщить о неточности
Вся лента — после бесплатной регистрации
ВКонтакте Телеграм Одноклассники
Избранное в datool.ru

Следите за каналом в личном кабинете

Зарегистрируйтесь в datool.ru, чтобы добавить канал «Литературная лаборатория» в избранное и отслеживать его показатели.

Зарегистрироваться
Для владельцев каналов

Подтвердите свой канал

Войдите или зарегистрируйтесь в datool.ru, затем добавьте нашего бота в канал по инструкции в личном кабинете. После проверки владения замок исчезнет и вам станет доступно управление каналом.

Войти или зарегистрироваться

Сообщить о неточности

Опишите, что нужно исправить. Если есть источник, добавьте ссылку.

Вы покидаете datool.ru

Ссылка ведёт на внешний сайт. datool.ru не отвечает за его содержимое — проверьте адрес, прежде чем вводить пароли или платёжные данные.

Переход через 10 с

Перейти