uzusayuu’s diary

英検1級/TOEIC900点後の英語トレーニングなど

単語学習アップデート - Kindleのハイライトから英単語学習問題集を作成する Anki版

以前KindleのハイライトからP-Study System用の英単語問題集を作成する方法とスクリプトを紹介したが、今回Anki版も作った。

最近はAnkiが流行り、なのか?

何年も自分は英単語学習にはP-Study Systemを使ってきたのだが、mobile端末と学習状況を同期する方法が無いのが不満だった。(サポート外だが、PC同士なら設定ファイルをクラウドに置くなどの方法で共有することは可能)

Ankiならばオンラインのデータベースを通して学習状況を複数デバイスで同期できるようなので、先日紹介した英単語問題集作成スクリプトもAnki版を作ってみた。

Anki版の英単語問題集作成スクリプト

Ankiにはタブ区切りのテキストファイルを読み込む機能があるので、P-Study Systemスクリプトにちょっとした変更を加えることで対応可能だった。コードはgithubに公開してある。

github.com

まず、前回のエントリーにしたがってeijiroからテキストファイルを生成し、pythonが実行できる環境を用意しておく。またKindle上で覚えたい英単語をハイライトしエクスポートしておくものとする。

uzusayuu.hatenablog.com

こちらから、gen_anki_list.pyをダウンロードし、eijiroから抜き出した辞書ファイルのあるフォルダで、

python gen_anki_list.py <エクスポートしたハイライト> <任意のタイトル.txt> <辞書ファイル>

を実行すれば、単語と対応する意味が含まれたテキストファイルが作成される。

早速実行してみよう。 

python gen_anki_list.py Ultimate16000-Notebook.html Ultimate16000.txt eijiro_full.txt

 これで、Ultimate16000という名前のテキストファイルが生成される。

Ankiへのインポート

Ankiのアプリケーションは公式ページからダウンロードできる。今回はLinux版を使ったが、PC版でも同様のはずだ。インストールしておこう。

Anki - powerful, intelligent flashcards

あとはAnkiのアプリケーションから「ファイルを読み込む」を選択し、作られたファイル(今回はUltimate16000.txt)を選択し、「タブで区切ったフィールド」「1番目のフィールドは:Frontに割り当てる」「2番めのフィールドは:Backに割り当てる」が選択されている事を確認し、「読み込む」を押せば問題集が作成される。

f:id:uzusayuu:20171009073104p:plain

問題集が登録された。

f:id:uzusayuu:20171009073253p:plain

あとはいくらでも単語覚え放題だ。

まとめ

KindleのハイライトからAnkiがインポートできる形式の問題集を作成するスクリプトとその使い方を紹介した。

なお、上記の方法を試される方は、元の書籍および英辞郎著作権を尊重してお使いください。特に、元のKindle書籍が英単語集である場合など、英単語のリスト自体に価値がある場合は、そこから作成した問題集にも元の書籍の著作権が及ぶと考えるのが自然です。したがって、そのような書籍から作成した問題集をAnkiのシェア機能で共有した場合、意図したものでなくとも著作権侵害になる可能性があると考えます。

ブログ主としては、作成した問題集は個人でのみ使用し、他者とはシェアしないことを強くお勧めします。また、このブログ主は上記の方法を利用して生じたいかなる損害に対しても責任を負いません。試される方は自己責任でお試しください。

 

Kindle版「極限の英単語」から2万語レベルの英単語問題集を作る

極限の英単語を使った例

今回は極限の英単語 Vol. 1を使って実際にPSS用の問題集を作ってみよう。こちらが極限の英単語 Vol.1だ。

f:id:uzusayuu:20170825143823p:plain

可愛らしい表紙にもかかわらず、中の単語レベルの高さはかなり強烈だ。(とはいってもネイティブにとってはごく普通の単語ばかりなのだが)

準備

事前準備として前回の「事前準備と環境」および「テストの元になる辞書テキストを用意する」の部分を終わらせておくものとする。具体的には以下の通りだが、詳しくは前回のエントリーを参照いただきたい。

ハイライトした単語のエクスポート

まずは、覚えたい単語をハイライトしていく。

f:id:uzusayuu:20170825144108p:plain

次にノートの表示を選び、エクスポートする

f:id:uzusayuu:20170825144648p:plain

適当な名前("ultimate13000.html"など)をつけて、英辞郎テキスト及びクイズ作成スクリプト("read_wordlist.py")と同じフォルダに保存する。

