Konteks
Saya sedang menulis beberapa soal latihan pilihan ganda dan saya ingin menyimpannya dalam format data teks sederhana. Saya sebelumnya menggunakan tab dibatasi, tetapi itu membuat pengeditan dalam editor teks agak canggung. Saya ingin menggunakan format yang sedikit seperti bibtex.
Misalnya,
@Article{journals/aim/Sloman99,
title = "Review of Affective Computing",
author = "Aaron Sloman",
journal = "AI Magazine",
year = "1999",
number = "1",
volume = "20",
url = "http://dblp.uni-trier.de/db/journals/aim/aim20.html#Sloman99",
pages = "127--133",
}
Tampaknya properti penting adalah:
- Data terdiri dari catatan
- Setiap catatan memiliki beberapa pasangan nilai atribut
- Setiap pasangan atribut-nilai dapat direkam pada baris baru, tetapi dapat menjangkau beberapa baris
- Mudah memasukkan data tekstual secara manual dalam editor teks
- Alat yang tersedia untuk dikonversi menjadi data tabular
Sebagai contoh, ini adalah sesuatu yang mirip dengan apa yang mungkin berhasil
@
id: 1
question: 1 + 1
a: 1
b: 2
c: 3
d: 4
correct: b
@
id: 2
question: What is the capital city of the country renowned for koalas,
emus, and kangaroos?
a: Canberra
b: Melbourne
c: Sydney
d: Australia
correct: a
Sementara saya tertarik pada konteks spesifik penulisan pertanyaan pilihan ganda, saya juga tertarik pada masalah yang lebih luas dalam merepresentasikan data dalam format ini atau sejenisnya.
Pikiran Awal
Pikiran awal saya termasuk yang berikut:
- YAML
- JSON
- Data yang dibatasi dengan bidang khusus dan pembatas rekaman yang mengizinkan catatan multi-baris
- Format file khusus dengan beberapa bentuk pengurai khusus
Saya hanya melihat sekilas pada YAML dan JSON; Kesan pertama saya adalah mereka mungkin over-kill. Pembatasan kustom mungkin baik, tetapi mungkin akan membutuhkan semua bidang untuk hadir dalam urutan yang konsisten untuk semua catatan. Menulis parser saya sendiri terdengar agak fiddly
sumber
Jawaban:
Mengapa tidak menggunakan XML? Ada banyak parser bagus yang secara langsung menerjemahkan file XML ke struktur data, bahkan satu untuk R ( http://cran.r-project.org/web/packages/XML/index.html ).
Formatnya terlihat seperti ini (contoh diambil dari http://www.w3schools.com/xml/default.asp ).
Misalnya, menggunakan paket XML:
memberikan akses ke badan catatan lengkap,
hanya simpul pertama dan seterusnya ...
sumber
Saya akan pergi dengan YAML. Terus maju untuk mengedit dan memiliki banyak parser dalam berbagai bahasa:
Anda kemudian dapat menulis skrip kecil untuk secara acak mencampur yang salah dengan jawaban yang benar dan menampilkan LaTeX yang disarankan dalam jawaban DQdlM.
EDIT : Skrip ruby ini:
Akan menghasilkan output sebagai berikut
sumber
Ini mungkin tidak sepenuhnya membahas aplikasi di luar pertanyaan pilihan ganda Anda, tetapi ada kelas ujian yang tersedia untuk LaTeX.
Pertanyaan pilihan ganda terbentuk seperti ini:
Dengan memasukkan
\printanswers
dalam pembukaan Anda menyoroti jawaban yang benar.sumber
Mode Org dapat melakukan itu. Satu cara akan seperti ini:
Jika Anda ingin secara visual memeriksa tabel ringkasan cepat, maka masukkan berikut ini
Letakkan kursor di
#+BEGIN
blok dan lakukanC-c C-x C-u
untuk mendapatkandan jika Anda ingin mengimpor (ke R, misalnya) maka masukkan nama tabel seperti ini:
kemudian masukkan dan jalankan blok kode R berikut dengan
C-c C-c
:ini memberi
Berita baiknya adalah bahwa kerangka data
df
sekarang disimpan dalam*R*
sesi aktif dan tersedia untuk diposkan sesuka Anda. Semua ini dikatakan, jika itu saya, saya mungkin akan mulai dengan paket ujian (dalam R) untuk aplikasi khusus menyimpan / menulis pertanyaan pilihan ganda, meskipun contoh YAML terlihat sangat keren.sumber
Berikut adalah beberapa ide tambahan:
Gunakan R itu sendiri:
Gunakan reStructuredText , yang merupakan bahasa markup yang ringan, mirip dengan markdown, yang dapat diuraikan menjadi DOM (Python), misalnya:
Ada penulis rst2xml yang mengonversi di atas ke:
Ada juga penulis rst2latex, sehingga pengujian Anda dapat dengan mudah diformat untuk dicetak, dan Anda dapat menangani data menggunakan python dan model objek dokumen.
Keuntungan dari opsi ini adalah pertama mudah dibaca dan ditulis, tidak seperti XML, tetapi data Anda masih terstruktur untuk digunakan dalam R, Python, dll.
sumber