Skip to main content
QUICK REVIEW

[論文レビュー] DLTPy: Deep Learning Type Inference of Python Function Signatures using Natural Language Context

Casper Boone, Niels de Bruin|arXiv (Cornell University)|Dec 2, 2019
Software Engineering Research参考文献 18被引用数 9
ひとこと要約

DLTPyは、関数名、コメント、パラメータ名、および戻り値式からの自然言語的文脈を用いて、Python関数の型署名を推論するディープラーニングモデルである。トップ3のF1スコアは91.6%に達し、コード要因における自然言語が型推論の正確性を顕著に向上させることを示している。特に、戻り値式とコメントが性能向上に寄与していることが明らかになった。

ABSTRACT

Due to the rise of machine learning, Python is an increasingly popular programming language. Python, however, is dynamically typed. Dynamic typing has shown to have drawbacks when a project grows, while at the same time it improves developer productivity. To have the benefits of static typing, combined with high developer productivity, types need to be inferred. In this paper, we present DLTPy: a deep learning type inference solution for the prediction of types in function signatures based on the natural language context (identifier names, comments and return expressions) of a function. We found that DLTPy is effective and has a top-3 F1-score of 91.6%. This means that in most of the cases the correct type is within the top-3 predictions. We conclude that natural language contained in comments and return expressions are beneficial to predicting types more accurately. DLTPy does not significantly outperform or underperform the previous work NL2Type for Javascript, but does show that similar prediction is possible for Python.

研究の動機と目的

  • 手動による型注釈の負担を軽減する、Python向けのディープラーニングベースの型推論システムを開発すること。
  • 関数のコメント、識別子、および戻り値式に含まれる自然言語が、型推論の正確性を向上させるかどうかを調査すること。
  • Pythonにおける型推論に適した、異なるディープラーニングアーキテクチャと入力特徴の組み合わせの有効性を評価すること。
  • JavaScript向けに開発されたNL2Typeアプローチが、Pythonに対しても同様の性能で効果的に一般化されるかどうかを検証すること。

提案手法

  • DLTPyは、関数のシグニチャ、コメント、および戻り値式からの自然言語特徴を処理するために、双方向LSTM(長短期間記憶)ネットワークを用いる。
  • 入力特徴には、トークン化された識別子(関数名、パラメータ名)、コメント、および戻り値式のトークンが含まれており、それぞれが密なベクトル表現に埋め込まれる。
  • モデルは、GitHubおよびLibraries.ioから収集した5,996のオープンソースPythonプロジェクトを用いて学習され、mypyによる型注釈が付与された関数に焦点を当てる。
  • コメントや戻り値式の有無を変えて複数のモデルバージョンを評価し、各特徴の有効性を評価する。
  • 単語埋め込みは、学習データから14次元のベクトル空間で学習されるが、NL2Typeの100次元とは異なる。
  • モデルの性能は、ホールドアウトされたテストセットを用いて、トップ1およびトップ3の精度、再現率、F1スコアで評価される。

実験結果

リサーチクエスチョン

  • RQ1コメントと戻り値式からの自然言語的文脈が、Pythonにおけるディープラーニングベースの型推論を向上させるか?
  • RQ2関数名、パラメータ名、コメント、および戻り値式といった異なる入力コンponentsが、型推論の性能にどのように影響を与えるか?
  • RQ3JavaScript向けに開発されたNL2Typeアプローチが、Pythonに対しても同様の性能で効果的に一般化されるか?
  • RQ4戻り値式の有無が、名前とコメントのみに依存する場合と比較して、型推論の正確性に与える影響は何か?
  • RQ5異なるディープラーニングアーキテクチャと埋め込みサイズは、モデルの型推論能力にどのように影響を与えるか?

主な発見

  • DLTPyはトップ3F1スコア91.6%を達成しており、正しい型がトップ3の候補内に含まれる確率が91.6%であることを示している。
  • コメントを入力に含めることで型推論の性能が向上し、コメントを含むデータセット2は、コメントを除外したデータセット3を上回った。
  • 戻り値式はモデルの正確性を顕著に向上させる。戻り値式の入力を含まないモデル(例:データセット4)は、含むモデルに比べて性能が劣っている。
  • 14次元の単語埋め込みを用いてもNL2Typeと同等の性能を示したため、埋め込みサイズよりも特徴表現の質が重要であることが示された。
  • 双方向LSTMを用いるモデルCが、全バージョンの中で最も優れた性能を示し、分類タスクに有効であることが確認された。
  • NL2Typeと比較して顕著な性能差が認められなかったため、戻り値式の文脈を追加することで、NL2TypeのアプローチがPythonに対しても効果的に一般化できることが示された。

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

論文の読解から最終レビューまで、研究時間を劇的に削減しましょう。

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

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