htmlをブラウザで開けばこのようになっているはずだ

f:id:uzusayuu:20170825145018p:plain

クイズ用CSVファイルの作成

まずクイズのデータとなる.csvファイルを作成する。ハイライト("ultimate13000.html")、英辞郎テキスト("eijiro.txt")、スクリプト("read_wordlist.py")のあるフォルダで以下のコマンドを実行

python read_wordlist.py ultimate13000.html ultimate13000 eijiro.txt

ハイライトのファイル、出力タイトル、辞書のテキストは各自のファイルに合わせて読み替えていただきたい。

f:id:uzusayuu:20170825145518p:plain

おっと、残念ながらANOVAは見つからなかったようだ。英辞郎で検索してみると、ANOVAは略語として登録されているのだが、テキストファイルに書き出したときに漏れてしまったのかもしれない。

この例以外にも、極限の英単語で示された意味が英辞郎から上手く見つからないことがあるが、数も少ないのでそのような場合は手動で直せばいいだろう。修正方法は今後考えるものとして、今回はこのまま進む。

PSS上の問題作成

PssEditorを起動し、ファイルメニューからインポートを選択

f:id:uzusayuu:20170825150209p:plain

ダイアログボックスから先ほど生成したファイルを選択すると問題が作成される。左のペインで作成した問題をダブルクリックすると問題の内容をみることができる。

f:id:uzusayuu:20170825150714p:plain

よし、成功!

PSSで問題集を使う

P-Study Systemを実行し、先ほど選択した問題集を選択する

f:id:uzusayuu:20170825150908p:plain

これで「極限の英単語」から選んだ単語の暗記ができる!

f:id:uzusayuu:20170825151354p:plain

まとめ

このような方法で「極限の英単語」でハイライトした単語を元に問題集を作成してPSSでトレーニングすることができる。これで最大21000語レベル(第4巻刊行時には24000語レベル)の問題が簡単に手に入る。すばらしい。

もう単語学習用教材がないとは言えなくなった。あとは覚えるだけだ。

制限事項等

現在の方法ではまれに空白のエントリーが作られることがある。おそらく回答が英語の問題で起きている不具合だと思われるが、現状では手動の修正が必要だ。またそれ以外にも英辞郎テキストに発音記号が含まれる場合はエラーが出ることがある。(8/26/2017 修正済み)

こういった問題のうちスクリプトに関するものは今後修正して、githubで公開していく予定。もし修正の提案などがある場合はこちらのGithubへお願いしたい。

github.com

最後になるが、この記事は筆者の環境で動作したという報告であり、他の環境で動作することを保証するものではない。また、この方法で起きたいかなる結果についても筆者は責任を負わない。

 

単語学習アップデート - Kindleのハイライトから英単語学習問題集を作成する

はじめに

ここでは任意のKindle書籍上の英単語のハイライトから、英辞郎を使ってP-Study System用の問題集を作り出す方法を紹介したい。

事前準備と環境

ここから先を実行するには以下の環境が必要だ

英辞郎に関してはPDIC及び英辞郎辞書がPCにインストールされている必要がある。現在の最新版は第九版でDVD版だが私の手元には古い第五版しかないのでそれを使用した。後半スクリプトの実行にPython3の実行環境が、問題集の実行にはP-Study Systemが必要だ。またハイライトの抽出にPC用Kindleソフトウェアを用いる。
www.takke.jp
また一連の操作はWindowsを仮定している。対象になるキンドル書籍も必要だ。今回はたまたま手元にあったスティーブンキングの"It"を使ってみた。覚えたい単語は事前にハイライトしてあるものとする。

テストの元になる辞書テキストを用意する

次に、英辞郎の内容をPDICからテキスト形式で書き出しておく。
方法についてはP-Study Systemの作者の方がまとめてくださっているので、これに従う。ただし、LVの指定はせずに全レベル書き出す。ファイル名は任意だが、ここではeijiro.txtとしておいた。上手く動作しない場合は検索対象辞書->EIJI-128.docのみ選択、でうまく行く事があるようだ
d.hatena.ne.jp

ハイライトのエキスポート

次にキンドルのハイライトをPCのアプリからエキスポートする。
f:id:uzusayuu:20170825001652p:plain
画面左のノート表示を選択し、その後エキスポートアイコンをクリックし、任意の名前でセーブしておく。この例は適当に例として単語をハイライトしたものだが、他の書籍でも同じことができるはずだ。ここではファイル名はIt-Notebook.htmlとした。

