第 6 章 Web データ管理 67
6.4 Web 標準フォーマット
6.4.1 日本語文の抽出
日本語文の境界を認識し,Webページの本文を文単位に区切る.この処理は以下のステップからなる.
Step 1. HTMLタグ,改行を利用した段落の認識
Step 2. 句点,顔文字を利用した段落内の文分割
6.4 Web標準フォーマット 73
<Header>
<Title>
<RawString>京都大学ホームページ</RawString>
</Title>
<OutLinks>
<OutLink>
<RawString>受験生の方へ</RawString>
<DocIDs>
<DocID>400</DocID>
</DocIDs>
</OutLink>
</OutLinks>
<InLinks>
<InLink>
<RawString>京大</RawString>
<DocIDs>
<DocID>300</DocID>
<DocID>500</DocID>
</DocIDs>
</InLink>
<InLink>
<RawString>トップへ戻る</RawString>
<DocIDs>
<DocID>300</DocID>
</DocIDs>
</InLink>
</InLinks>
</Header>
図6.4 ヘッダー部の例
Step 3. 文分割の後処理 Step 4. 箇条書きの処理
6.4.1.1 HTMLタグ,改行を利用した段落の認識
ブロックタグで囲まれたテキストを段落として抽出し,抽出されたテキスト中で改行が2連続以上ある 場合は,段落の切れ目と見なし段落を分割する.段落として抽出されたテキストに対して以下の処理を 行う.
• アンカー処理
• HTML タグの消去と HTML エンティティのデコード (HTML::Entity::decodeentities 関数を 利用)
• 全角に変換
• 漢字間の空白を詰める
• 文字の正規化
• カタカナに後続するハイフンの統一
• UTF8からeuc-jpにマップできない文字の置換
• 波ダッシュ問題への対処
<S Id="1" Length="70" Offset="525">
<RawString>小泉総理の好きな格言のひとつに「無信不立(信無くば立たず)」があります.</RawString>
<Annotation Scheme="KNP">
<![CDATA[* 1D <文頭><サ変><人名><助詞><連体修飾><体言><係:ノ格><区切:0-4><RID:1056>
小泉 こいずみ 小泉 名詞 6 人名 5 * 0 * 0 NIL <文頭><漢字><かな漢字><名詞相当語><自立><タグ単位始><文 節始><固有キー>
...中略...
ます ます ます 接尾辞 14 動詞性接尾辞 7 動詞性接尾辞ます型 31 基本形 2 NIL <表現文末><かな漢字><ひらが な><活用語><付属><非独立無意味接尾辞>
. . . 特殊 1 句点 1 * 0 * 0 NIL <文末><英記号><記号><付属>
EOS]]>
</Annotation>
</S>
<S Id="2" Length="160" Offset="595">
<RawString>論語の下篇「顔淵」の言葉で,弟子の子貢(しこう)が政治について尋ねたところ,孔子は「食料を十
分にし軍備を十分にして,人民には信頼を持たせることだ」と答えました.</RawString>
<Annotation Scheme="KNP">
<![CDATA[* 1D <文頭><助詞><連体修飾><体言><係:ノ格><区切:0-4><RID:1056>
論 ろん 論 名詞 6 普通名詞 1 * 0 * 0 "漢字読み:音 代表表記:論" <漢字読み:音><代表表記:論><文頭><漢 字><かな漢字><名詞相当語><自立><タグ単位始><文節始>
...中略...
ました ました ます 接尾辞 14 動詞性接尾辞 7 動詞性接尾辞ます型 31 タ形 5 NIL <表現文末><かな漢字><ひら がな><活用語><付属><非独立無意味接尾辞>
. . . 特殊 1 句点 1 * 0 * 0 NIL <文末><英記号><記号><付属>
EOS]]>
</Annotation>
</S>
...中略...
</Text>
図6.5 テキスト部の例 (KNPによる解析結果有)
6.4.1.2 句点,顔文字を利用した段落内の文分割
以下の文字(列)を手がかりに,段落内のテキストを文に分割する.
「。」「?」「!」「♪」「…」「・・・」
ただし,括弧内の文区切り文字は無視する.
6.4.1.3 文分割の後処理
抽出された文の列に対し,以下のルールを適用して,誤分割を修正する.
ルール1. 「 」が注目している文と直前の文に奇数個含まれている場合は,注目している文を直前の文 と連結
ルール2. 注目している文が「A.」のような箇条書きの見出しを表す文字列のみの場合は,直後の文と 連結
ルール3. 注目している文の文頭が「と」「っ」「です」であり,直前の文の文末が「閉じ括弧」「!」「?」
の場合は直前の文と連結
6.4 Web標準フォーマット 75
表6.2 オリジナルのWebページと標準フォーマットデータのファイルサイズ(約1.2億ページ,gzip圧縮時)
ファイルの種別 サイズ[TB]
オリジナルのWebページ(utf8変換前) 1.4 標準フォーマット変換済データ 12
誤分割修正後,顔文字,(笑)(汗)などの感情を表す表記を手がかりに文を再度分割する.
6.4.1.4 箇条書き処理
テキストベースの箇条書きを1文に変換する. 例えば,以下の箇条書きは,文「次のお店_・さえずり
_・のら酒房_・串カツ屋_は美味しいです」として認識される(_は全角空白).
S1 以下のお店、
S2 ・さえずり S3 ・のら酒房 S4 ・串カツ屋 S5 は美味しいです。
その一方で,以下のような箇条書き S1 以下にお店を列挙します。
S2 ・さえずり S3 ・のら酒房 S4 ・串カツ屋 S5 これらのお店は...
は各項目を別々の文として認識する.
S1 以下にお店を列挙します。
S2 ・さえずり S3 ・のら酒房 S4 ・串カツ屋 S5 これらのお店は...