本文抽出モジュールExtractContentのGolang版を作った。

HTMLから本文抽出をするときにはExtractContentが便利でよく使っています。
Rubyのバージョンが1.9になったときにオリジナルは動かなくなっていて、Ruby1.9に対応したものを公開されている方がいたので、それを使うことが多いです。
今回、ExtractContentの仕組みの理解とGolangの勉強を兼ねてGolang版を作成しました。

go getした後に、以下のような感じで動かせます。

% go get github.com/yukihir0/gec

Golangのパッケージ名は短いものが多いみたいなので、Go ExtractContentの頭文字をとってgecと命名しました。
コンパチを目指したものの正規表現の処理のあたりで違いが出ているようで、同じHTMLを処理させてもRuby版と異なる結果になることがあります。
テストを追加しつつ、できるだけコンパチにしていきたいです。
本文抽出アルゴリズムとしてはExtractContent作者の中谷さんがCRFを使った手法を紹介されているので、そちらの実装もできればいいかなーと思っています。

参考