研究課題/領域番号 |
19K22840
|
研究機関 | 東京大学 |
研究代表者 |
千葉 滋 東京大学, 大学院情報理工学系研究科, 教授 (80282713)
|
研究期間 (年度) |
2019-06-28 – 2021-03-31
|
キーワード | プログラミング言語 / ソフトウェア工学 / 機械学習 / 開発環境 |
研究実績の概要 |
プログラム中に現れるライブラリの関数呼び出し・メソッド呼び出しの連鎖をトークン列と見なすと、そのトークン列に対する文法を考えることができる。本年度は、このようなトークン列に対する文法を深層学習によって言語モデルとして獲得する手法の研究に取り組んだ。この文法を獲得できれば、例えばプログラム開発環境で一般的に用いられるコード補完の精度向上に役立てられる。動的型付き言語の場合、型システムによるコード補完ができないため、あまり精度よく補完ができない。本研究で開発している手法なら、そのような動的型付き言語によるプログラミングにおいても、精度よくコード補完ができるようになる可能性がある。
研究対象となるプログラミングとして JavaScript を選び、GitHub からレポジトリを取得し、10 万ファイル以上からなるデータセットを構築した。そしてこのデータセットを用いて文法を学習させ、言語モデルを獲得した。コード補完の精度改善に獲得した文法を用いる場合、学習に用いたデータセットに含まれない関数名やメソッド名など、未知語の扱いに工夫が必要である。本年度は、未知語を扱うための手法についても研究をおこなった。また比較対象として、関数呼び出しやメソッド呼び出しだけでなく、プログラム全体をトークンに分解し、そのトークン列を対象に同様の学習をおこない、言語モデルを獲得する実権の準備をおこなった。このようにして得られた言語モデルと、本研究で提案する言語モデルとを比較することで、提案する言語モデルの評価をおこなうためである。
|
現在までの達成度 (区分) |
現在までの達成度 (区分)
2: おおむね順調に進展している
理由
研究実施計画にしたがって、プログラム中に現れるライブラリの関数呼び出し・メソッド呼び出しの連鎖の列をトークン列と見なした場合の文法の学習、言語モデルの獲得を計画通り実施できたため。学習のためのデータセットの構築もおおむね計画通り実施できた。
|
今後の研究の推進方策 |
獲得した言語モデルを用いて実際にコード補完をおこなうソフトウェアを開発し、それを用いた評価実験をおこなう。また比較の対象として、プログラム中に現れるライブラリの関数呼び出し・メソッド呼び出しの連鎖の列ではなく、プログラム全体を通常のトークンに分解し、それを同様の手法で文法として学習した場合の言語モデルも作成する。この言語モデルと比較することで、学習対象を絞ることで、より精度の高い補完が可能になることを示すことをめざす。
|