テキストを実行可能なプログラムに変換するための基本技術の探究
Project/Area Number |
22K19811
|
Research Category |
Grant-in-Aid for Challenging Research (Exploratory)
|
Allocation Type | Multi-year Fund |
Review Section |
Medium-sized Section 61:Human informatics and related fields
|
Research Institution | Nagoya University |
Principal Investigator |
佐藤 理史 名古屋大学, 工学研究科, 教授 (30205918)
|
Project Period (FY) |
2022-06-30 – 2025-03-31
|
Project Status |
Granted (Fiscal Year 2023)
|
Budget Amount *help |
¥6,240,000 (Direct Cost: ¥4,800,000、Indirect Cost: ¥1,440,000)
Fiscal Year 2024: ¥1,430,000 (Direct Cost: ¥1,100,000、Indirect Cost: ¥330,000)
Fiscal Year 2023: ¥2,600,000 (Direct Cost: ¥2,000,000、Indirect Cost: ¥600,000)
Fiscal Year 2022: ¥2,210,000 (Direct Cost: ¥1,700,000、Indirect Cost: ¥510,000)
|
Keywords | 自然言語処理 / 条件記述 / 確率・期待値の文章題 / 組合せ範疇文法 / 条件分岐 / 名付け |
Outline of Research at the Start |
本研究では、大学入試数学の確率・期待値文章題の自動解法を実現することを通して、テキストを実行可能なプログラムに変換するために必要な基本技術を探究する。複雑な命令には、命令の実行条件を指定する「条件記述」、命令の制御構造である「条件分岐」、および、命令のマクロ化を可能とする「名付け」が含まれる。大学入試数学の確率・期待値の文章題には、このようなテキスト表現が含まれ、かつ、適度な複雑さを持つため、基本技術を探究するための対象問題として適している。この研究は、付帯条件付きの依頼文を自動解釈する技術につながることが期待できる。
|
Outline of Annual Research Achievements |
本年度は以下の研究を行なった。 1. 確率・期待値文章題を含まれる条件記述(事象を規定する「出た目の和が偶数である(確率を求めよ)」のような記述)をプログラムコードに変換する枠組みとして、組合せ範疇文法(Combinatory Categorial Grammar)を流用したCCG-Rubyという枠組みを提案した。この枠組みでは、基底カテゴリとしてRubyのデータ型を用いる点、意味記述として論理式ではなくRubyコードを採用する点に特徴がある。解析には、語彙項目と4タイプ8種類のコード合成規則を用いる。 2. 実際にCCG-Rubyの処理系を実装し、条件記述のRubyコードへの変換を実現した。この処理系を中核として、サイコロを題材とした確率・期待値文章題を解くソルバーを実現した。このソルバーは、次の5ステップで問題を解く。(a) 問題文の構造解析:問題文に含まれる構成要素(試行、計算指示、条件記述、演算記述、名前)を同定する。(b) 試行のコード化:試行の記述内容からサイコロの個数と回数を抽出して、標本空間を生成するコードを作成する。(c) 名付けのコード化:問題文に名付けが含まれる場合は、それをコード化する。(d)計算指示のコード化:計算指示に含まれる条件記述または演算記述をコードに変換する。(e) これらのコードを合成したコードを実行し、答を得る。 3. 典型的な条件記述、および、複雑な条件記述がCCG-Rubyでどのように解釈できるかを明らかにした。ここで、複雑な条件記述とは、以下のような要素を含む条件記述である:「または」、「かつ」、読点、連用中止、否定、「すべて」、「いずれかN個」。 5冊の問題集から収集した計41問の問題文に対して、実際にソルバーを動かし、39問の問題に対して正しく答を出力することを確認した。
|
Current Status of Research Progress |
Current Status of Research Progress
2: Research has progressed on the whole more than it was originally planned.
Reason
昨年度実現した条件記述の解析法は、必要となる規則の数が多く、全体の見通しが良いシステムとなっていなかった。そこで、文法記述の方法を、文脈自由文法から組合せ語彙範疇文法(CCG)に変更し、これをRubyコード生成用に改変して、CCG-Rubyとして定式化した。検討の結果、適切な語彙項目を設定すれば、4タイプ8種類の合成規則があれば、条件記述をRubyコードに変換することができることが判明し、システムの可読性および拡張性が大きく向上した。複雑な条件記述も大半が解析可能であり、十分なカバレジを持つ。現時点では、題材をサイコロに限定しているが、条件記述の複雑さは、題材が「玉」や「カード」でも大差はないと考えられる。条件記述をプログラムコードに変換するという問題は、おおよそ解けたと考える。 サイコロを題材とした問題の特徴は、仮想世界の記述(どのようなオブジェクトがいくつあるかの記述)と試行の記述(どのような試行を行なったか)と試行の記述が単純であることである。題材が「玉」や「カード」になると、これらは複雑となり、その解釈(プログラムコードへの変換)が問題となる。これが、今後の課題である。
|
Strategy for Future Research Activity |
(1)本年度作成したシステムのさらなる洗練化に取り組む。具体的には、複雑な条件記述の解析法を再考し、ラムダ関数を引数にとるコードを生成する組合せ規則を新たに導入することを検討する。 (2)初年度作成した例題集に対して本年度作成したシステムを適用し、その結果に基づいて、より広い範囲の条件記述を解析できるように拡張する。特に、複雑な事象を簡潔に言い表すような記述(例:「(サイコロを4回投げたとき、)1つの目が他のどの目よりも多く出る(確率を求めよ)」をどのような扱うべきかを検討する。 (3)仮想世界の記述と試行の記述の自動解釈の実現:サイコロを題材とした問題では、「何個のサイコロを何回振るか」だけで試行が記述され、その解析は容易である。これに対して、玉を題材とした問題では、どのような玉が何個あり(仮想世界の記述)、それをどのように取り出すか(試行の記述)がより複雑となる。この部分の記述の自動解釈に取り組む。研究が順調に進んだ場合は、対象をカードやコインを題材とした問題にも広げ、より多くの確率・期待値問題を解けるようにすることに取り組む。
|
Report
(2 results)
Research Products
(2 results)