| Up | データの前処理 | 作成: 2026-02-17 更新: 2026-02-17 |
ウェブページはそのままではノイズが多い。 ウェブページ前処理は,データベクトルの品質を支える基盤処理。 これは「埋め込み」の前に行われる 前処理は,多くの場合,ルールベースの処理(プログラム)で行われる。 翻って, AI を使うほど複雑ではない HTML の構造は規則的 ノイズ除去は決定的なルールで十分 AI を使うとコストが高い 但し,最近の大規模検索エンジンでは,一部の前処理 (高度な文書構造理解が必要な場合) に AI モデルを使うこともある。 LayoutLM 系のモデル(文書レイアウト理解モデル)など。 前処理は,複数の段階的アルゴリズムの組み合わせで構成される。 (2) 不要要素の除去(ノイズ除去) (3) 本文抽出(Boilerplate Removal) (4) テキスト正規化(Normalization) (5) 文分割(Sentence Splitting) (6) トークン化(Tokenization) (1) HTML パース(構文解析) HTML を DOM(木構造)として読み込む 各ノード(タグ)を木として保持 ノードの種類(p, h1, div, script…)を分類 使われる技術 HTML パーサー(BeautifulSoup, lxml など) これは AI ではなく決定的アルゴリズム (2) 不要要素の除去(ノイズ除去) 広告,ナビゲーション,フッター,スクリプトなどを削除する アルゴリズム例 <script>, <style> タグを削除 class="advertisement" のような既知の広告クラスを削除 <nav>, <footer> などの構造タグを削除 画像の alt テキストは残す(検索に有用) ここも AI は使わず,ルールベース (3) 本文抽出(Boilerplate Removal) 代表的なアルゴリズム
中心性の高い段落を本文とみなす ・ Readability(Firefox の記事抽出アルゴリズム)
テキスト量 リンク密度 タグ種類(p, h1 は高スコア) スコア最大のノードを本文と判定 ・ Boilerpipe(機械学習ベース)
テキスト密度 平均文長 リンク比率 SVM などで本文/非本文を分類 ここは場合によっては AI を使う (ただし Transformer ではなく軽量 ML) (4) テキスト正規化(Normalization) HTML エンティティのデコード(& → &) 改行・空白の正規化(複数空白 → 1 つ) Unicode 正規化(NFKC) 小文字化(英語の場合) 記号の統一(例:全角 → 半角) 数学的には「写像」ではなく単純な置換処理 (5) 文分割(Sentence Splitting) 句読点(。!?)で分割 英語ならピリオド + 大文字で分割 例外処理(Mr., Dr., U.S. など) 代表的な手法 ルールベース(正規表現) Punkt(統計モデル) AI を使う場合もあるが,軽量モデルが多い。 (6) トークン化(Tokenization) アルゴリズム SentencePiece / BPE によるサブワード分割 語彙表(vocab)に基づいて ID に変換 数学的には text → (t1,t2,…,tn) |