ウェブマイニングのための基礎知識

朝、いつも金曜日は電車で通勤しているのだが、寝坊して午前中のミーティングに間に合いそうになかったのと、午後は雨が降るという予報だったので、車で出勤。

ミーティングは15分ほどで終了。しかし教員4人の予定を合わせるのが大変で、3週間前に日程調整したときは、4週間先までで4人全員の時間が確保できるのは、ここしか空いていなかったのである。(3人まではよいが、4人になると、2人にそれぞれ海外出張が入っていたりするので……)

お昼過ぎから進捗の確認。とあるウェブサイトからデータをスクレイピング(ウェブサイトからHTMLをダウンロードし、HTMLから必要な情報を抽出すること)をするのだが、やり方が分からないようなので、付き合うのであった。スクレイピング自体は本来1-2週間で終わるくらいだと思っていた作業だが、1ヶ月経ってもできないようなので、どこで詰まっているのか確認する意味合いもあった。

スクレイピング自体はどの言語を使ってもよいのだが、研究室の「公用語」は Python なので、Python で beautifulsoup を使って解析するプログラムを書く。そもそもなんで beautifulsoup を使ってやっていないのかと思ったら、MacPorts のインストールに失敗していたようで、MacPorts の設定からやり直し。というか、そもそも MacPorts を使わないと、自然言語処理に関するソフトウェアの導入が異常に面倒くさくなるし、今のいままで MacPorts はおろか、Homebrew や Fink も使わず研究していたこと自体がすごいと思う。研究に必要なソフトは、一つ一つインストールの仕方を調べて手でインストールしていたらしい……。来年は新入生全員が MacPorts を使えるところまでは最初に教えた方がいいように思った。

一方、beautifulsoup がインストールできたらあとは楽勝かと思ったら、どうやら HTML のタグを全然知らず、どこに必要な情報があるのか分からないようである。確かに、HTML タグの下に HEAD、その兄弟に BODY があり、BODY の中に画面の表示されるデータがある、といった知識がないと、ここから情報抽出するのは困難だ(あと、どのタグが構造を示すもので、どのタグが装飾を示すものだとか、どのタグは閉じタグを省略できて、どのタグはできないとか)。自分はどこで HTML の構造を学んだのか記憶にないが、こういう構造を知らないとお手上げだなぁ。

このあたり、ウェブテキスト処理に詳しい本やサイトは数あるが、全部自力で探すのは困難なので、初歩的なことを書いていて、かつちゃんとまとまっていて初歩的すぎないような本はないだろうか? ちょっと「Webを支える技術」

Webを支える技術 -HTTP、URI、HTML、そしてREST (WEB+DB PRESS plus)

Webを支える技術 -HTTP、URI、HTML、そしてREST (WEB+DB PRESS plus)

を引っ張り出してきて、必要な情報は入っている気はするのだが、これでも少し敷居が高いような気がする。情報リテラシー的な授業で HTML を書いたりもしないようだし(確かに HTML を直に書く必要って最近はほとんどなく、ブログサービスとか使えばいいので、それはそれで正しい気もする)、どうやったらウェブマイニング的な基礎知識がつくのだろうか……。(「そんなことも知らないのか」あるいは「それくらい自分で調べられないのか」と思う人も多いだろうが、実際自分で勝手に調べたりできる人でないと、バラバラのところに散らばっている知識を得るのは困難である)

あと、こういうツリー構造をしているデータを処理するとき、再帰的に処理したり、何がラベルで何が属性か(というかそもそも「属性」とは何であるか)ということを理解したりする必要があるのだが、一通り XML 処理や HTML 処理をやってみないと分からないのかもな、と思った。(ただ、9割方の人は、初めてやるときは時間がかかるが、独学でなんとかできるようになっていくものである)

午後は言語教育勉強会。資料なしの Skype だと、スライドの画面を映してもらっても、解像度が低くてよく分からないな〜。画面共有だとまだましだろうか……。

夕方はもう一度スクレイピングの進捗確認。仕方ないか……