数据集:

koutch/staqc

任务:

问答

语言:

en

大小:

10K<n<100K

预印本库:

arxiv:1803.09371

其他:

code

许可:

cc-by-4.0
英文

StaQC数据集简介(来自Stack Overflow的系统挖掘的问题-代码数据集)

数据集概要

StaQC(Stack Overflow问题-代码对)是一个大型数据集,包含大约148K个Python和120K个SQL领域的问题-代码对,是通过使用双视图层级神经网络从Stack Overflow自动挖掘得到的。StaQC从三个来源收集而来:多代码答案帖子,单代码答案帖子以及对多代码答案帖子的手动注释。

此版本是原作者在 GitHub 上发布的非修改的重新分发副本,并获得许可,在Hub上提供更便捷的访问。

独立解决方案

如论文中所述,当提问者只根据代码片段就能解决问题时,我们将代码片段定义为代码解决方案(也称为"独立"解决方案)。

手动注释

手动注释是对多代码答案帖子的集合进行的标注,每个代码片段都用一个布尔值进行注释,表明该片段是否为该问题的独立解决方案。

多代码答案帖子

多代码答案帖子是一个(已接受的)答案帖子,其中包含多个代码片段,其中某些片段可能不是该问题的独立代码解决方案(见 paper 中的第1节)。例如,在 this multi-code answer post 中,第三个代码片段不是对问题"如何将一个数限制在指定范围内?(Python)"的代码解决方案。

注意:多代码答案帖子中也包含手动注释。

单代码答案帖子

单代码答案帖子是一个(已接受的)答案帖子,其中只包含一个代码片段。我们将这样的代码片段与问题标题配对,形成一个问题-代码对。

支持的任务和排行榜

此数据集可用于自然语言到代码生成任务。

语言

Python,SQL,英语

数据集结构

数据实例

每个配置对应一个编程语言的三个部分之一。

数据集有三个部分:

  • mca(多代码答案帖子)
  • sca(单代码答案帖子)
  • man(手动注释)

和两种编程/查询语言:

  • 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"
}

数据字段

  • question_id:Stackoverflow问题的ID
  • question:Stackoverflow问题的标题,重新定义为自然语言意图
  • snippet:挖掘或注释的独立解决方案,回答了问题
  • is_sda:对于手动注释,给定的代码片段是否是问题的独立解决方案。

数据拆分

每个数据集配置只包含训练集拆分。

数据集创建

源数据

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}
}

贡献信息

我没有为这个数据集的创建做出贡献,只是重新分发。所有的功劳应归原作者。