我学外语用的工具

vocabulary

tl;dr: 我用 vim 来快速筛选出不会的词汇,用这个网站来给词汇频率排序,用 Excel 批量制卡来给生成 anki 文件,用 Anki 来记单词,用 Habitica 来激励自己,用 Context Menu Search 来创建各种词典的快捷方式,用 thesaurus 来联系相关词汇,用 aspell 的词汇列表和正则表达式来搜索单词,用 GoldenDict 来查询词汇,用 Merriam-Webster 来找词源词根,用 Mnemonic Dictionary 来对付顽固分子。

首先是一个老掉牙的问题——为什么不用要把书翻烂来记单词。

每个翻书的翻第一遍的时候总是把不知道的单词给翻出来。然而 not all unknown words are equally unknown。有一些老顽固你记十遍百遍也是没用的,有一些亲你性单词你一遍两遍就能搞定了。所以你需要反复地筛选。电脑可以帮你更加合理地分配时间。Anki 解救水深火热之中的你,你按照 anki 的顺序来记单词即可。

记单词的时候会有很多日常任务,不用计算机会耗费你大量时间。比如,你用纸质典查一个词就要耗费 20 秒。你用 GoldenDict,鼠标放在单上面就能搞定。你经常会碰到某个单词就在 tip of your tongue,但是你就是写不出来的情况。你用 Thesaurus,你用正则表达式分分钟找到你想要的单词。还有一些任务不用计算机是不可能的。比如你要给你的单词列表依照频率排个序,你要查询一下别人的记忆窍门

记单词一定要多联系,单独的词不仅很难记住,而且容易忘记。联系不外乎,意、形、语境。脱离语境记单词,记一百次也没啥用,recondite,r-e-c-o-n-d-i-t-e,深奥的,recondite,r-e-c-o-n-d-i-t-e,深奥的……然后一上考场你就忘了。anki 除了可以让你以更加科学的方式安排学习外,还可以导入很多内容,让你的学习连贯性更强,让你不是在记一群来自虚空之物,见这里。写作的时候常有一些词忘记了,你用有道之类的十次有九次是找不到对应中文的英文词的,你一定要用 thesaurus 才能轻松找到,比如,我记得有一个 eso 开头,c 结尾的,意思是难懂的的词,我搜索 recondite 的 thesaurus,一秒就找到了。还有的时候,你只记得单词的一部分,有时候拼写检查也帮不了你,更不用说有道了,如果你有足够多的耐心的话,词典书也许可以帮你,但是你用正则表达式来搜索 Aspell 的单词列表,那就是两三秒钟的事了。还是上面的例子,我用 ^eso.*c$,应该可以很快就找到了。

第一步,挑出不会的单词

要记的生词表可以靠平时积累,比如导出 koreader、kindle 之类的高亮词汇。如果你足够懒,直接上 Shared Decks 导入你要学习的 decks,然后跳到第三步。

如果你是要记考试的词汇,不要用纸质书上的词汇表,一个一个单词输入电脑会累死你。如果你已经开始了,把所有要记的单词一个一个输入电脑,累一次是值得的,后面会有程序帮你查询词汇、加入释义、生成方便记忆的 anki 文件。

首先在网上随便找一个你相关考试的词汇列表,最好找一个只有单词的,一行一个单词的。如果找不到这种,可以用 sed, grep, awk, perl 预处理一下,生成一个只有单词的,一行一个单词的文本文件。然后使用 vim 将你不会的单词记录在另一个文件。

为什么要用 vim 以及如果你不会 vim。你复制、切换程序、粘贴、回车一百次就知道为什么了。vim 可以很方便地游动光标,一个键 hjkl 就是左下上右,如果你找到的列表文件不好处理,你还可以用 w 来向前跳过一个单词,用 b 来向后跳过一个单词。vim 可以很容易获取你光标处的单词,然后运行一个脚本,将当前单词 append 至另一个文件。vim is modal,用其他文本编辑器不适合此类任务。如果你不会用 vim,学。磨刀不误砍柴工。你会有很多单词要记,搞了这一次,你整个记单词过程都会行云流水。你只看鸟哥的 vim 教程就够了,其实你只要知道上面几个键和 vim 的模式这个概念就够了(其实也不需要知道模式,有问题了做死地按 esc 即可)。

