Для исследования эволюции стиля автора на протяжении его жизни на R можно использовать следующий подход:
Собрать корпус текстов автора на протяжении его жизни.
Применить методы стилометрии для извлечения признаков из каждого текста.
Использовать методы машинного обучения, такие как кластеризация или классификация, для определения изменений в стиле автора.
Например, предположим, что у нас есть корпус текстов Эрнеста Хемингуэя на протяжении его жизни. Мы можем использовать библиотеку stylo в R для извлечения стилометрических признаков из каждого текста, а затем использовать метод главных компонент (PCA) для сокращения размерности признакового пространства и визуализации изменений в стиле автора.
А можно обойтись и без использования специализированной библиотеки.
Вот пример кода, который демонстрирует этот подход:
Собрать корпус текстов автора на протяжении его жизни.
Применить методы стилометрии для извлечения признаков из каждого текста.
Использовать методы машинного обучения, такие как кластеризация или классификация, для определения изменений в стиле автора.
Например, предположим, что у нас есть корпус текстов Эрнеста Хемингуэя на протяжении его жизни. Мы можем использовать библиотеку stylo в R для извлечения стилометрических признаков из каждого текста, а затем использовать метод главных компонент (PCA) для сокращения размерности признакового пространства и визуализации изменений в стиле автора.
А можно обойтись и без использования специализированной библиотеки.
Вот пример кода, который демонстрирует этот подход:
# Загрузка данныхЭтот код предполагает, что тексты хранятся в файлах "text1.txt" и "text2.txt", каждый в отдельности. Функция "word_count" вычисляет количество слов в тексте, а затем мы вычисляем долю уникальных слов в каждом тексте. Затем мы используем эти данные для построения графика изменения доли уникальных слов в текстах на протяжении жизни автора.
text1 <- readLines("text1.txt")
text2 <- readLines("text2.txt")
# Создание функции для вычисления количества слов в тексте
word_count <- function(text) {
words <- unlist(strsplit(text, "\\W+"))
words <- words[words != ""]
return(length(words))
}
# Вычисление количества слов в каждом тексте
n_words1 <- word_count(text1)
n_words2 <- word_count(text2)
# Вычисление доли уникальных слов в каждом тексте
unique_words1 <- length(unique(strsplit(text1, "\\W+")[[1]]))/n_words1
unique_words2 <- length(unique(strsplit(text2, "\\W+")[[1]]))/n_words2
# Построение графика изменения доли уникальных слов в текстах на протяжении жизни автора
years <- seq(1900, 2020, 10)
unique_words <- c(0.2, 0.25, 0.3, 0.35, 0.4, 0.45, 0.5, 0.55, 0.6, 0.65)
plot(years, unique_words, type="o", xlab="Год", ylab="Доля уникальных слов", main="Эволюция стиля автора")
Создание сайта на WordPress — это отличный выбор для любого бизнеса! Вот несколько причин, почему:
Простота: Легкий в управлении интерфейс — обновляйте сайт без технических знаний.
Гибкость: Более 50 000 плагинов для расширения функционала, от магазинов до форм обратной связи.
SEO-дружественность: Оптимизация для поисковых систем прямо из коробки.
Мобильная адаптация: Ваш сайт будет отлично выглядеть на любом устройстве.
Безопасность: Регулярные обновления и плагины для защиты данных.
Экономия: Бесплатная платформа и доступные готовые решения.
Готовы вывести свой бизнес в онлайн? Свяжитесь с нами для разработки вашего идеального сайта на WordPress!
#WordPress #ВебРазработка #СозданиеСайтов #SEO #МобильнаяВерсия #Гибкость
Простота: Легкий в управлении интерфейс — обновляйте сайт без технических знаний.
Гибкость: Более 50 000 плагинов для расширения функционала, от магазинов до форм обратной связи.
SEO-дружественность: Оптимизация для поисковых систем прямо из коробки.
Мобильная адаптация: Ваш сайт будет отлично выглядеть на любом устройстве.
Безопасность: Регулярные обновления и плагины для защиты данных.
Экономия: Бесплатная платформа и доступные готовые решения.
Готовы вывести свой бизнес в онлайн? Свяжитесь с нами для разработки вашего идеального сайта на WordPress!
#WordPress #ВебРазработка #СозданиеСайтов #SEO #МобильнаяВерсия #Гибкость
Perl для NLP и Стилометрии
Perl — это язык программирования, который исторически использовался для обработки текста, и благодаря своей гибкости и мощным инструментам для работы со строками, он продолжает оставаться полезным в задачах обработки естественного языка (NLP). Perl идеально подходит для написания скриптов и автоматизации небольших, но важных задач анализа текста.
Perl и стилометрия
Стилометрия фокусируется на анализе текстов для выявления характерных черт стиля авторов. Perl предоставляет отличные возможности для быстрого и эффективного анализа текстов за счёт своей мощной обработки строк и регулярных выражений.
Ключевые задачи стилометрии, которые можно решить с помощью Perl:
Извлечение и анализ частотности слов: Простой подсчёт слов и их распределения в тексте.
Обработка структуры текста: Анализ длины предложений, слов и синтаксических конструкций для выявления уникальных черт авторского стиля.
Сравнение текстов: Автоматическое сравнение различных текстов на основе статистических показателей.
Perl позволяет быстро обрабатывать большие объёмы текста и извлекать нужные данные с помощью регулярных выражений. Его библиотеки, такие как Lingua::EN::Fathom и Lingua::StopWords, позволяют исследователям легко анализировать частотность слов и ключевые фразы.
Пример задачи:
Подсчёт количества слов в тексте с использованием Perl:
Этот скрипт выполняет базовый подсчёт слов, что полезно для предварительного анализа текстов.
Perl для NLP
Перл может использоваться для решения небольших, но важных задач в области NLP. Хотя для сложных моделей машинного обучения и глубокого анализа чаще используют другие языки, такие как Python, Perl остаётся отличным выбором для написания скриптов, автоматизации и предварительной обработки текстов.
Основные задачи NLP, которые можно решать с помощью Perl:
Токенизация: Разделение текста на слова или предложения.
Удаление стоп-слов: Исключение часто встречающихся, но незначимых слов (таких как "и", "или", "но").
Обработка морфологии: Простейшая лемматизация или стемминг для приведения слов к их базовой форме.
Perl также поддерживает наборы инструментов для работы с естественным языком, например, через модули Lingua::EN::Tokenizer и Lingua::EN::Sentence, которые упрощают разбиение текста на составляющие.
Пример задачи NLP:
Токенизация текста:
Этот скрипт демонстрирует, как легко можно разбить текст на отдельные слова с использованием Perl.
Преимущества использования Perl для NLP и стилометрии
Мощная работа с текстом: Perl обладает встроенными инструментами для обработки строк, что делает его идеальным для текстового анализа.
Скорость разработки: Perl позволяет быстро создавать и запускать небольшие скрипты для автоматизации задач.
Регулярные выражения: Perl — один из лучших языков для использования регулярных выражений, что делает его отличным выбором для сложной обработки текста.
Гибкость и простота: Несмотря на свою мощность, Perl остаётся простым для написания скриптов, что позволяет эффективно решать небольшие задачи NLP.
Perl — это язык программирования, который исторически использовался для обработки текста, и благодаря своей гибкости и мощным инструментам для работы со строками, он продолжает оставаться полезным в задачах обработки естественного языка (NLP). Perl идеально подходит для написания скриптов и автоматизации небольших, но важных задач анализа текста.
Perl и стилометрия
Стилометрия фокусируется на анализе текстов для выявления характерных черт стиля авторов. Perl предоставляет отличные возможности для быстрого и эффективного анализа текстов за счёт своей мощной обработки строк и регулярных выражений.
Ключевые задачи стилометрии, которые можно решить с помощью Perl:
Извлечение и анализ частотности слов: Простой подсчёт слов и их распределения в тексте.
Обработка структуры текста: Анализ длины предложений, слов и синтаксических конструкций для выявления уникальных черт авторского стиля.
Сравнение текстов: Автоматическое сравнение различных текстов на основе статистических показателей.
Perl позволяет быстро обрабатывать большие объёмы текста и извлекать нужные данные с помощью регулярных выражений. Его библиотеки, такие как Lingua::EN::Fathom и Lingua::StopWords, позволяют исследователям легко анализировать частотность слов и ключевые фразы.
Пример задачи:
Подсчёт количества слов в тексте с использованием Perl:
use strict;
use warnings;
my $text = "Это пример текста для анализа стилометрии.";
my %word_count;
# Разбиваем текст на слова и подсчитываем их количество
foreach my $word (split(/\s+/, $text)) {
$word_count{lc($word)}++;
}
# Выводим результаты
while (my ($word, $count) = each %word_count) {
print "$word: $count\n";
}
Этот скрипт выполняет базовый подсчёт слов, что полезно для предварительного анализа текстов.
Perl для NLP
Перл может использоваться для решения небольших, но важных задач в области NLP. Хотя для сложных моделей машинного обучения и глубокого анализа чаще используют другие языки, такие как Python, Perl остаётся отличным выбором для написания скриптов, автоматизации и предварительной обработки текстов.
Основные задачи NLP, которые можно решать с помощью Perl:
Токенизация: Разделение текста на слова или предложения.
Удаление стоп-слов: Исключение часто встречающихся, но незначимых слов (таких как "и", "или", "но").
Обработка морфологии: Простейшая лемматизация или стемминг для приведения слов к их базовой форме.
Perl также поддерживает наборы инструментов для работы с естественным языком, например, через модули Lingua::EN::Tokenizer и Lingua::EN::Sentence, которые упрощают разбиение текста на составляющие.
Пример задачи NLP:
Токенизация текста:
use strict;
use warnings;
use Lingua::EN::Tokenizer::Simple;
my $tokenizer = Lingua::EN::Tokenizer::Simple->new();
my $text = "This is a simple example of tokenizing a text in Perl.";
# Токенизация текста
my @tokens = $tokenizer->tokenize($text);
# Вывод токенов
foreach my $token (@tokens) {
print "$token\n";
}
Этот скрипт демонстрирует, как легко можно разбить текст на отдельные слова с использованием Perl.
Преимущества использования Perl для NLP и стилометрии
Мощная работа с текстом: Perl обладает встроенными инструментами для обработки строк, что делает его идеальным для текстового анализа.
Скорость разработки: Perl позволяет быстро создавать и запускать небольшие скрипты для автоматизации задач.
Регулярные выражения: Perl — один из лучших языков для использования регулярных выражений, что делает его отличным выбором для сложной обработки текста.
Гибкость и простота: Несмотря на свою мощность, Perl остаётся простым для написания скриптов, что позволяет эффективно решать небольшие задачи NLP.
Хотя Perl не так часто используется для сложных задач машинного обучения и глубокого анализа текстов, он остаётся крайне полезным инструментом для решения небольших задач NLP и стилометрии. Благодаря мощным возможностям обработки строк, регулярным выражениям и гибкости, Perl предоставляет быстрые и эффективные решения для анализа текста, особенно в тех случаях, когда требуется написать скрипт для быстрого анализа или автоматизации процессов.
Библиотеки, такие как nltk (Natural Language Toolkit), scikit-learn и spacy, позволяют автоматизировать анализ текстов и выявление стилевых характеристик. Например, при помощи nltk можно проводить частотный анализ слов, а с помощью scikit-learn — обучать модели классификации для предсказания авторства.
Пример задачи стилометрии:
Классификация авторства с использованием моделей машинного обучения, обученных на частоте употребления слов и синтаксических особенностях текста.
Пример задачи стилометрии:
Классификация авторства с использованием моделей машинного обучения, обученных на частоте употребления слов и синтаксических особенностях текста.
from sklearn.feature_extraction.text import CountVectorizer
from sklearn.naive_bayes import MultinomialNB
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score
# Пример текстов от двух авторов
texts = ["Текст первого автора", "Ещё один текст первого автора",
"Текст второго автора", "Ещё один текст второго автора"]
labels = ["Author 1", "Author 1", "Author 2", "Author 2"]
# Векторизация текстов
vectorizer = CountVectorizer()
X = vectorizer.fit_transform(texts)
# Разделение на обучающую и тестовую выборки
X_train, X_test, y_train, y_test = train_test_split(X, labels, test_size=0.3, random_state=42)
# Обучение модели
model = MultinomialNB()
model.fit(X_train, y_train)
# Предсказание и оценка точности
y_pred = model.predict(X_test)
print(f"Точность модели: {accuracy_score(y_test, y_pred)}")
Стилометрия с R
Стилометрия — это метод анализа текстов, направленный на изучение стилевых особенностей авторов и произведений.
Задачи стилометрии включают:
Авторство текста: Определение, кто является автором текста, на основе его языковых особенностей.
Стилевые изменения: Отслеживание эволюции стиля автора с течением времени.
Сравнение текстов: Поиск сходства и различий между различными текстами или авторами.
В R существуют пакеты, такие как stylo и tm, которые облегчают выполнение этих задач. Например, stylo позволяет легко проводить анализ частотности слов, построение кластерных деревьев и многомерное шкалирование для анализа сходства текстов.
Пример задач стилометрии в R:
Классификация авторства на основе частоты использования слов и выражений.
Измерение текстовой сложности, анализ синтаксических конструкций и длины предложений.
Стилометрия — это метод анализа текстов, направленный на изучение стилевых особенностей авторов и произведений.
Задачи стилометрии включают:
Авторство текста: Определение, кто является автором текста, на основе его языковых особенностей.
Стилевые изменения: Отслеживание эволюции стиля автора с течением времени.
Сравнение текстов: Поиск сходства и различий между различными текстами или авторами.
В R существуют пакеты, такие как stylo и tm, которые облегчают выполнение этих задач. Например, stylo позволяет легко проводить анализ частотности слов, построение кластерных деревьев и многомерное шкалирование для анализа сходства текстов.
Пример задач стилометрии в R:
Классификация авторства на основе частоты использования слов и выражений.
Измерение текстовой сложности, анализ синтаксических конструкций и длины предложений.
NLP в R
NLP (обработка естественного языка) включает широкий спектр методов для анализа текстов и извлечения информации. R активно используется для таких задач, как:
Токенизация: Разбиение текста на слова, предложения или другие значимые элементы.
Лемматизация и стемминг: Приведение слов к их исходной или базовой форме.
Анализ тональности: Определение эмоциональной окраски текста (положительная, отрицательная, нейтральная).
Обнаружение тем: Выявление ключевых тем или скрытых структур в больших текстовых коллекциях.
Пакеты quanteda, text2vec, topicmodels и wordcloud предоставляют мощные инструменты для выполнения этих задач.
Примеры задач NLP в R:
Анализ тональности для классификации отзывов, постов в социальных сетях или новостных статей.
Моделирование тем для обнаружения ключевых тем в больших текстовых массивах, таких как форумы или статьи.
Преимущества использования R для стилометрии и NLP
Обширные библиотеки: R обладает множеством пакетов, которые облегчают решение задач в области обработки текста.
Визуализация данных: Встроенные инструменты для визуализации, такие как ggplot2, позволяют создавать графики и диаграммы для представления результатов анализа.
Интеграция с другими инструментами: R легко интегрируется с другими языками и платформами, такими как Python или Hadoop, что расширяет его возможности.
NLP (обработка естественного языка) включает широкий спектр методов для анализа текстов и извлечения информации. R активно используется для таких задач, как:
Токенизация: Разбиение текста на слова, предложения или другие значимые элементы.
Лемматизация и стемминг: Приведение слов к их исходной или базовой форме.
Анализ тональности: Определение эмоциональной окраски текста (положительная, отрицательная, нейтральная).
Обнаружение тем: Выявление ключевых тем или скрытых структур в больших текстовых коллекциях.
Пакеты quanteda, text2vec, topicmodels и wordcloud предоставляют мощные инструменты для выполнения этих задач.
Примеры задач NLP в R:
Анализ тональности для классификации отзывов, постов в социальных сетях или новостных статей.
Моделирование тем для обнаружения ключевых тем в больших текстовых массивах, таких как форумы или статьи.
Преимущества использования R для стилометрии и NLP
Обширные библиотеки: R обладает множеством пакетов, которые облегчают решение задач в области обработки текста.
Визуализация данных: Встроенные инструменты для визуализации, такие как ggplot2, позволяют создавать графики и диаграммы для представления результатов анализа.
Интеграция с другими инструментами: R легко интегрируется с другими языками и платформами, такими как Python или Hadoop, что расширяет его возможности.
При работе с большими объемами текстов, такими как собрание сочинений автора, важно учитывать, что простые количественные метрики, такие как длина текста, могут быть недостаточными для глубокого анализа.
В таких случаях следует применять более сложные методы анализа, включая:
1. Анализ частот слов
Можно использовать TF-IDF (Term Frequency-Inverse Document Frequency) для оценки значимости слов в текстах. Это поможет выявить ключевые темы и идеи в сочинениях.
2. Тематическое моделирование и кластеризация
Тематическое моделирование, например, с использованием LDA (Latent Dirichlet Allocation), помогает обнаружить скрытые темы в больших объемах текстов.
Кластеризация текстов может помочь группировать сочинения по схожести содержания.
3. Анализ тональности
Можно оценить эмоциональную окраску текстов, что поможет понять настроение или настроение автора в различных произведениях.
4. Семантический анализ
Использование методов обработки естественного языка (NLP) для извлечения значений и смыслов, таких как анализ синтаксиса и семантики.
5. Статистический анализ
Если необходимо сравнить характеристики разных текстов (например, стиль, длина, сложность), можно использовать более сложные метрики, такие как средняя длина предложений, количество уникальных слов и т. д.
В таких случаях следует применять более сложные методы анализа, включая:
1. Анализ частот слов
Можно использовать TF-IDF (Term Frequency-Inverse Document Frequency) для оценки значимости слов в текстах. Это поможет выявить ключевые темы и идеи в сочинениях.
2. Тематическое моделирование и кластеризация
Тематическое моделирование, например, с использованием LDA (Latent Dirichlet Allocation), помогает обнаружить скрытые темы в больших объемах текстов.
Кластеризация текстов может помочь группировать сочинения по схожести содержания.
3. Анализ тональности
Можно оценить эмоциональную окраску текстов, что поможет понять настроение или настроение автора в различных произведениях.
4. Семантический анализ
Использование методов обработки естественного языка (NLP) для извлечения значений и смыслов, таких как анализ синтаксиса и семантики.
5. Статистический анализ
Если необходимо сравнить характеристики разных текстов (например, стиль, длина, сложность), можно использовать более сложные метрики, такие как средняя длина предложений, количество уникальных слов и т. д.
Кульбак-Лейбнер (Kullback-Leibler Divergence): используется для измерения различия между двумя распределениями вероятностей, что может быть полезно в задачах сравнения текстов.
Мера Жаккара (Jaccard Similarity): используется для сравнения сходства между множествами (например, набором слов в текстах).
Косинусное сходство: часто используется для измерения сходства между векторными представлениями текстов.
Мера Жаккара (Jaccard Similarity): используется для сравнения сходства между множествами (например, набором слов в текстах).
Косинусное сходство: часто используется для измерения сходства между векторными представлениями текстов.
Channel name was changed to «NLP в Data Science. Стилометрия и борьба с плагиатом.»
Channel name was changed to «Изучаем анализ данных на языках R и Python»
Подготовка данных и проведение факторного анализа.
Шаг 1: Генерация данных
Реальные данные могут быть представлены в различных формах: текст, изображения, аудио, видео и т.д. На начальном этапе данные могут находиться в форме текста, изображений, аудиофайлов и т.п., но для анализа они должны быть приведены к численному формату. В R это делается с помощью функций, которые считывают данные из файлов или преобразуют их в числовой формат.
Например, если данные находятся в формате Excel, то сначала загружается файл с данными, затем выбирается нужный лист, и данные конвертируются в численный формат.
Шаг 2: Преобразование данных
Преобразование в числовые данные включает в себя очистку данных от лишних символов, таких как пробелы, запятые, скобки и т. д. Затем данные переводятся в числовую форму с помощью специальных функций, таких как as.numeric().
Также могут использоваться функции для преобразования текстовых данных в числовые. Например, функция as.factor() позволяет преобразовывать текстовые данные в категориальный формат.
Шаг 3: Нормализация данных
Нормализация данных выполняется для того, чтобы привести данные к общему масштабу. Это облегчает сравнение данных, так как разные данные могут иметь разные единицы измерений и шкалы. Например, температура может измеряться в градусах Цельсия, а расстояние — в километрах. Нормализация позволяет работать с данными независимо от их единиц измерения.
Для нормализации данных используются специальные функции, такие как scale(). Они помогают перевести данные в диапазон от 0 до 1, что делает их удобными для сравнения.
Шаг 4: Объединение данных в одну матрицу
Объединение данных производится с помощью функции cbind(). Она объединяет данные из разных источников в одну таблицу. Это удобно для последующего анализа, потому что все данные хранятся в одном месте.
Шаг 5: Проведение факторного анализа
Факторный анализ проводится с помощью специальной функции factor() из библиотеки stats. Эта функция принимает аргументы, такие как данные, метод анализа и количество факторов. По умолчанию она использует метод главного компонента для определения факторов.
Параметры функции включают:
method: метод анализа, например, "principal", "promax", minres.
rotation: метод вращения факторов, например, Varimax, Promax, Quartimax.
scores: количество факторов, которые следует извлечь, например 2, 3, 5.
Функция возвращает объект класса "factor" с параметрами, такими как факторы, их загрузки, коэффициенты корреляции и индексы адекватности.
Как выбрать параметры для функции fa()
При выборе параметров для функции fa() необходимо учитывать природу данных и цели анализа.
Метод анализа: определяет, как данные обрабатываются. Часто используются методы principal, promax, varimax.
Вращение факторов: выбирает метод вращения, например Varimax или Promax.
Количество факторов: задаётся параметром scores. Оно определяет, сколько факторов извлекать из данных.
Выбор метода анализа и метода вращения факторов зависит от типа данных и целей анализа. Выбор количества факторов основывается на природе данных и целях анализа.
Шаг 1: Генерация данных
Реальные данные могут быть представлены в различных формах: текст, изображения, аудио, видео и т.д. На начальном этапе данные могут находиться в форме текста, изображений, аудиофайлов и т.п., но для анализа они должны быть приведены к численному формату. В R это делается с помощью функций, которые считывают данные из файлов или преобразуют их в числовой формат.
Например, если данные находятся в формате Excel, то сначала загружается файл с данными, затем выбирается нужный лист, и данные конвертируются в численный формат.
Шаг 2: Преобразование данных
Преобразование в числовые данные включает в себя очистку данных от лишних символов, таких как пробелы, запятые, скобки и т. д. Затем данные переводятся в числовую форму с помощью специальных функций, таких как as.numeric().
Также могут использоваться функции для преобразования текстовых данных в числовые. Например, функция as.factor() позволяет преобразовывать текстовые данные в категориальный формат.
Шаг 3: Нормализация данных
Нормализация данных выполняется для того, чтобы привести данные к общему масштабу. Это облегчает сравнение данных, так как разные данные могут иметь разные единицы измерений и шкалы. Например, температура может измеряться в градусах Цельсия, а расстояние — в километрах. Нормализация позволяет работать с данными независимо от их единиц измерения.
Для нормализации данных используются специальные функции, такие как scale(). Они помогают перевести данные в диапазон от 0 до 1, что делает их удобными для сравнения.
Шаг 4: Объединение данных в одну матрицу
Объединение данных производится с помощью функции cbind(). Она объединяет данные из разных источников в одну таблицу. Это удобно для последующего анализа, потому что все данные хранятся в одном месте.
Шаг 5: Проведение факторного анализа
Факторный анализ проводится с помощью специальной функции factor() из библиотеки stats. Эта функция принимает аргументы, такие как данные, метод анализа и количество факторов. По умолчанию она использует метод главного компонента для определения факторов.
Параметры функции включают:
method: метод анализа, например, "principal", "promax", minres.
rotation: метод вращения факторов, например, Varimax, Promax, Quartimax.
scores: количество факторов, которые следует извлечь, например 2, 3, 5.
Функция возвращает объект класса "factor" с параметрами, такими как факторы, их загрузки, коэффициенты корреляции и индексы адекватности.
Как выбрать параметры для функции fa()
При выборе параметров для функции fa() необходимо учитывать природу данных и цели анализа.
Метод анализа: определяет, как данные обрабатываются. Часто используются методы principal, promax, varimax.
Вращение факторов: выбирает метод вращения, например Varimax или Promax.
Количество факторов: задаётся параметром scores. Оно определяет, сколько факторов извлекать из данных.
Выбор метода анализа и метода вращения факторов зависит от типа данных и целей анализа. Выбор количества факторов основывается на природе данных и целях анализа.
Пример кода на 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)
Задача: узнать методом Монте-Карло, какое в среднем будет расстояние между двумя случайными точками в круге
import numpy as np
import matplotlib.pyplot as plt
# Метод Монте Карло
# Количество точек для симуляции
num_points = 10000
# Генерация случайных точек в квадрате [0, 1] x [0, 1]
x = np.random.uniform(0, 1, num_points)
y = np.random.uniform(0, 1, num_points)
# Определение, попадает ли точка в круг (радиус = 1, центр = (0, 0))
inside_circle = x**2 + y**2 <= 1
# Оценка числа π
pi_estimate = 4 * np.sum(inside_circle) / num_points
# Графическое отображение
plt.figure(figsize=(8, 8))
plt.scatter(x, y, c=inside_circle, cmap='coolwarm', s=1, label='Точки')
circle = plt.Circle((0, 0), 1, color='blue', fill=False, linewidth=2, label='Круг радиусом 1')
plt.gca().add_artist(circle)
plt.title(f'Оценка числа π методом Монте-Карло\nЧисло точек: {num_points}, π ≈ {pi_estimate:.4f}')
plt.xlabel('x')
plt.ylabel('y')
plt.legend()
plt.axis('equal')
plt.show()
Пример использования цепей Маркова для генерации текста
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)