131 Views
March 29, 11
スライド概要
2023年10月からSpeaker Deckに移行しました。最新情報はこちらをご覧ください。 https://speakerdeck.com/lycorptech_jp
大規模日本語ブログコーパスにおける言語モデルの構築と評価 奥野 陽 颯々野 学 ヤフー株式会社 {yookuno, msassano}@yahoo-corp.jp 1 はじめに 語モデルの振る舞いを定量的に確認することには意義 がある. 自然言語処理の分野において,確率的言語モデル そこで,我々は大規模な日本語コーパスの 1 つとし (以後,言語モデル)はコーパスに基づく統計的手法 てブログコーパスを選択し,言語モデルの構築を行っ の一つとして 90 年代から盛んに研究されてきた [1]. た.ブログコーパスを選択した理由は,入手や扱いが 言語モデルは音声認識や機械翻訳に応用されており, 容易であることと,一般の人々によって書かれている 言語の自然さをモデル化するために有用である.また, ことの 2 つがある.後者の性質によって,一般の人々 日本語処理に関しては形態素解析や仮名漢字変換にお が使う仮名漢字変換や音声認識などの入力システムに いて大きな役割を果たしている [2]. おいては Web 全体を使うよりも有利に働く可能性が 近年,Web やブログの普及により大規模な日本語 ある. コーパスを手に入れることができるようになってきた. 本論文では,ブログをテストコーパスとするクロス 言語モデルをはじめとする統計的手法では,コーパス エントロピーによって言語モデルの評価を行う.また, が大規模であるほどパラメータ推定の信頼性が上がっ 大規模な言語モデルを応用する上で重要なモデルサイ たり,自由度の高いモデルを利用できたりするため, ズと性能との関係について調査する. 大規模コーパスの恩恵は大きい. しかしながら,そのような大規模コーパスによる言 語モデルには以下に挙げる 2 つの問題点がある. 関連研究 2 構築時の問題点 大規模なコーパスから N-gram を集 言語モデルにはいろいろな種類があるが,本論文で 計する処理には,莫大な計算とメモリを必要とす は基本的な単語 N-gram モデル [3] を扱う.大規模な る.また,そもそも大規模コーパスを 1 台のコン 言語モデルの構築に関する研究としては,低頻度語の ピュータに保存することは難しい. 切り捨てについての検討 [4] や,MapReduce を用いて 利用時の問題点 言語モデルを実際に利用するには,検 索などの必要な操作をリアルタイムに行える必要 がある.そのためには,言語モデルをメモリ上に 読み込めることが望ましいが,大規模な言語モデ ルでは現在のコンピュータのメモリ搭載量を上回 ることが多い. 言語モデルを構築する手法 [5],ストリーミングによ る集計 [6] などがある.大規模な言語モデルの利用に 関しては,簡潔データ構造の一種である LOUDS の利 用 [7] や,N-gram の分散検索を提案した研究 [8] があ る.本論文では議論を単純化するため,特別な圧縮な どは用いずシンプルな方法で言語モデルを利用する場 合のデータ量や性能の振る舞いについて報告する. これらの問題はデータ量と性能とのトレードオフで あり,完全に解決する方法は見つかっていない.その ため,言語モデルの応用を考える上でそのトレードオ フについて知ることは重要である. また,大規模なコーパスを扱える環境は現在では限 言語モデル 3 3.1 単語 N-gram モデル られており,特に日本語のコーパスにおける研究は非 言語モデルの役割は,与えられた単語列 w1n = 常に少ない.そのため,大規模な日本語コーパスで言 w1 , ...wn に対し,その生成確率 P (w1n ) を計算するこ とである.
単語 N-gram モデルは単語列に N − 1 次のマルコフ 性を仮定し,以下のようにモデル化する. 中間の単語列,c は最も右の単語を表す.b は可変長 の単語列であり,空文字列を許す. コーパス中に出現した頻度をそのまま使うと,低頻 P (w1n ) = n ∏ P (wi |w1i−1 ) = n ∏ 度の単語が不当に高確率になりやすいという問題が生 i−1 P (wi |wi−N +1 ) (1) i=1 i=1 じる.このため観測された頻度から定数 D を差し引 き,修正された頻度を使う方法が Absolute ディスカ i−1 十分なデータが利用可能ならば,P (wi |wi−N +1 ) を ウンティングである. 学習データ中の単語列の相対頻度によって推定するこ とができる. P (c|ab) = i C(wi−N +1 ) i−1 P (wi |wi−N +1 ) = ここで C(wij ) は単語列 wij (2) i−1 C(wi−N +1 ) ここで N (ab∗) はコーパス中で単語列 ab の後ろに が学習コーパス中に出現 した回数(頻度)を表す.式 (2) は,文脈 max(0, C(abc) − D) + DN (ab∗)P (c|b) C(ab∗) (4) i−1 wi−N +1 続く単語の種類数である. が 与えられたときの単語 wi の分布が多項分布に従うと 仮定した場合の最尤推定に相当する. 3.4 Kneser-Ney スムージング きるパラメータ推定に必要なデータ量は増えていくた Absolute ディスカウンティングにおいて最も高次 の N-gram はそのままに,低次の N-gram をより滑ら め,最尤推定のアプローチは現実的ではない.N に対 かにするために単語列の異なり数を用いたモデルが して十分なデータ量がない状態で最尤推定を行うと, Kneser-Ney スムージングである [10]. しかしながら,N が大きくなるほど指数的に信頼で コーパス中に出現しない単語列の確率が 0 になってし まう.このような問題はゼロ頻度問題あるいはスパー 3.2 max(0, N (∗bc) − D) + DR(∗b∗)P (c|b) N (∗b∗) (5) ここで R(∗b∗) = c : N (∗bc) > 0 であり,∗b∗ とい うパターンに当てはまる N-gram の右側の単語の種類 P (c|ab) = スネス問題と呼ばれている. Dirichlet スムージング ゼロ頻度問題に対処するための単純な方法として, i−1 N-gram の分布 P (wi |wi−N +1 ) の事前分布として Dirichlet 分布を導入し,そのハイパーパラメータが (N1)-gram 確率に比例すると仮定することで,以下の形 数を表す. 3.5 クロスエントロピー 訓練コーパスから構築した言語モデルの性能を評価 式を得る [9]. するために,テストコーパス w1n に対するクロスエン i−1 P (wi |wi−N +1 ) = i−1 i C(wi−N +1 ) + αP (wi |wi−N +2 ) i−1 C(wi−N +1 ) + α (3) 式 (3) を Dirichlet スムージングと呼ぶ.(N-1)-gram i−1 確率 P (wi |wi−N +2 ) を推定するには再帰的に Dirichlet スムージングを適用し,1-gram 確率 P (w) にたどり 着いたら最尤推定 P (w) = C(w) C によって求める.こ こで C は全単語数である. 3.3 トロピーを用いる. Absolute ディスカウンティング 簡単のためここから [4] にならって単語列 wij を abc と書く.ここで,a は単語列の中の最も左の単語,b は 1∑ log2 P (wi |w1i−1 ) n i=1 n H=− (6) H の単位は bit である.クロスエントロピーの指数 P P = 2H はパープレキシティと呼ばれる.クロスエ ントロピーとパープレキシティは,値が小さいほどモ デルがテストコーパスによく適合していることを示す. 3.6 MapReduce による N-gram 集計 大規模コーパスから単語 N-gram 言語モデルを推定 i するには,単語 N-gram の頻度 C(wi−N +1 ) を集計す る必要がある.このために,並列分散処理のための
Map(int id, string doc): string[] words = MorphologicalAnalyze(doc) for i = 1 to size(words)-N+1 Emit(words[i..i+N-1], 1) Reduce(string[] words, int[] counts): sum = 0 for each count in counts sum += count Emit(words, sum) 表 1: ウェブ日本語 N グラムの実験結果 (bit) Wikipedia Blog N Dirichlet Kneser-Ney Dirichlet Kneser-Ney 1 10.65 10.65 10.77 10.77 2 8.71 8.52 9.63 9.44 3 7.72 5.15 9.21 6.87 4 7.09 5.23 9.35 7.70 5 6.64 5.69 9.43 8.73 6 6.73 6.25 9.48 9.33 7 6.47 6.23 9.49 9.62 図 1: MapReduce による N-gram 集計 実験設定 4.2 フレームワーク MapReduce[11] を用いて図 1 の疑似 コードのように Map 関数と Reduce 関数を用いて集 計する.本論文で扱うコーパスは日本語コーパスであ るため単語分割には形態素解析を用いた. 大規模コーパスは分散ファイルシステムによって多 数のコンピュータに配置され,それぞれのコンピュー タ内で Map 関数が実行される.Map 関数が終了する と,同じキーのデータが同じコンピュータに行くよう Shuffle フェーズがフレームワーク側によって自動的に 実行され,そのコンピュータの中で Reduce 関数が実 行される.本論文ではオープンソースの MapReduce 本実験に用いたデータは,Yahoo! ブログ検索のク ローラが収集したブログの本文テキストである.ク ロール期間は 2009 年 10 月から 2010 年 10 月までの 1 年間,データサイズは LZO 圧縮状態で合計約 2TB で ある. 集計に用いた Hadoop クラスタは,スペックが 1CPU/12GB Memory/1TB*4 HDD のサーバ 20 台 (マスター 1 台+スレーブ 19 台)で構成されている. 形態素解析には Yahoo! 形態素解析 API と同等のラ イブラリを用いた. 実装である Hadoop を用いる. 4.3 実験 4 4.1 予備実験 実験結果 コーパスサイズ(LZO 圧縮状態)と N を変えて集 計に必要な時間を測定した結果を表 2 に示す. 予備実験として,ウェブ日本語 N グラム [12] の全 データを用いたクロスエントロピーの評価を行った. 処理 表 2: 集計時間(時間:分) 860GB 2TB テストコーパスとして,Wikipedia とブログからそれ 形態素解析 9:50 ぞれ 1000 文のテキストをサンプリングし mecab 0.98 1-gram 2:14 7:42 で分かち書きした.未知語については特別な種類の 1 2-gram 3:34 13:45 つの単語として扱った.パラメータ α と D は 1 から 3-gram 5:02 20:43 10000 の間で 10 倍おきに試し最良の値を用いた.実 4-gram 8:58 × 験の結果を表 1 に示す. 5-gram 11:12 × 6-gram 13:00 × 7-gram 14:48 × 予備実験の結果から,以下のことが分かる. • ウェブ日本語 N グラムは Wikipedia のような硬 い文章にはよく適合するが,ブログのようなくだ けた文章には必ずしもよく適合するとは限らない. • スムージング方式は,既存研究と同じく Wikipedia・ブログともに Kneser-Ney が優れている. 28:16 ここで,2TB の 4-gram 以降の「×」はクラスタの 性能不足により集計が行えなかったことを示す. 次に,モデルデータのサイズを変えてクロスエント ロピーの評価を行った結果を 表 3 に示す.モデルデー タには 860GB のコーパスから構築した 1〜7-gram を
使用し,テストコーパスには学習コーパスと同様の形 コーパスの特殊性を示した.モデルサイズと性能のト 態素解析を行ったブログテキスト 1000 文を用いた.ス レードオフについての実験では,アプリケーションに ムージングは Dirichlet スムージングであり,パラメー よって取るべきバランスにおけるモデルサイズと性能 タの決め方は予備実験と同じである. の目安を明らかにした. モデルデータのサイズを変えるために,閾値 100 か ら 10000 の間で切り捨てを行い,モデルサイズとクロ スエントロピーの関係を調べた.ここでモデルサイズ とは各 N の値ごとに N-gram データのテキストファ イルとしてのサイズを調べたものである.スムージン グを行うためには単純にはすべての低次の N-gram の データが必要となる. 表 3: クロスエントロピー (bit) とモデルサイズ (byte) クロスエントロピー モデルサイズ 参考文献 [1] 北 研二, 辻井 潤一. 確率的言語モデル. 東京大学 出版会, 1999. [2] 森 信介, 土屋 雅稔, 山地 治, 長尾 真. 確率的モデル による仮名漢字変換. 情報処理学会論文誌, Vol.40, No.7, pp.2946-2953, 1999. [3] Stanley Chen and Joshua Goodman. An Empirical Study of Smoothing Techniques for Language N 10000 1000 100 10000 1000 100 1 16.25 17.21 17.80 2.8M 9.1M 40M 2 7.71 6.48 7.66 21M 127M 683M 3 8.88 6.41 6.51 30M 293M 2.5G [4] Deniz Yuret. Smoothing a Tera-word Language 4 8.93 6.71 6.18 23M 201M 3.6G Model. ACL-08: HLT, pp.141-144, June 2008. 5 8.66 6.20 5.97 15M 232M 3.5G 6 8.28 5.98 5.74 8.2M 160M 1.6G [5] Thorsten Brants, Ashok C. Popat, Peng Xu, Franz J. Och, Jeffrey Dean. Large Language 7 7.81 5.68 5.65 5.2M 113M 1.1G Models in Machine Translation. EMNLP-ACL, pp.858-867, June 2007. モデルサイズと性能の間にはトレードオフの関係 [6] Graham Cormode, Marios Hadjieleftheriou. Met- があり,どうバランスを取るかはアプリケーションに hods for Finding Frequent Items in Data Streams. VLDB, vol.1 Issue 2, August 2008. よって異なる.例えば言語モデルを多くのサーバに分 散して格納できる場合は,モデルサイズを気にせず性 能を追求することができる.しかし,モバイルや組み 込み機器では小規模なモデルしか利用できないだろう. 表 3 の結果から,それぞれのユースケースにおけるモ デルサイズと性能の目安を知ることができる. 例えば 1 台の PC で言語モデルを利用する場合,現 在の PC の性能を考えるとモデルサイズは 1GB 以内 Modeling. TR-10-09, Computer Science Group, Harvard University, 1998. [7] Taro Watanabe, Hajime Tsukada, Hideki Isozaki. A Succinct N-gram Language Model. ACLIJCNLP, pp.341-344, August 2009. [8] Ahmad Emami, Kishore Papineni, Jeffrey Sorensen. Large-Scale Distributed Language Model. ICASSP, IV-37-IV-40, April 2007. 程度に収めることが望ましい.表 3 の結果から,現実 [9] David J. C. MacKay, Linda C. Bauman Peto. 的なモデルサイズに収めるために閾値 1000 で切り捨 A hierarchical Dirichlet language model. Natural Language Engineering, vol.1 Issue 03, pp.289308, 1995. てた場合でもモデルサイズは 1.1GB 程度でクロスエ ントロピーが 5.68bit という性能を得られることがわ かる.言語モデルを実際に適用する際はデータの圧縮 やアプリケーションに特化した最適化が必要となるが, シンプルな方法で性能を確かめられた意義は大きい. 5 結論 本論文では,大規模な日本語ブログのコーパスから 単語 N-gram 言語モデルを構築し,その評価を報告し た.ウェブ日本語 N グラムを用いた実験ではブログ [10] Kneser R., Ney H.. Improved backing-off for Mgram language modeling. ICASSP, pp.181-184, vol.1, 1995. [11] Jeffrey Dean, Sanjay Ghemawat. MapReduce: Simplified Data Processing on Large Clusters. OSDI, December, 2004. [12] 工藤拓, 賀沢秀人, Web 日本語 N グラム第1版, 言語資源協会発行, 2007.