下面是我的 vim 配置,你需要把它加入到你的用户目录下的 _vimrc(windows) 或 .vimrc(*nix) 文件里(如果不存在这个文件,就新建一个)。按下 f4 将当前行 append 到 words 这个文件里,按下 f5 将当前单词 append 到 words 这个文件里,你一次可能弄不完,可以保存 vim session,以方便下次继续。见configuration - How to auto save vim session on quit and auto reload on start including split window state?

nmap <F4> :call writefile([getline('.'),], 'words', 'a')<CR>:echo 'Added ' . getline('.')<CR>
nmap <F5> :call writefile([expand('<cword>'),], 'words', 'a')<CR>:echo 'Added ' . expand('<cword>')<CR>

我上次记的时候,正好手受伤了,下面的配置让你一只手就可以完成全部操作。

noremap ; W
noremap o B
noremap m $
noremap i 0
noremap z m
noremap u :call writefile([expand('<cword>'),], 'words', 'a')<CR>:echo 'Added ' . expand('<cword>')<CR>
noremap b :call writefile([getline('.'),], 'words', 'a')<CR>:echo 'Added ' . getline('.')<CR>

第二步,生成 anki 文件

已经有了生词表,你可以用 Merriam-Webster 来过一眼它们的词源。然后用这个网站给单词按照频率排个序,先记高频词。

下面生成 anki 文件,你可以用 Excel 批量制卡Excel 批量制卡 已经可以被 Word Query 取代,你可以跳过下面内容,用 Word Query 生成 anki 文件,然后进入下一步。

打开上面的那个 excel 文件,粘贴你的生词表到第一列,点击相关按钮即可生成可以导入 anki 的文件。注意上面的 excel 宏只能在 windows 的 excel 里面运行,而且一次复制 80 个单词最好。你可以用下面的 powershell 脚本自动复制 80 个单词,然后切换到 excel,点击生成,切换到 powershell,按下回车,这样稍微快点。

$file="infeq.txt"
$count=80
$lines=0
gc $file | % {$lines++}
$remaint=$lines%$count
$times=($lines-$remaint)/80+1
For ($i=1; $i -le $times; $i++) {
    $select = if ($i -le $times-1) {$count} else {$remaint}
    gc -TotalCount ($count * $i) $file | select -last $select | clip
    Read-Host -Prompt "$i of $times"
    mv anki.txt "$file.$i.txt"
}

是的,很麻烦,其实用 stardict 文件生成 anki 文件应该不难,我当时右手有伤,没有折腾。

第三步,用 anki 记单词

关于 anki,我不想推销太多了,因为有很多人推销过了,自己搜索一下吧。简单说来,anki 是一个 flashcard 软件,它用一种叫 SuperMemo Algorithm 的算法来帮助你记忆,它是免费、开源的(ios 不免费,服务端没开源),它有一大堆的插件可以使你的生活变得非常轻松,它有很多的 Shared Decks 供你导入学习,它不仅可以用来记单词,它可以改变你的生活。

推荐两个插件。

第一个是 Anki Habitica。这个可以用来激励你记单词,你一天不练习死多少血,你每天练了有多少奖励。

第二个是 Context Menu Search。这个可以自定义搜索,非常有用。我用的最多的两个词典是 Mnemonic dictionaryMerriam Webster ThesaurusMnemonic dictionary 专门发表各种记单词的邪门外道,比如 recondite = professor is re-conducting on the podium. 可惜的是这个网站主要用户是印度人,有很多邪门外道我看不懂,好在一个单词的邪门外道往往不只一种。还有一个是 Merriam Webster Thesaurus,这个是用来提示我某些没有记住的单词的。

你要把 Anki2/addons/Context_Menu_Search.py 的相关行改成

SEARCH_PROVIDERS = [
    ("&Mnemonic", u"http://mnemonicdictionary.com/word/%s"),
    ("Merriam-&Webster", u"https://www.merriam-webster.com/dictionary/%s"),
    ("&Merriam-Webster &Thesaurus", u"https://www.merriam-webster.com/thesaurus/%s"),
    ("&Google", u"https://www.google.com/search?&q=%s"),
    ("Google &Images", u"https://www.google.com/search?&tbm=isch&q=%s"),
    ("Wikipedia (&en)", u"https://en.wikipedia.org/w/index.php?search=%s"),
    ("Wikipedia (&fr)", u"https://fr.wikipedia.org/w/index.php?search=%s"),
    ("Wikipedia (&de)", u"https://de.wikipedia.org/w/index.php?search=%s")
]

