文本首发于AI柠檬博客,原文链接:https://blog.ailemon.net/2017/02/17/how-to-collect-data-for-machine-learning/
我最近因为学习机器学习并且想要做一些实践项目而打算收集一些数据来做机器学习,但是发现,数据不是你想找,想找就能找的。在机器学习方面,用于训练的数据对于整个机器学习进程的重要意义自然不言而喻,而数据问题涉及到收集、存储、表示以及规模和错误率等多个方面。关于数据,我想谈一谈数据的收集问题。
如何收集数据呢?我们绝大部分情况下,收集数据的途径无非以下几种:
一、在网上收集下载公开的免费数据
这是很多人的第一反应,当然,这是很正常的,既免费又好的数据谁不想要?然而实际情况并不乐观,免费数据要么是难以寻找,要么是数据量太小,要么就是不符合需求。比如,我想做中文的自然语言处理方面的一些机器学习,然而浏览了大量的网站之后,发现所能找到的仅有的数据都是关于英文的数据,而用来做中文方面的中文数据难以寻找。有些网站写着免费下载中文数据,然而那里并没有数据。
如果是纯文本的数据还好说,自己写一个爬虫程序,然后运行。比如,如果是实现新闻文本分类的,那么从各大新闻网站直接爬取即可。即使这样,很多想要的功能还是难以实现,比如做机器翻译,需要中英文文本对照,自然状态下并没有这样的数据。
二、购买专业数据公司的数据
这种方法的优劣我不做评价,毕竟你有数据我有钱,大家都高兴。专业的数据公司国内互联网上就有一家算得上是挺知名的,还有各个大公司大企业等,他们自身因为在所在行业的地位,通过各种手段能够收集到大量的数据。他们有足够的人手来管理数据,所以数据的质量一般都是有保证的。这个方法其实当然是很不错的,只要你有钱就行。
我看过那家数据公司的数据购买价格,数据量稍微量多一点就是上万元的价格,作为一名普通的程序猿,购买数据的话基本上可以几个月不吃不喝了。
不过,在语音识别方面的大多数数据集都是有版权的,收集的公司因为这些数据获得了大量的利益,但在这一领域里,许多可用的数据集都是比较旧的。
三、自己根据需要和实际情况制造或从身边收集数据
既然购买数据辣么贵,辣么我们自己搞定行不行?O(∩_∩)O
在所需数据量不大的情况下,比如只是几十或者几百个,完全可以通过这种方法来获得数据,然后自己就安心地去训练机器去吧。优点很明显,成本低,随意性高;但是缺点也是很突出的,一个人的精力是有限的,个人的力量不可能收集成千上万乃至几十万几百万的数据量,而实际机器学习的应用往往就是需要如此之多的数据。少量的数据做一些简单的模型(如线性回归或者特征较少的对数几率回归等)尚可,对于类似于使用神经网络实现图像识别的机器学习任务,这种方法显然不合适。
四、自己出钱让别人根据需求一起帮你收集所需要的数据
这种方法相比上面那一种来说,最重要的一点就在于人多力量大,众人拾柴火焰高嘛。当然别人不是白白帮你的,你需要给他们一些报酬,不过相比于购买数据,如果你给每个人的报酬合适的话,成本也算很低了。
这样子确实比较兴师动众,你一个人为了做一些实验,然后让一大群人来帮你,前提也是能有一群人愿意帮你,只要你人缘好,然后能说动他们,不过缺点也正是在于此,而且还需要注意数据的质量。不过这种方法综合下来算是成本较低的,但是需要付出多种类型的成本,除了钱以外,还有比如时间成本、人力组织成本以及人际关系网络等。
我们还有其他的收集数据的方法,只不过一般情况下并不可行。比如,我们自己开发一款浏览器或者新闻APP来收集用户的阅读偏好,通过这些数据来实现一个推荐系统,或者拍照APP收集用户拍摄的照片,并分类,实现一个图像识别和分类的系统等。为了做语音识别,通过已有的可用API和软件,进行文字转语音或者语音转文本从而得到训练数据,再用这些数据来训练机器学习模型。类似的方法还有很多,但是基本上要么是不现实(如通过有大量用户的APP收集数据),要么是不太正义(比如APP收集数据很多情况下侵犯个人隐私),要么就是不符合“科研精神”(数据是造出来的而不是来源于真实世界中)。
但是,长期下去仅仅依靠以上的方法也总归不是个事啊。开源软件是一个大社区,那里有着来自世界各地的计算机软件高手写的各种各样的代码,只要我们遵守开源协议,将程序下载、编译、安装,然后我们就可以尽情的自由使用了,这个过程很容易,然而在人工智能方面却遇到了问题。
人工智能是数据驱动的,我们有开源的TensorFlow, Caffe, CNTK, Torch等人工智能引擎,但是,没有数据就没有机器学习模型,也就等于没有了软件,因为引擎仅仅是引擎,不能成为成品,而且软件的定义是程序+数据,二者缺一不可。我们通常所理解的软件仅仅指程序,那是狭义的软件,这也是以前数据“不重要”的特性导致的,然而现在不同了,仅仅有代码我们的程序无法发挥作用,所以我们需要新的开源模式,将数据也包含进来,其相关的信息也需要一同开源。(详见参考链接【1】)
不过,总是等待也不是办法,就我已经搜集到的信息,我想分享一些人工智能方面开源的数据集,部分内容鉴于原作者因为版权问题禁止转载,我就写到一起,列出来一个列表。这个列表里面的数据如果不出意外应该都是免费的。
通用
Open Datasets for Deep Learning:深度学习专用公开数据集
https://deeplearning4j.org/opendata
计算机视觉
CIFAR 10 & CIFAR 100: 32×32 彩色图像,可用于模式分类。
https://www.cs.toronto.edu/~kriz/cifar.html
ImageNet: 图像数据集。
http://image-net.org/
LSUN:
http://lsun.cs.princeton.edu/2016/
PASCAL VOC: 通用图像识别分类
http://host.robots.ox.ac.uk/pascal/VOC/
SVHN: 门牌号码数据集,来自谷歌街景地图。可用于做数字识别。
http://ufldl.stanford.edu/housenumbers/
MS COCO: 图像识别分类用数据集。
http://mscoco.org/
Labeled Faces in the Wild: 打了标签和框出了面部区域的人脸数据。
http://vis-www.cs.umass.edu/lfw/
自然语言处理
搜狗中文自然语言处理数据集
http://www.sogou.com/labs/resource/list_pingce.php
百度新闻rss:可通过长时间直接抓取来获得文本数据。
https://www.baidu.com/search/rss.html
WikiText:来自维基百科文章中的大型语言建模语料库。
http://metamind.io/research/the-wikitext-long-term-dependency-language-modeling-dataset/
Question Pairs:从包含重复/语义相似性标签的 Quora 发布出来的第一个数据集。
https://data.quora.com/First-Quora-Dataset-Release-Question-Pairs
SQuAD: 斯坦福大学的问答数据集(The Stanford Question Answering Dataset)
https://rajpurkar.github.io/SQuAD-explorer/
CMU Q/A Dataset: CMU的问答数据集
http://www.cs.cmu.edu/~ark/QA-data/
Maluuba Datasets: 自然语言理解研究的数据集。
https://datasets.maluuba.com/
Billion Words: 大型语言建模数据集。
http://www.statmt.org/lm-benchmark/
Stanford Sentiment Treebank: 文本情感分析数据集。
http://nlp.stanford.edu/sentiment/code.html
20 Newsgroups: 文本分类经典数据集中的一个。
http://qwone.com/~jason/20Newsgroups/
Reuters: 旧的,纯粹基于分类的数据集与来自新闻专线的文本。常用于教程。
https://archive.ics.uci.edu/ml/datasets/Reuters-21578+Text+Categorization+Collection
IMDB:一个用于二元情感分类的更旧更小的数据集。
http://ai.stanford.edu/~amaas/data/sentiment/
UCI’s Spambase: 来自著名的 UCI 机器学习库较久的经典垃圾电子邮件数据集。由于数据集的策划细节,这可以是一个学习个性化过滤垃圾邮件的有趣基线。
https://archive.ics.uci.edu/ml/datasets/Spambase
语音数据
LibriSpeech:文本和语音500 小时的有声读物数据集。
http://www.openslr.org/12/
VoxForge:带口音的语音数据集,特别是对于如期望对不同口音或腔调的语音有鲁棒性需求的系统很有用。不过貌似没有找到中文语音数据。
http://www.voxforge.org/
CHIME:包含噪声的语音识别数据集。
http://spandh.dcs.shef.ac.uk/chime_challenge/data.html
TED-LIUM:TED 演讲的语音转录数据集。1495 份 TED 演讲的语音记录,并且这些语音记录有对应的全文本。
http://www-lium.univ-lemans.fr/en/content/ted-lium-corpus
参考链接:
【1】《人工智能的开源模式已经过时,我们需要新的开源模式》
http://www.jiqizhixin.com/article/2218
https://github.com/caesar0301/awesome-public-datasets