Baiduブログ・掲示板時間軸コーパス Copyright 2010 Baidu Japan Inc. All Rights Reserved * 概要 「Baiduブログ・掲示板時間軸コーパス」は、バイドゥ株式会社(以下、バイドゥという)のクロールしたウェブデータから、掲示板の書き込みおよびブログの本文を、書き込まれた正確な時間とともに抽出して時系列に並べたデータを元にして作成したコーパスです。具体的には、2000年1月~2010年7月の期間に対して、各1ヶ月ごとにスライスし、Nグラム(ユニグラム~トライグラム)の統計を計算しています。 * 特徴 大規模:   バイドゥのウェブデータから抽出した掲示板・ブログのデータ(1千万文以上)を対象にしています 時間軸:   時間表現・タイムスタンプを元に文の抽出を行っているので、言語現象の内容とその発生した時間の対応が正確に把握できます(ある時点のウェブのスナップショットではありません) 長期間:   日本で電子掲示板が普及した 2000年~現在の期間を対象としています。 高精度:   高精度な文フィルタリング(以下参照)によって、ノイズやアスキーアートなどの混入を最小限に抑えています。 * 利用条件 別途利用条件 (Baidu_Terms_and_condition_Corpus.pdf) を参照ください。 なお、本コーパスを使用して得られた知見に関する研究発表あるいは成果発表を行う場合、以下の出典情報を明記してください。 日本語: バイドゥ株式会社「Baidu ブログ・掲示板時間軸コーパス」 英 語: "Baidu Blog and Forum Timed Corpus", by Baidu Japan Inc. * ブログ・掲示板データの収集 バイドゥウェブ検索向けに2010年7月末までにクロールした Web ページからランダムサンプリングしたもののうち、以下の条件にあてはまるページを用いています。 ** ブログデータの収集 ブログデータの収集には、RSS/RDF/ATOM のメタデータを用いています。ページ内埋め込みのRDFも含め、これらのメタデータを収集し、 - RDF: item 要素内の description が本文, dc:date が時間 - RSS: item 要素内の description が本文, pubDate が時間 - ATOM: entry 要素内の summary (存在しなければ content を使用) が本文, issued (存在しなければ、modified, created, updated を順に使用) が時間 を抽出し、本文と時間を結びつけています。該当する要素が無い場合は、そのメタデータを解析に用いません。なお、はてなダイアリーについては、個別記事の URL から時間を、 および に挟まれた部分を本文として抽出しています。HTML からのテキスト抽出については、以下の「テキスト抽出」を参照下さい。コーパスには、抽出された本文の先頭5行のみを用いています。また、重複文(直前の文と全く同一の文)および以下の「文フィルタリング」の条件に当てはまるものは除いています。 URL に 'blog' 'article' 'diary' 'plaza.rakuten' 'd.hatena.ne.jp' のいずれかが含まれるページのみを対象としています。また、 URL に 'auction' が含まれるページは除外しています。 ** 掲示板データの収集 まず、'YYYY/MM/DD(DoW) HH:mm:SS' 等の日付表現を手がかりにして、掲示板の投稿と思われる部分を収集しています。YYYY(西暦)の部分は 92 (1992) から 10 (2010) までです。また、DoWは曜日 (月~日) です。日付表現の後続3行を、その投稿の本文として抽出しています。また、重複文(直前の文と全く同一の文)および以下の「文フィルタリング」の条件に当てはまるものは除いています。 なお、URL に 'blog' 'article' 'diary' 'auction' の含まれるページは除外しています。また、偏りを避けるために、単一のページから抽出する投稿の数は最大 100 に制限しています。 * データの詳細 ** テキスト抽出 テキスト抽出には、BeautifulSoup 3.0.8 http://www.crummy.com/software/BeautifulSoup/ を利用しています。具体的には、以下のコード (Python): soup = BeautifulSoup(html) によって html をパースした後、 def strip_tags(soup): return ''.join(s.string if s.string else strip_tags(s) for s in soup) によって HTML タグを取り除いた結果を使用しています。また、HTML 中の JavaScript やコメントは削除しています。ここでパースに失敗した mal-formed な HTML は n-gram のカウントからページごと除外しています。 ** 正規化 文字コードは全て UTF8 に変換してあります。 英数字・記号は半角に正規化しています。具体的には、日本語code point (UCS2) の UFF00-UFF5F を U0020-U007Fにシフトしています。また、カタカナは全角に正規化しています。 その他の文字については、正規化を行っていません。 ** 文フィルタリング 以下の条件に1つでも該当する文は抽出対象から除外しています。 1. 5文字以下もしくは1024文字以上 (Byte数ではなく、Unicode文字数) 2. ひらがなが全体の5%未満 3. 日本語のcode point(下記参照)の割合が70%未満 U3040 .. U30FF U31F0 .. U31FF U3400 .. U34BF U4E00 .. U9FFF UF900 .. UFAFF ** 形態素解析 抽出された文を、mecab-0.98 および mecab-ipadic-2.7.0-20070801 を用いて形態素に分割しています。文頭、文末は , トークンによって表示しています。 ** 頻度のカットオフ a. 基本形態素カットオフ 基本形態素とは、コーパス中(全期間通じて) 10 回以上出現した形態素のことです。頻度が 10 未満の形態素は未知語トークン に置換されています。 b. n-gram カットオフ 最終的に、出現頻度が n 回以上の n-gram のみを出力しています。ここで、頻度の閾値 n は、各期間に応じて以下のように決定しています: 2000年1月 - 2005年12月 n = 2 2006年1月 - 2007年12月 n = 3 2008年1月 - 2008年12月 n = 4 2009年1月 - 2010年7月 n = 5 * データ形式 コーパスは、"YYYY-MM.Ngm" の形式のファイル名から構成されています。ここで、YYYY, MM, N はそれぞれ YYYY: 年 (2000 - 2010) MM : 月 (00 - 12) N : グラム数 (1 - 3) を表しています。11年×12ヶ月×3-gram(ただし2010年は7月までなのでマイナス5ヶ月×3-gram)で、合計 381個のファイルが含まれています。 各ファイルはテキストファイルで、1行に1つのn-gramが以下のフォーマットで保存されています。 WORD_1 WORD_2 ... WORD_N COUNT なお、各期間の総文数(=トークンの出現数)は以下の通りです。 2000-01 882 2000-02 1526 2000-03 1515 2000-04 1012 2000-05 1948 2000-06 3235 2000-07 4347 2000-08 4047 2000-09 4632 2000-10 5996 2000-11 6246 2000-12 7382 2001-01 8708 2001-02 6197 2001-03 8742 2001-04 9784 2001-05 11660 2001-06 13213 2001-07 12658 2001-08 13299 2001-09 10649 2001-10 15771 2001-11 16213 2001-12 17226 2002-01 22791 2002-02 23192 2002-03 23561 2002-04 22440 2002-05 24338 2002-06 25882 2002-07 25275 2002-08 29830 2002-09 26383 2002-10 26636 2002-11 22302 2002-12 26106 2003-01 24960 2003-02 24574 2003-03 24344 2003-04 21488 2003-05 28691 2003-06 29726 2003-07 40971 2003-08 33700 2003-09 31258 2003-10 25112 2003-11 26627 2003-12 29243 2004-01 44115 2004-02 34495 2004-03 35199 2004-04 27674 2004-05 36636 2004-06 33155 2004-07 33955 2004-08 41930 2004-09 31756 2004-10 33111 2004-11 29818 2004-12 30835 2005-01 41734 2005-02 42974 2005-03 49567 2005-04 46772 2005-05 54137 2005-06 54357 2005-07 59425 2005-08 58962 2005-09 61051 2005-10 71576 2005-11 64681 2005-12 68259 2006-01 89185 2006-02 75507 2006-03 81530 2006-04 70522 2006-05 76088 2006-06 88833 2006-07 93372 2006-08 94306 2006-09 92990 2006-10 96752 2006-11 88077 2006-12 89798 2007-01 95391 2007-02 88630 2007-03 101216 2007-04 100058 2007-05 105455 2007-06 109761 2007-07 117943 2007-08 133837 2007-09 137861 2007-10 149631 2007-11 130292 2007-12 129787 2008-01 129347 2008-02 134472 2008-03 138617 2008-04 133460 2008-05 143780 2008-06 147548 2008-07 146893 2008-08 146080 2008-09 166552 2008-10 176779 2008-11 151224 2008-12 153791 2009-01 165300 2009-02 158106 2009-03 170377 2009-04 165189 2009-05 182212 2009-06 176960 2009-07 203245 2009-08 212950 2009-09 205635 2009-10 238328 2009-11 238945 2009-12 293403 2010-01 252338 2010-02 239220 2010-03 297539 2010-04 272103 2010-05 335034 2010-06 331260 2010-07 301275 合計 10557276 * 利用サンプルスクリプト 本コーパスでは、コーパス利用のサンプルスクリプト (Python) bbftc_sample.py を配布しています。使用方法は、 python bbftc_sample.py ... で、 にある本コーパスのデータを基にして、Nグラム ... の出現率の時系列変化をグラフで表示します。 ... は両方とも省略でき、省略した場合 はカレントディレクトリ、 は "藁" になります。