人工知能特論II 二宮 崇.

Slides:



Advertisements
Similar presentations
PCFG の EM アルゴリズムとス ムージング 二宮 崇 1. 今日の講義の予定 PCFG (Probabilistic Context Free Grammar, 確率付 文脈自由文法 ) EM アルゴリズム スムージング 教科書 北研二 ( 著 ) 辻井潤一 ( 編 ) 言語と計算 4 確率的言語モデル.
Advertisements

プログラミング言語論 第3回 BNF 記法について(演習付き) 篠埜 功. 構文の記述 プログラミング言語の構文はどのように定式化できるか? 例1 : for ループの中に for ループが書ける。 for (i=0; i
自然言語処理 平成 24 年 11 月 5 日 (No5)- 東京工科大学 コンピュータサイエンス学部 亀田弘之.
プログラミング言語論 第10回(演習) 情報工学科 木村昌臣   篠埜 功.
自然言語処理:第3回 1.前回の確認 2.構文解析 3.格文法.
Problem by D. Mikurube Slides by Y. Izumi
数理言語情報論 第11回 2009年12月16日 数理言語情報学研究室 講師 二宮 崇.
コンパイラ 2011年10月17日
人工知能特論II 第15回 二宮 崇.
数理言語情報論 第1回 2009年10月7日 数理言語情報学研究室 講師 二宮 崇.
言語体系とコンピュータ 第6回.
数理言語情報論 第8回 2009年11月25日 数理言語情報学研究室 講師 二宮 崇.
東京工科大学 コンピュータサイエンス学部 亀田弘之
人工知能特論II 第1回 二宮 崇.
文法と言語 ー文脈自由文法とLR構文解析2ー
文法と言語 ー文脈自由文法とLL構文解析ー
プログラミング言語論 第4回 式の構文、式の評価
計算の理論 II 文脈自由文法と プッシュダウンオートマトン
第12回  自然言語処理.
12月08日 構文解析 入力文(記号列)が与えられたとき,文法によってその文を解析し,その構造を明らかにする.
言語処理系(5) 金子敬一.
岩井 儀雄 コンピュータ基礎演習  ー探索、整列ー 岩井 儀雄
言語プロセッサ ー第8回目ー.
データ構造と アルゴリズム 第八回 知能情報学部 新田直也.
コンパイラ 2012年10月15日
コンパイラ 2012年10月22日
コンパイラ 2011年10月24日
二分探索木によるサーチ.
PROGRAMMING IN HASKELL
プログラミング言語論 第3回 BNF記法について(演習付き)
人工知能特論II 第2回 二宮 崇.
正則言語 2011/6/27.
決定木とランダムフォレスト 和田 俊和.
コンパイラ 第13回 上昇型構文解析(1) 38号館4階N-411 内線5459
単一化アルゴリズムとHPSGパージング 二宮 崇.
言語プロセッサ2012 ー 第6回目 ー Tokyo University of technology
言語と文法 言語とは,ルールに従う記号列の無限集合である. 文法を与えることで言語が定義できる.
文法と言語 ー文脈自由文法とLR構文解析2ー
Cプログラミング演習 第10回 二分探索木.
東京工科大学 コンピュータサイエンス学部 亀田弘之
言語プロセッサ ー第9回目ー 構文解析(続き).
文法と言語 ー文脈自由文法とLR構文解析3ー
分子生物情報学(3) 確率モデル(隠れマルコフモデル)に 基づく配列解析
知能情報システム特論 Introduction
東京工科大学 コンピュータサイエンス学部 亀田弘之
アルゴリズムとデータ構造 2011年7月8日課題の復習
プログラミング言語論 第9回 情報工学科 木村昌臣 篠埜 功.
文法と言語 ー文脈自由文法とLL構文解析ー
コンパイラ 2011年10月20日
15.cons と種々のデータ構造.
データ構造とアルゴリズム (第5回) 静岡大学工学部 安藤和敏
文法と言語 ー文脈自由文法とLR構文解析ー
人工知能特論II 第8回 二宮 崇.
東京工科大学 コンピュータサイエンス学部 亀田弘之
東京工科大学 コンピュータサイエンス学部 亀田弘之
情報工学概論 (アルゴリズムとデータ構造)
4.プッシュダウンオートマトンと 文脈自由文法の等価性
情報処理Ⅱ 2005年10月28日(金).
ヒープソート.
コンパイラ 2012年10月11日
言語プロセッサ ー第9回目ー 構文解析(続き).
言語プロセッサ ー第7回目ー 構文解析(続き).
文法と言語 ー文脈自由文法とLR構文解析2ー
プログラミング入門2 第3回 条件分岐(2) 繰り返し文 篠埜 功.
東京工科大学 コンピュータサイエンス学部 亀田弘之
東京工科大学 コンピュータサイエンス学部 亀田弘之
情報処理Ⅱ 第3回 2004年10月19日(火).
情報処理Ⅱ 2006年10月20日(金).
東京工科大学 コンピュータサイエンス学部 亀田弘之
4.2 再帰下降解析 (1)再帰下降解析とは ■再帰下降解析(Recursive Descent Parsing)
Presentation transcript:

人工知能特論II 二宮 崇

今日の講義の予定 CFG構文解析 教科書 北研二(著) 辻井潤一(編) 言語と計算4 確率的言語モデル 東大出版会 C. D. Manning & Hinrich Schütze “FOUNDATIONS OF STATISTICAL NATURAL LANGUAGE PROCESSING” MIT Press, 1999 D. Jurafsky, J. H. Martin, A. Kehler, K.V. Linden & N. Ward “Speech and Language Processing: An Introduction to Natural Language Processing, Computational Linguistics, and Speech Recognition” Prentice Hall Series in Artificial Intelligence, 2000

CFGの構文解析 ある文sが与えられた時、文法Gによって導出できる全ての構文木を導出する構文解析 何のために? PCFG構文解析の基礎 構文解析後に、確率計算を行って、最も良い構文木を選択する パラメータ推定の際に構文木の候補集合が必要(学習方法によっては必要ない)

CFG構文解析

CFG構文解析のアルゴリズム トップダウン型 ボトムアップ型 一般化LR法 (generalized LR parsing) アーリー法 (earley parsing algorithm) ボトムアップ型 CKY法 (CKY parsing algorithm, CYK法ともいう) チャート法 (chart parsing algorithm) 左隅解析法 (left-corner parsing algorithm) 一般化LR法 (generalized LR parsing)

CKY法 Cocke, Kasami, Youngerにより提案され、それぞれの頭文字をとって、CKYもしくはCYK構文解析アルゴリズムと呼ばれる 多くのパーザーで用いられている 簡単 効率が良い デコーディングと相性が良い 文法規則はバイナリルールかユーナリールールのみ バイナリールール: 書換規則の右側の要素が二つしかないルール ユーナリールール: 書換規則の右側の要素が一つしかないルール CFGならチョムスキー標準形に変形 HPSG、CCGではバイナリールールを想定しているので特に問題は無い

準備: 書換規則と位置 書換規則は次の3つを想定 位置 A → B C (バイナリールール) A → B (ユーナリールール) A → w (辞書ルール) 位置 文 w1,w2,...,wn が与えられた時、 単語wiの位置: <i-1, i> 句 wi,...,wjの位置: <i-1, j>

準備: CKYテーブル(チャート) Si,j: wi+1,..., wjに対応する句の非終端記号の集合 S0,6 S0,5 S1,6 1 2 3 4 5 6 w1 w2 w3 w4 w5 w6

CKY法: 基本的なアイデア 目的: S0, nを計算 Si,jは次のSから計算できる Si, i+1とSi+1, j .... Si, j-1とSj-1, j

CKY法: 基本的なアイデア Z → X Y w1, w2, w3, w4 w1, w2, w3, w4 w1, w2, w3, w4

CKY法 矢印の順で全てのSi,jが求まる S0,6 S0,5 S1,6 S0,4 S1,5 S2,6 S0,3 S1,4 S2,5 スタート S0,1 S1,2 S2,3 S3,4 S4,5 S5,6 1 2 3 4 5 6 w1 w2 w3 w4 w5 w6

ルール適用とSi,jの求め方 G(X, Y) = {Z|∃p∈P.p=(Z→X Y)} Si,jを求めるアルゴリズム for k = i+1 to j-1 forall X∈ Si,k forall Y ∈ Sk,j Si,j := Si,j ∪ G(X, Y)

CKY法: Si,j 例: S1,5に対しk=2,3,4 S0,6 S0,5 S1,6 S0,4 S1,5 S2,6 S0,3 S1,4 1 2 3 4 5 6 w1 w2 w3 w4 w5 w6

文法 S → NP VP VP → VP PP VP → V NP VP → V NP → NP PP NP → John NP → Mary PP → P NP P → with NP → DT NP DT → a NP → telescope V → sees V → runs CKY法 例 0,6 同じ記号が複数でた場合は、一つにまとめて構わない (factoring, ファクタリング) この後のステップでの処理は全て同じになるはずだから。 0,5 1,6 VP,VP 0,4 1,5 2,6 NP 0,3 S 1,4 2,5 3,6 PP 0,2 1,3 VP 2,4 3,5 4,6 NP 0,1 1,2 V 2,3 3,4 P 4,5 DT 5,6 NP NP NP 1 2 3 4 5 6 John sees Mary with a telescope

文法 S → NP VP VP → VP PP VP → V NP VP → V NP → NP PP NP → John NP → Mary PP → P NP P → with NP → DT NP DT → a NP → telescope V → sees V → runs CKY法 例 0,6 S 0,5 1,6 VP 0,4 1,5 2,6 NP 0,3 S 1,4 2,5 3,6 PP 0,2 1,3 VP 2,4 3,5 4,6 NP 0,1 1,2 V 2,3 3,4 P 4,5 DT 5,6 NP NP NP 1 2 3 4 5 6 John sees Mary with a telescope

CKY法: アルゴリズム for j = 1 to n Sj-1,j := L(wj) ## Lは単語wに対する非終端記号の集合を返す関数 for l = 2 to n for i = 0 to n – l j := i + l; for k = i+1 to j - 1 forall X∈Si,k forall Y∈Sk,j Si,j := Si,j ∪ G(X, Y) Si,j := Si,j ∪ U(Si,j) ## Uはユーナリールールを適用して得られる非終端記号集合

CKY法: 計算量 最悪時間計算量 (worst-case time complexity) O(n3) アルゴリズムより明らか 非終端記号数を|VN|とすると、O(n3|VN|2) ファクタリングのおかげで計算量が指数爆発していないということに注意!

CKY法: 計算順序 次の順番で計算してもok (左隅) S0,6 S0,5 S1,6 S0,4 S1,5 S2,6 S0,3 S1,4 スタート S0,1 S1,2 S2,3 S3,4 S4,5 S5,6 1 2 3 4 5 6 w1 w2 w3 w4 w5 w6

CKY法: 計算順序 次の順番で計算してもok (右隅) S0,6 S0,5 S1,6 S0,4 S1,5 S2,6 S0,3 S1,4 スタート S0,1 S1,2 S2,3 S3,4 S4,5 S5,6 1 2 3 4 5 6 w1 w2 w3 w4 w5 w6

CKY法: データ構造 各CKYセルSi,jの内容はエッジの集合 エッジ エッジID 非終端記号 リンクの集合 リンク: このエッジがどのエッジから生成されたか記録したデータ構造 バイナリールールならエッジIDのペア ユーナリールールならエッジID 辞書ルールなら単語ID

チャート法 n分岐の書換規則を扱える最も一般的な考え方のボトムアップ型パージングアルゴリズム CKYは2分岐の書換規則のみ

チャート法: データ構造 エッジ 活性エッジ <i, j, Y → X1 ... Xk・Xk+1 ... Xn> 書換規則の途中にドットをいれたもの X1 ... Xkが解析済みということを意味する エッジの左側の位置 (i)と右側の位置 (j) 右側の位置はドットまでの位置のこと 不活性エッジ <i, j, Y> エッジの左の位置 (i)と右の位置 (j) 非終端記号

チャート法: 基本的な考え方 Shift-1: 新しい不活性エッジ<i, j, X>が生成された時、 左側にY→...・X...の形の活性エッジがあればY→...X・...の活性エッジを生成 X Y → X1 X2・X X3 new! i j Y → X1 X2X・ X3 new! Y → X1 X2・X X3 X i j

チャート法: 基本的な考え方 Shift-2: 新しい活性エッジ<i, j, Y→...・X...>が生成された時, Y → X1・X X2 X3 X new! i j Y → X1X・ X2 X3 new! Y → X1・X X2 X3 X i j

チャート法: 基本的な考え方 Reduce: Shift-1, Shift-2の結果新しい活性エッジ<i, j, Y→...X・>が生成された場合 不活性エッジ<i, j, Y>に置き換える Y Y → X1 X2 X3 ・ new! i j i j

チャート法: アルゴリズム チャートとキューにエッジを格納するときにファクタリングをする for j = 1 to n Queue := Queue ∪ L(wj) ## 不活性エッジ<j-1, j, wjに対する非終端記号>の集合 Chart := Chart ∪ L(wj) ∪Y→β∈P<j-1, j-1, Y→・β> while(Queue is not empty) E := shift(Queue) ##EはQueueの先頭 edges := {}; reduced_edges := {} if(E is 不活性エッジ<i, j, X>) forall F∈Chart s.t. F=<h, i, Y→ ...・X...> edges := edges ∪ <h, j, Y→ ...X・...> if(E is 活性エッジ<i, j, Y→...・X...>) forall F∈Chart s.t. F=<j, k, X> edges := edges ∪ <i, k, Y→ ...X・...> forall E’ ∈ edges if(E’ is <x, y, Y→β・>) reduced_edges := reduced_edges∪<x, y, Y> else reduced_edges := reduced_edges ∪ E’ Queue := Queue ∪ reduced_edges; Chart := Chart ∪ reduced_edges チャートとキューにエッジを格納するときにファクタリングをする

左隅解析法 チャート法をより効率的にしたアルゴリズム 活性エッジをチャートに残さなくてもok 右側にエッジがないので、左側のみ解析の対象とすれば良い(アルゴリズムが簡単)

左隅解析法: 基本的な考え方 left-to-right バイナリールールに限れば、CKYの左隅解析と同じ w1, w2, w3,........,wi-1,wi,........., wn

左隅解析法: 基本的な考え方 (1) w1,..,wi-1までは解析済みで、不活性エッジしか存在しないと考える <i-1, i, l∈L(wi)>を新しい不活性エッジとして加える w1, w2, w3,........,wi-1,wi,........., wn

左隅解析法: 基本的な考え方 (2) 新しく出来た不活性エッジ<_, i, X>に対し、 Y→X1....XkXという形の全ての規則に対し、Xと連接するXk,..X1のエッジを左に向かって探す 見つかったら新しく不活性エッジ<_, i, Y>を生成 新しく出来たエッジの右端は常にiなので、右側にエッジは存在しない⇒右側を気にしなくてもよい Y Y→A B C X A B C X ........,wi-1,wi,.........

左隅解析法: アルゴリズム チャートにエッジを格納するときにファクタリングをする search-left(Y, β(=X1...Xk), i,j) if( β is empty ) edges := edges ∪ <i, j, Y> forall <h,i,Xk> ∈ Chart search-left(Y, X1...Xk-1, h, j) left-corner-parsing(w1,...,wn) for j = 1 to n Queue := L(wj) ## <j-1, j, wjの非終端記号> while(Queue is not empty) <i, j, X> := shift(Queue) forall (Y→X1 ... Xk X) ∈ P edges := {} search-left(Y, X1...Xk, i, j) Chart := Chart ∪ edges; Queue := Queue ∪ edges チャートにエッジを格納するときにファクタリングをする

まとめ CFG構文解析 資料 動的計画法(dynamic programming) チャートに部分構文木を残しているため、一度計算された部分構文木は二度計算されない 同じ位置の同じ非終端記号を一つにまとめる(ファクタリング) 同じ計算を2回以上しないようにするため 出力は畳みこまれた構文木集合 (packed forest) AND, ORで表現されるグラフ構造 CKY法、チャート法、左隅解析法 資料 http://aiweb.cs.ehime-u.ac.jp/~ninomiya/ai2/