問題集作成

このハイライトの内容と英辞郎をリンクするのに次のようなスクリプトを用意した
read_wordlist.py (8/26/2017更新)

#coding: utf-8
import codecs, sys

# Constants
removelist = [u'◆', u'\ ・', u'【変化】', u'【分節】', u'【@】']

def FindDefinitions(word, dic, startpoint=0):
    deflist = []
    found = False

    # find the first element that meets the condition. Don't want to evaluate all elements, so starting from j
    i = startpoint
    j = (i-1+len(dic)) % len(dic)
    while(i!=j and (not dic[i].startswith(word+' ///'))):
        i = (i+1) % len(dic)
    if i!=j: # found
        l = dic[i][len(word)+4:]
        for r in removelist:
            ii = l.find(r)
            l = l[:ii] if (ii >= 0) else l
        for d in l.split('\\'):
            if 0 <= d.find(u'=<→') < d.find(u'>'):
                dl, w, k = FindDefinitions(d[d.find(u'=<→') + 3:d.find(u'>')], dic) # w and k are not used
                deflist.extend(dl)
            elif (len(d.strip())>0):
                deflist.append(d.strip())
    else: # word not found
        if (word[-1]=='s'):
            deflist, w, k = FindDefinitions(word[:-1], dic)
            if (len(deflist)>0):
                print(word+' not found. '+w+' is used instead.')
                word = w
    j = (i+1) % len(dic) # next starting point
    return deflist, word, j

args = sys.argv
inputfilename = "wordlist.html" if len(args)<2 else args[1]
try:
    f = codecs.open(inputfilename, "r", 'utf-8')
    txt = f.readlines()
except:
    print("Error opening "+inputfilename)
    raise

dicfilename = "eijiro.txt" if len(args)<4 else args[3]
try:
    ef = codecs.open(dicfilename, 'r', 'utf-16')
    dic = ef.readlines()
except:
    print("Error opening "+dicfilename)
    raise

title = "quiz" if len(args)<3 else args[2]

with codecs.open(title+'.csv', 'w', 'sjis') as fout:
    fout.write("psscsvfile,100,,,\n")
    fout.write(title+",,,,\n")
    fout.write(",,,,\n")
    fout.write("a1,q1,q2,q3,q4,q5,q6,q7,q8,q9,q10,\n")

    j = 0
    for word in txt:
        ii = word.find(u'<div class=\'noteText\'>')
        if ii<0:
            continue
        word = word[ii+22:]
        ii = word.find(u'</div>')
        if ii<0:
            continue
        word = word[:ii].rstrip(',').rstrip('.').rstrip()
        defs, word, j = FindDefinitions(word, dic, j)
        if len(defs)==0:
            print(word+' not found')
            continue
        outtxt = "\""+word.strip()+"\""
        for d in defs:
            outtxt = outtxt + ", \""+d.strip()+"\""
        try:
            fout.write(outtxt.encode('CP932').decode('SJIS') + "\n")
        except(UnicodeEncodeError):
            # print('UnicodeEncodeError: '+outtxt+"\n")
            i1 = outtxt.find('[')
            i2 = outtxt.find(']')
            if (0<=i1<i2):
                outtxt = outtxt[:i1]+outtxt[i2+1:]
                fout.write(outtxt.encode('CP932').decode('SJIS') + "\n")
            else:
                print('Error printing '+outtxt+'\n')

python3へのパスが通ったフォルダーに、このスクリプト、辞書ファイル、エクスポートしたハイライトのファイルをすべて集めて、このスクリプトを実行する。

python read_wordlist.py <エクスポートしたハイライト> <任意のタイトル> <辞書ファイル>

たとえば、

python read_wordlist.py It-Notebook.html It-words eijiro.txt

などと入力すれば、It-words.csvという名前で問題集が生成されるはずだ。もし見つからない単語がある場合はコンソールにその旨出力されるので、どうしても必要な場合は手動で追加することもできる。

P-Study Systemへのインポート

後は、P-Study SystemのPssEditor(問題エディタ)を開き、問題集のインポートから先ほど生成されたcsvファイルをインポートすれば問題集が追加される。
f:id:uzusayuu:20170824164314p:plain
あとはP-Study Systemの方からこの問題を選択すれば、Kindleでハイライトした単語をもとにした問題集で勉強ができる!

まとめ

