Домашнее задание по курсу Python в Школе Анализа Данных Яндекса.
Егор Игнатенков, 2015.
Проект состоит из двух файлов.
make_statistics.py содержит функцию generate_statistics, которая принимает путь к корпусу текстов, обрабатывает его и сохраняет в файлы частоту возникновения каждого возможного слова после одного слова (single_stats.txt) и после пары слов (double_stats.txt).
Тексты проходят предобработку: удаляются символы не из ascii, дефисы заменяются на пробелы. Затем из каждой строки выделяются слова и слова, заканчивающиеся точкой. По этим словам генерятся статистики. Слово, оказавшееся последним в строке, трактуется, как слово с точкой, независимо от того, какой на самом деле знак препинания стоит после него. Слова, идущие после слов с точкой, сохраняются как слова, которые могут быть началом предложения.
При исполнении make_statistics.py запускается функция generate_statistics, в директории проекта создаются файлы со статистиками.
text_generation.py содержит функции weighted_choice и text_generation.
Функция weighted_choice реализует случайный выбор ключа из словаря с натуральными значениями, трактуя эти значения как частоту данного ключа в выборке.
Функция text_generation генерирует текст заданной длины по файлам со статистиками, лежащими по переданному адресу (по умолчанию берутся файлы из директории проекта. Предложения начинаются со слов, бывших первыми словами предложений в исходном корпусе, следующее слово берется случайным образом с учетом частот из соответствующего словаря из single_stats, следующие слова до конца предложения берутся случайным образом из соответствующих словарей из double_stats. Функция возвращает полученный текст.
При исполнении text_generation.py запускается функция text_generation, которая генерирует случайный текст длины 10000 слов. Этот текст записывается в файл random_text.txt в директорию проекта.