这样就可以右键搜索上面的两本词典了。

flashcard 好是好,但是,太轻松了总是没法得到最大收益的。不要太被动地记忆单词,要主动给单词归类。可以根据祖辈关系,根据外貌相似度等等把不同单词放到某个笔记本的同一旮旯里,放得多了,印象就深了,而且你也可以很快找到没有记起来的单词(当然最快的办法还是用正则表达式搜索,不过搜到的单词是孤立的,很容易忘了)。

writing

corpus

写作的时候,如果你不确定某个词的用法,最快最好的方式肯定是翻词典(广义的,翻实体书很慢的),不要浪费时间搜索有道之类的,如果你实在不确定你的用法是否地道,你应该使用语言库,如 Corpus of Contemporary American English (COCA)

thesaurus

写作很重要的一条是 paraphrase,不要使用常用词,要用 thesaurus 来装逼,比如不要说 very important,用 important thesaurus 上的合适词汇。

languagetool

LanguageTool 这种工具多得很,我用它是因为 emacs 上也可用。批改网 之类的网站也很多。


下面是草稿

various resources

其他各种资源的获取概括起来就是一句话,要站在巨人肩膀上,不要重复前人劳动。比如你可能需要一些视频资料,你可能会搜索入门视频,下完之后你可能又需要一些教材,然后你又搜索一遍入门教材。不要这么做,因为已经有一万个人这么做过了。你应该搜索 法语 site:pan.baidu.com,然后找到某个看起来分享的东西比较靠谱的人,点开他的个人页面,把他的其余共享也下了。互联网上有很多专业收藏这种破烂的人,比如我,多搜几个这样的人后你要的所有资料都有了。上面只是举个例子,你可以按照需要改一改。上论坛可以看到前人用的各种资源,比如 /r/German wiki/r/French wiki。另外就是要看看前人是怎么学习的,比如你可以看下 /r/languagelearning wiki。用英语学其它外语,不要用国内的网站,上面傻逼太多了。

阅读器和词典

首先是全平台的 GoldenDict,可以屏幕取词用的,支持很多格式的词典,其中包括 stardict,你可以上胡正的主页下载很多词典,点主页上的 onedrive 链接。Windows 看 pdf 可用 pdf-xchange,我用过的所有 pdf 阅读器只有 pdf-xchange 可以鼠标停留在单词上即可取词。电纸书可用 koreader,它支持 stardict 词典,支持导出笔记至 evernote,有 android 版本。Linux 可用 Zathura。Macos 上自带的词典很不错,Ctrl Cmd D 即可查词。android 也可用 ebookdroid,支持 colordict,colordict 也用的 stardict 格式词典,词典还有欧陆词典、mdict。词典文件的获取上面已经说了,找捡破烂的人。

视频

如何获取

视频的获取还是那句话,要站在巨人肩膀上,不要重复前人劳动。已经有一万个人找过法语、德语的视频了,你不要再重复一遍找法语、德语的视频了。

  • 电影 你上 imdb 可以看到一万个名叫 french movies 的电影列表,一万个名叫 german movies 的列表。如果你要看 imdb top 250 上的电影,可以点如下链接,Titles of the IMDb Top 250 by countrySeparate countries made movies in Top 250

  • 视频 Youtube 上的视频如果上传者允许的话,youtube 是可以自动得到语音识别出来的字幕的。上面的 reddit wiki 上一些推荐的 youtube channels. Ted 很多人推荐,我感觉全是鸡汤,而且错误很多。

字幕

多练习不用字幕,不要太依赖字幕了。

以前我上 openSubtitles 之类的手动下载字幕,一部电影搜一遍,险些要了我有命。后来我发现了 Subliminal,现在我你用如下脚本来下载中英德法字幕。

#!/bin/sh
export PATH=/usr/local/git/bin:/usr/local/bin:$PATH
parallel --will-cite subliminal download -l {} ::: de en fr zh ::: "$@"

vlc、mpv 有插件可以 on the fly 下载观看字幕。比如 vlsubsubit.luaosdb-mpv。我一般用上面的脚本下载一些字幕,然后如果字幕、音频对不上,我再用 osdb-mpv 下载其它字幕观看。

