本文抽出モジュールを作り直す
2年ほど前にHTML::FeatureというPerlの本文抽出モジュールを書きました。
こいつはブログやニュース記事から「本文らしき箇所」を適当に推測して抽出してくれるモジュールでして、リリースした当時はライバルもいなかったので、ブログなどでは結構反応がよかったです。外国の方も何人か使ってくれたりして、それなりに充実感のあるモジュールでした。
しかし、昨年HTML::ExtractContentが出現してからは、すっかりその地位を奪われ&忘れられた感がありました。作者としては「ま、いっか」的なノリだったのですが、最近になって急に「本文抽出界での復権を目指し全面リメイクを敢行するよ!」と思うに至りました。
改善方針
方針ってほどの方針ではありませんが、
- サイトごとに定義できる部分はすなおに定義する
- アルゴリズムに頼りすぎない
- google adsenceの人気にあやかる
- 全体的に大げさな作りだったのでスリム化させる
と考えています。
まず処理の第1段階としては、有名どころのブログサービスなどは素直にタグのclassかidを指定して、ガツっと抜いてしまえば精度は完璧なはず(?)なので、そういう設定ができるようなIFを設けようと思います。
第2段階としてgoogle adsenceのコメントタグの有無をチェックします。ブログなんかだとかなりの比率でgoogle_ad_sectionのコメントタグが入ってるから、こいつを手がかりにするといいですね!ってこれは随分前から色々なところで使われてたテクみたいですが。
そして第1、第2段階を経てもうまく抽出できない場合に、第3段階としてようやく今まで通りのアルゴリズム(HTMLタグの構成からそれらしい部分を推測する機能)をキックする、といった流れにしてみようと思います。
まだちゃんと仕上げてないんですが、たぶんこの改良で抽出精度は格段にアップするんじゃないかしら、と踏んでます。
中途半端バージョンですが、githubを更新しておきました。興味ある人は見てみてください。まだテスト通らないですがたぶん動きます。
思う所
しばらく放置していたモジュールですが、急に思う所ができてしまいました。
というのは、ここんとこずっとデータマイニングとか解析系のものばかり追っかけていたんですが、「カッチョイイアルゴリズム」に悦に入っちゃって、その割には精度がでなかったり、変に理屈っぽい部分にこだわりすぎて、遠回りしてるなぁ、と感じてしまった訳です。
ちょっと前ですが、弾さんのブログもヒントになってます。
http://blog.livedoor.jp/dankogai/archives/51218625.html
ヒューリスティックスもいいのだけど、blogのように構造がはっきりしているものは、XPATHでぶっこぬいてもよいように思うのだけど>はてブの中の人。その方が高速で負荷も低いし。
結局のところ、最後はベタに人間様が設定したり登録したりしたものがやっぱ最高だろう!ビバ人間!ということで、どうせ頭弱いんだから今後は人力系で頑張って行こうと思います。
そのうちきちんと書き直しがすんだら、CPANにもアップします。
あ、もう寝なきゃ。午前4時だよ、今日も会社だよ、頭弱いよ、あばばばばー。