Web日本語Nグラム第1版 Copyright 2007 Google Inc. All Rights Reserved 1. 概要 「Web日本語Nグラム」は日本語の単語n-gramとその出現頻度をまとめた 大規模言語リソースです。統計翻訳、統計的言語モデル、音声認識等への応用が期待できます。 1.1 対象Webページ n-gramは一般に公開されているWebページでGoogleがクロールしたものから抽出されています。 ただし、閲覧に特別な権限が必要なページや一般に公開されていないページ、 metaタグにnorachive, noindex 等が指定されているページは対象に入っておりません。 原則として日本語のテキストを対象にしていますが、他の言語が混入している場合もあります。 以下、対象Webページ集合を単に「コーパス」と呼ぶ事があります。 1.2 対象Webページの採取期間 2007年7月のスナップショットからn-gramデータを構築しています。 それ以降に作成されたページのデータは含まれておりません。 2. データの詳細 2.1 前処理 日本語のn-gram抽出にあたり、以下の前処理を (1) ~ (5) の順番で行っています。  (1) 文字コード変換  (2) 正規化  (3) 文の分割  (4) 対象文の同定、選別  (5) 単語分割 2.1.1 文字コード変換 コーパスは一旦UTF8に変換したのち、n-gramを抽出しています。 n-gramデータはすべてUTF8エンコーディングで保存されています。 2.1.2 正規化 すべての文字列は Unicode が定める NFKC により正規化しています。 日本語に影響する主な正規化には以下があります。   - 全角英数字 → 半角英数字   - 半角カタカナ → 全角カタカナ   - ローマ数字 → アルファベット (Ⅲ → III)   - 特殊記号 (㈱ → (株), ㌧ → トン) 詳細は Unicode のページ http://unicode.org/reports/tr15/ をご覧ください NFKCの実装には ICU http://www-306.ibm.com/software/globalization/icu/index.jsp を用いています。具体的には以下の C++ コードで行っています。   UnicodeString src = "元の文字列";   UnicodeString dst;   UErrorCode status = U_ZERO_ERROR;   Normalizer::normalize(src, UNORM_NFKC, 0, dst, status);   if (U_SUCCESS(status)) {     return dst;   } else {     return src;    // 失敗した場合は元の文字列をそのまま使う   } 2.1.3 文の分割 ".", "!", "?", ".", "。", "!", "?" をデリミタとして文を抽出しています。 そのため「モーニング娘。」や「Yahoo!」 といった単語を含む文は、文法上不適切な位置で分割される可能性があります。 2.1.4 対象文の同定、選別 以下の条件に1つでも該当する文は抽出対象から除外しています。 1. 5文字以下もしくは1024文字以上 (Byte数ではなく、Unicode文字数) 2. ひらがなが全体の5%未満 3. 日本語のcode point(下記参照)の割合が70%未満 参考: 判定に用いた日本語code point (UCS2) U3040 .. U30FF U31F0 .. U31FF U3400 .. U34BF U4E00 .. U0FFF UF900 .. UFAFF 2.1.5 単語分割 単語分割は、http://mecab.sourceforge.net から入手可能な mecab-0.96 と mecab-ipadic-2.7.0-20070801 を用いています。 分割結果は一切加工していませんので、解析エラーはそのまま最終データに反映されています。 参考:MeCabのインストール % tar zxfv mecab-0.96.tar.gz % cd mecab-0.96 % ./configure % make # make install 参考:Ipadicのインストール % tar zxfv mecab-ipadic-20070801.tar.gz % cd mecab-ipadic-20070801 % ./configure --with-charset=utf8 % make # make install 2.2 未知語トークン n-gram 中の トークンは、基本語彙に入っていない語彙です。 基本語彙については 3.1をご覧ください。 2.3 文境界マーク , はそれぞれ文頭, 文末をあらわす特別なトークンです。 1-gram中の の頻度は対象文数を示します。 3. 頻度のカットオフ 3.1 基本語彙カットオフ 基本語彙集合とは、コーパス中に50回以上出現した単語の集合のことです。頻度が 50未満の単語は未知語トークン ()に置換されています。 3.2 N-gram カットオフ 出現頻度が20回以上のn-gramを抽出対象にし、頻度が20未満のn-gramは配布データ に含まれていません。 4. データフォーマット 4.1 トップディレクトリ 各DVDのトップディレクトリには doc, data の2つのディレクトリがあります。 doc:  ドキュメント data:  n-gram のデータ データは、1枚目から 1-gram, 2-gram, ... の順にディスクの容量ごとに分割し収録しています。 ただしインデックスファイルは全ディスクに収録しています。(4.4.2参照) 4.2 dataディレクトリ 1gms, 2gms ~ 7gms のサブディレクトリがあります。それぞれ 1~7 gram のデータが保存されています。 ただし、1gmsについては n-gram 以外のデータも保存されています。(4.3参照) 4.3 1gms ディレクトリ 4.3.1  vocab.gz ファイル vocab.gz には gzip で圧縮された基本語彙が下記のフォーマットで保存されています。 TOKEN COUNT 各トークンは UTF8コードの辞書順で並べられています。 4.3.2 vocab_cs.gz ファイル vocab.gz と基本的に同一ですが、頻度によりソートされています。 4.4 1gms ~ 7gms ディレクトリ "1gms", "2gms", "3gms", "4gms", "5gms", "6gms", "7gms" サブディレクトリ 1~7gram データが6枚のDVDに保存されています。 4.4.1 Ngm-KKKKK.gz ファイル 各ファイル名は Ngm-KKKK.gz となっています。Nは n-gramの次数, KKKKK はファイル番号となっています。各ファイルには1000万n-gramが 保存されています。 n-gramはUTF8の辞書順でソートされています。 各ファイルはgzipで圧縮されたテキストファイルです。 1行に1つのn-gramが以下のフォーマットで保存されています。 WORD_1 WORD_2 ... WORD_N COUNT 4.4.2 Ngm.idx ファイル どの n-gram がどのファイルに保存されているかを示したインデックスファイルです。 以下のフォーマットで保存されています。 ファイル名 そのファイルに保存されている最初の n-gram 5. データサイズ すべてのn-gramデータは gzip で圧縮されており、総データサイズは およそ26GBです。 総単語数: 255,198,240,937 (2550億) 総文数: 20,036,793,177 (200億) 異なり 1-gram 数: 2,565,424 異なり 2-gram 数: 80,513,289 異なり 3-gram 数: 394,482,216 異なり 4-gram 数: 707,787,333 異なり 5-gram 数: 776,378,943 異なり 6-gram 数: 688,782,933 異なり 7-gram 数: 570,204,252 (注意): 総単語数はn-gramを作成した元テキストの全単語数で、 本データ中にある全単語数ではございません。 2550億/200億が平均文長となります。 6. 出典情報 本データを使用して得られた知見に関する研究発表あるいは成果発表を行う場合、 以下の出典情報を明記してください。 日本語の場合: 工藤拓、 賀沢秀人著、「Web 日本語Nグラム第1版」、言語資源協会発行 その他の場合: Taku Kudo, Hideto Kazawa, “Web Japanese N-gram Version 1”,                     published by Gengo Shigen Kyokai 7. 連絡先 japanese-corpus@google.com にてデータに関する質問やその他フィードバックを 受け付けております。 工藤 拓, 賀沢 秀人 Google株式会社 2007年8月