Проблема:
Создайте предложение, которое можно прочитать и понять. Он должен содержать тему, глагол и объект, и времена и множественное число должны совпадать. Программа также должна быть способна генерировать несколько разных предложений для квалификации.
Правила:
- Жесткое кодирование предложений не допускается, и при этом они не считываются непосредственно из файла (я смотрю на тебя, unclemeat)
- Вы можете иметь любое количество списков слов
- Отправьте пример предложения или 2, которые были сгенерированы вашей программой
- Любой язык принят
- Это конкурс популярности , поэтому победит ответ, получивший наибольшее количество голосов.
popularity-contest
Доктор
источник
источник
[Adjective] [pl. noun] [verb] [adjective] [pl. noun]
и извлекает их из реального словаря (может быть, с использованием одного из доступных API словарей) для заполнения пробелов? Я написал бы сам, если бы у меня было несколько свободных минут! :( В конце концов ...Lazy Developers Write Lousy Programs.
Ответы:
удар
Требования: исходный код ядра Linux установлен в / usr / src
Это вытягивает случайные комментарии из источника ядра. Являются ли предложения действительно понятными , открыто для обсуждения.
Примеры фактического вывода:
end of packet for rx
I don't know what to do
256 byte packet data buffer.
The rest of this junk is to help gdb figure out what goes where
Convert page list back to physical addresses, what a mess.
???
Only Sun can take such nice parts and fuck up the programming interface
источник
fortune
базы данных.Slave Overflow
. хорошее название для сайта SEMatlab
пример выходов:
[Это одно из пасхальных яиц Матлаба]
РЕДАКТИРОВАТЬ: вы можете увидеть код этой функции здесь: why.m
источник
PHP
При наличии достаточного количества времени это произведет всю литературу прошлого, настоящего и будущего. Правила не упоминают, что никакой другой текст не может быть произведен.
Строка
'TOS...'
обеспечивает логарифмическую шкалу частоты букв, чтобы более точно соответствовать английскому языку. Это используется для генерации строки большего размера с приблизительными относительными частотами букв.Запустив его, я обнаружил такие литературные жемчужины как:
GO NOW
- Ты как субъект подразумевается.IM AOK
- Я в порядкеIM FDR
- Я F (ранклин) D (Элеано) R (Оозевельт)Кроме того, многочисленные оскорбления, чтобы кратко выразить недовольство текущей ситуацией. [Некоторые буквы отредактированы.]
F**K
S**T
А также следующее с использованием точно настроенного масштабирования:
IS IT ON
I AM STU
I SEE HTML
источник
F**K
иS**T
при условии, что нет*
в'ABCDEFGHIJKMLNOPQRSTUVWXYZ '
?'TOS...'
строка представляет частоту каждой буквы в логарифмическом масштабе. ТакA
имеет частотуT
,B
имеет частотуO
.J
имеет самую низкую частоту,A
которая переводится в 0, из которых обратное логарифмическое число равно 1. Последний символ - это пробел, который имеет частотуZ
, или округляется (exp (25 / 3.976)) = 538, поэтому пробелы встречаются в 538 раз чаще, чемJ
. Просто подумал, что это изрядно исказит проблему с обезьяной на пишущей машинке .С
Пример вывода:
Есть также много правильных выводимых предложений, которые не имеют темы, глагола и объекта:
источник
--i
оценивается как ложное, когдаi
(переменная типаchar
с начальным значением 0) снова достигает 0. Если значениеchar
unsigned (например, ARM),i
сразу же обернется до его наибольшего значения (обычно 255) и обратного отсчета до 0. Еслиchar
подписано (большинство систем Intel), поведение строго говоря не определено, но обычно после достижения минимального значения ( как правило, -128), он обернется вокруг своего максимума (обычно 127) и обратного отсчета до 0. Таким образом, программа обычно печатает всего 256 строк.Ява
Извлекает вступительное предложение из случайной статьи в Википедии:
Иногда тебе не везет; Я пытаюсь минимизировать это, устанавливая минимальную длину предложения и отфильтровывая предложения, которые заканчиваются на «:» (все страницы устранения неоднозначности начинаются таким образом) или содержат «?» (кажется, есть много статей с неразрешенной неизвестной информацией, отмеченной вопросительными знаками). Границы предложения - это период, за которым следует пробел, за которым следует цифра или заглавная буква.
Я также отфильтровываю текст в скобках (результат по-прежнему является действительным предложением), чтобы попытаться удалить некоторые периоды, которые не являются границами предложений. Я отфильтровываю квадратные скобки, чтобы удалить исходные номера цитирования. Примеры:
Если вы заметили какие-либо проблемы с грамматикой, это ваша вина, что вы не были прилежным редактором Википедии! ;-)
источник
Ооооо ... Так как это конкурс популярности , я повеселился
eval
с функциями. По сути, я генерирую случайное число, а затем выполняю случайную функцию на основе этого числа (по вашему мнениюswitch
,!) Черезeval
.PHP, ~ 9k правильных выводов
Некоторые выводы ...
источник
PHP_EOL
всегда равен\n
или\r\n
, в зависимости от операционной системы, но никогда<br>
или аналогично.PHP + Проект Гутенберг
Я написал PHP-скрипт, который превращает простой текстовый документ в набор биграмм , которые затем используются для генерации случайных предложений. Вот некоторые из лучших примеров, которые он сгенерировал из всей текстовой версии речи Патрика Генри «Дай мне свободу или дай мне смерть» , включая мелкий шрифт Project Gutenberg:
Вы можете попробовать это здесь сами. Обновите страницу для новой партии предложений.
Если вы хотите запустить исходный код самостоятельно, не забудьте загрузить
$src_text
выбранный текст.источник
But for me, death!
: D Желаю, чтобы все лицензии / соглашения заканчивались так же сильно.питон
Эта запись выбирает слова из всего системного словаря. Он использует тот факт, что вы можете превратить большинство существительных в глаголы и наоборот. Он использует несколько эвристик, чтобы классифицировать слова и избежать очевидных невозможностей.
Он производит несколько почти вменяемых утверждений:
Многие безумные
И много вещей, которые звучат как Монти Пайтон, делающие непристойные намеки:
Версия 3 была изменена, чтобы принимать любой текстовый файл в качестве входных данных:
Код (версия 3) :
источник
cat FILE | COMMAND
? UUOC ;)This smoke toasted some nonresidents.
, WOAH.удар
Вдохновленный ответом Matlab. Предполагается, что вы
aptitude
установили.Возможные выводы (скриншот из этой статьи в Википедии)
источник
. /----\ -------/ \ / \ / | -----------------/ --------\ ----------------------------------------------
это правильное предложение.you win
может быть предложением (подразумевается объект «аргумент»). И даже если это не так, вопрос не запрещает случаи, когда вывод не является действительным.Python:
Образцы:
К сожалению, он плохо обрабатывает знаки препинания и заглавные буквы, но опять же они не были указаны в качестве требований.
Также здесь есть ссылка.
источник
' '.join(l)
. Это избавит от замыкающего пространства. Затем вы можете просто добавить точку.print " ".join(takewhile(lambda _: randint(0, 5), repeat("buffalo"))).capitalize() + "."
Руст + Токи Пона
Любой язык принят, поэтому я написал программу на Rust, которая генерирует некоторые предложения в Toki Pona .
Токи Пона - это попытка создать минимальный естественный язык, и он имеет супер простую и правильную грамматику. Это очень полезное свойство для этого конкурса!
Я не говорю на Токи Поне, но я нашел синтаксис Токи Поны как набор правил BNF в Википедии. Я создал одну структуру или перечисление для каждого правила BNF и пометил их
deriving(Rand)
, что дает мне возможность генерировать случайнуюPhrase
структуру бесплатно! Затем я реализовалToStr
для каждой из этих структур преобразование их в строку.Я намеренно оставил названия структур на французском языке, потому что правила BNF, которые я нашел, написаны на французском языке, а также потому, что они отражают многоязычный характер моего представления!
Пример выходов
Некоторые результаты и их переводы, которые я сделал на основе правил BNF и словаря Toki Pona . Я уверен, что эти переводы в основном неверны, но Токи Пона на самом деле оставляет много места для интерпретации предложения.
Во время моей поездки кто-то загрязнил
Окурок грязный и смешной плохой человек
Вы переместили фрукт и центр в желтую вселенную
вопросы
источник
питон
источник
import antigravity
приводит к выходуI LEARNED IT LAST NIGHT! EVERYTHING IS SO SIMPLE!
? : Dпролог
Используйте откат пролога и порождающую грамматику, приближающую английскую грамматику, чтобы сгенерировать все возможные предложения.
Эта версия имеет довольно ограниченный словарный запас и структуру предложений, но ее довольно легко расширить.
Код:
Запустите этот запрос:
генерировать все возможные предложения на этом языке.
Некоторые примеры выходов:
(РЕДАКТИРОВАТЬ: Разрешить подчиненные предложения объекта).
источник
питон
Как вы знаете, в Python вы можете делать все, что угодно, всего за несколько
import
секунд. Эта простая задача может быть выполнена с помощью этого 2-х строчного скрипта Python.Количество предложений, генерируемых этим сценарием, довольно велико:
10^12
разные предложения. Если чтение предложения займет у вас ~ 0,5 секунды, то чтение их всех займет более 15000 лет!Некоторые примеры предложений:
I like the number 0.444371877853
I like the number 0.358614422548
Все же все сгенерированные предложения содержат предмет, глагол и объект.
ОБНОВИТЬ:
Я получил некоторые критические замечания по поводу некоторых сложных слов, которые может произвести этот сложный инструмент. Вот немного более длинная версия, которая должна соответствовать большинству списков слов.
Вот несколько примеров предложений:
I like the number zero point six three five nine zero eight one five eight four two four.
I like the number zero point four nine zero eight four four three two zero six two seven.
источник
Игра с внутренним словарем Mathematica:
Вам повезло, скажем, в 70% случаев. Он генерирует такие вещи, как:
но иногда:
Да ладно, его использование английского лучше, чем мое.
источник
VBA / Excel
[править 2]
Научили его, как спрягать глаголы, примеры, приведенные ниже, представляют собой простое прошедшее время:
Ниже приведен соответствующий код, за исключением множества скучных вспомогательных функций синтаксического анализа и зацикливания. Основными частями, которые отсутствуют, являются различные списки слов (по частям речи), которые выполняют множественное число, времена, спряжения и т. Д.
Все корни слов выбираются случайным образом, но я заставляю их располагаться в определенном шаблоне предложения:
... что я использовал для генерации вывода выше. Отсюда следует общая форма: «Быстрая рыжая лиса перепрыгнула через ленивую коричневую собаку».
[начать оригинальный пост]
Все еще в стадии разработки, необходимо добавить логику для времен и множественного числа существительных / глаголов, а именно:
... который разбирается, но не имеет особого смысла.
Правильно. Не совсем предложение, но лучше, чем некоторые сообщения об ошибках JavaScript.
Процедура недосказанности почти первосортная, хотя ...
Код для последующего анона. У этого конкурса есть крайний срок?
[править 1]
Код, сгенерированный выше.
источник
Perl 5
ОК, смелость программы заключается в следующем:
Это в основном двигатель "madlib". Чтобы на самом деле генерировать интересные предложения, вам нужно заполнить
%pad
некоторыми данными. Вот пример%pad
...Вот несколько примеров мудрости, которую я обнаружил из этого
%pad
. Эти предложения не были отредактированы для длины, пунктуации, грамматики и т. Д., Хотя я выбрал некоторые неинтересные и переставил порядок, в котором появляются предложения - они уже не в том порядке, в котором они были созданы, но вместо этого я пытаюсь используйте их, чтобы рассказать историю: историю, которую, я надеюсь, вы найдете трогательной и заставляющей задуматься.источник
Г-жа слово
Я не уверен, что это приемлемо, но так как HTML есть, я думаю, что это также должно быть приемлемым.
Примеры предложений:
Вы также можете указать любое количество предложений и абзацев.
источник
Работа в процессе с использованием JSoup и simpleNLG
Вопросы:
Пример выходов:
источник
PHP
Он выбирает 30 самых популярных поисковых запросов в Google, выполняет поиск «Мне повезет», а затем отображает случайное предложение с этой страницы, содержащее не менее 3 слов.
Примеры:
«Она была признана фаворитом медали в этом событии».
«Кейт закончила среднюю школу на год раньше».
«15 апреля 2014 года, чтобы способствовать соблюдению политики в отношении биографий живых людей».
«От имени Брайана мы, его семья, хотели бы поблагодарить всех за излияние любви, молитв и поддержки».
«Эта статья об американском баскетболисте».
«К сожалению, в вашем браузере отключен JavaScript или нет поддерживаемого проигрывателя».
источник
Python 2.7
выход:
источник
/q/21571
вместо/questions/21571/generate-an-understandable-sentence
).Сценарии оболочки
Этот скрипт всегда будет отображать заголовок первого вопроса, который в данный момент находится над этим сайтом. Я предполагаю, что заголовок вопроса всегда будет удобочитаемым. И это будет меняться динамически. Таким образом, всякий раз, когда приходит новый вопрос и когда выполняется скрипт, он будет давать заголовок последнего вопроса.
Пробный 1 выход
Пробная версия 2
РЕДАКТИРОВАТЬ
Не используя никаких файлов. Без файлов я могу использовать приведенный ниже скрипт.
Выход
источник
JavaScript (ES6)
Запуск его в консоли производит
источник
t='';for(f of [_=>foo,_=>null.a,_=>0..toString(0)])try{f()}catch(e){t+=e.message+'\n'}t
Еще один скрипт на Python
Ответ user3058846 не плохо, но это показывает каждые предложения, каждый раз. Здесь я предлагаю скрипт, который выводит случайное предложение из Zen of Python :
В одну строчку для поклонников Code-Golf :
(Буо, грязно.)
Примеры:
Еще один интересный способ в Python
Спасибо @TheDoctor за идею :-) Отключите вывод импорта и поиграйте с псевдо-зашифрованным dict в модуле.
источник
shell=True
. Хотя в этом случае это небезопасно, поскольку вы не принимаете пользовательский ввод, я бы выбралsubprocess.Popen(('python', '-c', 'import this'))
.import this
, в модуле есть переменная,this
которая содержит весь текст, но зашифрован. Есть также словарь для расшифровки.Python 3
Гарантировано генерировать грамматический вывод! (Обычно.)
Чтобы сделать его совершенно грамматическим, удалите подчеркивание из
wordregex
. Это запретит многословные записи, которые приводят к неправильным предложениям, таким как «Мы застегиваем вас».Образец прогона:
Любимый результат пока:
Посмотрите это: http://en.wiktionary.org/wiki/you#Verb .
источник
питон
Результат:
Я использовал список слов отсюда Найти слова, содержащие каждый гласный
Можно добавить еще несколько правил. Например, если слово, оканчивающееся на «ness», и слово также существует в множестве без суффикса, то это существительное.
Исходный код:
источник
удар
Попытка запустить программу, которая существует, но не установлена, дает это (в Linux Mint 13).
источник
Python 3
Еще один дубль в Zen of Python , вдохновленный ответом Максима .
источник
источник