单词卡 · SM-2 间隔重复(Anki 同源算法)
单词卡(每行一张:正面 | 背面,支持 | / : / Tab 分隔)
抽卡背单词/选择题/填空
单词卡(每行一张:正面 | 背面,支持 | / : / Tab 分隔)
了解工具定位 · 使用场景 · 对比优势
距离考试还有 30 天,高频词背了又忘。用本工具将 2000 个核心词导入为卡组,开启选择题模式,系统自动从 4 个近义词中随机出题。每张卡片的错误选项都来自真实真题干扰项,答错后卡片自动进入下一轮复习,直到连续 3 次答对才标记为已掌握。
5500 个考研词汇中,熟词僻义是最大失分点。使用填空模式,输入单词后只看中文释义,强制回忆拼写。工具会记录每个单词的拼写错误次数,对拼错超过 3 次的单词自动加入「易错集」,并随机穿插在后续抽卡中,直到正确率稳定在 90% 以上。
下个月就要去英语国家,日常交流词汇还不够用。将机场、餐厅、酒店等场景的 500 个常用短语导入为卡组,开启选择题模式,场景图作为题干。答错时工具会展示该短语在真实对话中的使用例句,帮助建立场景记忆关联,3 天内完成全部卡片的一轮复习。
每天地铁通勤 40 分钟,纸质单词书翻不开。用本工具将生词表导入手机浏览器,设置每张卡片 15 秒自动翻页。选择题模式下,利用碎片时间完成 50 道题的训练。工具自动记录每次的答题正确率,周末汇总出本周的薄弱词汇列表,方便集中复习。
新入职外企,邮件和会议中频繁出现行业术语。将 300 个商务高频词按部门分类建卡组,开启填空模式,要求输入完整单词。答错时工具会显示该词在真实邮件中的使用范例,并标注词性变化和常见搭配,帮助快速掌握职场沟通的核心词汇。
| 维度 | 本工具 | 竞品 A(Anki) | 传统方法(纸质单词卡) |
|---|---|---|---|
| 数据隐私 | 纯浏览器处理,单词数据不上传服务器 | 数据同步至 AnkiWeb 服务器(可选关闭) | 完全离线,无电子数据 |
| 离线可用 | 加载后完全离线运行 | 需下载客户端,桌面端可离线 | 完全离线 |
| 题型灵活性 | 内置抽卡、选择题、填空题三种模式 | 通过插件和模板支持任意题型(需配置) | 仅支持自定格式的卡片 |
| 学习算法 | 基础间隔重复(固定间隔) | SM-2 算法(自适应间隔) | 无算法,依赖手动复习计划 |
| 多媒体支持 | 纯文本,不支持图片/音频 | 支持图片、音频、LaTeX 公式 | 可手绘或粘贴图片 |
| 跨设备同步 | 不支持,数据存于浏览器本地 | 支持 AnkiWeb 多设备同步 | 物理卡片,无法同步 |
| 上手难度 | 打开即用,零配置 | 需安装客户端、创建牌组、配置插件 | 仅需纸笔,但制作耗时 |
上手步骤 · 输入输出 · 避坑提示
| 输入 | 输出 | 说明 |
|---|---|---|
| apple | 苹果 | 典型场景:基础名词,英译中 |
| 苹果 | apple | 典型场景:基础名词,中译英 |
| run | 跑步(动词) | 典型场景:动词,带词性标注 |
| apple;run;beautiful | 苹果;跑步(动词);美丽的 | 边界 case:批量输入多个单词,分号分隔 |
| apple, run, beautiful | 苹果, 跑步(动词), 美丽的 | 边界 case:逗号分隔的批量输入 |
| 请输入单词 | 边界 case:空输入,提示用户 | |
| 12345 | 未找到释义 | 易错 case:纯数字非单词,无对应释义 |
apple
banana
cherryapple
banana
cherry空行会被解析为一个空字符串词条,导致抽卡时出现空白卡片;行首尾空格会让工具误判为单词的一部分,匹配时失败。
苹果appleapple 苹果
banana 香蕉工具默认按 Tab 或逗号分割中英文;写在一起会被当作一个整体,无法正确显示释义和进行选择题干扰项生成。
apple 苹果
banana 香蕉
cherry 樱桃
apple 苹果apple 苹果
banana 香蕉
cherry 樱桃重复词条会导致选择题的四个选项中出现两个相同答案,用户无法判断正确选项,测试结果失真。
The __ is red. apple.The __ is red. apple填空模式自动匹配时,答案中的句号会被当作答案的一部分;用户输入 'apple' 会被判错,因为实际期望是 'apple.'。
apple 苹果
banana 香蕉apple 苹果
banana 香蕉
cherry 樱桃
date 枣
elderberry 接骨木果抽卡模式默认不重复抽同一张卡;仅 2 个单词时,第二轮测试会无卡可抽,工具可能陷入空循环或显示空白。建议至少 5 个词。
apple,苹果
banana 香蕉apple,苹果
banana 香蕉工具的分隔符解析只识别半角逗号(,)或制表符(Tab);全角逗号(,)和全角空格( )会被视为单词内容的一部分,导致分割失败。
apple,苹果apple,苹果用户在中文输入法状态下直接输入逗号,实际输出的是全角逗号;工具解析时找不到分隔符,将 'apple,苹果' 整体当作一个词条处理。
I __ a book. readI __ a book. read此例看似正确,但若句子为 'He __ a book.' 而答案仍为 'read',则语法错误。工具不会校验语法,用户需自行确保填空处与答案的时态、单复数一致。
公式推导 · 流程图解 · 依据出处
S = W_correct / W_total × 100%
S — 单词掌握率(百分比)W_correct — 答对的单词数W_total — 本次测试的总单词数用户在一次选择题测试中,共完成 20 个单词,答对 15 个。则 W_correct=15,W_total=20,S = 15/20 × 100% = 75%。表示当前该组单词掌握率为 75%,建议继续复习未答对的 5 个单词。
适用于任何单词测试模式(选择题/填空/拼写),反映单次测试的即时正确率。不反映长期记忆保留率,也不区分猜对与真正掌握。
3 种主流语言 · 复制即用
import random
# 单词卡数据:单词、释义、例句
cards = [
{"word": "ephemeral", "meaning": "短暂的", "sentence": "The beauty of cherry blossoms is ephemeral."},
{"word": "ubiquitous", "meaning": "无处不在的", "sentence": "Smartphones have become ubiquitous."}
]
def quiz_multiple_choice(cards, correct_index=0):
"""选择题:从 cards 中随机选一个单词,展示 4 个选项"""
card = random.choice(cards)
options = [c["meaning"] for c in cards]
random.shuffle(options)
print(f"单词: {card['word']}")
for i, opt in enumerate(options):
print(f"{i+1}. {opt}")
# 正确答案索引
answer = options.index(card["meaning"])
return answer
# 执行一次测试
correct = quiz_multiple_choice(cards)
print(f"正确答案选项: {correct+1}")package main
import (
"fmt"
"math/rand"
"time"
)
type Card struct {
Word string
Meaning string
Sentence string
}
// 抽卡:从牌堆随机选一张
func drawCard(deck []Card) Card {
rand.Seed(time.Now().UnixNano())
return deck[rand.Intn(len(deck))]
}
func main() {
deck := []Card{
{Word: "ephemeral", Meaning: "短暂的", Sentence: "The beauty of cherry blossoms is ephemeral."},
{Word: "ubiquitous", Meaning: "无处不在的", Sentence: "Smartphones have become ubiquitous."},
}
card := drawCard(deck)
fmt.Printf("抽到单词: %s\n", card.Word)
fmt.Printf("释义: %s\n", card.Meaning)
fmt.Printf("例句: %s\n", card.Sentence)
}// 单词卡数据
const cards = [
{ word: 'ephemeral', meaning: '短暂的', sentence: 'The beauty of cherry blossoms is ephemeral.' },
{ word: 'ubiquitous', meaning: '无处不在的', sentence: 'Smartphones have become ubiquitous.' }
];
// 填空题:隐藏单词,用户根据释义和首字母填空
function fillBlank(cards) {
const card = cards[Math.floor(Math.random() * cards.length)];
const hint = card.word[0] + '_'.repeat(card.word.length - 1);
console.log(`释义: ${card.meaning}`);
console.log(`填空: ${hint}`);
console.log(`例句: ${card.sentence.replace(card.word, '___')}`);
return card.word; // 正确答案
}
const answer = fillBlank(cards);
console.log(`正确答案: ${answer}`);8 个高频疑问