文型パターンパーサの試作 鳥取大学 工学部 ○徳久雅人 村上仁一 池原悟 1.はじめに ■ 研究背景 – 等価的類推思考の原理に基づく機械翻訳 (池原2002) – 原言語・目的言語の各表現を文型パターン化 ・ 意味的に等価な翻訳 ・ 重文・複文の大規模パターン辞書の構築 ・ 網羅性・可読性を狙った新たな記述言語を使用 – パターン照合方式の設計&実装が課題 本稿の目的 • 本翻訳方式の実現に向けた 文型パターンパーサの試作 2.文型パターン • 原文 LJ: 彼は日本一のバイオリニストだと言われている LE: People say that he is the best violinist in Japan. • 単語レベルパターン WJ: N1は/日本一の/N2.daと/V3.reru.teiru WE: People V3 that N1 be the best N2 in Japan. • 句レベルパターン PJ: N1は/NP2.daと/V3.reru.teiru PE: People V3 that N1 be NP2. • 節レベルパターン ・・・ 文型パターンの記述要素 • 字面 • 変数 • 関数 は,と,日本一の,… N,V,AJ,… – 様相関数: 変数に後続する表現形式を指定 例) V1.reru = 言われる – 語尾関数: 変数に対応部の表現形式を指定 例) V1^meirei = 言え – 字面関数: 変数に含まれる字面を指定 例) #大変(CL1) = 彼は大変忙しい など 記述要素の制御 • • • • • 離散記号 選択記号 任意記号 順序任意 記憶記号 など / (A|B|C) [A] {A,B,C} #1 任意の単語 彼(は|が) [私は] {N1は,N2に,N3を} #1[N2は] 文型パターン辞書の規模 • • • • 原文:約12万の日英対訳文(重文・複文) 単語レベルパターン: 約12万パターン 句レベルパターン: 約 9 万パターン 節レベルパターン: 約 1 万パターン ⇒ 変数N,V,VP,CL などの定義は浅い ⇒ パターン辞書は,浅くて幅の広い構造 3.文型パターンの照合 文型パターン照合の概念 • 入力文とパターンを照合するとは – – • 文とパターンが適合するとは – • 適合する文型パターンを全て検索 適合の仕方を全て出力 (適合解) パターン内の全ての必須要素が パターンの指定順に全て入力文と対応 変数内の構造の曖昧性は原則無視 照合の具体例 (入力文) 今晩はもう帰れ (パターン辞書) PTN1: TIME1は/もうV2^meirei 今晩 は もう帰れ PTN2: AJ1ので/TIME2は/V3^meirei - - - 今晩 は 帰れ PTN3: TIME1は/V2^meirei 今晩 は 帰れ 照合方式 • ATN(Augmented Transition Network) – パターン記述要素の機能が複雑 (離散記号,順序入れ替え,変数代入・制約,…) • エージェントの概念 – 適合解の管理 • 幅優先探索 – 全ての適合解を出力 AB-ATN Agent oriented Breadth-first ATN アークの機能属性 ノード:解析状態,アーク:遷移条件 1つのアークに3種類の機能属性 V1 1. 「条件比較」属性 2. 「制約」属性 3. 「バインド処理」属性 V1^meirei #1 N2 #1 は #1[N2は] jump AB-ATN アルゴリズム(1/2) • エージェント – – – – 適合解(変数のバインド値,経路)の管理 ノード上に存在 解析状態の推移に応じて移動 分岐するノードでは分裂 AB-ATN アルゴリズム(2/2) 1: function AB-ATN1(S,P) 2: Q0=generate(P) 3: foreach B ∈ S 4: Q1=覚醒中エージェント 5: while Q1 ≠ [ ] 6: Q2=アーク選択(Q1) 7: Q1= [ ] 8: foreach C ∈ Q2 9: Q1 +=アーク処理 10: end 11: end 12: clock(Q0) 13: end 14: 終了動作(Q0) 15: return 適合解 16: end 1パターンと文とを適合判定 形態素単位で判定 エージェントの活性化 アーク選択・分岐 エージェントのアーク処理 照合の具体例 「駅の裏にすぐ行け」 1駅, 2の, 3裏, 4に, 5すぐ, 6行け,7nil /NP1に/V2^meirei / に NP1 pop N N の N / V2 ^meirei pop 照合の具体例 「駅の裏にすぐ行け」 1駅, 2の, 3裏, 4に, 5すぐ, 6行け,7nil /NP1に/V2^meirei / に NP1 pop N N の N / V2 ^meirei pop 照合の具体例 「駅の裏にすぐ行け」 1駅, 2の, 3裏, 4に, 5すぐ, 6行け,7nil /NP1に/V2^meirei / に NP1 pop N N の N / V2 ^meirei pop 照合の具体例 「駅の裏にすぐ行け」 1駅, 2の, 3裏, 4に, 5すぐ, 6行け,7nil /NP1に/V2^meirei / に NP1 ={駅} pop N N / V2 ^meirei の N pop 照合の具体例 「駅の裏にすぐ行け」 1駅, 2の, 3裏, 4に, 5すぐ, 6行け,7nil /NP1に/V2^meirei / に NP1 ={駅,の} pop N N / V2 ^meirei の N pop 照合の具体例 「駅の裏にすぐ行け」 1駅, 2の, 3裏, 4に, 5すぐ, 6行け,7nil /NP1に/V2^meirei / に NP1 ={駅,の} pop N N / V2 ^meirei の N pop 照合の具体例 「駅の裏にすぐ行け」 1駅, 2の, 3裏, 4に, 5すぐ, 6行け,7nil /NP1に/V2^meirei / に NP1 ={駅,の} pop N N / V2 ^meirei の N pop 照合の具体例 「駅の裏にすぐ行け」 1駅, 2の, 3裏, 4に, 5すぐ, 6行け,7nil /NP1に/V2^meirei / に NP1 N pop ={駅,の,裏} pop N / V2 ^meirei の N 照合の具体例 「駅の裏にすぐ行け」 1駅, 2の, 3裏, 4に, 5すぐ, 6行け,7nil /NP1に/V2^meirei / に NP1 N pop ={駅,の,裏} pop N / V2 ^meirei の N 照合の具体例 「駅の裏にすぐ行け」 1駅, 2の, 3裏, 4に, 5すぐ, 6行け,7nil /NP1に/V2^meirei / に NP1 N pop ={駅,の,裏} pop N / V2 ^meirei の N ={裏} 照合の具体例 「駅の裏にすぐ行け」 1駅, 2の, 3裏, 4に, 5すぐ, 6行け,7nil /NP1に/V2^meirei / に NP1 N pop ={駅,の,裏} pop N / V2 ^meirei の N ={裏} 照合の具体例 「駅の裏にすぐ行け」 1駅, 2の, 3裏, 4に, 5すぐ, 6行け,7nil /NP1に/V2^meirei / に NP1 N pop ={駅,の,裏,に} pop N / V2 ^meirei の N ={裏,に} 照合の具体例 「駅の裏にすぐ行け」 1駅, 2の, 3裏, 4に, 5すぐ, 6行け,7nil /NP1に/V2^meirei / に NP1 N pop ={駅,の,裏,に} pop N / V2 ^meirei の N ={裏,に} 照合の具体例 「駅の裏にすぐ行け」 1駅, 2の, 3裏, 4に, 5すぐ, 6行け,7nil /NP1に/V2^meirei / に NP1 pop N N の N / V2 ^meirei pop ={駅,の,裏,に} ={駅,の,裏,に} ={裏,に} ={裏,に} 照合の具体例 「駅の裏にすぐ行け」 1駅, 2の, 3裏, 4に, 5すぐ, 6行け,7nil /NP1に/V2^meirei / に NP1 pop N N の N / V2 ^meirei pop ={駅,の,裏,に} ={裏,に} 照合の具体例 「駅の裏にすぐ行け」 1駅, 2の, 3裏, 4に, 5すぐ, 6行け,7nil /NP1に/V2^meirei / に NP1 pop N N の N / V2 ^meirei pop ={駅,の,裏,に} ={裏,に} 照合の具体例 「駅の裏にすぐ行け」 1駅, 2の, 3裏, 4に, 5すぐ, 6行け,7nil /NP1に/V2^meirei / に NP1 pop N N の N / V2 ^meirei pop ={駅,の,裏,に} ={裏,に} 照合の具体例 「駅の裏にすぐ行け」 1駅, 2の, 3裏, 4に, 5すぐ, 6行け,7nil /NP1に/V2^meirei / に NP1 pop N N の N / V2 ^meirei pop ={駅,の,裏,に,行け} ={裏,に,行け} 照合の具体例 「駅の裏にすぐ行け」 1駅, 2の, 3裏, 4に, 5すぐ, 6行け,7nil /NP1に/V2^meirei / に NP1 pop N N の N / V2 ^meirei pop ={駅,の,裏,に,行け} ={裏,に,行け} 照合の具体例 「駅の裏にすぐ行け」 1駅, 2の, 3裏, 4に, 5すぐ, 6行け,7nil /NP1に/V2^meirei / に NP1 pop N N の N / V2 ^meirei pop ={駅,の,裏,に,行け} ={裏,に,行け} 4.照合候補の絞込みによる高速化 (照合の前処理) • 候補に残るための条件 – パターン内の全必須字面が入力文に存在 – パターン内の関数内字面が入力文に存在 (例)「彼は本を読んでいる」 P1 : N1はN2をV3.teiru P2 : N1はN2をV3 P3 : N1は日本一のN2だ P4 : N1はV3.rareru れ,れる,れよ,るる られ,られる,られよ,らるる 5.実装 文型パターンパーサの構成図 入力文 入力文 前処理系 入力形態素情報 照合 本体系 入力字種ビットマップ オートマトン 生成系 絞込み系 全文型パターン 全オートマトン 文型パターン 辞書 候補 オートマトン 照合結果 照合実験 パターン数 • パターン原文1,000文 vs. パターン12万,9万,1万の照合実験 • 絞込みの効果 ( 1/130 ~ 1/16 ) 140,000 120,000 100,000 80,000 60,000 40,000 20,000 0 124,158 87,685 921 単語レベル 3,217 句レベル パターン総数 11,280 713 節レベル 平均候補数 (1.3% ~ 4.8%) パターン数 4,000 6% 3217 3,000 2,000 1,000 0 4% 921 13 156 2% 713 23 0% 単語レベル 句レベル 節レベル 平均候補数 平均適合数 ヒット率 ヒット率 • ヒット率 • 処理時間 単語レベル 句レベル 節レベル 1文当たり 平均照合時間 1パターン当たり 平均照合時間 0.42 秒 0.5 ミリ秒 6.27秒 0.84秒 1.9ミリ秒 1.2ミリ秒 CPU=Athlon64, Memory=1GB, OS=Linux, C言語 本パーサの利用 • 自由入力文と全パターン(22万)の照合デモ (ACLデモセッション,2003年 7月) • パターン原文12万文との照合実験 (池原ほか,SIG-SLUD,2004年 3月) (前田ほか,言語処理学会年次大会,2004年 3月) 7.おわりに ■ まとめ 等価的類推思考の原理に基づく機械翻訳方式 のための文型パターンパーサを試作 • ATNアルゴリズムの拡張 • 文型記述に対応したアークの設計 • エージェントによる適合解の管理 – 約22万パターンを対象にした照合実験が可能 ■ 今後の課題 – エージェントの履歴機能,join機能,の追加 – 意味属性制約つきパターンへの対応 パターン内の字種数 • 単語レベル: • 句レベル: • 節レベル: 12.6 字種/1パターン 9.2 字種/1パターン 7.4 字種/1パターン オープンテスト • 文献:日本語基本文型 • 適合パターンのあった文の数 – – – – 単語レベル … 424文 / 801文 (53%) 句レベル … 664文 / 801文 (83%) 節レベル … 596文 / 801文 (74%) 混合レベル … 687文 / 801文 (86%) • 1文あたりの適合パターン数 – – – – 単語レベル … 4 (異なり) 8 (のべ) 句レベル … 34 120 節レベル … 10 35 混合レベル … 48 163
© Copyright 2024 ExpyDoc