Kontext
Ich schreibe ein paar Multiple-Choice-Übungsfragen und möchte sie in einem einfachen Nur-Text-Datenformat speichern. Ich habe zuvor tabulatorgetrennte verwendet, aber das macht das Bearbeiten in einem Texteditor etwas umständlich. Ich würde gerne ein Format wie bibtex verwenden.
Z.B,
@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",
}
Wichtige Eigenschaften scheinen zu sein:
- Daten bestehen aus Datensätzen
- Jeder Datensatz hat mehrere Attribut-Wert-Paare
- Jedes Attribut-Wert-Paar kann in einer neuen Zeile aufgezeichnet werden, kann jedoch mehrere Zeilen umfassen
- Einfache manuelle Eingabe von Textdaten in einen Texteditor
- Sofort verfügbare Tools zum Konvertieren in tabellarische Daten
Zum Beispiel ist hier etwas wie das, was funktionieren könnte
@
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
Während ich mich für den spezifischen Kontext des Schreibens von Multiple-Choice-Fragen interessiere, interessiert mich auch das umfassendere Problem der Darstellung von Daten in diesem oder einem ähnlichen Format.
Erste Gedanken
Meine ersten Gedanken umfassten Folgendes:
- YAML
- JSON
- Begrenzte Daten mit benutzerdefinierten Feld- und Datensatztrennzeichen, die mehrzeilige Datensätze ermöglichen
- Ein benutzerdefiniertes Dateiformat mit einer Art benutzerdefiniertem Parser
Ich habe mir YAML und JSON nur kurz angesehen. Mein erster Eindruck ist, dass sie möglicherweise zu viel töten. Benutzerdefinierte Abgrenzung mag gut sein, aber es würde wahrscheinlich erfordern, dass alle Felder in einer einheitlichen Reihenfolge für alle Datensätze vorhanden sind. Das Schreiben meines eigenen Parsers klingt etwas fummelig.
quelle
Antworten:
Warum nicht XML verwenden? Es gibt viele gute Parser, die XML-Dateien direkt in Datenstrukturen übersetzen, sogar eine für R ( http://cran.r-project.org/web/packages/XML/index.html ).
Das Format sieht folgendermaßen aus (Beispiel aus http://www.w3schools.com/xml/default.asp ).
Beispiel: Verwenden des XML-Pakets:
gibt Zugriff auf den gesamten Notizenkörper,
ist nur der erste Knoten und so weiter ...
quelle
Ich würde mit YAML gehen. Einfach zu bearbeiten und hat viele Parser in verschiedenen Sprachen:
Sie könnten dann ein kleines Skript schreiben, um das Falsche zufällig mit den richtigen Antworten zu mischen und das in der Antwort von DQdlM vorgeschlagene LaTeX auszugeben.
EDIT : Dieses Ruby-Skript:
Erzeugt die folgende Ausgabe
quelle
Dadurch werden Anwendungen, die über Ihre Multiple-Choice-Fragen hinausgehen, möglicherweise nicht vollständig behandelt. Für LaTeX ist jedoch eine Prüfungsklasse verfügbar.
Multiple-Choice-Fragen werden folgendermaßen gebildet:
Durch die Aufnahme
\printanswers
in Ihre Präambel wird die richtige Antwort hervorgehoben.quelle
Org Mode kann das. Ein Weg wäre wie folgt:
Wenn Sie eine kurze Übersichtstabelle visuell überprüfen möchten, fügen Sie Folgendes ein
Setzen Sie den Cursor in den
#+BEGIN
Block und tun SieC-c C-x C-u
, um zu bekommenund wenn Sie importieren möchten (zum Beispiel nach R), fügen Sie einen Tabellennamen wie folgt ein:
Fügen Sie dann den folgenden R-Code-Block ein und führen Sie ihn aus mit
C-c C-c
:das gibt
Die gute Nachricht ist, dass der Datenrahmen
df
jetzt in der aktiven*R*
Sitzung gespeichert ist und nach Belieben nachbearbeitet werden kann. Wenn ich es wäre, würde ich wahrscheinlich mit dem Prüfungspaket (in R) für die spezifische Anwendung des Speicherns / Schreibens von Multiple-Choice-Fragen beginnen, obwohl dieses YAML-Beispiel wirklich cool aussieht.quelle
Hier einige zusätzliche Ideen:
Verwenden Sie R selbst:
Verwenden Sie reStructuredText , eine einfache Markup-Sprache, ähnlich wie Markdown, die in ein DOM (Python) analysiert werden kann, z.
Es gibt einen rst2xml-Writer, der Folgendes konvertiert:
Es gibt auch einen rst2latex-Writer, sodass Ihr Test einfach zum Drucken formatiert werden kann und Sie die Daten mit Python und dem Dokumentobjektmodell verarbeiten können.
Der Vorteil dieser Option ist, dass rst im Gegensatz zu XML einfach zu lesen und zu schreiben ist, Ihre Daten jedoch weiterhin für die Verwendung in R, Python usw. strukturiert sind.
quelle