# 最近用js写了一个用完形填空的方式进行单词语境快速识记的程序: Milkyway-Cloze

**URL:** <https://forum.freemdict.com/t/topic/2228>\
**Category:** 软件经验交流展望\
**Tags:** 教程, 电子书, ﻿英语\
**Created:** [2020 年6 月 5 日 08:47 UTC](https://forum.freemdict.com/t/topic/2228 "2020-06-05T08:47:54Z")\
**Posts on this page:** 20\
**Page:** 1

<div class="post-metadata">

**Author:** ![QThePerfect](https://forumcdn.freemdict.com/letter_avatar_proxy/v4/letter/q/e19adc/32.png) [@QThePerfect](https://forum.freemdict.com/u/QThePerfect)\
**Post date:** [2020 年6 月 5 日 08:47 UTC](https://forum.freemdict.com/t/topic/2228/1 "2020-06-05T08:47:54Z")

</div>

虽从电子文本中查单词相对方便，但每次用手或鼠标点击一下也得一秒钟，用阅读软件标注一个生词又得一秒钟。  
而且对于词汇量少的人比如楼主，每次将大量文章中整理出生词比阅读文章需要的时间还要长。  
最重要的是，边看文章边查单词很难进入状态。

试想有这样一个智能的软件：

1 将没有看过的文章输入，程序能自动识别出有一定难度的考试核心词汇，这样，对于比较难的小说例如《双城记》这种，可以先背重点词汇，再看原文。

2 你看过文章又背过单词之后，软件可以将标记出的单词隐藏，将原文做成完形填空，在原语境中进行词汇识记练习。

3 你可以将每次标记出的不太熟悉的生词表保存到本地，以后只需要打开记录文件就可以找回原文与词汇标记，以便于重做完形填空强化记忆。

4 输入新文章之前，可以先 Load 所有先前的记录。凡是以前曾经标注为已经掌握的词汇，新文章的生词表中也会自动标记为已掌握。

5 背单词必须要有音频，而且程序可以自动朗读整理好的单词表。

6 软件要能够从文章中识别并自动还原英文单词常见的后缀。例如 -ing， -s， -es， 辅音后去e， 变y为i， 双写辅音字母等，再将所有可能的原型词汇与核心词汇表对比。

由于很久以来一直没有人开发出这样一款令我满意的软件，所以我用javascript自己写了一个。用熟练之后操作是这样的（视频）：

[\> 小破站视频演示](https://www.bilibili.com/video/BV1a7411y7HS)

 ![](https://forumcdn.freemdict.com/uploads/default/original/2X/8/8e636217138477ba0cd0ff7009986bab738638ac.png)  
蓝色是已掌握的单词，黄色是还需背诵的单词。文本是《福尔摩斯探案集》

 ![](https://forumcdn.freemdict.com/uploads/default/original/2X/d/d72c3d49a1180451378fa5b1d7f336259fd262b2.png)  
完形填空，需要用键盘输入。

由于我经常重新编辑界面，所以目前可能与图片不太一样。  
目前使用的词库是 7000 GRE核心词汇，可以识别出大部分我不认识的单词。每篇文章提取出的单词我都把认识的单词做了标记，几篇文章训练过之后，程序识别出的基本都是我不怎么熟悉的单词了。

目前单词的释义比较简陋，一词多义的情况照顾得也不全。但这软件主打的是从文本上下文学习单词的意义，所以暂时问题不大。

简单操作：  
1。 粘贴文本，点击Start识别所有单词，再点击Cloze进行完形填空练习，点击Pause会保存进度并终止完形填空。  
2。 点击一个单词，按主键盘4可以直接将单词标成蓝色（已掌握），再按4又会变成黄色（未掌握）。注意：只有黄色单词才会列入完形填空练习。  
3。 完形填空时，按空格键或退格键重新输入。按，（逗号）和。（句号）可前后跳转，按分号建查看答案，按主键盘1键可以提示一个字母。输入正确，当前单词会自动变蓝。  
输入第一个单词之前，可能需要按以下空格键，页面才能自动滚动。这个是装门设计的。  
4。 朗读词汇表。直观操作，点几次朗读就重复几次。可移动滑块调整单词间隔。点Pause停止。  
5。 Level设定不用管。大多数人用cet-6都可以，其他选项的单词表我没有仔细校对过。

复杂操作：

4。 保存记录：右键点 Export 链接另存为，可以保存当前学习记录到本地。记录文件中，包含输入文本和标记为蓝色的单词列表，因此体积很小。  
注意：输入文本最后一行的前25个字母会被当作文章标题加入文件名中，修改此行可以方便日后复习时按标题查找。另外每次保存时，文章录入的时间也会自动包含在文件名和主文本中。  
注意：已经标记为蓝色的单词，必须在点击Pause之后才能被包含在当前的学习记录中。

5。读取已掌握的单词列表：点击Load Words, 打开储存学习记录的文件夹，用Ctrl + A选择所有记录文件，点确认。你会发现，凡是在之前记录文件中标为蓝色的单词，现在也自动变为蓝色了，并且不会再在完形填空中练习。

1. 读取上次的完整记录：点击 Load Article, 此时建议只选择一个文件。

安装：

在线版（推荐）：无需安装，访问[网页](https://qtheperfect.github.io/mw/?install=fdfrm)即可使用。  
[https://qtheperfect.github.io/mw/?install=fdfrm](https://qtheperfect.github.io/mw/?install=frfrm)

Chrome插件版：[GitHub - qtheperfect/milkyway: Milkyway-Cloze: Practice Cloze With Any Text](https://github.com/qtheperfect/milkyway/)  
打开Chrome浏览器 点击： 菜单 附加组件 开发者模式 导入已解压的附加组件 选择源代码文件夹  
其中，项目源代码可以从[Github项目](https://github.com/qtheperfect/milkyway/)中Clone，点击”Download Zip“下载解压即是。建议把文件解压到 D:/Program Files, 因为之后一旦移动，Chrome浏览器就要重新安装此插件。

大家有什么问题或者建议可以到Github主页上提issue：

> **[GitHub - qtheperfect/milkyway: Milkyway-Cloze: Practice Cloze With Any Text](https://github.com/qtheperfect/milkyway/)**
>
> Milkyway-Cloze: Practice Cloze With Any Text. Contribute to qtheperfect/milkyway development by creating an account on GitHub.

如果觉得好用请点赞。

---

<div class="post-metadata">

**Author:** ![青稚Quentin](https://forumcdn.freemdict.com/user_avatar/forum.freemdict.com/%E9%9D%92%E7%A8%9Aquentin/32/14413_2.png) [@青稚Quentin](https://forum.freemdict.com/u/%E9%9D%92%E7%A8%9AQuentin)\
**Post date:** [2020 年6 月 5 日 09:08 UTC](https://forum.freemdict.com/t/topic/2228/2 "2020-06-05T09:08:13Z")

</div>

有个类似功能的app ， 不过收费略贵， 买过163的app ， 我竟然也觉得贵。 一定支持你到底。

---

<div class="post-metadata">

**Author:** ![QThePerfect](https://forumcdn.freemdict.com/letter_avatar_proxy/v4/letter/q/e19adc/32.png) [@QThePerfect](https://forum.freemdict.com/u/QThePerfect)\
**Post date:** [2020 年6 月 5 日 09:15 UTC](https://forum.freemdict.com/t/topic/2228/3 "2020-06-05T09:15:24Z")

</div>

能不能给个链接？可能别人用的单词表全而且校对得比较好，我想去观摩一下。

---

<div class="post-metadata">

**Author:** ![青稚Quentin](https://forumcdn.freemdict.com/user_avatar/forum.freemdict.com/%E9%9D%92%E7%A8%9Aquentin/32/14413_2.png) [@青稚Quentin](https://forum.freemdict.com/u/%E9%9D%92%E7%A8%9AQuentin)\
**Post date:** [2020 年6 月 5 日 09:59 UTC](https://forum.freemdict.com/t/topic/2228/4 "2020-06-05T09:59:03Z")

</div>

可以 ， 名称叫 LingQ ， 主要的功能是导入新闻 电子书 网页 ， 来学习的。一年700 好像是 。 我好久没登录了 ， 或许有新功能了；

> **[‎LingQ: 学习42种语言: 英语, 日语, 韩语](https://apps.apple.com/cn/app/%E8%AF%AD%E8%A8%80%E5%AD%A6%E4%B9%A0-%E4%BB%8E%E4%BD%A0%E5%96%9C%E7%88%B1%E7%9A%84%E5%86%85%E5%AE%B9%E4%B8%AD%E5%AD%A6%E4%B9%A0%E8%AF%AD%E8%A8%80-lingq/id379385811)**
>
> ‎通过有趣，真实的内容学习语言！从简单的入门课程开始，快速进入真实，有创意的内容。1000小时的课程，播客，有声读物，访谈或其它，均带有文本转录。LingQ甚至允许您导入从网络上找到的任何内容进行学习！今天开始您的语言旅程！
> 
> 跟随文本的内容听语音。在您的个人数据库中查找并保存新的单词和短语。 跟踪已知词汇和新鲜词汇。看着您的词汇量和头像成长！记录您所有的学习活动，包括听力时间，阅读词数等等。
> 在上下文中查看和学习您的新词汇，并使用我们的专有SRS审核工具。...

---

<div class="post-metadata">

**Author:** ![青稚Quentin](https://forumcdn.freemdict.com/user_avatar/forum.freemdict.com/%E9%9D%92%E7%A8%9Aquentin/32/14413_2.png) [@青稚Quentin](https://forum.freemdict.com/u/%E9%9D%92%E7%A8%9AQuentin)\
**Post date:** [2020 年6 月 5 日 10:00 UTC](https://forum.freemdict.com/t/topic/2228/5 "2020-06-05T10:00:57Z")

</div>

你这个就非常赞了！！

---

<div class="post-metadata">

**Author:** ![青稚Quentin](https://forumcdn.freemdict.com/user_avatar/forum.freemdict.com/%E9%9D%92%E7%A8%9Aquentin/32/14413_2.png) [@青稚Quentin](https://forum.freemdict.com/u/%E9%9D%92%E7%A8%9AQuentin)\
**Post date:** [2020 年6 月 5 日 10:02 UTC](https://forum.freemdict.com/t/topic/2228/6 "2020-06-05T10:02:40Z")

</div>

词表你可以采用 COCA 60000 活着 iweb的词频表；

---

<div class="post-metadata">

**Author:** ![hua](https://forumcdn.freemdict.com/user_avatar/forum.freemdict.com/hua/32/11090_2.png) [@hua](https://forum.freemdict.com/u/hua)\
**Post date:** [2020 年6 月 5 日 10:36 UTC](https://forum.freemdict.com/t/topic/2228/7 "2020-06-05T10:36:59Z")

</div>



---

<div class="post-metadata">

**Author:** ![Vim](https://forumcdn.freemdict.com/user_avatar/forum.freemdict.com/vim/32/8408_2.png) [@Vim](https://forum.freemdict.com/u/Vim)\
**Post date:** [2020 年6 月 5 日 11:09 UTC](https://forum.freemdict.com/t/topic/2228/8 "2020-06-05T11:09:24Z")

</div>

# 类似或相关的开源或免费软件

## LearnEnglishBySubtitle

src: [studyzy/LearnEnglishBySubtitle](https://github.com/studyzy/LearnEnglishBySubtitle)

深蓝英文字幕助手，是一款学习英语的辅助工具，可以通过记录用户的词汇量，然后对英文字幕中不认识的单词进行注释，做到摆脱中文字幕看懂美剧英剧。  
使用C# 写成，[需要.Net](http://xn--dw2at9x.Net) Framework 4.0的运行环境

“深蓝英文字幕助手”是一款看美剧（英剧）学英语的字幕辅助软件，通过只对英文字幕中生词的注释，实现摆脱对中文字幕的依赖，同时在潜移默化中学习英语的目的。本软件主要有以下特点：

- 采用斯坦福自然语言处理引擎，实现很好的词性判断和注释预判。
- 支持灵格斯提供的维科英汉词典，能够准确的提供英语单词的中文解释。
- 采用柯林斯词频分级方式，方便为用户初始化词汇量。
- 支持SRT，ASS等常用的字幕格式。
- 自动对中文字幕过滤，对于中英双语的字幕处理后只保留英文字幕。
- 支持用户词汇和生词的导入导出和调整。
- 支持百度翻译和有道翻译提供的整句翻译。
- 扩展：支持沪江开心词典，有道词典生词本等外部词典的生词本导入。
- 扩展：支持灵格斯提供的朗道英汉词典、现代英汉综合大辞典，英汉速查词典，维科词典等较权威的词典，能够准确的提供英语单词的中文解释。
- 最重要的是，本软件完全绿色、免费、开源

## melt subtile

src: [Celthi/meltSubtitles](https://github.com/Celthi/meltSubtitles)

融化字幕（melt subtile）去掉字幕的熟词，给生词一个参考释义  
使用Python编写，支持Python 2和3

思路

1. 词库假定是你认识的单词
2. 将字幕里在词库中的单词去掉，
3. 通过查询有道网页得到生词的释义
4. 将释义加入到新的字幕文件中
5. done

## 洛克生词本

src: [洛克生词本](https://www.douban.com/group/topic/40323246/)

语境学英语、辅助阅读英文原著、妙用Anki的利器  
目前最新版本1.7，仅支持Python 2.x  
程序下载地址： [百度网盘-链接不存在](https://pan.baidu.com/s/1jItXuVO)

为什么要使用洛克生词本？  
帮你更有效地背单词，更高效地阅读英文原著  
洛克生词本可以做什么？  
自动扫描英文文本中难词、生词，查找释义，添加例句  
注意！这个例句是难词或生词出现在文本中的那个句子，也就是这个单词所在的“语境”  
洛克生词本生成的是什么？  
是tab键分隔的txt文件，你需要把它导入到一个记忆辅助软件“Anki”中  
我最终怎么学习?  
Anki记忆库是由许多卡片（Card）组成的，牌面是“生词”，牌背是“音标 - 例句 - 释义”，  
就像我们以前自己做的抽认卡一样！  
Anki使用的是被证明行之有效的记忆算法，帮你更科学地复习

## find-all-the-new-words

src: [Steven-AA/find-all-the-new-words](https://github.com/Steven-AA/find-all-the-new-words)

FAIDK 建立自己的词库，找出文章中的生词（配合anki使用）  
依赖Python 3.6

## VocabularyAnalyzer

src: [hao-lee/VocabularyAnalyzer](https://github.com/hao-lee/VocabularyAnalyzer)  
英语词汇分析器，可用于提取文本中的高阶词汇  
用 NLTK 的 lemmatizer 函数库进行词形还原

## epubFreq

src: [sandae/epubFreq](https://github.com/sandae/epubFreq)  
为epub电子书添加词频标记和注释（词典释义）  
使用shell和python混合编程

## advanced\_freeq

src: [advanced\_freeq](https://github.com/xpgeng/advanced_freeq)

A Python script to generate word frequency report of English text, pdf, epub, mobi.

# 收费类的

## 爱英阅

src: [爱英阅iyingyue](http://iyingyue.net/iyingyue/)

英文分析与提词软件，辅助阅读英文原著、英语资讯，为英语学习和英文原著爱好者设计，帮助读者提前梳理英文中的生词，获得更顺畅的阅读体验.  
可以对原著进行难度分析：有多少不认识的单词，占比多少，词汇生僻度，单词总量等。

---

<div class="post-metadata">

**Author:** ![青稚Quentin](https://forumcdn.freemdict.com/user_avatar/forum.freemdict.com/%E9%9D%92%E7%A8%9Aquentin/32/14413_2.png) [@青稚Quentin](https://forum.freemdict.com/u/%E9%9D%92%E7%A8%9AQuentin)\
**Post date:** [2020 年6 月 6 日 02:04 UTC](https://forum.freemdict.com/t/topic/2228/10 "2020-06-06T02:04:59Z")

</div>

只为学习使用 ， 这个就足够了 ， 普通人也可以看懂 ， 只要不是电脑小白。 我之前做测试工程师 ， 这点代码没什么问题。

---

<div class="post-metadata">

**Author:** ![endnote](https://forumcdn.freemdict.com/letter_avatar_proxy/v4/letter/e/9de0a6/32.png) [@endnote](https://forum.freemdict.com/u/endnote)\
**Post date:** [2020 年6 月 6 日 03:37 UTC](https://forum.freemdict.com/t/topic/2228/11 "2020-06-06T03:37:44Z")

</div>

iOS上的蒙哥阅读器有类似的对epub的词汇进行分类的功能。

进行分类的依据是词频表，各大学习型词典都有星级等词频分类标识，这一点需要更多的积累。  
可参见  
[https://www.pdawiki.com/forum/thread-21736-1-1.html](https://www.pdawiki.com/forum/thread-21736-1-1.html)

---

<div class="post-metadata">

**Author:** ![御宅暴君](https://forumcdn.freemdict.com/user_avatar/forum.freemdict.com/%E5%BE%A1%E5%AE%85%E6%9A%B4%E5%90%9B/32/3985_2.png) [@御宅暴君](https://forum.freemdict.com/u/%E5%BE%A1%E5%AE%85%E6%9A%B4%E5%90%9B)\
**Post date:** [2020 年6 月 6 日 12:49 UTC](https://forum.freemdict.com/t/topic/2228/12 "2020-06-06T12:49:48Z")

</div>

我，用 Anki。

---

<div class="post-metadata">

**Author:** ![sJppLh](https://forumcdn.freemdict.com/letter_avatar_proxy/v4/letter/s/8e7dd6/32.png) [@sJppLh](https://forum.freemdict.com/u/sJppLh)\
**Post date:** [2020 年6 月 9 日 02:38 UTC](https://forum.freemdict.com/t/topic/2228/13 "2020-06-09T02:38:41Z")

</div>

> [@QThePerfect](#):
>
> 又背过单词之后，软件可以将你不会的单词隐藏，将原文做成完形填空，进行词汇拼写练习。

谢谢楼主分享。  
个人一直在用[Words Discoverer](https://c-t.work/s/a762689a02b742)(提取码an428h)插件。关键把 **陌生单词批量highlight出来** 。后续填空，导出句子，导入anki等就好弄了  
当前这个插件有些小毛病，不知楼主能否修改一下：  
**1，同步：google drive科学也连不上，改为坚果云；**  
**2，插件没有highlight的单词，用户也没办法highlight。这点不人性；**  
3，锦上添花的：自定义词库，不同难度单词不同颜色highlight等。  
谢谢啦。

---

<div class="post-metadata">

**Author:** ![getdicter](https://forumcdn.freemdict.com/letter_avatar_proxy/v4/letter/g/e9a140/32.png) [@getdicter](https://forum.freemdict.com/u/getdicter)\
**Post date:** [2020 年6 月 11 日 08:15 UTC](https://forum.freemdict.com/t/topic/2228/14 "2020-06-11T08:15:08Z")

</div>

可惜楼主制作的在android手机上测试都无法正常使用。。。

---

<div class="post-metadata">

**Author:** ![smiling1384](https://forumcdn.freemdict.com/letter_avatar_proxy/v4/letter/s/3e96dc/32.png) [@smiling1384](https://forum.freemdict.com/u/smiling1384)\
**Post date:** [2021 年10 月 26 日 12:28 UTC](https://forum.freemdict.com/t/topic/2228/16 "2021-10-26T12:28:21Z")

</div>

做得挺好的！

---

<div class="post-metadata">

**Author:** ![terasum](https://forumcdn.freemdict.com/user_avatar/forum.freemdict.com/terasum/32/18724_2.png) [@terasum](https://forum.freemdict.com/u/terasum)\
**Post date:** [2021 年10 月 26 日 15:13 UTC](https://forum.freemdict.com/t/topic/2228/17 "2021-10-26T15:13:29Z")

</div>

支持楼主，楼主可以把词汇单词做成 JSON 数据然后通过请求载入的方式处理，可以达到一样的效果的

```auto
dict9k["zoom"] = {ipa:"[zu:m]", def:"v.\n急速上升"};

```

---

<div class="post-metadata">

**Author:** ![QThePerfect](https://forumcdn.freemdict.com/letter_avatar_proxy/v4/letter/q/e19adc/32.png) [@QThePerfect](https://forum.freemdict.com/u/QThePerfect)\
**Post date:** [2021 年11 月 4 日 06:54 UTC](https://forum.freemdict.com/t/topic/2228/18 "2021-11-04T06:54:50Z")

</div>

谢谢。等我学会后端和 DB 再升级吧。

---

<div class="post-metadata">

**Author:** ![L65W3E4](https://forumcdn.freemdict.com/user_avatar/forum.freemdict.com/l65w3e4/32/30036_2.png) [@L65W3E4](https://forum.freemdict.com/u/L65W3E4)\
**Post date:** [2022 年9 月 22 日 15:55 UTC](https://forum.freemdict.com/t/topic/2228/19 "2022-09-22T15:55:52Z")

</div>

挖到宝了 ❤

---

<div class="post-metadata">

**Author:** ![WalkingDictionary](https://forumcdn.freemdict.com/letter_avatar_proxy/v4/letter/w/41988e/32.png) [@WalkingDictionary](https://forum.freemdict.com/u/WalkingDictionary)\
**Post date:** [2022 年9 月 23 日 01:03 UTC](https://forum.freemdict.com/t/topic/2228/20 "2022-09-23T01:03:18Z")

</div>

插件安装了，但是该如何使用呢？

---

<div class="post-metadata">

**Author:** ![L65W3E4](https://forumcdn.freemdict.com/user_avatar/forum.freemdict.com/l65w3e4/32/30036_2.png) [@L65W3E4](https://forum.freemdict.com/u/L65W3E4)\
**Post date:** [2022 年9 月 23 日 03:29 UTC](https://forum.freemdict.com/t/topic/2228/21 "2022-09-23T03:29:30Z")

</div>

直接使用网页版吧： [Milkyway-Cloze](https://milkywaycloze.tk/milkyway/?install=frfrm)

---

<div class="post-metadata">

**Author:** ![zambast](https://forumcdn.freemdict.com/letter_avatar_proxy/v4/letter/z/67e7ee/32.png) [@zambast](https://forum.freemdict.com/u/zambast)\
**Post date:** [2022 年9 月 23 日 08:33 UTC](https://forum.freemdict.com/t/topic/2228/23 "2022-09-23T08:33:55Z")

</div>

这个帖子总结得挺好的。  
最近就打算用先挑生词背了再看小说的方式，试了几个软件。有些问题分享一下。  
有些脚本类的工具，例如久负盛名的 洛克生词本 ，是用python写的脚本，很多依赖关系装不上，折腾了半天最后stardict死活没法用pip安装上，用apt装的脚本又不认，只好放弃。其实根本就不需要它的查字典的功能，只要提供个生词列表就行。  
试了几个，比较能用的爱英阅，倒是没必要用它的app看书，单纯用它的生词识别导出就行。爱英阅的默认排序是按文中出现顺序，这点不错，可以背一章单词看一章，颇有点上课前预习的感觉。  
但是爱英阅的缺点也很明显，就是词形变换识别不准确，而且会把动词的过去式过去分词现在分词统统当生词，挺烦的，打算去找个常用词的变换表统统先导入熟词库再说。  
另外此类工具有个普遍的问题是会将所有大写的转为小写，到最后分不清一个词到底是该背的生词还是人名地名等专有名词。  
总之就是能用，但不算好用。  
而楼主的这种按词表标注的方式算是白名单倒是没有乱转换大小写等问题，但是缺点是标的生词并不是自己的生词。比如默认用GRE词表，那么该词表里没有的词就不会被标出来，无法匹配每个人的需求。

[下一页](https://forum.freemdict.com/t/topic/2228.md?page=2)
