我从初中开始基本上就是一个英语很烂的人,数理化再好有什么用,工作了,结果发现数理化都没啥用,最有用的还是当年学的最烂的英语。于是在2011年年底开始了学习英语的课程,在学习的过程中,外教经常会放英剧美剧给我们看,看了以后回答问题,讲解,挺有意思的。印象最深刻的就是Neil给我的Doctor Who还有另外一个外教放的Friends。后来在课程快结束的时候,萌发了一个想法,能不能只看英文字幕来看美剧(当然还有英剧),这样没有中文字幕的话才能在看美剧的过程中联系阅读与听力。但是美剧中很多词汇不懂,一旦句子中出现了两个不懂的词汇,那么这句话基本上就不懂是啥意思了。那么我能不能根据我的实际词汇量,对字幕就行修改,如果是认识的单词,那么就不管,如果是不认识的单词,那么就给出其中文意思,这样能够便于理解整个句子,而且在潜移默化中慢慢的提高词汇量。

一年多前萌发的这个想法,于是按照这个思路写了一个字幕注释的小程序,可惜只写了一大半,然后由于工作的原因,就停了,最近突然想起这个东西,于是想能够把这个程序完成。(最近射手网和人人字幕组的关闭,让我觉得这个软件的必要)

整个程序的设计思路是这样的:

1.第一次运行这个程序时,需要设置词汇量,根据柯林斯词典提供的词频分级表,按词频分成5到0级词汇,0级最难最少用,5级最常用。用户根据对自己的估计进行选择,如果英语烂,那么就选择只认识5级词汇。如果英语不错,过了四六级那么可以选择4级或者3级,如果是英语专8水平啥的,可以选择更高级的词汇。选中后就会把这些等级的词汇记录到已认识的词汇表中(如果有些词不认识,可以通过用户词汇管理功能进行调整).

2.提供生词本导入功能,如果用户是开心词场,有道词典之类的软件的用户,那么可以将这些软件的记录导入到这个程序中,便于完善用户自己的认识和不认识的词汇列表。

3.用户下载带有英文字幕的srt或者ass格式的字幕文件,这个字幕文件可以是全英文的,也可以是中文英文都包含的,程序会将中文字幕全部移除,只保留英文字幕部分。

4.对英文字幕中的每个句子进行转换和分解,分解成词汇,然后用分解出的词汇和用户词汇表进行比对,如果发现是用户认识的单词,那么就忽略,如果是用户不认识的单词,那么就查询字典(默认采用的是维科英汉词典10W词汇,基本满足日常词汇需要),得到该单词的中文解释,如果词典中查不到这个词,那么就忽略,查的到就显示出来。

5.用户根据显示出来的所有词,再选择哪些是认识的,如果认识就可以标记为认识,以后也不会被注释。如果是不认识的,那么可能这个词存在多种注释,用户可以选择哪种注释在这个句子中更合理。

6.根据用户选择,把英文字幕进行替代,不认识的词汇会在旁边加上简短的中文注释。如果用户觉得整句话都很难,想把整句话都翻译了,那么可以调用网上的翻译服务(有道,百度,微软,谷歌),对整句话进行翻译。

7.用户可以进一步在界面上手工调整注释后的字幕,然后只需要保存这个替换后的英文字幕,然后用播放软件导入这个新字幕即可。

在编写这个程序的时候,遇到了很多关于英语上的问题,挺有意思的,下面列举一下:

1.如何得到一个单词的原型。

英语单词有很多种变形,比如复数+s/es,过去式+ed,现在进行时+ing,比较级+er等,我们一般不会说认识单词do,却不认识单词doing,程序必须找到doing的原型do,然后再到用户词汇表中去查用户是否认识do这个词。这个我之前的处理办法很复杂,现在的处理办法很高效,很实用。

2.如何知道一个词是人名/地名。

