# Seq2Seq の組み合わせによる 問題文からの段階的プログラムコメント生成

大西朔永
岡山理科大学大学院総合情報研究科
i20im01os@ous.jp
}

椎名 広光
岡山理科大学総合情報学部
shiina@mis.ous.ac.jp

## 1 はじめに

第 4 次産業革命の中において，その核となる情報技術の理解を深める観点から，2020 年より，プログ ラミング教育 $[1,2]$ が小学校において，導入されて おり，情報技術に直接関わりのない大学においても 導入されている。また，エラーを可視化する学習支援ツールの研究 [3] や操作ログを用いた初心者向け 教育の研究 $[4,5]$, カードの操作を基本とした学習 システムの研究 [6] が行われている. プログラミン グ教育の主目的はプログラムの作成ではなく, 論理的思考力の育成である. 論理的思考力とは，課題を 解決するために必要な処理内容と処理の順序を考え る能力で，実際にプログラミングをせずとも，論理的思考力を習得することは可能であり, その方法と して，手続き学習を提案している.

手続き学習の研究として, 手作業によるアルゴ リズムの学習についての研究 [7] がある. 手続き 学習には，プログラムの概要を表す問題文と手続 きが必要となるが，人手によるプログラム手続き の作成は，コストが高く，困難である. そのため, Seq2Seq(Encoder-Decoder)[8, 9, 10]を用いたプログラ ムのソースコードからプログラム手続きを自動生成する手法 $[11,12,13]$ の開発を行っている. また, Java のソースコードからメソッドのコメントを生成 する研究 $[14,15,16]$ も行われている. これらの手法 ではプログラム手続きの生成にプログラムのソース コードが必要となる.

本研究では，図 1 に示すように，ソースコードを 必要としないプログラム手続きの生成を目的に，問題文から直接プログラム手続きの生成を試みてい る. しかし, 問題文から直接プログラム手続きにあ たる行コメントを生成することは難しいと考えてい る.プログラムを作成する際の人間の思考過程は，最初に問題文から大まかな処理の流れ (手順) を考

図 1 問題文からの段階的プログラムコメント生成の概要

え，次に手順をより詳細な行単位の処理に具体化す るという 2 段階であると考えられる。そのため，本研究では，問題文と行コメントの中間に大まかな処理の流れであるブロックコメントを加えた手法を提案している. GRU[17]を用いた Seq2Seqを組み合わ せたモデルを用いて，最初に問題文からブロックコ メントを生成し, 次に生成されたブロックコメント から詳細な行コメントを生成する 2 段階の生成手法 である。問題文から直接行コメントを生成する手法 と人間の思考過程に則った 2 段階生成の手法を自動機械翻訳評価指標である BLEU[18] やコメントの生成例で比較している。

## 2 手続き学習システム

プログラムには，プログラムの目的を達成するた めに必要な手続きとその手続きの順序を正しく記述 する必要がある，必要な手続きをプログラムが動作 する順序に並び替える問題を解くことにより，プロ グラムの手順を理解することが手続き学習の目的 である. 手続き学習システム [19] の流れは, 最初に プログラムの問題文と必要な手続きを表示し，次に ユーザに手続きをプログラムが動作する順序に並び 替えて貪い，最後に，手続きの順序の正解，不正解

並び替え前

図 2 手続き学習システム

## を表示する。

手続き学習システムを図 2 に示す. 例の為替のプ ログラムの場合，問題文は「お金を円の単位で入力 して、米ドル、ポンド、ユーロに変換するプログラ ムを作成しなさい。」であり，そのプログラムに必要な手続き 6 個が表示されている. 左の画面が並び 替える前の問題画面であり，右の画面はユーザが並 び替えた後の画面である.

## 3 プログラムコメントの生成

## 3.1 問題文から直接行コメントを生成する 直接生成手法

ベースラインとして，問題文から直接行コメント を生成する手法について述べる. プログラムの問題文と行コメントを対訳データとして，Seq2Seqを学習させる。問題文から直接行コメントを生成する手法の概要を図 3 に示す.

問題文という短い文章からプログラムの各行のコ メントである長い文章を生成する手法であり，英語 と日本語の翻訳等とは異なり，抽象的な情報をより 具体的な情報にする必要がある。 そのため，生成す る際に必要な情報が不足し，正しい行コメントの生成は難しいのではないかと考えられる。