很多播放器不支持两个字幕,你可以搜索一下 subtitle player,比如你可以用 Penguin Subtitle Player 来给不支持多字幕或根本就不支持字幕的播放环境添加字幕。原生支持多字幕的播放器我推荐 mpv(跨平台),potplayer(windows),mxplayer(Android)。对于mpv,你可以添加如下配置到 ~/.config/mpv/input.conf 使 alt+j 切换第二字幕。

Alt+j cycle secondary-sid

mpv 还有很多神奇的脚本,比如 speed-transition.lua,如要没有字幕自动加速播放。

下载

好孩子不要下。

如果是 youtube 之类的常见网站,我用 youtube-dlYou-Get 来下载。

如果是不是,我用 IMDb: Link ‘em all! 来在 imdb 页面上添加 Alluc 搜索链接。然后用 FlashGot 来获取正在播放的视频的下载地址。然后用这个脚本 来调用 aria2 下载至我外接了硬盘的路由器。注意上面的脚本需要把 aria2rpc 放在同一目录下,保存成 aria2rpc.rb,你还需要根据你的 aria2rpc 配置改一下 secret 之类的,另外 cookies cookies 还没有弄好,如果只是用 aria2 下载,这个脚本没啥用,直接用 aria2rpc 就行了,不过命令行参数比较麻烦。。Firefox 57 及以上要用 Easy Video Downloader (Flash and Video)。用 flashgot 调用本机 aria2 下载的命令行参数可以是

-b aria2 --bo 2 [--comment COMMENT] [--referer REFERER] [--cookie COOKIE] [--folder FOLDER] [--fname FNAME] [--headers HEADERS] [--post POST] [--rawpost RAWPOST] [--ulist ULIST] [--ufile UFILE] [--cfile CFILE] [--userpass USERPASS] [--ua UA] [URL]

阅读

图书

我不太喜欢电影的一个原因是电影 intellectually undemanding,另一个原因是电影 catering to the current whims of the public。正是这两个原因让你可以看随便一个电影列表上的电影。相比之下,阅读就私人多了。很多人推荐的书对你来说可能就是垃圾,彻彻底底的垃圾。你一开始如果不知道怎么找阅读材料,你可以以书搜书,多看你喜欢的人的文章,你会发现他们推荐了很多书的。另外 Goodreads 上面有一万个人写了 German books list,但是可能只有一百个对你口味。

关于下载,你还是需要找收藏家,你可以搜 open directories (见 How to find almost anything you want with open directoriesOpen Directories). 搜到后可以用 wget 一次下完整个 open direcotories 里的文件。见 WGET A Noobs Guide (PDF)

如,如果你要下载 Nietzsche 的书,可以搜

"ecco homo" +(MOBI|CBZ|CBR|CBC|CHM|EPUB|FB2|LIT|LRF|ODT|PDF|PRC|PDB|PML|RB|RTF|TCR|DOC|DOCX) -inurl:(jsp|pl|php|html|aspx|htm|cf|shtml) intitle:index.of -inurl:(listen77|mp3raid|mp3toss|mp3drug|index_of|wallywashis)

然后就能找到一些收藏过 Nietzsche 书的人了,再把他们的收藏搾干就行了。

网站

没有多少人会写一个我推荐的网站列表。你可以把你的手机改成你要学习的语言,很多 app 会根据显示语言更换推荐列表的。你也可以以站搜站。多上你平时喜欢上的网站的 counterparts,上多了自然就知道很多网站了。可以 Google related:heise.de 也可以用下面这个网站找相似,40 Similar Sites Like Heise.de - SimilarSites.com。我平常用 rss 来获取信息。我用的 Feedly,你可以在 feedly 上订阅你感兴趣的话题的网站的 rss。flipboard 改一下语言也可以看到许多文章。

听力

很多 podcast 没有原来的脚本,你听不懂的话可能需要语言识别。telegram 上有一些语言识别机器人。Player FMOvercast 有声书 加速播放

口语

你可以用一些随机和陌生人聊天的软件,如 OmegleChatous。你用这些软件能随机看到很多 sb。看到性交或手淫画面不要找我。 你也可以用正常歪国人常用的聊天软件,试试能不能找到蛋疼人士。

光是聊天的话可以多上 irc。

Publié le par v dans «misc». Mots-clés: foreign language