Contexto
Estoy escribiendo algunas preguntas de práctica de opción múltiple y me gustaría almacenarlas en un formato de datos de texto plano simple. Anteriormente he usado tabulación delimitada, pero eso hace que la edición en un editor de texto sea un poco incómoda. Me gustaría usar un formato un poco como bibtex.
P.ej,
@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",
}
Las propiedades importantes parecen ser:
- Los datos están formados por registros.
- Cada registro tiene múltiples pares de atributos-valores
- Cada par de atributo-valor puede registrarse en una nueva línea, pero puede abarcar varias líneas
- Fácil de ingresar manualmente datos de texto en un editor de texto
- Herramientas fácilmente disponibles para convertir en datos tabulares
Por ejemplo, aquí hay algo parecido a lo que podría funcionar
@
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
Si bien estoy interesado en el contexto específico de escribir preguntas de opción múltiple, también estoy interesado en el tema más amplio de representar datos en este u otro tipo de formato similar.
Pensamientos iniciales
Mis pensamientos iniciales incluyeron lo siguiente:
- Ñame
- JSON
- Datos delimitados con delimitadores de campo y registro personalizados que permiten registros de varias líneas
- Un formato de archivo personalizado con algún tipo de analizador personalizado
Solo he echado un vistazo rápido a YAML y JSON; Mis primeras impresiones son que podrían ser excesivos. La delimitación personalizada puede ser buena, pero probablemente requerirá que todos los campos estén presentes en un orden consistente para todos los registros. Escribir mi propio analizador suena un poco incómodo.
fuente
Respuestas:
¿Por qué no usar XML? Hay muchos buenos analizadores que traducen directamente archivos XML a estructuras de datos, incluso uno para R ( http://cran.r-project.org/web/packages/XML/index.html ).
El formato se ve así (ejemplo tomado de http://www.w3schools.com/xml/default.asp ).
Por ejemplo, usando el paquete XML:
da acceso al cuerpo completo de notas,
es solo el primer nodo y así sucesivamente ...
fuente
Yo iría con YAML. Fácil de editar y tiene muchos analizadores en diferentes idiomas:
Luego, podría escribir un pequeño script para mezclar aleatoriamente lo incorrecto con las respuestas correctas y generar el LaTeX sugerido en la respuesta de DQdlM.
EDITAR : Este script ruby:
Producirá el siguiente resultado
fuente
Es posible que esto no aborde completamente las aplicaciones más allá de sus preguntas de opción múltiple, pero hay una clase de examen disponible para LaTeX.
Las preguntas de opción múltiple se forman así:
Al incluir
\printanswers
en su preámbulo, resalta la respuesta correcta.fuente
El modo Org puede hacer eso. Una forma sería así:
Si desea inspeccionar visualmente una tabla de resumen rápido, inserte lo siguiente
Coloca el cursor en el
#+BEGIN
bloque y hazloC-c C-x C-u
para obtenery si desea importar (a R, por ejemplo), inserte un nombre de tabla como este:
luego inserte y ejecute el siguiente bloque de código R con
C-c C-c
:esto da
La buena noticia es que el marco de datos
df
ahora está almacenado en la*R*
sesión activa y está disponible para procesarlo como desee. Dicho todo esto, si fuera yo, probablemente comenzaría con el paquete de exámenes (en R) para la aplicación específica de almacenar / escribir preguntas de opción múltiple, aunque ese ejemplo de YAML se ve realmente genial.fuente
Aquí hay un par de ideas adicionales:
Use R en sí mismo:
Utilice reStructuredText , que es un lenguaje de marcado ligero, similar al markdown, que se puede analizar en un DOM (Python), por ejemplo:
Hay un escritor rst2xml que convierte lo anterior a:
También hay un escritor rst2latex, por lo que su prueba puede formatearse fácilmente para imprimir, y puede manejar los datos utilizando python y el modelo de objeto del documento.
La ventaja de esta opción es que primero es fácil de leer y escribir, a diferencia de XML, pero sus datos aún están estructurados para su uso en R, Python, etc.
fuente