## 3.2 段階的に行コメントを生成する 2 段階生成手法

問題文から直接行コメントを生成する手法の改善を目的に，ブロックコメントを間に挟むことで，行コメントを直接生成するのではなく，問題文から 処理の単位ごとのコメントであるブロックコメン トを生成し，ブロックコメントから更に具体的な 行コメントを生成する 2 段階生成手法を提案する.

図 3 問題文から直接行コメントを生成する手法の概要

図 42 段階生成モデルの学習の概要

図 52 段階生成モデルの生成の概要

Seq2Seq の組み合わせ方について以下に示す.

(1)2 段階で行コメントを生成する手法の学習の 概要を図 4 に示す. 2 段階生成モデルは 2 つの Seq2Seq で構成するが，各 Seq2Seq は独立して 学習を行う. 第 1 段階の Seq2Seq は問題文とブ ロックコメントを対訳データとして学習し，第 2 段階の Seq2Seq はブロックコメントと行コメ ントを対訳データとして学習する。

(2)2 段階で行コメントを生成する手法の生成の概要を図 5 に示す. 生成においては第 1 段階の学習済み Seq 2 Seq で問題文からブロックコメント を生成し，生成されたブロックコメントを第 2 段階の学習済み Seq $2 S e q$ の入力として用い, 行 コメントを生成する。

(3)2つの Seq2Seq を組み合わせ，段階的に行コメ ントを生成する 2 段階生成モデルの構造を図 6 に示す. 第 1 段階では問題文の単語 $x_{i}$ を順に Encoder 入入力し，変換された問題文の特徴を 捉えたべクトルを用いて，Decoder はブロック コメントの単語 $y_{i+1}$ を生成する. 第 2 段階では

$x_{i}$ : 問題文の $i$ 番目の単語

$y_{i}:$ ブロックコメントの $i$ 番目の単語

$\mathrm{z}_{i}:$ 行コメントの $i$ 番目の単語

図 6 段階的に行コメントを生成する 2 段階生成モデルの構造

第 1 段階で生成されたブロックコメントの単語 $y_{i+1}$ を順に Encoderへ入力し，変換されたブ ロックコメントの特徴を捉えたべクトルを用 いて, Decoder は行コメントの単語 $z_{i+1}$ を生成 する。

2 段階生成手法では，ブロックコメントを追加し ているため, モデルが利用可能な情報は増加してお り，問題文から直接行コメントを生成する手法に比 べ，生成される行コメントの精度が向上するのでは ないかと考えている. また, 生成の段階を分けるこ とで，第 1 段階の生成で副産物としてブロックコメ ントが生成される利点もある.

## 4 生成コメントの評価

## 4.1 実験環境

評価するモデルは，ベースラインとして問題文か ら直接行コメントを生成する直接生成モデル，問題文からブロックコメントを生成し，そのブロックコ メントから行コメントを生成する 2 段階生成モデ ルの 2 種類である. 対訳データとして，大学の情報科学科の講義で使用された $\mathrm{C}$ 言語のプログラム 26 個の問題文，ブロックコメント，行コメントを用い た. 生成されたコメントは，26 個のプログラムを学習と評価に 9 対 1 で分割し，オープンテストによ り，評価している．評価方式については，生成され たコメントを対象に自動機械翻訳評価指標である BLEUを用いた。

## 4.2 評価指標 BLEU を用いた評価

生成されたコメントの BLEU による全体評価を表 1 に示す. 評価に用いた 3 個のプログラムの問題文表 1 生成されたコメントの BLEU による全体評価

表 2 問題文から生成されたブロックコメントの例

 &  \\

から生成されたブロックコメントと行コメントを BLEU で評価している．直接生成モデルはブロック コメントを生成せずに，問題文から直接行コメント を生成するため，ブロックコメントの評価は存在し ない.