同じ方法で任意のキンドルの書籍の英単語ハイライトから問題集を作成することができるはずですが、英辞郎P-Study System、及びキンドル電子書籍著作権等を侵さないよう、各ソフトの規約を守ってお試し下さい。

また上記の方法はブログ主の環境で実行できた内容を紹介しただけであり、他の環境で実行できることを保証する物ではなく、また上記の内容を試したいかなる結果に関しても責任を負いません。

同様に上記のスクリプトは筆者の環境でのみテストを行っており、他の環境での動作は保証されません。後ほどGithubにでも上げておく予定なので、もし不具合など見つけたかたがいらっしゃった場合はpull requestなどしていただけると感謝します。
8/26/2017 追記
GitHubリポジトリー作成済み:
github.com

単語学習アップデート - SVL12000を越える英単語帳が出た

SVL12以上の単語を集めた英単語帳が出た

「英語上達完全マップを10ヶ月やってみた」のなりしか氏がKindleにて英語学習教材を出版された。しかも英単語関連で、タイトルが「極限の英単語」!

www.amazon.co.jp

直接は触れていないが、12000語レベルを越えてということから、アルクのSVL12より上の単語を集めた単語帳のようだ。しかもなんとVol1からVol4の4巻構成(現在は3巻まで刊行済み)で、最大24000語レベルまで!

中身を見てみると英単語、発音、簡単な意味が並んでいるだけの簡素な作りで、かなり読み手を選ぶだろう。しかも単語は普通の教科書や単語帳、それどころか学習英和辞典なら載っていないかもしれないようなレベルの単語ばかりだ。

だが、いぜんのエントリーでレベルの高い英単語帳がないという不満を連ねていたこのブログ主にとっては、これだこれが欲しかったんだよ、という垂涎の教材!

uzusayuu.hatenablog.com

まず、SVL12000以上の英単語が、出現頻度順*1に集められた教材が少ない。コーパスなら存在するが、日本語の意味がついてくる物はほとんどない。さらにそれが電子形式で手軽にキンドルで読める。喜ぶなという方が無理というもの。

さっそく12000-13000レベルから見てみたのだが、あるわあるわ、うろ覚えの単語に知らない単語。悲しいのはかなりの部分が見覚えがあること。一度覚えて忘れたのだろう。だが、英単語に限らず語学学習は忘れて覚えての繰り返しなので、こんなことで悲しんではいられない。覚え直せばいいのだ。ただ、そのためにキンドルをひらいて眺めて閉じてを繰り返すのはあまりに効率が悪い。

そこで、次のエントリーでは任意のKindle書籍上の英単語のハイライトから、英辞郎を使ってP-Study System用の問題集を作り出す方法を紹介したい

まとめ

 

以前のエントリーでも書いたとおり、日本では高難易度と言われる1万語レベルの英単語は、実際はネイティブにとっては小学校高学年レベルであり、実際に流通する英文を辞書を使わずに理解するには2-3万語レベルの語彙力が必要である。(筆者には未だにその語彙力はない)

にもかかわらず、これまで英単語学習教材は数千語以下のものがほとんどで、1万語以上の単語を網羅的に収録した物は皆無だった。

極限の英単語は12000語以上の単語にターゲットをしぼったもので、対象ユーザーは限られるが、その範囲の中では非常に期待できる。近いうちに実際に使って見た感想を述べたい。

次回はキンドルの英単語のハイライトから問題集を作成する方法をまとめる予定。

 

*1:書籍内で頻度順と述べられているわけではないが、書籍の構成や各項の単語を見る限り頻度順と思われる

雑記:ネイティブがよく使うフレーズ、とか

よくはてなとかで、「ネイティブが良く使う、学校では絶対習わない単語ベスト10」みたいな記事あるよね。こんなの。

