Библиотеки или инструменты для генерации случайного, но реалистичного текста

Я ищу инструменты для генерации случайного, но реалистичного текста. Я сам реализовал текстовый генератор Markov Chain, и пока результаты были многообещающими, мои попытки улучшить их не дали больших успехов.

Я был бы доволен инструментами, которые потребляют корпус или работают на основе контекстно-зависимой или контекстно-свободной грамматики. Я хотел бы, чтобы инструмент был подходящим для включения в другой проект. Большая часть моей недавней работы была в Java, поэтому инструмент на этом языке предпочтителен, но я был бы в порядке с С#, C, С++ или даже JavaScript.

Это похоже на question, но больше по объему.

3 ответа

Расширение собственного генератора цепей Маркова, вероятно, будет лучшим выбором, если вы хотите "случайный" текст. Создание чего-то, что имеет контекст, является открытой исследовательской проблемой.

Попробуйте (если нет):

  • Обозначение пунктуации по отдельности или включение пунктуации в цепочку, если вы еще этого не сделали. Это включает знаки абзаца.
  • Если вы используете цепочку марковцев с 2- или 3- историей, попробуйте сбросить с использованием 1-исторической, когда вы столкнулись с полными остановками или новыми линиями.

В качестве альтернативы вы можете использовать WordNet через два прохода с вашим корпусом:

  • Анализ предложений для определения общих последовательностей типов слов, т.е. существительных, глаголов, прилагательных и наречий. WordNet включает их. Все остальное (местоимения, союзы и т.д.) Исключается, но вы могли бы передать их прямо. Это приведет к тому, что "Быстрая коричневая лиса перепрыгнет через ленивую собаку" в "[прилагательное] [прилагательное] [существительное] [глагол (ы)] над [прилагательным] [существительным]"
  • Воспроизводить предложения, произвольно выбирая шаблонное предложение и заменяя [прилагательное], [существительные] и [глаголы] на существительные и глаголы существительных прилагательных.

С этим подходом существует немало проблем: например, вам нужен контекст из окружающих слов, чтобы узнать, какой омоним выбрать. Глядя вверх на "быстрый" в wordnet дает материал о том, чтобы быть быстрым, но также и немного вашего ногтя.

Я знаю, что это не решает ваши требования к библиотеке или инструменту, но может дать вам некоторые идеи.


Что-то вроде this Lorem ipsum generator? Также есть ссылки на несколько API.


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

Я извлек текст из них с помощью этого инструмента: http://alas.matf.bg.ac.rs/~mr04069/WikiExtractor.py

licensed under cc by-sa 3.0 with attribution.