Masalah:
Hasilkan kalimat yang bisa dibaca dan dipahami. Itu harus mengandung subjek, kata kerja, dan objek, dan bentuk kata serta jamak harus cocok. Program ini juga harus dapat menghasilkan beberapa kalimat yang berbeda untuk memenuhi syarat.
Aturan:
- Pengkodean kalimat-kalimat keras tidak diizinkan, dan juga tidak membacanya langsung dari file (saya sedang melihat Anda, hapus klasifikasi)
- Anda dapat memiliki sejumlah daftar kata
- Kirim contoh atau 2 kalimat yang telah dihasilkan oleh program Anda
- Bahasa apa pun diterima
- Ini adalah kontes popularitas , jadi jawaban yang paling populer menang
popularity-contest
Dokter
sumber
sumber
[Adjective] [pl. noun] [verb] [adjective] [pl. noun]
dan menarik dari kamus nyata (mungkin menggunakan salah satu API Kamus yang tersedia di luar sana) untuk mengisi kekosongan? Saya akan menulis sendiri jika ada waktu luang! :( Lagi pula ...Lazy Developers Write Lousy Programs.
Jawaban:
Pesta
Persyaratan: sumber kernel linux dipasang di / usr / src
Ini mengeluarkan komentar acak dari sumber kernel. Apakah kalimat-kalimat itu benar-benar dapat dimengerti, masih terbuka untuk diperdebatkan.
Contoh output aktual:
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
sumber
fortune
basis data resmi .Slave Overflow
. nama yang bagus untuk situs web SEMatlab
contoh output:
[Ini adalah salah satu telur paskah Matlab]
EDIT: Anda dapat melihat kode fungsi ini di sini: why.m
sumber
PHP
Dengan waktu yang cukup, ini akan menghasilkan semua literatur, masa lalu, sekarang dan masa depan. Aturan tidak menyebutkan bahwa tidak ada teks lain yang dapat diproduksi.
String
'TOS...'
menyediakan frekuensi skala logaritmik dari huruf-huruf tersebut agar lebih mendekati bahasa Inggris. Ini digunakan untuk menghasilkan string yang lebih besar dengan perkiraan frekuensi huruf relatif.Menjalankannya, saya telah menemukan permata sastra seperti:
GO NOW
- Anda sebagai subjek tersirat.IM AOK
- Saya A-OKIM FDR
- Saya F (ranklin) D (eleano) R (oosevelt)Juga, banyak ejekan untuk secara singkat mengungkapkan ketidaksenangan dengan situasi saat ini. [Beberapa surat dihapus.]
F**K
S**T
Selain itu, berikut ini menggunakan penskalaan fine-tuned:
IS IT ON
I AM STU
I SEE HTML
sumber
F**K
danS**T
asalkan tidak ada*
di dalam'ABCDEFGHIJKMLNOPQRSTUVWXYZ '
?'TOS...'
String mewakili frekuensi setiap huruf dalam skala logaritmik. Begitu jugaA
memiliki frekuensiT
,B
memiliki frekuensiO
.J
memiliki frekuensi terendahA
yang diterjemahkan menjadi 0, di mana log terbaliknya adalah 1. Karakter terakhir adalah spasi, yang memiliki frekuensiZ
, atau bulat (exp (25 / 3.976)) = 538, sehingga spasi terjadi 538 kali lebih sering daripadaJ
. Hanya berpikir itu menempatkan twist pada masalah monyet-at-a-mesin tik .C
Contoh output:
Ada juga banyak output kalimat yang valid yang tidak memiliki subjek, kata kerja dan objek:
sumber
--i
bernilai false ketikai
(variabel tipechar
dengan nilai awal 0) mencapai 0 lagi. Jikachar
tidak ditandatangani (misalnya ARM),i
akan segera membungkus ke nilai terbesarnya (biasanya 255) dan menghitung mundur ke 0. Jikachar
ditandatangani (sebagian besar sistem Intel) perilaku ini secara tegas tidak terdefinisi, tetapi biasanya setelah mencapai nilai minimum ( biasanya -128) itu akan membungkus maksimum (biasanya 127) dan menghitung mundur ke 0. Jadi program biasanya akan mencetak 256 baris secara total.Jawa
Menarik kalimat intro dari artikel Wikipedia acak:
Terkadang Anda beruntung; Saya mencoba meminimalkan ini dengan menetapkan panjang kalimat minimum dan menyaring kalimat yang diakhiri dengan ":" (semua halaman disambiguasi memulai dengan cara itu) atau mengandung "?" (Tampaknya ada banyak artikel dengan info yang tidak diketahui yang belum terselesaikan ditandai oleh tanda tanya). Batas kalimat adalah periode yang diikuti oleh spasi putih diikuti oleh angka atau huruf kapital.
Saya juga memfilter teks dalam tanda kurung (hasilnya masih berupa kalimat yang valid) untuk mencoba dan menghapus beberapa periode yang bukan batas kalimat. Saya menyaring kurung kurawal untuk menghapus nomor kutipan sumber. Contoh:
Jika Anda melihat ada masalah tata bahasa, itu salah Anda karena tidak menjadi editor Wikipedia yang rajin! ;-)
sumber
Soooo ... Karena ini adalah kontes popularitas , saya bersenang-senang dengan
eval
dan dengan berbagai fungsi. Pada dasarnya saya menghasilkan angka acak dan kemudian menjalankan fungsi acak berdasarkan nomor itu (di wajah Anda,!switch
) Viaeval
.PHP, ~ 9k keluaran yang valid
Beberapa output ...
sumber
PHP_EOL
hanya pernah sama dengan\n
atau\r\n
, tergantung pada sistem operasi, tetapi tidak pernah<br>
atau serupa.PHP + Project Gutenberg
Saya menulis skrip PHP yang mengubah dokumen teks biasa menjadi satu set kata bigrams , yang kemudian digunakan untuk menghasilkan kalimat acak. Berikut adalah beberapa contoh yang lebih baik yang dihasilkan dari keseluruhan versi teks pidato Patrick "Give Me Liberty Or Give Me Death" Patrick , termasuk cetak kecil Project Gutenberg:
Anda dapat mencobanya sendiri di sini. Perbarui halaman untuk kumpulan kalimat baru.
Jika Anda ingin menjalankan sendiri kode sumbernya, jangan lupa memuat
$src_text
dengan teks biasa yang Anda pilih.sumber
But for me, death!
: DI berharap semua lisensi / perjanjian berakhir dengan kuat.Python
Entri ini memilih kata-kata dari kamus seluruh sistem. Ini mengambil keuntungan dari fakta bahwa Anda dapat membuat sebagian besar kata benda menjadi kata kerja dan sebaliknya. Ini menggunakan beberapa heuristik untuk mengklasifikasikan kata-kata dan menghindari ketidakmungkinan yang jelas.
Ini menghasilkan beberapa pernyataan yang hampir waras:
Banyak yang gila:
Dan banyak hal yang terdengar seperti Monty Python membuat sindiran cabul:
Versi 3 telah dimodifikasi untuk mengambil file teks apa pun sebagai input:
Kode (versi 3) :
sumber
cat FILE | COMMAND
? UUOC ;)This smoke toasted some nonresidents.
. WOW.Pesta
Terinspirasi oleh jawaban Matlab. Mengasumsikan Anda telah
aptitude
menginstal.Kemungkinan output (screenshot dari ini artikel wikipedia)
sumber
. /----\ -------/ \ / \ / | -----------------/ --------\ ----------------------------------------------
ini bukan kalimat yang valid.you win
bisa berupa kalimat (objek "argumen" tersirat). Dan bahkan jika tidak, pertanyaannya tidak melarang kasus di mana output tidak valid.Python:
Sampel:
Sayangnya, ini memiliki penanganan tanda baca dan huruf besar yang buruk, tetapi sekali lagi itu tidak terdaftar sebagai persyaratan.
Juga, di sini adalah referensi.
sumber
' '.join(l)
. Itu akan menyingkirkan ruang trailing. Anda kemudian dapat menambahkan periode.print " ".join(takewhile(lambda _: randint(0, 5), repeat("buffalo"))).capitalize() + "."
Karat + Toki Pona
Bahasa apa pun diterima, jadi saya menulis sebuah program di Rust yang menghasilkan beberapa kalimat dalam Toki Pona .
Toki Pona adalah upaya untuk menciptakan bahasa alami yang minimal, dan memiliki tata bahasa yang super sederhana dan teratur. Itu properti yang sangat berguna untuk kontes ini!
Saya tidak berbicara Toki Pona, tetapi saya menemukan sintaksis Toki Pona sebagai seperangkat aturan BNF di Wikipedia. Saya membuat satu struct atau enum untuk setiap aturan BNF, dan saya menjelaskannya dengan
deriving(Rand)
, yang memberi saya cara untuk menghasilkanPhrase
struct acak gratis! Kemudian, saya menerapkanToStr
untuk masing-masing struct ini untuk mengubahnya menjadi string.Saya bermaksud meninggalkan nama struct dalam bahasa Prancis, karena aturan BNF yang saya temukan adalah dalam bahasa Prancis, dan juga karena itu memasukkan kembali sifat multibahasa dari pengiriman saya!
Output sampel
Beberapa output dan terjemahannya, yang saya lakukan berdasarkan aturan BNF dan kamus Toki Pona . Saya yakin terjemahan ini sebagian besar salah, tetapi Toki Pona sebenarnya meninggalkan banyak ruang untuk penafsiran sebuah kalimat.
Saat dalam perjalanan, seseorang mencemari
Puntungnya kotor dan orang jahat yang lucu
Anda memindahkan buah dan pusat ke alam semesta kuning
Masalah
sumber
Python
sumber
import antigravity
mengarah ke outputI LEARNED IT LAST NIGHT! EVERYTHING IS SO SIMPLE!
? : DProlog
Gunakan pengulangan prolog dan tata bahasa generatif yang mendekati tata bahasa Inggris untuk menghasilkan semua kalimat yang mungkin.
Versi ini memiliki kosakata dan struktur kalimat yang cukup terbatas, tetapi seharusnya cukup mudah diperluas.
Kode:
Jalankan kueri ini:
untuk menghasilkan semua kalimat yang mungkin dalam bahasa ini.
Beberapa output sampel:
(EDIT: Izinkan klausa bawahan objek).
sumber
Python
Seperti yang Anda tahu, Anda dapat melakukan apa pun dengan python dengan beberapa
import
s. Tugas sederhana ini dapat diselesaikan dengan skrip python 2 baris ini.Jumlah kalimat yang dihasilkan oleh skrip ini sangat besar:
10^12
kalimat berbeda. Jika membaca seorang penjaga membawa Anda ~ 0,5 detik, maka membacanya semuanya akan lebih dari 15000 tahun!Beberapa contoh kalimat:
I like the number 0.444371877853
I like the number 0.358614422548
Namun semua kalimat yang dihasilkan berisi subjek, kata kerja dan objek.
MEMPERBARUI:
Saya menerima beberapa kritik tentang beberapa kata canggih yang dapat dihasilkan alat kompleks ini. Ini adalah versi yang sedikit lebih panjang yang harus sesuai dengan sebagian besar daftar kata.
Berikut beberapa contoh kalimat:
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.
sumber
Bermain dengan kamus internal Mathematica:
Anda beruntung, katakanlah, 70% dari waktu. Ini menghasilkan hal-hal seperti:
tapi terkadang:
Oh well, penggunaan bahasa Inggrisnya lebih baik daripada saya.
sumber
VBA / Excel
[edit 2]
Telah mengajarkannya bagaimana mengkonjugasikan kata kerja, contoh di bawah ini adalah past past tense:
Kode yang relevan berikut, tidak termasuk sekelompok fungsi parsing dan looping tambahan yang membosankan. Bagian utama yang hilang adalah berbagai daftar kata (berdasarkan bagian pembicaraan) yang melakukan pluralisasi, tegang, konjugasi, dll.
Semua akar kata dipilih secara acak, tetapi saya memaksanya diatur dalam pola kalimat tertentu:
... itulah yang saya gunakan untuk menghasilkan output di atas. Ini mengikuti bentuk umum, "Rubah merah cepat melompati anjing cokelat malas."
[mulai posting asli]
Masih dalam proses, perlu menambahkan logika untuk tenses dan kata benda / kata kerja pluralization, yaitu .:
... yang dapat diurai, tetapi tidak masuk akal.
Baik. Tidak benar-benar kalimat, tetapi lebih baik daripada beberapa pesan kesalahan JavaScript.
Rutin sindiran itu hampir terkemuka ...
Kode untuk diikuti segera. Apakah kontes ini memiliki tenggat waktu?
[edit 1]
Kode yang dihasilkan di atas.
sumber
Perl 5
OK, nyali program hanya ini:
Ini pada dasarnya mesin "madlib". Untuk benar-benar menghasilkan kalimat yang menarik, Anda perlu mengisi
%pad
beberapa data. Ini sebuah contoh%pad
...Inilah beberapa contoh kebijaksanaan yang saya temukan dari sana
%pad
. Kalimat-kalimat ini belum diedit untuk panjang, tanda baca, tata bahasa, dll, meskipun saya telah memilah beberapa yang tidak menarik dan menata ulang urutan di mana kalimat muncul - mereka tidak lagi dalam urutan yang dihasilkan, tetapi saya sedang mencoba untuk gunakan itu untuk menceritakan sebuah kisah: sebuah kisah yang saya harap Anda akan menemukan menyentuh dan memprovokasi pemikiran.sumber
Microsoft Word
Saya tidak yakin apakah ini dapat diterima, tetapi karena html, saya pikir ini juga harus dapat diterima.
Contoh kalimat:
Anda juga dapat menentukan sejumlah kalimat dan paragraf.
sumber
Pekerjaan yang sedang berjalan menggunakan JSoup dan simpleNLG
Masalah:
Output sampel:
sumber
PHP
Ini mengambil 30 pencarian google paling trending, melakukan pencarian "I Feel Lucky", dan kemudian menampilkan kalimat acak dari halaman itu dengan setidaknya 3 kata.
Contoh:
"Dia dianggap sebagai medali favorit dalam acara itu."
"Kate lulus dari sekolah menengah setahun lebih awal."
"15 April 2014, untuk mempromosikan kepatuhan dengan kebijakan tentang biografi orang hidup."
"Atas nama Bryan, kami, keluarganya, ingin mengucapkan terima kasih kepada semua orang atas curahan cinta, doa, dan dukungan."
"Artikel ini tentang pemain bola basket Amerika."
"Maaf, browser Anda menonaktifkan JavaScript atau tidak memiliki pemain yang didukung."
sumber
Python 2.7
keluaran:
sumber
/q/21571
bukan/questions/21571/generate-an-understandable-sentence
).Script Shell
Skrip ini akan selalu menampilkan judul pertanyaan pertama yang saat ini ada di atas situs ini. Asumsi saya adalah judul pertanyaan akan selalu dapat dibaca manusia. Dan itu akan berubah secara dinamis. Jadi, setiap kali pertanyaan baru datang dan ketika skrip dieksekusi, itu akan memberikan judul pertanyaan terbaru.
Output percobaan 1
Output percobaan 2
SUNTING
Tidak menggunakan file apa pun. Tanpa file, saya bisa menggunakan skrip di bawah ini.
Keluaran
sumber
JavaScript (ES6)
Menjalankannya di konsol menghasilkan
sumber
t='';for(f of [_=>foo,_=>null.a,_=>0..toString(0)])try{f()}catch(e){t+=e.message+'\n'}t
Namun skrip Python lain
The jawaban user3058846 tidak buruk, tetapi menampilkan setiap kalimat, setiap kali. Di sini, saya mengusulkan skrip yang menghasilkan kalimat acak dari Zen Python :
Dalam satu baris, untuk penggemar kode-golf :
(Boooh, kotor.)
Contoh:
Cara lain yang menyenangkan dengan Python
Berkat @TheDoctor tuangkan idenya :-) Hening output impor dan kemudian bermain dengan dict pseudo-terenkripsi dalam modul.
sumber
shell=True
. Meskipun tidak aman dalam kasus ini, karena Anda tidak mengambil input pengguna, saya akan memilihsubprocess.Popen(('python', '-c', 'import this'))
.import this
, ada variabel dalam modulthis
yang berisi semua teks, tetapi dienkripsi. Ada juga kamus untuk mendekripsi.Python 3
Dijamin akan menghasilkan keluaran gramatikal! (Biasanya.)
Untuk membuatnya menjadi tata bahasa yang sempurna, hapus garis bawah dari
wordregex
. Ini akan melarang entri multi-kata yang mengarah ke kalimat buruk seperti "Kami zip up Anda."Contoh dijalankan:
Output favorit sejauh ini:
Lihat itu: http://en.wiktionary.org/wiki/you#Verb .
sumber
Python
Hasil:
Saya menggunakan daftar kata dari sini. Cari kata-kata yang mengandung setiap vokal
Beberapa aturan lagi dapat ditambahkan. Misalnya, jika kata yang diakhiri dengan "ness" dan kata itu juga ada di set tanpa akhiran, maka itu adalah kata benda.
Kode sumber:
sumber
Pesta
Mencoba menjalankan program yang ada tetapi tidak diinstal memberikan ini (di Linux Mint 13).
sumber
Python 3
Pandangan lain di The Zen of Python , terinspirasi oleh jawaban Maxime .
sumber
sumber