Contexto
Estou escrevendo algumas questões práticas de múltipla escolha e gostaria de armazená-las em um formato de dados de texto simples. Eu já usei delimitado por tabulação, mas isso torna a edição em um editor de texto um pouco estranha. Eu gostaria de usar um formato parecido com o bibtex.
Por exemplo,
@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",
}
Propriedades importantes parecem ser:
- Os dados são compostos de registros
- Cada registro possui vários pares de atributo-valor
- Cada par atributo-valor pode ser gravado em uma nova linha, mas pode abranger várias linhas
- Fácil de inserir manualmente dados de texto em um editor de texto
- Ferramentas prontamente disponíveis para converter em dados tabulares
Por exemplo, aqui está algo parecido com o que pode 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
Embora eu esteja interessado no contexto específico de escrever perguntas de múltipla escolha, também estou interessado na questão mais ampla de representar dados neste ou em um tipo semelhante de formato.
Pensamentos iniciais
Meus pensamentos iniciais incluíram o seguinte:
- YAML
- JSON
- Dados delimitados com delimitadores de campo e registro personalizados que permitem registros de várias linhas
- Um formato de arquivo personalizado com alguma forma de analisador personalizado
Eu só dei uma olhada rápida no YAML e JSON; Minhas primeiras impressões são de que elas podem ser exageradas. A delimitação personalizada pode ser boa, mas provavelmente exigiria que todos os campos estivessem presentes em uma ordem consistente para todos os registros. Escrever meu próprio analisador parece um pouco complicado.
fonte
Respostas:
Por que não usar XML? Existem muitos bons analisadores que convertem diretamente arquivos XML em estruturas de dados, mesmo um para R ( http://cran.r-project.org/web/packages/XML/index.html ).
O formato é semelhante a este (exemplo extraído de http://www.w3schools.com/xml/default.asp ).
Por exemplo, usando o pacote XML:
dá acesso ao corpo completo das notas,
é apenas o primeiro nó e assim por diante ...
fonte
Eu iria com YAML. Simples de editar e possui muitos analisadores em diferentes idiomas:
Você pode escrever um pequeno script para misturar aleatoriamente o incorreto com as respostas corretas e produzir o LaTeX sugerido na resposta do DQdlM.
EDIT : Este script ruby:
Produzirá a seguinte saída
fonte
Isso pode não atender totalmente aos aplicativos além das perguntas de múltipla escolha, mas há uma aula de exame disponível para o LaTeX.
Perguntas de múltipla escolha são formadas da seguinte maneira:
Ao incluir
\printanswers
no seu preâmbulo, destaca a resposta correta.fonte
O modo organizacional pode fazer isso. Uma maneira seria assim:
Se você deseja inspecionar visualmente uma tabela de resumo rápida, insira o seguinte
Coloque o cursor no
#+BEGIN
bloco e façaC-c C-x C-u
para obtere se você deseja importar (para R, por exemplo), insira um nome de tabela como este:
insira e execute o seguinte bloco de código R com
C-c C-c
:isto dá
A boa notícia é que o quadro de dados
df
agora está armazenado na*R*
sessão ativa e está disponível para pós-processo como você desejar. Tudo isso sendo dito, se fosse eu, provavelmente começaria com o pacote de exames (em R) para a aplicação específica de armazenar / escrever perguntas de múltipla escolha, embora esse exemplo do YAML pareça muito legal.fonte
Aqui estão algumas idéias adicionais:
Use o próprio R:
Use reStructuredText , que é uma linguagem de marcação leve, semelhante à markdown, que pode ser analisada em um DOM (Python), por exemplo:
Há um gravador rst2xml que converte o acima em:
Há também um gravador rst2latex, para que seu teste possa ser facilmente formatado para impressão e você possa lidar com os dados usando python e o modelo de objeto do documento.
A vantagem dessa opção é que o rst é fácil de ler e gravar, diferentemente do XML, mas seus dados ainda estão estruturados para uso em R, Python, etc.
fonte