« 飯記録日記化しております | メイン | サッカーを観ながら飯 »

2006年06月18日

ブログの本文抽出にチャレンジ

zuzara.com を読んでいると、ブログの本文抽出にチャレンジしているのを見つけました。

tdかdivで囲まれた文字列で、文章と比べてHTMLのタグがあまり多くないもののうち、一番文字数が多いのが本文だろう、というアルゴリズム。

PHP で書かれたコードを Perl に移植しながら、もっと効率的なアルゴリズムが無いかを考えていました。

まずは、『タグの数』ではなく、比率をで判定するように改良(?)しました。

スコア = タグ除去後(length) / タグ除去前(length)

タグが含まれていないときが最大値になるので、スコアは 1 が最大となります。タグの数よりもこっちの方が良さそうだったのだけど、コメント部分を抽出してしまう可能性が非常に高い。だめぽ。

牛乳を飲みつつ考えていると(カルシウムを摂取して身長を伸ばす)、ひらめきましたよ!要は、長い文章を取り出せればいいのだから、句読点の多いブロックを取り出せばよくね?とね。

日本語の句読点がたくさん含まれる部分を本文とするプログラムを作ってみた。適当に作ったので、カウント部分がかなり手抜き。

句読点の数を見てブログの本文を抽出する (Perl)

それなりに上手くいってるかも。もう少し考えてみると、上部のブロックほどスコア(句読点の数)を高めにするようにしても良いかも。上部にあるものほど重要ということで。どちらかというと、コメントが抽出されないようにする感じ。

前から考えていたのは、こんなのが。

・直前のエントリと diff を取る
・RSS の description と比較する

どちらも定期的にクロールしていることが前提ですね。任意のページを渡したときに本文抽出してくれないのでいまいち。人間ってすごいよね。

今回は、判定するための文字列(ブロック)を zuzara.com に倣って『tdかdivで囲まれた文字列』としたのだけど、もっと良い方法が無いかな。ニュース記事のように、途中に table で画像を入れられるとどうしようもない。

【関連情報】
・ブログの記事本文を抽出するスクリプトをつくってみた
 http://blog.zuzara.com/2006/06/06/84/

2006年06月18日 20:41 | Programming

トラックバック

このリストは、次のエントリーを参照しています: ブログの本文抽出にチャレンジ:

» blog記事の本文抽出 from 研究開発
主にblogですが、広告やその他内容に関係ないところを全て削除して本文だけを取得したいと思うことは多くあります。 そういう場合にどのような方法があるか ... [続きを読む]

トラックバック時刻: 2007年09月29日 08:04

» [偽はてぶ][PHP]ブログやニュースの本文を抽出する方法 from 僕のススメ。
前回の記事で書いたようにはてまブックマークで学んだことを書いていこうと思う。 参考URL 本文を抽出するために参考にしたサイトは以下。 ブログの記事本文を抽出... [続きを読む]

トラックバック時刻: 2009年05月28日 21:42

コメント

面白いこと考えるねぇ〜

投稿者 yukoba : 2006年06月18日 22:51

なるほど...

わたくしもこのように
汎用的な本文抽出を試みようとはしてはいますが、
(まだ試みてもいない)

途中に画像とか別のタグ入っちゃうと面倒ですよね。

投稿者 tak : 2006年06月19日 12:08