我如何将 1,000+ 中文考试题目从 WordPress 开源到 GitHub
Source: Dev.to
我自 2008 年起在北京运营 Mandarin Zone,这是一所中文语言学校。多年来,我使用 AYS Quiz Maker WordPress 插件为学生在线练习,构建了 12 套完整的 HSK 4 模拟考试。
最近,我决定将所有这些内容开源。下面介绍我如何从 WordPress 数据库中提取 1,176 道题目,并将其转化为干净、开发者友好的 GitHub 仓库。
挑战
我们的测验数据被锁在 WordPress 中——分散在多个数据库表(aysquiz_questions、aysquiz_answers、aysquiz_quizzes)里,内容中嵌入了 HTML、用于音频文件的 WordPress 短代码以及杂乱的格式。
提取过程
第 1 步:SQL 导出
我编写了针对性的 SQL 查询,将题目、答案和测验映射表进行关联:
SELECT
q.id AS question_id,
q.question AS question_text,
q.type AS question_type,
a.answer AS answer_text,
a.correct AS is_correct,
a.ordering AS answer_order
FROM aysquiz_questions q
LEFT JOIN aysquiz_answers a ON a.question_id = q.id
ORDER BY q.id, a.ordering;
第一次导出仅 8,566 行就达到了 400 MB——原来有些字段中嵌入了大量内容。去除不必要的列后,文件大小降至 1.4 MB。
第 2 步:数据清洗
原始数据中到处都是类似 [audio wav="..."][/audio] 的 WordPress 短代码和 HTML 实体。我编写了一个 Python 脚本来:
- 从短代码中提取音频 URL
- 去除 HTML 标签,同时保留中文文本
- 根据内容模式映射题目类型(听力判断、阅读理解、填空、句子排序)
- 按题目 ID 分组答案并按顺序排序
第 3 步:结构化 JSON
每套试卷都被整理成干净的 JSON 文件:
{
"quiz_id": 2,
"title": "HSK 4 Sample Quiz",
"total_questions": 100,
"questions": [
{
"number": 1,
"type": "listening_true_false",
"audio": "https://media.mandarinzone.com/.../hsk4-1-02.wav",
"options": ["对", "错"],
"correct_answer_index": 0
}
]
}
结果
- 12 套完整的 HSK 4 模拟考试,JSON 格式
- 1,176 道题目,涵盖 6 种题型
- GitHub Pages 演示,任何人都可以在线做题
- CC BY‑NC‑SA 4.0 许可证——非商业使用免费
什么是 HSK 4?
HSK(汉语水平考试)是中国官方的中文水平考试,全球认可。4 级属于中级,证明你能够讨论广泛的话题并掌握约 1,200 个词汇。每场考试包含 100 道题,覆盖听力、阅读和写作。
你可以用它做什么
- 开发移动端 HSK 练习应用
- 制作 Anki 卡片套装
- 为中文语言模型提供 NLP 训练数据
- 搭建自己的测验平台
- 实现间隔重复学习工具
试一试
在线做题:
GitHub 仓库:
如果你在学习中文或构建语言学习工具,希望这些资源能帮到你。欢迎提交 PR 和点星!