任务 #13071

RongEr 更新于 2017-07-22 13:14

之前版本:

1.初步筛选项目并爬取issue数据

  • 选取带labelissue>100 的项目12797个
  • 爬虫爬取得数据最终包含11675个项目,有一些项目有错误已不存在,对应带标签的帖子数为6414872条。



2.网页数据预处理

    Github api接口中的issue idproject id和后台数据库中的id没有联系。通过issues表单的repo_idissue_id匹配爬虫数据,且一个issue可能有多个标签,将issue_id和label插入新表

issues_labels。


3.进一步筛选项目

    [a]处理issue标签:
  • 选取表示issue类型的标签格式比如'kind:*','type: *'等8种格式
  • 截取后半段指示具体issue类型的标签,选出公有目录类型(前半段,比如'type:','kind:'等)大于5的作为issue具体类型标签(比如'bug','feature'等),对于一些不是指示类型的标签直接人工过滤掉(比如'duplicate','test','support')
  • 然后扩展到包含该具体类型标签的所有实际标签。包含大概4161个。
  • 统计覆盖这些标签的issue数量(2423944条),得出取前30个标签(2122787条)可以覆盖87.6%的帖子数。
  • 将这30个标签划分为'bug'和'non-bug',然后对issue进行标注。
  • 对于既是'bug'又是'non-bug'的数据大概62807条,占比2.9%,影响不大所以全部归为'bug'类型。

    最终得到1031505条bug,1091282条non-bug。


    [b]统计项目带标签的issue数量及bug比率


  • 有带标注的issue:10584个项目
  • issue>500 : 684个项目
  • issue > 500 bug_ratio 在(0.2-0.8):568个项目
  • issue > 400  bug_ratio 在(0.2-0.8):  820个项目


错误记录:


1.Incorrect string value: '\xF0\x9F\x98\x84\xF0\x9F

对应UTF-8编码格式中的4字节编码。正常的汉字一般不会超过3个字节,这里出现4个字节实际上是它对应的是智能手机输入法中的表情。如果想存储4个字节的必须用utf8mb4类型。不而要使用utf8mb4类型,首先要保证Mysql版本要不低于 MySQL 5.5.3。

更改mysql表格字段编码格式,并且在python处理脚本中读取数据时也要设置为utf8mb4。

conn = pymysql.connect(host='127.0.0.1', port=3306, user='root', passwd='123456', db='ghtorrent_2017_5', charset='utf8mb4')


ALTER TABLE issues CHANGE body body MEDIUMTEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL;


2.python解析网页数据时,ast.literal_eval()能将数据还原成它本身或者是能够转化成的数据类型。并且相较于eval(),会进行类型安全检查




当前版本:

1.初步筛选项目并爬取issue数据

  • 选取带labelissue>100 的项目12797个
  • 爬虫爬取得数据最终包含11675个项目,有一些项目有错误已不存在,对应带标签的帖子数为6414872条。


2.网页数据预处理

    Github api接口中的issue idproject id和后台数据库中的id没有联系。通过issues表单的repo_idissue_id匹配爬虫数据,且一个issue可能有多个标签,将issue_id和label插入新表

issues_labels。


3.进一步筛选项目

    [a]处理issue标签:
  • 选取表示issue类型的标签格式比如'kind:*','type: *'等8种格式
  • 截取后半段指示具体issue类型的标签,选出公有目录类型(前半段,比如'type:','kind:'等)大于5的作为issue具体类型标签(比如'bug','feature'等),对于一些不是指示类型的标签直接人工过滤掉(比如'duplicate','test','support')
  • 然后扩展到包含该具体类型标签的所有实际标签。包含大概4222个。
  • 统计覆盖这些标签的issue数量(2493903条),得出取前40个标签(2214117条)可以覆盖88.8%的帖子数。
  • 将这40个标签划分为'bug'和'non-bug',然后对issue进行标注。
  • 对于既是'bug'又是'non-bug'的数据大概64378条,占比2.9%,影响不大所以全部归为'bug'类型。

    最终得到1106332条bug,1107785条non-bug。


    [b]统计项目带标签的issue数量及bug比率


  • 有带标注的issue:10564个项目
  • issue>500 : 722个项目
  • issue > 500  bug_ratio 在(0.2-0.8):611个项目
  • issue > 400  bug_ratio 在(0.2-0.8):  874个项目


错误记录:


1.Incorrect string value: '\xF0\x9F\x98\x84\xF0\x9F

对应UTF-8编码格式中的4字节编码。正常的汉字一般不会超过3个字节,这里出现4个字节实际上是它对应的是智能手机输入法中的表情。如果想存储4个字节的必须用utf8mb4类型。不而要使用utf8mb4类型,首先要保证Mysql版本要不低于 MySQL 5.5.3。

更改mysql表格字段编码格式,并且在python处理脚本中读取数据时也要设置为utf8mb4。

conn = pymysql.connect(host='127.0.0.1', port=3306, user='root', passwd='123456', db='ghtorrent_2017_5', charset='utf8mb4')


ALTER TABLE issues CHANGE body body MEDIUMTEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL;


2.python解析网页数据时,ast.literal_eval()能将数据还原成它本身或者是能够转化成的数据类型。并且相较于eval(),会进行类型安全检查




返回

© Copyright 2007~2021 国防科技大学Trustie团队 & IntelliDE 湘ICP备 17009477号

问题和建议
还能输入50个字符 提交

加入QQ群

关注微信APP


×