看美劇英文字幕學英語的利器——“深藍英文字幕助手”簡介

深藍發表於2014-11-24

我從初中開始基本上就是一個英語很爛的人,數理化再好有什麼用,工作了,結果發現數理化都沒啥用,最有用的還是當年學的最爛的英語。於是在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形式,那麼應該是現在進行時的語法形式。

相關文章