Skip to main content
QUICK REVIEW

[論文レビュー] Program Synthesis and Semantic Parsing with Learned Code Idioms

Richard Shin, Miltiadis Allamanis|arXiv (Cornell University)|Jun 26, 2019
Software Engineering Research参考文献 41被引用数 44
ひとこと要約

Patois はコーパスから一般的な AST フラグメントを採掘して高レベルのコード idioms と低レベルのトークンを組み合わせ、木構造ニューラル合成器を訓練してコード生成時に idioms を出力させることで、Hearthstone と Spider データセットのセマンティックパーシングの精度を改善する。

ABSTRACT

Program synthesis of general-purpose source code from natural language specifications is challenging due to the need to reason about high-level patterns in the target program and low-level implementation details at the same time. In this work, we present PATOIS, a system that allows a neural program synthesizer to explicitly interleave high-level and low-level reasoning at every generation step. It accomplishes this by automatically mining common code idioms from a given corpus, incorporating them into the underlying language for neural synthesis, and training a tree-based neural synthesizer to use these idioms during code generation. We evaluate PATOIS on two complex semantic parsing datasets and show that using learned code idioms improves the synthesizer's accuracy.

研究の動機と目的

  • 高レベルの推論と低レベルの実装の詳細を橋渡しすることで、一般目的言語で現実世界のプログラムを合成するという課題に動機づける。
  • コーパスから一般的なコードのイディオムを自動的に採掘して、文法をイディオムを第一級演算子として拡張する。
  • 木構造ニューラル合成器を訓練し、生成過程で推論レベルを interleave するためにイディオムやその本体を出力できるようにする。
  • イディオムを意識した訓練がセマンティックパーシングのベンチマークにおける合成精度を向上させることを示す。
  • イディオムがプログラム断片を圧縮・構造化し、生成を容易にし、データセットを横断して一般化する様子を示す。

提案手法

  • コーパスから頻繁なコードのイディオムをノンパラメトリックベイズ推定(Pitman–Yor プロセス)を用いて採掘し、イディオムの事後分布 pTSG を構築する。
  • 基盤となる文法をイディオム断片で拡張し、非終端リーフを名義引数として機能するようにラベルを付ける。
  • 木構造またはグラフベースのニューラル生成器を訓練し、プログラム構築中にイディオムまたは元々の AST断片のいずれかを出力できるようにする。
  • 有益な場合にはイディオムを出力することを奨励しつつ、元の生成トレースを保持するような専門的な訓練目的を用いる。
  • 推論時にはイディオムの出力をその本体に置き換え、IDE を一歩ずつ展開したかのように展開する。
  • Hearthstone(Python プログラム)と Spider(SQL)セマンティックパーシングタスクを exact-match と BLEU 指標で評価する。

実験結果

リサーチクエスチョン

  • RQ1一般目的言語で自然言語の説明から生成する際、自動的に採掘されたコードイディオムはニューラルプログラム合成を改善できるのか。
  • RQ2各生成時点で高レベルのイディオムと低レベルのトークンを interleave することで、エンドツーエンドのトークンレベル生成よりセマンティックパーシングの精度が向上するのか。
  • RQ3イディオム集合のサイズと品質(K)は、異なるドメインでの合成性能にどのような影響を与えるのか。
  • RQ4推論時に全イディオム本体を保持する訓練目的を用いた木構造デコーダは、イディオムを効果的に活用できるのか。
  • RQ5異なるスキーマやプログラミングタスク(Python vs SQL)をまたぐデータセット間でイディオムは一般化するのか。

主な発見

  • 訓練データから採掘されたイディオムは BLEU スコアを改善し、特に大きなイディオム集合(例: K=80)で Hearthstone のテストデータにおいて exact-match 精度を含む改善をもたらすことがある。
  • Hearthstone では、最適なイディオム設定が exact-match の大幅な向上(例:最大で約4.5%の改善)と BLEU スコアの向上をもたらす。
  • Spider では、イディオム対応モデルが複数の K 値で基準の exact-match パフォーマンスを達成または上回る。
  • このアプローチは、学習されたイディオムが頻繁で意味的に意味のあるパターン(一般的な構文構造やドメイン API など)を捉えていることを示している。
  • イディオムは大きな断片になり得て、 substantial なコードブロックを一括で出力することを可能にし、デコーダのタスクを軽減する。

より良い研究を、今すぐ始めましょう

論文設計から論文執筆まで、研究時間を劇的に削減しましょう。

クレジットカード登録不要

このレビューはAIが作成し、人間の編集者が確認しました。