• Search Research Projects
  • Search Researchers
  • How to Use
  1. Back to previous page

機械学習によるプログラミング言語文法の推定

Research Project

Project/Area Number 19K22840
Research Category

Grant-in-Aid for Challenging Research (Exploratory)

Allocation TypeMulti-year Fund
Review Section Medium-sized Section 60:Information science, computer engineering, and related fields
Research InstitutionThe University of Tokyo

Principal Investigator

千葉 滋  東京大学, 大学院情報理工学系研究科, 教授 (80282713)

Project Period (FY) 2019-06-28 – 2022-03-31
Project Status Granted (Fiscal Year 2020)
Budget Amount *help
¥6,500,000 (Direct Cost: ¥5,000,000、Indirect Cost: ¥1,500,000)
Fiscal Year 2020: ¥2,600,000 (Direct Cost: ¥2,000,000、Indirect Cost: ¥600,000)
Fiscal Year 2019: ¥3,900,000 (Direct Cost: ¥3,000,000、Indirect Cost: ¥900,000)
Keywordsプログラミング言語 / ソフトウェア工学 / 機械学習 / 開発環境
Outline of Research at the Start

プログラミング言語の文法を GitHub 等のレポジトリから得たコーパスを機械学習することによって得ることができるだろうか、という問いに答えるのが本研究の目的である。プログラミング言語は人工言語であるので、普通、文法は既知であり、わざわざコーパスから探索的に抽出する必要はない。本研究では、いわゆる通常の形式文法に制限されない様々な新しい「文法」を考え、その獲得方法と応用を研究する。例えばプログラミング言語のコーディング規約や、ライブラリ関数の呼び出し順のようなものを文法とみなして取り扱う手法を研究する。

Outline of Annual Research Achievements

大量のプログラムのトークン列を機械学習することにより、ある種の文法構造を獲得することができる。最新の機械学習技術を応用することで獲得する文法構造の精度を改善し、それを異なる言語で書かれたプログラムの間のクローン(同一の内容をもつプログラム片)を探す問題に適用した。異なるプログラミング言語で書かれたプログラムの場合、同一の内容のプログラムであってもプログラムの表面的な字面は異なる。このため類似性の判定にはプログラムからいわゆる抽象構文木に相当する構造を得て比較する必要がある。本研究ではこれを教師なし機械学習によって得た embedding を用いて表現し、比較した。この結果、我々の過去の研究成果に比して良い成果が得られた。単純な LSTM に始まり、Transformer の利用など様々な手法による学習を試し、優れた性能を示すモデルを探った。我々の過去の研究は、プログラミング言語の文法は既知のものとして通常の構文解析をおこない、得られた構文木を使って同様のクローン検出の問題を教師あり機械学習で解く研究であった。部分的には教師なし学習を用いたが、類似性の学習に教師データを用いたため、訓練データセットの品質に性能が大きく依存するという欠点があった。またモデルが二値の判定器であったため、膨大なプログラムの中から似ているコード片を探すためのの計算効率が著しく悪かった。本研究により、検出精度の点でも、また探すための全体的な計算効率の面でも過去の研究より優れた結果を得られた。

Current Status of Research Progress
Current Status of Research Progress

3: Progress in research has been slightly delayed.

Reason

昨年度までの研究成果について同様の成果が海外の研究グループより先に発表されてしまったため、これまでに得られた研究成果を別の応用に向けるべく研究をおこなった。これにより当初の計画とは応用の方向が少し修正されたが一定の成果があげられた。進捗は計画とほぼ同等か、あるいは若干の遅れがあると認識している。

Strategy for Future Research Activity

これまでの研究成果をさらに発展させて、教師なし機械学習によるプログラムの異なる言語への翻訳を試みる。これによってプログラミング言語分野における機械学習の可能性をさらに広げる。

Report

(2 results)
  • 2020 Research-status Report
  • 2019 Research-status Report

Research Products

(2 results)

All 2020 2019

All Presentation (2 results)

  • [Presentation] 教師ラベルなし単言語学習データのみでのcross-languageコードクローン検出の試み2020

    • Author(s)
      劉 宇澤, 千葉 滋
    • Organizer
      日本ソフトウェア科学会第37回大会
    • Related Report
      2020 Research-status Report
  • [Presentation] 機械学習手法を用いた動的型付け言語のコード補完に向けて2019

    • Author(s)
      松永 智將, 千葉 滋
    • Organizer
      日本ソフトウェア科学会第36回大会
    • Related Report
      2019 Research-status Report

URL: 

Published: 2019-07-04   Modified: 2021-12-27  

Information User Guide FAQ News Terms of Use Attribution of KAKENHI

Powered by NII kakenhi