Anki 教程:为 COCA 词库导入韦氏发音
本文最近更新于 2018 年 06 月 07 日 ,大连
COCA 是 Corpus of Contemporary American English 的 缩写,是由美国杨百翰大学 Mark Davies 教授所开发的一个免费的语言资料搜寻引擎。从 1999 年创立至今依然持续更新,每年都要更新大约 2000 万词汇,截至 2015 年年底已经拥有 5 亿 2000 万的庞大词汇库。(via link)
本文介绍了一个为 Anki 的 COCA 记忆词库导入韦氏发音的方法。
Anki 介绍:链接[20160702#更新@大连]
搜索下载韦氏词典 142000 单词语音库高清版本。
解压后其目录结构为 voice142000tree.txt
提取其中的单词列表:
find ./ -printf "%f\n" > 142000_list.txt
整理 142000_list.txt,例如使用 Vim 编辑器:
:v/.wav$/d
这样只保留含有 .wav 后缀的行,然后保存 wav 音频列表:
:w 142000_wav.txt
去除 .wav 后缀:
:%s/.wav$//g
排序:
:sort
保存 142000 语音库单词列表:
:w 142000_words.txt
将「恶喵的奶爸的 COCA 低频 10000 词表」(下载链接见本文末尾)排序去重:
:sort u
保存:
:w 10000_sort.txt
比较 142000_words.txt 和 10000_sort.txt 提取相同行。可以使用 Excel 将 10000_sort.txt 粘贴到 A 列(9839 行),将 142000_words.txt 粘贴到 C 列(142000 行),在 B1 里使用公式:
=IF(ISERROR(MATCH(A1,$C$1:$C$142000,0)),"",A1)
这里的公式意思是:
MATCH(A1,$C$1:$C$142000,0)
将 A1 中的值与 C1:C142000 的相比较是否相等(0),如果相等,则返回 A1 的相对位置,否则返回 #N/A 错误;IF(ISERROR(MATCH(A1,$C$1:$C$142000,0)),"",A1)
如果MATCH(A1,$C$1:$C$142000,0)
结果为 False,返回空值;如果结果为 True,返回 A1 的值。注意其中 A1 使用相对位置,C1:C142000 使用绝对位置。
选择 B1:B9839。如果使用的是 Excel 2003 或之前的版本,点击 Edit 下的 Fill,然后点击 Down;如果使用的是 Excel 2007,点击 Editing group 中的 Fill,然后点击 Down。
因为前面的 A1 使用相对位置,C1:C142000 使用绝对位置。这样我们在下拉公式时,才可以在逻辑上实现从 A 列中逐个拿出每个单词与 C 列的 142000 个单词相比较。即此时 B2 的公式是
=IF(ISERROR(MATCH(A2,$C$1:$C$142000,0)),"",A2)
,B3 的公式是=IF(ISERROR(MATCH(A3,$C$1:$C$142000,0)),"",A3)
……以此类推。
相同的值会生成在 B 列里面。全选 B 列,复制粘贴到 txt 文档,排序:
:sort
删除空格,保存:
:w common_words.txt
打开 common_words.txt 在每一行首添加 ./<单词首字母>/
,行尾添加 .wav
,以便在 voice 路径下可以定位到每一个单词的语音,可以通过 Vim的宏 或者 UltraEdit的列模式 进行此项操作。以 Vim 的宏为例先录制宏,并命名为 a:
qa0vypi/<esc>I./<esc>A.wav<esc>jq
将鼠标移至第 2 行,输入 <n-1>@a
等待结束即可(其中 n 为 common_words.txt 的总行数)。如果在 Windows 平台,需要输入下面的命令将文件格式改为 unix,修正每个 wav 文件的 path 行尾 \n
字符问题,以便可以使用接下来的 Linux Shell 指令进行拷贝,命令如下:
:set ff=unix
保存文件:
:w common_wav_path.txt
在 voice 的上一级目录创建文件夹 anki,使用下面的命令将 common_wav_path.txt 里面的文件复制到刚创建的 anki 目录下(耗时会久一些):
cat common_wav_path.txt | xargs -i cp {} ../anki/
到这里我们已经得到了「恶喵的奶爸的 COCA 低频 10000 词表」的韦氏发音。
然后我们开始导入 Anki,先将 10000_sort.txt 导入,选择单词要 import 的 field,例如 words。
再将 anki 文件夹里所有的 wav 文件拷贝到 Anki 程序的 collection.media 路径下。
接下来需要根据 common_wav_path.txt 制作 word; wav
格式的 txt,用于 update 导入的 10000_sort.txt 内容,例如使用 Vim 的制作方法如下:
打开 common_wav_path.txt,列模式替换行首的 ./<单词首字母>/
为 [sound:
,所有行尾添加 ]
,行尾添加 ]
的方法可以通过 Vim 宏操作。保存:
:w anki_sound.txt
打开 Excel,将 common_words.txt 内容粘贴到 A 列,将 anki_sound.txt 内容粘贴到 C 列,B 列使用 ;
填充。全选,复制粘贴到 txt,将内容保存为 anki.txt 用于导入 Anki 程序。
执行导入之前注意配置分隔符为 ;
,选择 update existing notes… 而不是 ignore… 和 import…,将 field 1 mapped 到与刚才导入 10000_sort.txt 时相同的 field。
完成。
附上我在操作过程中生成的相关文件:
142000_list.txt
142000_wav.txt
142000_words.txt
恶喵的奶爸的 COCA 低频 10000 原始词表 10000.txt
10000_sort.txt
提取相同行的 Excel common.xlsx
common_words.txt
common_wav.txt
common_wav_path.txt
anki_sound.txt
anki.xlsx
anki.txt
同类软件推荐:SuperMemo
扩展阅读:
最近更新: