読者です 読者をやめる 読者になる 読者になる

英語の技術書を読むには?

英語がスラスラ読めないので、どうしても遠ざかってしまう
safari online books
年間439ドルだったか払ってるし、
オライリー、ピアソン、レッドブックが読み放題なのに読んでないのは勿体無い。

そこで、英語の技術書を読めるためのアプローチをちょっと考えてみました。

レバレッジ英語勉強法では、自分が英語を使うであろうシチュエーションに特化して、
単語を覚えろって書いてあったので、

よく使われてる単語を調べてみました。

以下のサイトを参考にして、指定したWebページ(+リンクひとつ分たどる)
の 単語の出現頻度を数えるスクリプトを組んでみました。

http://www.f13g.com/?%A5%D7%A5%ED%A5%B0%A5%E9%A5%DF%A5%F3%A5%B0/perl/%B1%D1%CA%B8%A4%CE%C3%B1%B8%EC%A4%F2%BF%F4%A4%A8%A4%EB


http://d.hatena.ne.jp/jitsu102/20081017/1224192349


http://perl-mongers.org/2008/10/extract-content-from-html.html


django bookとrails wikiでやってみた結果が以下
(上位30個は、aとかtheとかDecemberとかの単語だったので、除外)

意外とそんなに難しい単語を使っているようではなさそうなので、
やっぱり慣れなのかなぁ、、、、

単語   回数
reference : 161
example : 154
objects : 154
models : 152
2 : 147
settings : 147
model : 146
8212 : 146
generic : 144
which : 141
form : 140
so : 139
data : 137
but : 136
document : 134
' : 133
not : 131
using : 130
other : 129
ruby : 125
license : 124
name : 122
any : 121
interface : 121
free : 121
import : 116
re : 115
pages : 112
ll : 111
system : 111
one : 111
work : 110
these : 110
d : 108
install : 108
time : 106
should : 106
user : 105
4 : 105
0 : 105
need : 103
e : 102
get : 102
extending : 102
each : 101
do : 101
more : 100
book : 99
comforter : 98
when : 97
how : 96
table : 95
like : 95
page : 95
set : 92
3 : 92
into : 92
middleware : 91
10 : 91
has : 89
applications : 89
content : 87
file : 86
tags : 86
some : 85
py : 85
users : 85
object : 84
under : 84
our : 84
response : 84
about : 83
first : 83
8 : 81
there : 81
c : 80
server : 79
function : 79
built : 79
just : 77
6 : 77
g : 76
list : 76
may : 75
here : 75
caching : 75
htm : 74
filters : 74
api : 73
return : 72
p : 72
now : 72
version : 72
out : 71
copyright : 70
memory : 70
see : 70
br : 69
case : 69
php : 68
up : 68
what : 67
same : 67
only : 66
make : 66
5 : 66
they : 66
sites : 66
security : 66
no : 65
non : 65
started : 65
www : 65
ve : 65
financing : 64
gnu : 64
provided : 64
section : 64
dynamic : 63
19 : 63
class : 63
engine : 63
jacob : 63
edu : 63
2006 : 63
7 : 63
application : 62
def : 62
r' : 62
adrian : 61
available : 61
most : 60
ipoo : 60
b : 59
framework : 59
definition : 59
croscill : 59
holovaty : 58
internationalization : 58
where : 58
was : 58
20 : 57
moss : 57
kaplan : 57
advanced : 57
databases : 57
urlconfs : 57
16 : 57
development : 57
contents : 57
wiki : 57
sessions : 57
i : 57
processing : 57
legacy : 57
addentry : 57
getting : 56
then : 56
h : 56
hosting : 55
want : 55
generating : 55
9 : 55
value : 55
f : 55
context : 55
15 : 55
basics : 55
17 : 54
graciously : 54
utility : 53
integrating : 53
deploying : 53
licensed : 53
14 : 53
introduction : 53
their : 53
string : 53
english : 53
take : 53
cache : 53
simple : 52
also : 52
registration : 52
create : 52
rubyonrails : 52
two : 52
blog : 51
its : 51
11 : 51
new : 51
18 : 51
such : 51
13 : 51
templates : 51
than : 50
contributed : 50
let : 50
interacting : 50
urlconf : 49
studies : 49
way : 49
foam : 49
subframeworks : 49
add : 49
don : 49
mattress : 49
because : 49
administration : 49
django's : 49
been : 49
information : 48
mysite : 48
apache : 48
query : 48
those : 47
setting : 47
type : 47
text : 47
title : 47
arguments : 46
used : 46
members : 45
urls : 45
patterns : 45
field : 45
doesn : 45
note : 45
them : 45
back : 44
queryset : 44
many : 43
variable : 43
business : 43
books : 43
before : 43
following : 42
developers : 42
translation : 42
read : 42
would : 41
conf : 41
search : 41
cover : 41
path : 41
called : 41
number : 40
ringtones : 40
forms : 40
every : 40
session : 40
'' : 40
publisher : 40
upc : 39
truja : 39
look : 39
youfreehosting : 39
mintaka : 39
might : 39
lsi : 39
common : 39
source : 38
without : 38
render_to_response : 38
default : 38
carisoprodol : 38
means : 38
does : 38
httpresponse : 38
sections : 38
could : 37
method : 37
named : 37
sql : 36
documentation : 36
location : 36
uses : 36
given : 36
single : 36
change : 36
through : 36
id : 35
topic : 35
define : 35
over : 35
few : 35
contains : 35
call : 35
sudo : 35
however : 35
project : 34
save : 34
software : 34
copy : 34
net : 34
urlpatterns : 34
review : 34
both : 33


ソースはこんな感じ。
本当は、単語の出現頻度調べるタイミングで英単語の意味も引きたかったんですが、
単語が出てるページ(アルクとかgooの辞書サイト)のHTML解析するのが
めんどくさくなって辞めちゃいましたw

辞書へのリンク(http://dictionary.goo.ne.jp/search.php?MT=word&kind=ej&mode=0)ぐらいは出力しようかな。

***********************************************************

use strict;
use warnings;
use WWW::Mechanize;
use HTML::ExtractContent;



my $mech = WWW::Mechanize->new();
my $extractor = HTML::ExtractContent->new;

my $word;
my %word;

my @urls=
	(
	'http://www.djangobook.com/en/1.0/',
	'http://wiki.rubyonrails.com/rails/pages/GettingStartedWithRails',
	);


foreach my $url (@urls){
	$mech->get($url);
	$extractor->extract($mech->content);
	foreach (split(/[^\w']+/i, $extractor->as_text)) {
		$word{lc($_)}++;
	}

	push (my @links, $mech->find_all_links());

	foreach my $link (@links) {
		my $reg = $link->url;
		$mech->follow_link( url_regex => qr/^$reg$/ );
		my $status = $mech->status();
		
		if ($status =~ /[1-3][0-9][0-9]/) {
			#print $mech-> content;
			$extractor->extract($mech->content);
    		#print $extractor->as_text;
    
			foreach (split(/[^\w']+/i, $extractor->as_text)) {
				$word{lc($_)}++;
			}

		}
		$mech->back();
	}
}

foreach (sort { $word{$b} <=> $word{$a} } keys %word) {
  print $_, " : ", $word{$_}, "\n";
}