Más contenido relacionado La actualidad más candente (20) Similar a HTMLからの本文抽出 (20) HTMLからの本文抽出2. 自己紹介 — 専門とか
専門 プログラミング言語 (の設計?)
• λ 計算
• 型理論
• 証明支援システム / 定理自動証明
研究 Java に動的型を入れて LLっぽくする
(でも Java 嫌い)
言語 普段よく使うもの
C++ かれこれ 10 年ほど
OCaml 研究室での公用語
Ruby シェルスクリプト代わりに
Perl まだ半年くらい
JavaScript 定理自動証明器を書いたり
TEX このスライドも
伊奈 林太郎 (id:tarao) HTML からの本文抽出
3. 自己紹介 — Perlとの出会い
2001 年 掲示板 CGI を改造するために Perl に触れる
Perl 嫌い病を発症
Perl から逃げまわる日々が続く
伊奈 林太郎 (id:tarao) HTML からの本文抽出
4. 自己紹介 — Perlとの出会い
2001 年 掲示板 CGI を改造するために Perl に触れる
Perl 嫌い病を発症
Perl から逃げまわる日々が続く
2008 年 はてなインターンに参加
Perl オブジェクト指向の正しい作法を学ぶ
Perl 嫌い病が治った勢いで CPAN Author に
伊奈 林太郎 (id:tarao) HTML からの本文抽出
5. 自己紹介 — Perlとの出会い
2001 年 掲示板 CGI を改造するために Perl に触れる
Perl 嫌い病を発症
Perl から逃げまわる日々が続く
2008 年 はてなインターンに参加
Perl オブジェクト指向の正しい作法を学ぶ
Perl 嫌い病が治った勢いで CPAN Author に
2009 年 なぜか Kansai.pm で発表
Perl に詳しい人たちにフルボッコにされる (?)
伊奈 林太郎 (id:tarao) HTML からの本文抽出
14. 背景 — 既存のアプローチ
• HTML::ContentExtractor
• HTML::TreeBuilder を使っているので遅い
• ゴミが多く残る
• HTML::Content::ContentExtractor
• トークンに分解しないといけない
⇒ 日本語には不向き
• Webstemmer
• ニュースサイトに強い
• レイアウトが似た系統でないと抽出できない
⇒ 一般のサイトで十分な性能が出るわけではない
伊奈 林太郎 (id:tarao) HTML からの本文抽出
20. アルゴリズム — 基本アイディア
1 明らかに要らないタグは削ぎ落とす
2 HTML を適当なブロック要素ごとに分割
3 分割された各ブロックにスコアをつける
• 本文っぽさでスコア増
• 本文っぽくなさでスコア減
4 つながっているブロックをまとめてクラスタにする
• ブロックのスコアの合計がクラスタのスコア
5 スコアの一番高いクラスタが本文
伊奈 林太郎 (id:tarao) HTML からの本文抽出
21. アルゴリズム — 本文っぽさ
本文っぽさ
• 句読点がいっぱいあると本文っぽい
• テキストノードの文字列が長いと本文っぽい
本文っぽくなさ
• リンクばっかり並んでるところは本文っぽくない
伊奈 林太郎 (id:tarao) HTML からの本文抽出
22. アルゴリズム — ブロックのつながり判定
本文が 1 ブロックとは限らないので適度につなげる
• 高スコアのブロックが連続したらクラスタっぽい
• スコアの低いブロックがきたらクラスタの切れ目っぽい
(ただし直前のブロックのスコアの高さにも配慮)
例:
低 A
高 B
高 C
低 D
低 E
高 F
低 G ← 低いけれど F が超高スコアなので切れ目にしない
高 I
⇒ クラスタは {B, C}, {F, G, I}
伊奈 林太郎 (id:tarao) HTML からの本文抽出
23. アルゴリズム — 傾斜配点
ブログなどで, コメントは本文より低い点にしたい
• 上にある方が本文っぽいということにする
• スコアは下にいくほど減衰
⇒ 下にいくほどクラスタの切れ目と見なされやすい
例:
低 A
高 B
高 C
低 D
低 E
低 F ← 減衰して低スコアに
低 G
低 I ← 減衰して低スコアに
⇒ クラスタは {B, C}
伊奈 林太郎 (id:tarao) HTML からの本文抽出
25. 発展 — 業務レベルで使うために
• ヒューリスティクスではうまくいかない場合がある
• 他のもっと確実な方法と組み合わせるとよい
• 複数の抽出エンジンを用意する
• Chain of Responsibility
抽出エンジンを順に試して成功したものの結果を返す
ヒューリスティクスに頼るのは最後
• エンジンの追加を簡単にできるようにする
フレームワーク++
伊奈 林太郎 (id:tarao) HTML からの本文抽出
26. 発展 — あると便利な抽出エンジン
• API を使って説明部分を取得
(e.g. ニコニコ動画, YouTube, Amazon)
• 特定サイトに特化してルールベースで抽出
• GoogleAdsense の情報を使う
• フィードを使う
• 複数試して一番良い結果を選択するメタエンジン
伊奈 林太郎 (id:tarao) HTML からの本文抽出