Google のクソデカ ngram を解析する その1
モチベーション
過去に
を作りました。これを作り直します(`・ω・´)
nextword とはなにか?
look コマンドの ngram 版です。 look コマンドは内部で二分探索を用いており、これはもしかして ngram にも応用できるのでは? と思い作ったソフトウェアです。 当初はエディタの英語補完に使えるかな? と思って作りましたが、いろいろな使い方があって面白いなと思いました。
CLIで英単語を引くのがちょっと話題になってたからnextword + fzf + weblioで単語引くワンライナー雑に書いた pic.twitter.com/Ag7VHNE9un
— Yano (@yuki_ycino) 2020年11月10日
nextword にはひとつ問題があり、データがでかすぎます。 でかいデータをローカルに保存するのはとてもストレスなので、次は小さなデータに加工できないかなという気持ちがありました(`・ω・´)
なんかめっちゃ容量消費しているものがいるなぁと思ったら nextword 用のデータだったw pic.twitter.com/xKEbP7hJ9c
— Ress (@ress997) 2020年7月21日
Google ngram クソデカデータ
Google は ngram のデータを公開しています。
こいつを入手して加工することで ngram の解析ができますね。
ところで、このデータセットは英語版だけでファイルが 33600 個程度あり、gzip の圧縮ファイルで1個 600MB あります。 展開するとだいたい 1.7GB あります。 つまり、全部解析すると 60 TB くらいにはなりそうです。これを全部ダウンロードして加工します。 将来的には多言語で使いたいので、扱うデータは 100TB オーダーと見積もってよさそうです。
サイトには、
If you're interested in performing a large scale analysis on the underlying data, you might prefer to download a portion of the corpora yourself. Or all of it, if you have the bandwidth and space. We're happy to oblige.
と書いてあります。やはりデータを全部使ってくれたら嬉しそうです。使います。勝負だ(`・ω・´)
クソデカデータを加工するサーバの用意
やはり OSS として公開する都合上、可能な限りお金をかけずに全データをさばいてみたいと思います。 Bigquery なんてもってのほか、そんなことをしていては Google に最初から負けているようなものです。
可能な限り安上がりにするために、ハードウェアは極力シンプルに、ソフトウェアは全部無料で調達することにしました。 今回は以下のハードを使います。
- Raspberry Pi 4 Model B (8GB)
- 120GB SSD
- 6TB HDD
これで戦っていきたいと思います。CPU の遅さが気になりますが、実際4コアあり、メモリも 8GB と十分です。 どうせ CPU ではなく IO がボトルネックになると思うので、Raspberry Pi でも十分勝負になる気がしてきました。
次回へ続く。