自作の Picture Dictionary を作ろう!

今まで、分からない英単語はipadLongman Advanced American Dictionary で調べて、それをEvernoteでエクスポートしてました。そしてEvernoteでhtmlに変換してエクスポートして、会社とかの隙間時間に見る、といったことをしてました。

これも悪くは無いんですけど、さらに効率化できる方法を思いつきました。
それは、google でその単語の image を調べて、画像もその辞書に張れば良い、ということです!

日本語と英語では、概念が違うから、日本語の社会で作られた概念と照らし合わせて理解しようとすると、意味が違ってくることがあります。
それを補正する方法でもありますし、最初にその単語を画像でイメージできることで、意味がすんなり入ってくるようになります。
また、単語は、定義を覚えようとするのではなく、例文からだけで意味を掴もうとするほうが、実践的です。
日本語も、会話や状況の中で、ある単語の使われ方、というのは覚えていっているわけなので。

ここでは、自作のPicture Dictionary を作るためのスクリプトを公開します。
ただ、自分の環境に合わせた作りなので、単純にダウンロードして実行しても動かないかもしれません。
ご自信の環境に合わせて、カスタマイズしていただければと思います。


手順

ipadLongman Advanced American Dictionary で、単語を調べて、Evernoteにエクスポートします。

Evernoteから、そのノートをhtmlに変換してエクスポートします。

③ ②でエクスポートした単語の一覧を作成(filelist.txtに出力)します。

③ ③で作成した単語のimageをwebで検索し、画像を保存します。

⑤その画像を②のhtmlに挿入します。


手順はここまで。

①、②は手動ですが③~⑤は自動化してます。

以下がスクリプトです。

use strict;
use warnings;
use diagnostics;

use Encode qw(decode);

# ③検索単語をファイルに抽出
sub create_filelist {
#  my $file=shift;
	my $file='filelist.txt';
  open (FH, ">", $file) or die $!;

  foreach my $html (glob "../20150315/*.html"){	
    #	print $html, "\n";
    if($html =~ /LAAD .+ (\w+)( \(\w+\))?.html/){
      print $1, "\n";
      print FH $1, "\n";
    }
  }
  close FH;
}

# ⑤HTMLにimageを挿入
sub rename_filename{
  my @data = ();
  my $word;
  foreach my $html (glob "../20150315/*.html"){
    if($html =~ /LAAD .+ (\w+)( \(\w+\))?.html/){
      print $1, "\n";
      $word=$1;
	    	print $html;
      open(FH, $html) or die $!;
      while(<FH>){
        if (/<span style="display: block"><\/span>/){
          push(@data, $_);
          #<img src="apple - Google Search - Internet Explorer.jpg">
          push(@data, "<img src=\"image\\$word - Google Search - Internet Explorer.jpg\">");
          next;
        }
        else{
          push(@data, $_);
        }

      }
      close FH;
      open(OUT, ">", $html) or die $!;
      print @data;
      print OUT @data;
      close OUT;

    }
  } 		
}

# 適宜コメントアウト/解除
&create_filelist();
#&rename_filename();
//④単語に関する画像を取得
URL="https://www.google.co.jp/search?q=photo&source=lnms&tbm=isch&sa=X&ei=8oInVJSbCsWl8AWIqYDgBg&ved=0CAgQ_AUoAQ&biw=1536&bih=860#tbm=isch&q="

//IEを起動し、指定のURLへ移動
IE = CREATEOLEOBJ("InternetExplorer.Application")
IE.visible = True

//検索語一覧ファイル
file="filelist.txt"
fid=fopen(file, F_READ)

//ファイル名に空行が含まれる前までが検索対象
i=1
while true
	word=fget(fid,i)
	ifb word <> "" then
		print word

    //英単語を検索
    IE.navigate(URL+word)

    //ウインドウが処理可能な状態になるまで待機
    REPEAT
    SLEEP(0.1)
    UNTIL !IE.BUSY AND IE.readystate = 4
    sleep(2)

    //アクティブウインドウの画像を保存
    id=getid("Google Search - Internet Explorer")
    titl=status(id, ST_TITLE)
    if titl <> "" then SAVEIMG("image\"+titl, id, , , , , , 50)
	else
		break
	endif
	i=i+1
wend


手動でやると、300個くらいの単語をPicture Dictionry にするには、2, 3 時間かかるので、自動化は必須ですね。