在美剧中必然会大量的出现人名地名啥的,如果人名本身没有其他意义那还好说系统会忽略,但是如果人名有其他意义就会对整个句子的意思造成影响。比如He is Bush.这么一个句子,如果把Bush作为单词,那么就会翻译成“他是灌木丛”,这也太搞了,这里程序应该意识到Bush是人名,对于人名就不需要翻译。怎么知道一个单词是人名呢?我目前的做法简单粗暴直接,维护了一个常见的人名列表,如果首字母大写的,那么就查询这个人名列表,存在则说明是人名,不存在就当普通词汇处理。地名目前没有维护,没有处理,毕竟地名出现的频率没有人名高。

3.对于一词多性多义,怎么判断取哪个意义。

有些单词既可以做动词用,也可以做名词用,当名词时和动词时的意思完全不一样,这是一个问题。比如book,可以做n.那么就是书的意思,也可以做v.那么就是预定的意思。这两个意思毫无关联,那么怎么确定一个句子中的book到底是哪个http://blog.sina.com.cn/s/blog_48b0011f0102v6zc.html意思呢?

一个是看是否变形,如果是booking或者booked,那么这是动词的变形,所以必然取动词的解释:预定。

二是看前后单词的词性,如果book的前面是adj.那么这里的book就是名词。

三分析整个句子,看book是做谓语还是主语/宾语,如果是谓语那就是动词,主语宾语就是名词。

4.对于一词多义,而且词性还相同,那怎么取。

这个有难度,我程序没办法解决,把每个意义都列出来,让用户根据上下文,自己选择。比如I like this date.这里Date可以是日期的意思,可以是约会的意思,也可以是枣子的意思,从语法上讲都是对的,只有根据上下文,让用户自己选择。

5.原型和变形是两个单词,那么怎么决定采用原型还是变形。

比如comforting是令人欣慰的意思,adj.,但是如果查原型comfort,只有n.和v.所以不能将comforting转换成原型再查下其意思,在作为形容词的时候,必须保持这个形式。还是只有从词性入手,如果是形容词,那么后面应该跟名词,如果是动词ing形式,那么应该是现在进行时的语法形式。

看美剧英文字幕学英语的利器——“深蓝英文字幕助手”简介的更多相关文章

  1. 【学英语~磨耳朵】2013年以来看过的所有美剧&电影&纪录片等等

    我看美剧看太多了,而且同一部剧刷很多遍.这种coach potato的做法其实一点也不好,英文会好可能只是意外收获.下面是单子: 美剧: 老友记-情景喜剧-10季全看.至今还在网易云音乐循环10季音频 ...

  2. Python 爬虫批量下载美剧 from 人人影视 HR-HDTV

    本人比較喜欢看美剧.尤其喜欢人人影视上HR-HDTV 的 1024 分辨率的高清双字美剧,这里写了一个脚本来批量获得指定美剧的全部 HR-HDTV 的 ed2k下载链接.并依照先后顺序写入到文本文件, ...

  3. Python + PyQt5 实现美剧爬虫可视工具(二)

    美剧<权力的游戏>终于开播最后一季了,在上周写了个简单的可视化美剧的爬虫软件来爬取美剧,链接:https://www.cnblogs.com/weijiutao/p/10614694.ht ...

  4. Python + PyQt5 实现美剧爬虫可视工具

    美剧<权力的游戏>终于要开播最后一季了,作为马丁老爷子的忠实粉丝,为了能够看得懂第八季复杂庞大的剧情架构,本人想着将前几季再稳固一下,所以就上美剧天堂下载来看,可是每次都上去下载太麻烦了, ...

  5. BAT,你好!字幕组,再见!——也许要跟美剧说再见了~

    对于美剧迷来说,上周的星期六(2014 年11 月 22 日)是黑色的一天. 11 月 22 日,人人影视暂时关站,并发布公告称网站正在清理内容.虽然这不是人人影视第一次关站清理,而且人人影视还给出提 ...

  6. Python爬虫爬取美剧网站

    一直有爱看美剧的习惯,一方面锻炼一下英语听力,一方面打发一下时间.之前是能在视频网站上面在线看的,可是自从广电总局的限制令之后,进口的美剧英剧等貌似就不在像以前一样同步更新了.但是,作为一个宅diao ...

  7. Node.js 爬虫批量下载美剧 from 人人影视 HR-HDTV

    这两天发现了一个叫看知乎的站点.是知乎的苏莉安做的,当中爬虫使用的 Node.js.这里就针对上一篇博客中的美剧小爬虫,改用 nodejs 进行实现一下.体验一下强大的 Node.js. 假设之前没实 ...

  8. 微软成立反网络犯罪中心,工作环境如美剧CSI情景

    微软在总部大楼内设立新网络犯罪中心(Cybercrime Center),旨在针对全球恶意软件.僵尸网络以及其他互联网犯罪行为进行实时追踪并予以打击.微软将“网络犯罪中心”设置在雷德蒙德总部大楼,目的 ...

  9. scrapy实战--爬取最新美剧

    现在写一个利用scrapy爬虫框架爬取最新美剧的项目. 准备工作: 目标地址:http://www.meijutt.com/new100.html 爬取项目:美剧名称.状态.电视台.更新时间 1.创建 ...

