Digitaljay / text_generator

Able to generate strange&fun text with given prefix. Just had fun with bigramms :)

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

text_generator

Able to generate strange&fun text with given prefix. Just had fun with bigramms :)

Что за биграммы вообще?

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

Реализация

В голову приходят два подхода:

  1. Для каждого слова хранить словарь, где ключи - слова, следующие за ним в текстах-учебниках, а значения - сколько раз это слово было следующим. В конце концов - сохранить какое-то количество, ну пусть, 10, самых частых слов и использовать уже их.
  2. Для каждого слова хранить список, просто все попадающиеся следующими за словом слова скидывать в него. Выбирать на каждом шаге генерации текста рандомное слово из списка последнего слова.

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

Инструкция по эксплуатаци

Довести утилиты до ума (оформить в стиле ООП, вынести обучение на Colab, сделать удобный интерфейс командной строки через argparse) я не успела, поэтому рекомендую, чтобы долго не разбираться с кодом:

  1. Открыть всю папку репозитория сразу в PyCharm.
  2. По ссылке в файле link_books.txt скачать саму модель и разместить папку models в папке репозитория.
  3. Если выполнили два предыдущих пункта - можно сразу без аргументов запускать файл create_text.py и любоваться генерацией.

Интересные примеры работы

Да, они есть, программа иногда пишет как первоклашка, без запятых, тире и ковычек. Иногда, если их расставить - получается нечто осмысленное. Ну а есть просто интересные примеры :).

Из +- осмысленного:

  1. Нет говорила он так велело сердце у меня опять. -> "Нет", - говорила, - "он, так велело сердце у меня опять!"
  2. Я ему навстречу комиссару то я успел закрыть глаза. -> -Я ему навстречу, комиссару то, "я успел закрыть глаза!".
  3. До такой резкой перемены мест кто он тотчас?
  4. Так направить на поверхности острова исчезнувшего медного.
  5. Уже прощался с вами воскликнул франц иего. -> "Уже прощался с вами", - воскликнул франц Иего.

Из интересного:

  1. Вы недаром я отпустил ее из липового чаю.
  2. Ни серпа единственное средство от бога сударыня. -> -Ни серпа! - единственное средство от бога, сударыня!"
  3. Ведьмаку заплатите мне известно сослов пенелона омужественном поведении. -> Ведьмаку заплатите, мне известно со слов Пенелона о мужественном поведении.

P.S.:

Среди книг ппопалась какая-то, после которой произошёл вброс слов без пробелов, поэтому это бага, но её можно было бы легко поправить, если бы до дедлайна не оставалось 15 минут...

Ну и наконец

Спасибо за внимание, хорошего дня!

About

Able to generate strange&fun text with given prefix. Just had fun with bigramms :)


Languages

Language:Python 100.0%