行コメントの評価では, 直接生成モデルと比較し て，2 段階生成モデルは BLEU が約 0.026 向上した 0.5871 となっており，段階的にコメントを生成す る 2 段階生成手法が有用であることが確認できる. また， 2 段階生成モデルの第 1 段階で生成されたブ ロックコメントの評価は 0.8093 となっており，高 い評価であるため，行コメントの精度向上に貢献し た可能性が考えられる. 2 段階生成モデルにおいて は，第 1 段階の評価と第 2 段階の評価が比例し，第 1 段階の評価が低い場合は第 2 段階の評価も低くな るのではないかと考えている.
表 3 プログラム B の行コメントの生成例と評価

 &  & 0.4592 &  &  & 0.5169 \\

## 4.3 コメントの生成例による評価

2 段階生成モデルの第 1 段階で問題文から生成さ れたブロックコメントの生成例を表 2 に示す. プロ グラム A は「浮動小数点」や「入力」，「条件」，「表示」等の問題文に対応するブロックコメントを生成 できている.プログラム B を確認すると，「行列の 和」や「表示」等の問題文に対応するブロックコメ ントは生成できているが，問題文の「行列の要素の 和」や「最小值」,「配列の添え字」に関するブロッ クコメントを生成できていない. 行列の和を計算 し，表示するプログラムに強く影響されたことが原因であると考えている。

プログラム B の行コメントの生成例とその評価を 表 3 に示す. プログラム A については直接生成モデ ル及び 2 段階生成モデル双方とも同じ行コメントを 生成しており，その BLEU も 0.7270 と高い評価と なっている. プログラム B は変数の宣言部分では直接生成モデルが「整数型変数」の宣言のみの生成で あるのに対して，2 段階生成モデルは「整数型変数 の配列」の宣言も生成できている。また，プログラ ム A は不必要な入力処理のコメントを生成してし まっている. どちらのプログラムにおいても複数の コメントの繰り返しが発生しているが，プログラム A が理解できないコメントの繰り返しであるのに対 して，プログラム B は行列の和を求める処理を連想 させる一連のコメントを繰り返している。

## 5 まとめと今後の課題

本研究では，手続き学習システムのためのプログ ラムコメントの生成を目的に，ソースコードを必要 としない手法として，問題文からのプログラム手続 きの生成を 2 種類の手法で試み，段階的にコメント を具体化する 2 段階生成モデルの有効性が確認でき た. Seq2Seqの組み合わせ方の改善やソースコード も絡めた手法の開発が今後の課題である.

## 参考文献

[1]Ministry of Education, Culture, Sports, Science and Technology. Elementary school programming education guide (2nd edition). https://www.mext.go.jp/a_menu/shotou/ zyouhou/detail/1403162.htm, 2018. Accessed May. 5, 2020 (in Japanse).

[2]Ministry of Education, Culture, Sports, Science and Technology. How to programming education at elementary school level (Summary of discussion). https://www.mext.go.jp/b_menu/shingi/chousa/ shotou/122/attach/1372525.htm, 2016. Accessed May. 5, 2020 (in Japanse).

[3]Haruki Kanamori, Takahito Tomoto, and Takako Akakura. Development of a Computer Programming Learning Support System Based on Reading Computer Program. In Human Interface and the Management of Information. Information and Interaction for Learning, Culture, Collaboration and Business, pp. 63-69, 2013. DOI:10.1007/978-3-642-39226$9 \_8$.

[4]Koki Okimoto, Shimpei Matsumoto, Shuichi Yamagishi, and Tomoko Kashima. Developing a source code reading tutorial system and analyzing its learning log data with multiple classification analysis. Artificial Life and Robotics, Vol. 22, No. 2, pp. 227-237, 2017. DOI:10.1007/s10015-017-0357-2.

[5]Shimpei Matsumoto, Koki Okimoto, Tomoko Kashima, and Shuichi Yamagishi. Automatic Generation of C Source Code for Novice Programming Education. In Human-Computer Interaction. Theory, Design, Development and Practice, pp. 65-76, 2016. DOI:10.1007/978-3-319-39510-4_7.

[6]Shimpei Matsumoto, Yusuke Hayashi, and Tsukasa Hirashima. Development of a Card Operation-Based Programming Learning System Focusing on Thinking between the Relations of Parts. IEEJ Transactions on Electronics, Information and Systems, Vol. 138, pp. 999-1010, 2018. DOI:10.1541/ieejeiss.138.999.

