Page 244 - 《软件学报》2021年第7期
P. 244

2162                                     Journal of Software  软件学报 Vol.32, No.7,  July 2021

                    这也解释了词库大小从 30 000 增加到 50 000 时,CodePtr 的两个模型比 Hybrid-DeepCom 下降幅度更大的
                 现象,CodePtr 为了引入指针生成网络,增加了一个编码器用于接受未分解的源代码,表 5 统计了训练集上分解前
                 的源代码词库中单词出现次数的分布情况.从表中可以得知,在词库大小为 50 000 的情况下,大量出现次数为
                 5~10 次的单词被添加到了词库中,这些单词在大小为 476 654 的训练集上出现的次数极少,其词向量很少被训
                 练和更新,因此可以称得上是噪声,引入大量的噪声单词对 CodePtr 造成了较大的影响.

                                    Table 5  Statistics of occurrences of words in source vocabulary
                                          表 5   分解前源代码词库中单词出现次数统计
                               词库大小       出现次数      单词数量      占比(%)     累计占比(%)       剩余
                                            1        203 581   42.71      42.71      273 073
                                            2        98 266    20.62      63.33      174 807
                                            3        45 974     9.65      72.97      128 833
                                476 654     4        31 737     6.66      79.63      97 096
                                           5~10      56 526    11.86      91.49      40 570
                                          11~100     35 975     7.55      99.04      4 595
                                           101~      4 595     42.27       100         0
                 4    总结与展望

                    本文针对当前表现最佳模型的两个输入不完全匹配的不足,通过增加一个输入对其进行了改进,首先提出
                 了无指针生成网络的 CodePtr.然后针对现有的代码注释自动生成方法普遍存在的局限性,即注释中无法生成
                 OOV 词的问题,引入了指针生成网络,提出了 CodePtr.实验结果表明,无指针生成网络的 CodePtr 在大多数情况
                 下的性能优于 Hybrid-DeepCom,而 CodePtr 在实验中的所有情况都优于 Hybrid-DeepCom,在大多数情况下优于
                 无指针生成网络的 CodePtr.
                    在未来的工作中,我们试图解决在第 3.4.4 节中提出的较大词库大小情况下模型得分下降的问题.此外,考
                 虑到驼峰分解前后的源代码序列存在较多冗余,我们将尝试把两个输入融合,在减少冗余的同时也可以加快模
                 型的训练速度.另外,针对第 3.4.3 节中提到的输出序列中出现重复的问题,可以考虑使用文献[46,47]中的方法加
                 以解决.


                 References:
                 [1]    Tenny T. Procedures and comments vs. the banker’s algorithm. ACM SIGCSE Bulletin, 1985,17(3):44–53. [doi: 10.1145/382208.
                     382523]
                 [2]    Tashtoush Y, Odat Z, Alsmadi  IM, Yatim M.  Impact of  programming  features  on code readability.  Int’l Journal  of  Software
                     Engineering and Its Applications, 2013,7(6):441–458. [doi: 10.14257/ijseia.2013.7.6.38]
                 [3]    Xia X, Bao L, Lo D, Xing Z, Hassan AE, Li S. Measuring program comprehension: A large-scale field study with professionals.
                     IEEE Trans. on Software Engineering, 2017,44(10):951–976. [doi: 10.1109/TSE.2017.2734091]
                 [4]    Fluri B, Wursch M, Gall HC. Do code and comments co-evolve? on the relation between source code and comment changes. In:
                     Proc. of the 14th Working Conf. on Reverse Engineering (WCRE 2007). IEEE, 2007. 70–79. [doi: 10.1109/WCRE.2007.21]
                 [5]    Song X, Sun H, Wang X, Yan J. A survey of automatic generation of source code comments: Algorithms and techniques. IEEE
                     Access, 2019,7:111411–111428. [doi: 10.1109/ACCESS.2019.2931579]
                 [6]    Hu X, Li G, Xia  X, Lo  D,  Jin Z.  Deep code comment  generation with  hybrid  lexical and  syntactical information. Empirical
                     Software Engineering, 2019, 1–39. [doi: 10.1007/s10664-019-09730-9]
                 [7]    Marcus A, Maletic JI. Recovering documentation-to-source-code traceability links using latent semantic indexing. In: Proc. of the
                     25th Int’l Conf. on Software Engineering. IEEE, 2003. 125–135. [doi: 10.1109/ICSE.2003.1201194]
                 [8]    Kuhn A, Ducasse S, Gírba T. Semantic clustering: Identifying topics in source code. Information and Software Technology, 2007,
                     49(3):230–243. [doi: 10.1016/j.infsof.2006.10.017]
                 [9]    Haiduc S, Aponte J, Moreno L, Marcus A. On the use of automated text summarization techniques for summarizing source code. In:
                     Proc. of the 17th Working Conf. on Reverse Engineering. IEEE, 2010. 35–44. [doi: 10.1109/WCRE.2010.13]
   239   240   241   242   243   244   245   246   247   248   249