数据集:
koutch/staqc
StaQC(Stack Overflow问题-代码对)是一个大型数据集,包含大约148K个Python和120K个SQL领域的问题-代码对,是通过使用双视图层级神经网络从Stack Overflow自动挖掘得到的。StaQC从三个来源收集而来:多代码答案帖子,单代码答案帖子以及对多代码答案帖子的手动注释。
此版本是原作者在 GitHub 上发布的非修改的重新分发副本,并获得许可,在Hub上提供更便捷的访问。
独立解决方案
如论文中所述,当提问者只根据代码片段就能解决问题时,我们将代码片段定义为代码解决方案(也称为"独立"解决方案)。
手动注释
手动注释是对多代码答案帖子的集合进行的标注,每个代码片段都用一个布尔值进行注释,表明该片段是否为该问题的独立解决方案。
多代码答案帖子
多代码答案帖子是一个(已接受的)答案帖子,其中包含多个代码片段,其中某些片段可能不是该问题的独立代码解决方案(见 paper 中的第1节)。例如,在 this multi-code answer post 中,第三个代码片段不是对问题"如何将一个数限制在指定范围内?(Python)"的代码解决方案。
注意:多代码答案帖子中也包含手动注释。
单代码答案帖子
单代码答案帖子是一个(已接受的)答案帖子,其中只包含一个代码片段。我们将这样的代码片段与问题标题配对,形成一个问题-代码对。
此数据集可用于自然语言到代码生成任务。
Python,SQL,英语
每个配置对应一个编程语言的三个部分之一。
数据集有三个部分:
和两种编程/查询语言:
可以通过将部分与编程语言的组合来获取一个配置。例如,可以使用以下方法自动生成Python中的多代码答案:
dataset = load_dataset("koutch/staqc", 'mca_python') DatasetDict({ train: Dataset({ features: ['id', 'question_id', 'question', 'snippet'], num_rows: 40391 }) })
或使用以下方法获取手动注释:
dataset = load_dataset("koutch/staqc", 'man_sql') DatasetDict({ train: Dataset({ features: ['id', 'question_id', 'question', 'snippet'], num_rows: 1587 }) })手动注释
手动注释包含有关给定Stackoverflow问题的信息,对于该帖子的已接受答案中的每个个体代码块,注释说明了给定的代码块是否是问题的独立解决方案(问题标题)。
{ 'question_id': 5947137, 'question': 'How can I use a list comprehension to extend a list in python?', 'snippet': {'text': ['import itertools as it\n\nreturn sum(it.imap(doSomething, originalList), [])\n', 'return sum(map(doSomething, originalList), [])\n', 'return sum((doSomething(x) for x in originalList), [])\n', 'accumulationList = []\nfor x in originalList:\n accumulationList.extend(doSomething(x))\nreturn accumulationList\n'], 'is_sda': [True, True, True, True]} }多代码答案帖子
{ 'question_id': 35349290, 'question': 'Python: Generating YYMM string between two dates', 'snippet': ['start_year = 2005\nend_year = 2007\nstart_month = 3\nend_month = 2\nyymm = [(yy, mm) for yy in range(start_year, end_year + 1) for mm in range(1, 13)\n if (start_year, start_month) <= (yy, mm) <= (end_year, end_month)]\n', "formatted_yymm = ['{:>02}{:>02}.mat'.format(yy % 100, mm) for yy, mm in yymm]\n"] }单代码答案帖子
{ 'question_id': 19387200, 'question': 'Python: get OS language', 'snippet': "import locale\nloc = locale.getlocale() # get current locale\nlocale.getdefaultlocale() # Tries to determine the default locale settings and returns them as a tuple of the form (language code, encoding); e.g, ('en_US', 'UTF-8').\n" }
每个数据集配置只包含训练集拆分。
StackOverflow数据倾销。
请参阅 paper 中的第2.3节“为模型训练注释QC对”。
本作品在 Creative Commons Attribution 4.0 International License 下获得许可。
如果您在研究中使用了该数据集或代码,请引用以下论文:
@inproceedings{yao2018staqc, title={StaQC: A Systematically Mined Question-Code Dataset from Stack Overflow}, author={Yao, Ziyu and Weld, Daniel S and Chen, Wei-Peng and Sun, Huan}, booktitle={Proceedings of the 2018 World Wide Web Conference on World Wide Web}, pages={1693--1703}, year={2018}, organization={International World Wide Web Conferences Steering Committee} }
我没有为这个数据集的创建做出贡献,只是重新分发。所有的功劳应归原作者。