[7]Junko Shinkai, Yoshikazu Hayase, and Isao Miyaji. A Trial of Algorithm Education Emphasizing Manual Procedures. In Proceedings of Society for Information Technology \& Teacher Education International Conference 2016, pp. 113118, 2016.

[8]Ilya Sutskever, Oriol Vinyals, and Quoc V Le. Sequence to Sequence Learning with Neural Networks. In Advances in Neural Information Processing Systems 27 (NIPS 2014), pp. 3104-3112, 2014.

[9]Thang Luong, Hieu Pham, and Christopher D. Manning. Effective Approaches to Attention-based Neural Machine Translation. In Proceedings of the 2015 Conference on Empirical Methods in Natural Language Processing, pp. 14121421, 2015. DOI:10.18653/v1/D15-1166.

[10]Alexander M. Rush, Sumit Chopra, and Jason Weston. A Neural Attention Model for Abstractive Sentence Summarization. In Proceedings of the 2015 Conference on Empirical Methods in Natural Language Processing, pp. 379-389, 2015. DOI:10.18653/v1/D15-1044.

[11]Akiyoshi Takahashi, Hiromitsu Shiina, Ryunosuke Ito, and Nobuyuki Kobayashi. Procedure Generation for Algorithm Learning System using Comment Synthesis and LSTM.
International Journal of Service and Knowledge Management( IJSKM), Vol. 3, No. 2, pp. 48-61, 2019.

[12]Sakuei Onishi, Akiyoshi Takahashi, Hiromitsu Shiina, and Nobuyuki Kobayashi. Automatic comment generation for source code using external information by neural networks for computational thinking. International Journal of Smart Computing and Artificial Intelligence (IJSCAI). to appear.

[13]Sakuei Onishi, Fumihiro Yukimoto, and Hiromitsu Shiina. Program Comment Generation Through Distributed Representation Construction Using Parse Tree Information. In IIAI International Conference on Advanced Applied Informatics 2020, pp. 434-439, 2020. DOI:10.1109/IIAIAAI50415.2020.00093. Online.

[14]Xing Hu, Ge Li, Xin Xia, David Lo, and Zhi Jin. Deep Code Comment Generation. In 2018 IEEE/ACM 26th International Conference on Program Comprehension (ICPC), ICPC '18, p. 200-210, 2018. DOI:10.1145/3196321.3196334.

[15]Xing Hu, Ge Li, Xin Xia, David Lo, and Zhi Jin. Deep code comment generation with hybrid lexical and syntactical information. Empirical Software Engineering, Vol. 25, No. 3, pp. 2179-2217, 2019. DOI:10.1007/s10664-019-09730-9.

[16]Boao Li, Meng Yan, Xin Xia, Xing Hu, Ge Li, and David Lo. DeepCommenter: A Deep Code Comment Generation Tool with Hybrid Lexical and Syntactical Information. In Proceedings of the 28th ACM Joint Meeting on European Software Engineering Conference and Symposium on the Foundations of Software Engineering, p. 1571-1575, 2020. DOI:10.1145/3368089.3417926.

[17]Kyunghyun Cho, Bart van Merriënboer, Caglar Gulcehre, Dzmitry Bahdanau, Fethi Bougares, Holger Schwenk, and Yoshua Bengio. Learning Phrase Representations using RNN Encoder-Decoder for Statistical Machine Translation. In Proceedings of the 2014 Conference on Empirical Methods in Natural Language Processing (EMNLP), pp. 1724-1734, 2014. DOI:10.3115/v1/D14-1179.

[18]Kishore Papineni, Salim Roukos, Todd Ward, and Wei-Jing Zhu. Bleu: a Method for Automatic Evaluation of Machine Translation. In Proceedings of the 40th Annual Meeting of the Association for Computational Linguistics, pp. 311-318, 2002. DOI:10.3115/1073083.1073135.

[19]Kohei Sakane, Nobuyuki Kobayashi, Hiromitsu Shiina, and Fumio Kitagawa. Kanji Learning and Programming Support System which conjoined with a Lecture. In IEICE Technical Report, Vol. 114 of ET2014-86, pp. 7-12, 2015.
 大西朔永 岡山理科大学大学院総合情報研究科 i20im01os@ous.jp }  椎名 広光 岡山理科大学総合情報学部 shiina@mis.ous.ac.jp  