英語の学習を進めて、ネイティブのスピードについて行けるようになると、「あれ、今なんて言ったの?」「どういう意味?」「あんなフレーズが使えたら、ちょっとかっこいいかも」とか思うことありますよね。今回はそんなアメリカ人ネイティブがよく使う単語やフレーズの中で、学校ではちょっと習わなそうなのを10個あつめてみました。みなさんもこんな単語を会話のなかにちりばめれば、英会話のレベルがワンランクアップするかも

  1. Shoot! (しまった)
    なにかやってしまったときにネイティブがよく口にする言葉
    使い方:
    John, your boss was looking for you.
    Oh, shoot! I was supposed to meet him. Thanks
  2. Wash (たいしてかわらないこと)
    結局、たいして変わらない結果が出たときにつかう
    使い方
    How did the task force activity go?
    They came back with suggestions, but we lost valuable time while waiting for that. It's a wash, I have to say.
  3. My bad (私の失敗だ)
    自分の過ちであることを示すためにネイティブが使う
    使い方:
    Ken, thank you for the code. But, I'm having trouble using it.
    Let me take a look. I see. It's my bad. I sent you the wrong one. I'm gonna send you the new one right away.
  4. Douche/Douche bag (すごく嫌な奴)
    元の意味はビデ。あまり使わないようにしようね!
    使い方
    How was the guy that you said you were gonna meet?
    That guy was a total douche bag. Never gonna see him again.
  5. Have a good one (さよならの挨拶)
    Have a good eveningなどの代わりに使う。時間や文脈にかかわらず使えるので、使いこなせると便利
    使い方
    OK. I'm leaving now.
    Have a good one!
  6. A low hanging fruit (僅かな手間で大きな成果が得られるもの)
    会議などでプライオリティを検討するときに、優先順位は低いがコストも低い物などを差して使う事が多い
    使い方
    This item may not be our highest priority item, but it's a low hanging fruit. Basically, it comes for free!
    OK. Then, why not get that one first?

 

 (今適当に書いたけど、内容は正しいはず。たぶん。閑なときにでも10個に増やしておきます)

でも、こんな上っ面だけ覚えて「おれってネイティブみたい」とか思っても、それって若い人のはやり言葉を喜々として使う老人とか、関西来て関西弁使おうとしている関東の人みたいに痛いだけだから。聞きとりの方にはちょっとは役に立つかもしれないけど、それなら10個や20個じゃたりないから。自分も覚え立てのこういう単語つい背伸びして使っちゃってあとで恥ずかしくなることあるけど、こんなの、英会話になれてきたら自然に口から出てくるから。

だからみんな、意識高い人の内容の薄いブログ読むより、英語学習マップ読んで、英単語ガシガシ覚えて、毎日英語のポッドキャスト聞いて、多読して、リピーティング練習して、あと発音矯正地道にやろうぜ!

 

発音トレーニング具体例

Pronunciation coachを使った具体的な練習はこんな感じ

 

教材

教材には今回BerlitzEnglish Pronunciation Programを使ったが、他の教材でもいい。

www.audible.com

 

Pronunciation Coach での操作

まず練習したい項目を入力する。今回はEnglish Pronunciation Programからerの音を選ぶ。Wordとしては、earn, burn, stirなど

f:id:uzusayuu:20160501033109p:plain

 

練習

Record Pronunciation タブに移動して、レコードボタンを押し、発音。(ヘッドセットがあった方が良い)

f:id:uzusayuu:20160501035621p:plain

96%!余裕余裕。

ただし、デフォルトではDifficulty levelが簡単になっている。

f:id:uzusayuu:20160501033653p:plain

中級にしてみよう。

f:id:uzusayuu:20160501033836p:plain

これで発音してみると、

f:id:uzusayuu:20160501033931p:plain

あちゃー、全然認識されない。

こういうときは、Model Pronunciationから舌の形のガイドなどを参照しつつ練習。自分の発音も録音されて聞けるので、Modelと聞き比べて練習。その結果...

f:id:uzusayuu:20160501034134p:plain

なんとか認識されるようになった!

 

文章の練習

教材には文章の練習もあるので、Speech Intelligibility Scorerのタブで練習してみよう。こちらはaの音の例文。

f:id:uzusayuu:20160501035438p:plain

簡単モードでも77%。厳しい...。

 

まとめ

こんな感じでPronunciation Coachで苦手な単語の発音の練習ができます

単語学習アップデート-2

単語学習アップデート - uzusayuu’s diaryのその後

英単語の部屋の単語学習が一段落ついたので、Test Your Vocabularyで単語テスト受けてみたら約20000語と出た。

f:id:uzusayuu:20160411103607p:plain

自己申告なので自己満足にしか過ぎないのだが、認識語彙数に関してはとりあえずネイティブの大人の最低レベルに近づいた(実際はそんな甘いもんじゃないが)。雑誌とか読んでいても知らない単語に遭遇する率が減ったような気がする。

次は英語イディオム完全対訳辞典の勉強に移って、それが終わったらCOCA60Kでの勉強をはじめるつもり。