[論文レビュー] Deep Learning to Detect Redundant Method Comments
本稿では、コードからコメントの含意関係をモデル化することで、再帰的でないメソッドコメントを検出するためのディーブラーニング手法を提案している。シーケンス・ツー・シーケンス・モデルをコード-コメント対のデータでファインチューニングすることで、Craicと呼ばれるツールが、コードを単に再記述するコメント(高い含意度)を特定する。Javadocタグ(例:@param や @throws)は自由形式のコメントよりも少なくとも2倍予測可能であることが示され、情報量が低いことが示唆されている。
Comments in software are critical for maintenance and reuse. But apart from prescriptive advice, there is little practical support or quantitative understanding of what makes a comment useful. In this paper, we introduce the task of identifying comments which are uninformative about the code they are meant to document. To address this problem, we introduce the notion of comment entailment from code, high entailment indicating that a comment's natural language semantics can be inferred directly from the code. Although not all entailed comments are low quality, comments that are too easily inferred, for example, comments that restate the code, are widely discouraged by authorities on software style. Based on this, we develop a tool called CRAIC which scores method-level comments for redundancy. Highly redundant comments can then be expanded or alternately removed by the developer. CRAIC uses deep language models to exploit large software corpora without requiring expensive manual annotations of entailment. We show that CRAIC can perform the comment entailment task with good agreement with human judgements. Our findings also have implications for documentation tools. For example, we find that common tags in Javadoc are at least two times more predictable from code than non-Javadoc sentences, suggesting that Javadoc tags are less informative than more free-form comments
研究の動機と目的
- コードを単に繰り返す情報量の少ないコメントを識別するための実用的支援の不足に対処すること。
- 高価な手動アノテーションを必要とせずに、コメントの重複度をスコアリングする機械学習フレームワークを開発すること。
- 一般的なJavadocタグが自由形式コメントよりも予測可能であり、情報量が低いかどうかを調査すること。
- コードから容易に推論可能なコメントを自動的に検出するためのディープラーニングの実用性を評価すること。
提案手法
- 著者らは、「コメントの含意度」を、コードからコメントの意味がどの程度推論可能かを示す指標として定義し、高い含意度は冗長性を示す。
- 大規模なGitHubのJavaコード-コメント対のコーパスを用いて、コードからコメントを予測するためのシーケンス・ツー・シーケンスのディープラーニングモデルを学習する。
- モデルは、コードでの事前学習とアノテーションデータでのファインチューニングを組み合わせて訓練され、パープレキシティを含意度の代理指標として用いる。
- Craicと呼ばれるツールを構築し、予測されたパープレキシティに基づいてメソッドレベルのコメントをスコアリングする。低パープレキシティは高い冗長性を示す。
- 手動による含意アノテーションを必要とせずに、大規模なソフトウェアコーパスを活用するため、事前学習済み言語モデルを活用する。
- パープレキシティの平均値を比較することで、コメントの種別(例:@param, @return)を評価する。
実験結果
リサーチクエスチョン
- RQ1コードからの予測可能性に基づいて、コメントの冗長性をどの程度自動的に検出できるか?
- RQ2Javadocタグ(例:@param や @return)は自由形式コメントよりもコードからより予測可能か? これは情報量の低さを示唆するか?
- RQ3コード-コメント対で学習したディープラーニングモデルの予測は、人間のコメント冗長性判断とどの程度一致するか?
- RQ4シーケンス・ツー・シーケンス・モデルのパープレキシティは、コメントの含意度と冗長性の信頼できる代理指標として機能するか?
- RQ5これらの発見は、ドキュメント生成ツールや開発者ガイドラインの設計にどのような意味を持つのか?
主な発見
- Javadocタグ(例:@param や @throws)は、非Javadocコメントよりも少なくとも2倍予測可能であり、情報量が低いことが示唆される。
- @param と @throws コメントの平均パープレキシティはそれぞれ6.49および2.50であり、非Javadocコメントの平均15.58よりも顕著に低い。
- アノテート済みの190組のJavadocコメント対のうち180組が、人間のアノテーターによって含意または部分的含意であると判断された。これは高い冗長性を確認するものである。
- ディープラーニングモデルの予測は、人間のコメント冗長性判断と強い一致を示し、その有効性が妥当化された。
- 一般的なJavadocフィールドは自由形式コメントよりも系統的に情報量が少なく、ドキュメンテーションツールの再設計が求められる。
- 結果から、ディープラーニングモデルは基本的なコメントフィールドの自動生成が可能であると示唆され、開発者は上位レベルの説明に集中できるようになる。
より良い研究を、今すぐ始めましょう
論文の読解から最終レビューまで、研究時間を劇的に削減しましょう。
クレジットカード登録不要
このレビューはAIが作成し、人間の編集者が確認しました。