随机推荐

  1. Python 3 利用 subprocess 实现管道( pipe )交互操作读/写通信

    这里我们用Windows下的shell来举例: from subprocess import * #因为是举例,就全部导入了 为了方便你理解,我们用一个很简单的一段代码来说明: 可以看见我们利用Pop ...

  2. Scalaz(24)- 泛函数据结构: Tree-数据游览及维护

    上节我们讨论了Zipper-串形不可变集合(immutable sequential collection)游标,在串形集合中左右游走及元素维护操作.这篇我们谈谈Tree.在电子商务应用中对于xml, ...

  3. Scalaz(12)- Monad:再述述flatMap,顺便了解MonadPlus

    在前面的几篇讨论里我们初步对FP有了些少了解:FP嘛,不就是F[A]吗?也是,FP就是在F[]壳子(context)内对程序的状态进行更改,也就是在F壳子(context)内施用一些函数.再直白一点就 ...

  4. 使用MD5WithRSA来签名和验签(.NET)

    /// <summary> /// 数字签名并返回BASE64编码的字符串 /// </summary> /// <param name="contentFor ...

  5. JAVA中的GC机制详解

    优秀Java程序员必须了解的GC工作原理 一个优秀的Java程序员必须了解GC的工作原理.如何优化GC的性能.如何与GC进行有限的交互,因为有一些应用程序对性能要求较高,例如嵌入式系统.实时系统等,只 ...

  6. [deviceone开发]-仿微信应用(一):框架搭建

    一.简介 这个示例是一步一步跟我学DeviceOne开发 - 仿微信应用系列文档对应的文档.详细介绍了ListView,IndexListView,add方法等常用功能,推荐初学者学习. 二.效果图 ...

  7. Html技巧 语义化你的代码

    首先是关于语义(Semantics)和默认样式的区别,默认样式是浏览器设定的一些常用tag的表现形式,语义化的主要目的就是让大家直观的认识标签(markup)和属性(attribute)的用途和作用. ...

  8. 选中repeater表格中的一行使其变色

    //table表中点击行,选中的那一行颜色会变成浅蓝色(颜色可以自己设定) //其中sellerTable 为table的id, $("#sellerTable tbody tr" ...

  9. SAP 调用RFC 的时候记录异常报错方式

    DATA: lv_error TYPE char100. CALL FUNCTION 'ZRFC_WM_ZEL001' DESTINATION lv_desc EXPORTING process_fl ...

  10. 在内网中OWA第一次访问速度慢的问题

      当网络环境为内网时,有时访问OWA站点一直卡在Office Web App 那里. 这是因为SharePoint有一个证书需要联网检索 此环境为SharePoint 2013 通过下面的三个步骤 ...