版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
面向任务的代码搜索代码搜索在软件开发过程中,代码搜索能够为开发者提供参考的代码段去辅助完成特定的编程任务。2016/7/25
/2Section基础数据和One
影响力分析By
江贺基础数据和影响力分析•
收集了93篇与代码/API
推荐相关的文献•
作者总计208个,国家16个。•
分析回答以下问题:•
1.
Where?作者来自哪里?•
2.Who?谁是最高产的作者?影响力如何?•
3.
Which?那篇文章被引次数最多?•
4.Co-authorship
network
合著网络?4作者来自哪里?Iran,
1Switzerland,2France,1Israel,3
Singapore,
4Belgium,3USAThailand,
1India,
4ChinaGermany,4Italy,5CanadaJapanSouth
Korea,
8BrazilSouth
KoreaItalyBrazil,
9USA,
83Japan,11GermanyIndiaCanada,19BelgiumIsraelSingaporeSwitzerlandFranceIran作者总计国家16个208个China,50Thailand5谁是最高产的作者?序号作者相关论文篇数
H-index国家12David
Lo10833113911201849202040SingaporeUSACollin
McMillan3
Denys
Poshyvanyk8USA45678Shaowei
WangMark
GrechanikEmily
Hill8SingaporeUSA76USATa
oXie4USAReidHolmes4CanadaUSA9
Sushil
Bajracharya10
Cristina
Lopes44USA6谁是最高产的作者?序号作者相关论文篇数
H-index国家12David
Lo1083311391120SingaporeUSACollin
McMillan3
Denys
Poshyvanyk8USA45Shaowei
WangMark
Grechanik8SingaporeUSA7作者影响力?序号作者相关论文篇数
ACS指数总被引次数12345Ta
oXie4421245.3184.8165.7165.0723411350165ReidHolmesGail
C.MurphySteven
P.
ReissSureshThummalapenta231156.0121.6100.530948320167K.
Vijay-ShankerNaiyanaSahavechaphan89Kajal
ClaypoolDavid
MandelinLinXu111100.587.587.520135035010注:ACS不仅衡量了作者对文章的贡献度,还衡量了对该领域的贡献度8作者影响力?序号作者相关论文篇数
ACS指数总被引次数12345Ta
oXie4421245.3184.8165.7165.0723411350165ReidHolmesGail
C.MurphySteven
P.
ReissSuresh2156.0309哪篇文章被引数最多?序号题目被引次数NCII期刊PLDI200512Jungloid
mining:
helpingto
navigatethe
API
jungle35030631.82Parseweb:
aprogrammer
assistant
for
reusingopen
sourcecode
ontheweb34.00
ASE2007ICSE345Usingstructuralcontext
to
recommend
source
code
examplesXSnippet:
mining
Forsamplecode29420126.7320.102005OOPSLA2006Mining
API
patterns
as
partialordersfromsource
code:
fromusage
scenariosto
specifications20122.33
FSE2007Usingnatural
language
programanalysisto
locateandunderstand
action-orientedconcerns6AOSD200718218017320.2225.71ECOOP200978MAPO:
MiningandRecommending
API
Usage
PatternsExample-centric
programming:integratingweb
search
intothedevelopment
environment28.83
CHI
2010ICSE9Semantics-based
codesearch23.57165155200922.14
FSE200910
Learning
fromexamplesto
improvecode
completionsystems10哪篇文章被引数最多?序号题目被引次数NCII期刊PLDI200512Jungloid
mining:
helpingto
navigatethe
API
jungle35030631.82Parseweb:
aprogrammer
assistant
for
reusingopen
sourcecode
ontheweb34.00
ASE2007ICSE3Usingstructuralcontext
to
recommend
source
code
examplesXSnippet:
mining
Forsamplecode29420126.7320.102005OOPSLA200641.Jungloidmining:
helpingto
navigatethe
API
junglePLDI
2005.,2.Parseweb:
aprogrammer
assistant
for
reusingopensourcecodeontheweb,
ASE2007.3.Using
structuralcontexttorecommend
sourcecodeexamples,ICSE2005.作者合著网络(1)12作者合著网络
(2)作者合著网络
(3)14Section代码搜索的两个尝试TwoBy
聂黎明代码搜索的分类按输入类型分:自由文本作为查询(面向任务的代码搜索)•
Lvetal.
ASE
2015,
Keivanlooetal.ICSE
2014,
McMillanetal.
TOSEM
2013,Bajracharyaetal.FSE
2010.API作为查询•
Subramanian
etal.ICSE2014,Ghafari
etal.ICPC2014,Moritz
ASE
2013,Wang
etal.
ASE2011.Zhong
etal.ECOOP
2009.Code(context)作为查询•
Nguyenetal.ICSE2012,Rahman
etal.
WCRE2014.其它形式的查询•
Stolee
etal.
TOSEM
2014,
Inoueetal.ICSE
2012,
Thummalapenta
etal.
ASE2007,
Holmes
etal.ICSE2005.自动代码修复•
Zhong
etal.ICSE
2015,
Peietal.ICSE
2015,
Tao
etal.FSE2014,
Kim
etal.ICSE2013.2016/7/25
/推荐粒度--代码片段代码片段指的是Java
的一个类(class)中的某个方法。它包含了注释和代码,代码有方法名和方法体。2016/7/25
/面向任务的代码搜索发现1:现有的代码推荐主要借助于信息检索的方法,匹配方式单一,效果不佳。代码段仓库Solution:融合了信息检索和监督学习的方法。充分利用领域特征来构建分类器,为新查询推荐代码段。不同搜索方法BM25PortfolioIman自由文本的查询recordaudio
sound推荐结果自由文本作为查询的代码推荐方法的一般框架2016/7/25
/ROSF:
Leveraging
Information
Retrieval
andSupervisedLearningfor
Recommending
Code
Snippets(融合了信息检索和监督学习的代码推荐方法)HeJiang*,LimingNie,Zeyi
Sun,
Zhilei
Ren,WeiqiangKong,
Tao
Zhang,
and
XiapuLuo,“ROSF:LeveragingInformationRetrieval
and
SupervisedLearningforRecommendingCode
Snippets”,
IEEE
Transactionson
Services
Computing,2016.2016/7/25
/背景当开发者输入自由文本的查询时,推荐方法如何为开发者提供一个相关的代码片段列表,辅助其完成特定的编程任务?现有的代码推荐主要借助于信息检索的方法,匹配方式单一,有提升空间。如何充分利用该任务中的多种领域特征,并为它们自动分派不同的权重?识别代码搜索中的哪些特征来构建分类器,进而为新的查询推荐代码片段?2016/7/25
/方法--框架提出融合了信息检索和监督学习的方法
(ROSF)。ROSF算法:Step1:使用信息检索方法(BM25)为某些查询准备对应的代码段候选集合。Step2:在识别一些领域特征并对候选集合中的代码片段进行标注的基础上,利用监督学习方法构建出预测模型。Step3:当开发者输入新ROSF算法框架蓝色带箭头的线表示训练的过程,橘色带箭头的线表示推荐的过程,黑色带箭头的线表示数据准备过程。的查询时,预测模型为该查询对应的候选集合进行重新排序,最后推荐一定数目的代码段。2016/7/25
/实验•
查询来自Stack
Overflow中真实的编程任务,共35个。选择其中的20个做为测试集。•
代码段仓库921,713个代码片段,来自1538个开源app项目。•
评估4分值:高度相关(4),相关(3),一点相关(2),不相关(1)。人工评分2016/7/25
/实验•
查询代码段仓库等数据已经公开!2016/7/25
/实验设计--度量指标•
Precision–
一个查询的推荐结果中相关代码片段数量所占的比例。值越大越好。|Relevance||Retrieved|Precision
=–
|Relevance|
表示推荐结果中相关代码片段的数量,
|Retrieved|
表示推荐结果的数目。–
例如,为某个查询推荐10个代码片段,其中有7个是相关的,那么Precision的值为:
7/10*100%
=70%.•
NDCG–
根据代码片段在推荐列表中的位置来评估推荐方法的效果。相关的代码片段被排的越靠前,NDCG值越大,性能越好。퐺푅푖–
NDCG
=
,
퐺
=
푅1
+
10푖=2푖퐺푙표푔2푖–
푅
和
푅
分别表示出现在第1个位置和第i个位置上的代码片段对应的相关性得分。
푖퐺表示推荐列表的1푖理想排序。•
使用两个度量指标在多个测试查询上的平均值作为算法性能的度量。•
实验平台–
PC配置如下:3.60GHz
CPU
(Intel
i5)和
windows
8.1操作系统.–使用Java
编程语言,Eclipse开发环境。2016/7/25
/
24实验设计--度量指标•
Precision–
一个查询的推荐结果中相关代码片段数量推荐结果中相关代码片段数量所占的比例,值越大越好。|Relevance||Retrieved|Precision
=–
|Relevance|
表示推荐结果中相关代码片段的数v果的数目。–
例如,为某个查询推荐10个代码片段,其中有7个是相关的,那么Precision的值为:
7/10*100%
=70%.•
NDCG–
根据代码片段在推荐列表中的位置来,NDCG值越大,性能越好。相关的代码片段被排的越靠前,NDCG值越大,性能越好。퐺푅푖–
NDCG
=
,
퐺
=
푅1
+
10푖=2푖퐺푙표푔2–
푅
和
푅
分别表示出现在第1个位置和第i个关性得分。
푖퐺表示推荐列表的1푖理想排序。•
使用两个度量指标在多个测试查询上的平均值作为算法性能的度量。•
实验平台–
PC配置如下:3.60GHz
CPU
(Intel
i5)和
windows
8.1操作系统.–使用Java
编程语言,Eclipse开发环境。2016/7/25
/
25研究问题及结果-RQ1RQ1:是否参数(候选集合的规模)会影响算法的性能?70Answerto
RQ1:当候选集合的规模递增时,算法性能(两个指标Precision@10
和NDCG@10)先增后降。当候选集合中实例数量达到70时,算法性能达到最好。2016/7/25
/26研究问题及结果-RQ2RQ2:与最新的代码推荐方法相比,本文方法(ROSF)效果如何?几种算法的结果对比2016/7/25
/27研究问题及结果-RQ2RQ2:与最新的代码推荐方法相比,本文方法(ROSF)效果如何?几种算法的结果对比Answerto
RQ2:与几个最新的代码推荐方法对比,本文方法在Precision@10上提升了20%-41%,在NDCG@10上提升了13-33%2016/7/25
/28研究问题及结果-RQ2RQ2:与最新的代码推荐方法相比,本文方法(ROSF)效果如何?为了得到统计意义上的结论,使用了Friedman’s
test
和two-sidedWilcoxon’s
signedrank
tests大部分P-value均小于0.05,说明存在统计意义上的区别。对比算法:TOSEM,
2013.
Mcmillan
et
al.Portfolio
Searching
for
Relevant
Functions
and
TheirUsages
inMillions
of
Lines
ofCode.ICSE,2014.Keivanloo
et
al.
Spotting
Working
CodeExamples.ICSE,2010.Bajracharya
et
al.Leveraging
usage
similarity
for
effective
retrieval
of
examples
incode
repositories.2016/7/25
/29研究问题及结果-RQ3RQ3:算法中使用到的几个特征是如何影响算法性能的?首先,使用
Spearman‘s
rank
correlation
coefficient(Spearman’s
rho)分析了训练集中特征之间的相关性。特征相关性分析可以看到,大部分特征之间的相关性都低于0.6,即特征之间的相关性较低,冗余较少。2016/7/25
/30研究问题及结果-RQ3RQ3:算法中使用到的几个特征是如何影响算法性能的?特征对算法的影响2016/7/25
/31研究问题及结果-RQ3RQ3:算法中使用到的几个特征是如何影响算法性能的?特征对算法的影响Answerto
RQ3:各个特征对算法影响程度各不相同。其中影响较大的几个特征分别是:代码段行数(f9),查询与代码段内容的文本相似度(f1),查询与Java引入语句之间的文本相似度(f6),
以及查询与代码段内容的主题相似度(f8)。2016/7/25
/32代码段仓库抽取流程Java
源代码代码片段命名项目名类名方法名App
项目com.radiostudent.radiostudentstream_2_src.tar.gz@NetworkStateReceiver#onReceive.txt预处理存储代码段仓库代码段索引2016/7/25
/33三类领域特征例子:Java
文件文本相似度(与查询相关)主题相似度(与查询相关)结构特征(与查询无关)三类,9个特征2016/7/25
/34重排序步骤:Step1.为某个新查询对应侯选集合中的每个实例分别计算预测的4个分值的概率值。Step2.根据每个分值中的概率值,为实例进行排序。Step3.推荐N个代码片段给开发者。2016/7/25
/35面向任务的代码搜索发现1:现有的代码推荐主要借助于信息检索的方法,匹配方式单一,效果不佳。代码段仓库发现2:查询词过短,以及查询和匹配内容使用不同的语言而导致词项失配问题Solution:从Stack
Overflow的问答对中抽取出编程相关的词来扩展原始查询。BM25PortfolioIman不同搜索方法自由文本的查询recordaudio
sound推荐结果自由文本作为查询的代码推荐方法的一般框架2016/7/25
/36QECK:QueryExpansion
Basedon
Crowd
Knowledge
forCodeSearch(基于众智查询扩展的代码推荐)LimingNie,HeJiang*,Zhilei
Ren,Zeyi
Sun,Xiaochen
Li,
“QueryExpansion
BasedonCrowdKnowledge
forCode
Search”,
IEEE
Transactionson
ServicesComputing,
2016.PrePrints,
doi:10.1109/TSC.2016.2560165.2016/7/25
/37背景当开发者输入自由文本的查询时,推荐方法如何为开发者提供一个相关的代码片段列表,辅助其完成特定的编程任务?由于查询语句过短,查询与代码段使用不同的语言,或者存在歧义造成检索效果不好而导致词项失配问题。如何解决?如果查询扩展方法有用,那么如何找到合适的扩展词对原始查询进行扩展?2016/7/25
/38背景--相关工作的启发•
“Rankingcrowd
knowledge
toassistsoftware
development,”
Program
Comprehension
(PC),
2014.把质量较高的
StackOverflow(SO)
问答对
推荐给开发者。•
D.
Lo,
"Query
expansionviaWordNet
for
effectivecode
search,"
Software
Analysis,
EvolutionandReengineering
(SANER),
2015.通过WordNet对查询进行扩展,进而推荐代码片段。•
D.
Lo,“Automated
construction
ofasoftware-specific
word
similarity
database,”
SoftwareMaintenance,
Reengineeringand
Reverse
Engineering
(CSMRWCRE),
2014.•
"SWordNet:
Inferringsemanticallyrelatedwords
from
software
context,“
ESE,
2014.构建软件相关的近义词列表。--------------------------------------------------------------------------------------------------------------------------------•
与本文工作同时期的其它工作:•
Lo
D.
RACK:
AutomaticAPI
Recommendation
usingCrowdsourced
Knowledge,
SANER,
2016.介绍了使用众智进行API推荐2016/7/25
/39背景--相关工作的启发•
“Rankingcrowd
knowledge
toassistsoftware
development,”
Program
Comprehension
(PC),
2014.把质量较高的
StackOverflow(SO)
问答对
推荐给开发者。•
D.
Lo,
"Query
expansionviaWordNet
for
effectivecode
search,"
Software
Analysis,
EvolutionandReengineering
(SANER),
2015.通过WordNet对查询进行扩展,进而推荐代码片段。思考:是否可以从StackOverflow中抽取软件相关的扩展词用于查询的预操作,进而推荐更好的代码片段?--------------------------------------------------------------------------------------------------------------------------------•
与本文工作同时期的其它工作:•
Lo
D.
RACK:
AutomaticAPI
Recommendation
usingCrowdsourced
Knowledge,
SANER,
2016.介绍了使用众智进行API推荐2016/7/25
/40方法(QECK)利用伪相关反馈方法从Stack
Overflow的问答对(众智)中抽取出扩展词,对原始查询进行扩展。步骤:1.
利用文本相似度和用户评分的综合得分来推荐与原始查询最相关的问答对;2.利用伪相关反馈方法从问答对中选出与原始查询相关的扩展词;具体来说,为反馈文档中的每个词设定一个权重。在本文档中出现的次数多,在别的文档中出现的次数少,则该词的权重值越大。基于众智查询扩展的代码推荐算法框架3.把获取的扩展词加入到原始查询中,利用扩展后的查询对代码段仓库进行检索。2016/7/25
/41方法(QECK)利用伪相关反馈方法从Stack
Overflow词,对原始查询进行扩展。使用了两种得分的平均值来获取伪相关反馈文档:文本相似度和用户评分。步骤:1.
利用文本相似度和用户评分的综合得分来推荐与原始查询最相关的问答对;2.利用伪相关反馈方法从问答对中选出与原始查询相关的扩展词;具体来说,为反馈文档中的每个词设定一个权重。在本文档中出现的次数多,在别的文档中出现的次数少,则该词的权重值越大。使用TF*IDF值从伪相关反馈文档的词集合中抽取有代表性的词。3.把获取的扩展词加入到原始查询中,利用扩展后的查询对代码段仓库进行检索。2016/7/25
/42实验•
查询20个真实的编程任务,来自Stack
Overflow。•
SO问答对仓库24,120,522帖子---5,108,770问答对---312,941Android
问答对。(屏蔽掉与查询相同的问答对)•
代码段仓库921,713个代码片段,来自1538个app项目。2016/7/25
/43研究问题及结果-RQ1RQ1:QECK是否能够提升现有代码搜索算法的性能?本方法在三个算法上都取得了明显的提升效果,在Precision@10上分别提升了:38%,33%,64%在NDCG@10上分别提升了:20%,16%,35
%对比算法:IR:
BM25P:
Portfolio
(TOSEM
2013)VF:
Iman(ICSE2014)对比算法:TOSEM,
2013.
Portfolio
Searching
for
Relevant
Functions
and
TheirUsages
inMillions
ofLinesof
Code.ICSE,2014.
Spotting
Working
Code
Examples.2016/7/25
/
44研究问题及结果-RQ2RQ2:参数是如何影响推荐性能的?伪相关反馈文档数目固定为5,扩展词个数变化时对应两个度量指标的变化情况99PrecisionNDCG扩展词个数固定为9,伪相关反馈文档数目变化时对应两个指标的变化情况55PrecisionNDCG2016/7/25
/45研究问题及结果-RQ3RQ3:与最新的查询扩展方法相比,本文方法效果如何?与最新的查询扩展代码推荐方法对比在Precision@10上提升了22%在NDCG@10上提升了16%PW:P-WordNet(SANER2015)对比算法:SANER,2015,D.
Lo,
Queryexpansion
viaWordNet
foreffective
code
search2016/7/25/46实验设计--SO问答对仓库一个SO问答对的处理过程•通过Tag过滤,得到Android编程相关的问答对过滤预处理存储问答对•对问答对进行文本预处理,去停用词,驼峰分词,取词干等操作•每个问答对作为一个document对象保存在Lucene中。一个document有多个域•便于快速检索SO问答对索引Lucene
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年浙科版必修1历史下册阶段测试试卷
- 2025年冀教版九年级历史下册阶段测试试卷含答案
- 2025年新科版七年级物理上册月考试卷含答案
- 2025年教科新版八年级地理上册月考试卷
- 2025年牛津译林版八年级地理下册月考试卷含答案
- 2025年岳麓版九年级历史上册阶段测试试卷含答案
- 2025年度煤炭行业安全生产责任保险合同7篇
- 二零二五版门卫服务与社区治安管理合同3篇
- 二零二五版门卫值班人员安全管理聘用合同4篇
- 二零二五年度城市更新项目泥水工施工合同4篇
- 两办意见八硬措施煤矿安全生产条例宣贯学习课件
- 40篇短文搞定高中英语3500单词
- 人教版高中数学必修二《第九章 统计》同步练习及答案解析
- 重大危险源的风险评估模型
- 儿科护理安全警示教育课件
- 三年级下册口算天天100题
- 国家中英文名称及代码缩写(三位)
- 人员密集场所消防安全培训
- 液晶高压芯片去保护方法
- 使用AVF血液透析患者的护理查房
- 拜太岁科仪文档
评论
0/150
提交评论