77 个版本 (20 个重大更新)
0.22.0 | 2024 年 8 月 11 日 |
---|---|
0.21.3 | 2024 年 7 月 22 日 |
0.20.0 | 2024 年 4 月 12 日 |
0.19.2 | 2024 年 3 月 31 日 |
0.3.1 | 2022 年 7 月 21 日 |
在 机器学习 类别中排名第 83
每月下载量 518 次
710KB
13K SLoC
特兰尼
特兰尼是一个用于获取任意、复杂且高度分层的技能的自动练习系统。这听起来可能有些复杂,让我们来分解一下。
- 练习系统:有意识地练习是掌握新技能的核心。特兰尼自称为练习系统,因为它旨在指导学生在任意技能上的进步。特兰尼会给学生展示一个可以练习的练习题,然后要求他们根据对技能的掌握程度来评分。
- 自动:知道该练习什么,何时巩固已经练习的内容,以及何时进入下一个步骤,与建立一致的练习一样重要。特兰尼的主要功能是通过为学生提供无限量的练习题来自动化这一过程。内部,特兰尼使用学生的反馈来确定哪些练习最适合当前阶段。
- 任意:尽管最初是为了练习爵士乐即兴创作而设想,但特兰尼并不局限于特定领域。特兰尼主要通过纯文本文件进行工作,这些文件易于共享和扩展。这使得学生可以创建自己的材料,使用他人创建的材料,并将它们无缝地结合起来。
- 复杂和层级技能:考虑一下像John Coltrane这样的即兴大师的工作,这个软件就以他的名字命名。通过多年的练习,Coltrane掌握了一套相互关联的技能。其中一些例子包括控制呼吸来演奏代表其风格的炽热音符,听觉训练以识别和演奏任何调性,以及精细的动手能力来演奏其独奏的复杂旋律。所有这些技能结合在一起,创造了他独特而充满精神力量的声音。Trane旨在让学生轻松表达这些复杂的关系,并利用它们来指导学生的练习。这是Trane的核心特征,也是它与Anki等类似软件的主要区别,后者已经利用了一些相同的学习原则。
Trane基于多个经过验证的技能习得原则,如间隔重复、掌握学习、交错和分块。例如,Trane确保向学生展示的非常简单或困难的练习不多,以避免挫折和无聊的极端情况。Trane会定期巩固已经练习过的技能,并在相关技能得到充分掌握后自动包括新技能。
如果你熟悉通过磨炼和提升游戏技能来穿越视频游戏技能树的经验,Trane旨在提供一种帮助学生学习类似过程的方法,但应用于任意技能,这些技能以易于共享和增强的纯文本文件指定。
Trane是以John Coltrane的名字命名的,他的昵称Trane经常与“火车”(指车辆)一词进行文字游戏,以描述他演奏的压倒性力量。在这里,它被用作同音词的双关语(如在“trane一项新技能”中)。
快速入门
有关如何使用Trane的指南,请参阅官方网站上的快速入门指南。
有关Trane操作的视频,请参阅Trane之旅视频。
文档
关于Trane项目(包括本库)的完整文档可以在官方网站找到。
Trane代码之旅
Trane代码的目标是尽可能地干净、有良好的文档、有组织、易于阅读。大多数模块应该在文件顶部包含模块级文档,其中包含作者在设计选择背后的理由。以下是几个模块和文件列表,以帮助您开始理解代码
data
:包含Trane中使用的所有基本数据结构。其中定义了- 课程、课程和练习以及它们的内容和依赖关系。
- 学生分数和练习尝试。
- 可以用来缩小从中抽取练习的单位过滤器。
graph
:包含Trane作为学生进步时遍历的单位和它们的依赖关系的图。course_library
:定义了学生收集的课程集合的写入和从存储中读取的方式。blacklist
:定义了在练习调度期间应忽略并标记为熟练的单位列表。practice_stats
:定义了学生的进度如何存储,以便在调度器之后使用。scorer
:定义了如何根据先前尝试的分数和时间戳来评分练习。scheduler
:包含选择要向用户展示的练习逻辑。Trane 逻辑的核心位于此模块。review_list
:定义了一个列表,其中包含学生希望在以后复习的练习。filter_manager
:定义了一种保存和加载过滤器以便以后使用的方法。例如,将过滤器保存为仅用于学习吉他练习。lib.rs
:此文件定义了crate的公共API,这是使用Trane的入口点。course_builder
:定义了使构建Trane课程更轻松的实用工具。
如果代码中有部分难以理解,不符合标准Rust惯用或约定,需要更好的文档,或其理由不明显,请随意提出问题。
贡献
有关如何为Trane做出贡献的更多信息,请参阅CONTRIBUTING文件。
依赖关系
~67MB
~1M SLoC