原文请见Twitter Data Mining: A Guide to Big Data Analytics Using Python。
大数据无处不在。在时下这个年代,不管你喜欢与否,在运营一个成功的商业的过程中都有可能会遇到它。
本教程将会简要介绍何谓大数据,无论你是尝试抓住时机的商人,抑或是寻找下一个项目的编程高手,你都可以学到它是如何为你所用,以及如何使用Twitter API和Python快速开始。
何谓大数据?
大数据就像它看起来那样——有大量的数据。单独而言,你能从单一的数据获取的洞见穷其有限。但是结合复杂数学模型以及强大计算能力的TB级数据,却能创造出人类无法制造的洞见。大数据分析提供给商业的价值是无形的,并且每天都在超越人类的能力。
大数据分析的第一步就是要收集数据本身,也就是众所周知的“数据挖掘”。数据来自于四面八方。大部分的企业处理着GB级的数据,这些数据有用户数据、产品数据和地理位置数据。在本教程中,我们将会探索如何使用数据挖掘技术收集Twitter的数据,这可能会比你想象中的更有用。
举个例子,假设你运营着脸书,想使用Messager数据为如何更好地向用户投放广告提供一些见解。而Messager拥有着12亿月活跃用户。在这个案例中,大数据就是用户之间的对话。假设你能逐个阅读每个用户的对话,那么就能清楚知道他们喜欢什么,从而有针对性地向他们推荐相应的产品。使用广为人知的自然语言处理(NLP)这一机器学习技术,你可以大型地实现这一点,并且整个过程自动化,一切交给机器即可。
这仅仅是机器学习和大数据分析为公司带来价值的无数的示例中的一个。
为什么选择Twitter数据?
Twitter是一个数据金矿。不像其他的社交平台,几乎每个Twitter用户的微博都是完全开放并且是可拉取的。如果你想尝试获取大量的数据然后对其进行分析,这是相当有帮助的。同时,Twitter的数据也是非常具体的。它的API接口允许你进行复杂的查询,例如拉取最近20分钟内关于指定某个话题的每一条微博,或者是拉取某个用户非转发的微博。
这里一个简单的应用就是,分析大众是怎么看待你们公司的。你可以收集提到你们公司(或者其他任何词语)的最近2,000条微博,然后对其运行情感分析算法。
我们可以圈定具体居住在某个位置的用户,也就是所谓的空间数据。另一个应用可以是,在地球上标志出你们公司提及次数最多的地区。
如你所见,Twitter数据是通往大众见解的一扇大门,以及他们是如何针对某个主题进行大数据分析的。这些,结合透明度和Twitter API接口慷慨的调用次数,可以产出非凡的结果。
工具一览
对于这些示例,我们将使用Python 2.7。理想情况下,你应该有一个编写代码的IDE。我使用的是PyCharm - 社区版。
为了连接Twitter的API接口,将会用到叫做Tweepy的类库,这个类库稍微安装一下就可以了。
入门指南
Twitter开发者账号
为了使用Twitter的API接口,需要先在Twitter应用站点上创建一个开发者账号。
- 1、登录或者在https://apps.twitter.com/
- 2、创建一个新的应用(可点击右上角的按钮)
- 3、在创建应用的页面填写上唯一的名字,网站名字(如果没有可以使用默认值),和项目描述。接受协议和条款然后进入到下一个页面。
- 4、一旦创建好了你项目,点击“Keys and Access Tokens”标签页,应该就可以看到你使用的API secret和API key了。
- 5、你还需要一对访问凭证。可滚到下面并请求这些凭证。这时页面会进行刷新,然后就可以获得access token和access token secret了。
- 3、在创建应用的页面填写上唯一的名字,网站名字(如果没有可以使用默认值),和项目描述。接受协议和条款然后进入到下一个页面。
稍候都要用到这些数据,所以先不要关闭这些标签。
安装Tweepy
Tweepy是一个超级棒的工具,它可用于访问Twitter API接口。支持Python 2.6,2.7,3.3,3.4,3.5,,和3.6。安装Tweept有好两种不同的方式,最简单的方式就是使用pip
。
使用pip安装
在你的终端上简单地输入pip install tweepy
即可。
使用Github安装
可以按照Tweepy在Github仓库上的说明进行操作。基本的步骤如下:
git clone https://github.com/tweepy/tweepy.git
cd tweepy
python setup.py install
你也可以在那解决任何安装的问题。
认证
既然必要的工具已准备就绪,那么我们就可以开始写代码了!今天将要构建的每一个应用,其底线都是需要引用Tweepy来创建一个API对象,以便我们可以进行函数的调用。然而,要想创建这些API对象,首先必须先认证我们的开发者信息。
首先,导入Tweepy,并添加我们自己的认证信息。
import tweepy
consumer_key = "wXXXXXXXXXXXXXXXXXXXXXXX1"
consumer_secret = "qXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXh"
access_token = "9XXXXXXXX-XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXi"
access_token_secret = "kXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXT"
现在是时候创建API对象了。
# 创建认证对象
auth = tweepy.OAuthHandler(consumer_key, consumer_secret)
# 设置你的access token和access secret
auth.set_access_token(access_token, access_token_secret)
# 传入auth参数,创建API对象
api = tweepy.API(auth)
这些代码是构建每一个应用的基础部分,所以确保不要删除。
示例1:你的时间轴
在这个示例中,我们将会从你的Twitter动态中拉取最新的微博。通过使用API对象的home_timeline()
函数可以做到这一点。随后把这些结果存在某个变量中,并循环打印。
# 使用API对象获取你的时间轴上的微博,并把结果存在一个叫做public_tweets的变量中
public_tweets = api.home_timeline()
# 遍历所拉取的全部微博
for tweet in public_tweets:
# 打印存在微博对象中的text字段
print tweet.text
输出的结果可能看起来像是一堆随机的微博,后台跟着指向微博本身的URL。
打开指向微博的链接,通常会把你带到对应的微博那。例如,打开上面第一条微博中的链接,会看到以下这样的结果:
注意,如果你是通过终端而不是通过像PyCharm这样的IDE来运行的话,在打印微博的text内容时有可能会遇到一些格式化的问题。
结果背后的JSON
在上面的示例中,我们使用tweet.text
打印了每一条微博的text内容。为了参考每一个微博对象有哪些具体的属性,不得不去看一下Twitter API接口返回的JSON数据。
从Twitter API接口接收到的结果是以JSON格式返回的,并且附有有相当多的信息。为了简单起见,本教程主要关注每一条微博的“text”属性,以及关于博主(即发布微博的用户)的信息。对于上面这个例子,你可以在这里看到整个返回的JSON对象。
下面快速来看下微博中提供的部分属性。
如果想找到创建微博的时间,可以使用print tweet.created_at
进行查询。
你还可以看到,每一条微博都带有博主的相关信息。
要是想获取博主的name
和location
属性,可以执行print tweet.user.screen_name
和print tweet.user.location
.
如果你的应用是基于空间数据的话,这些属性将会非常有用。
示例2:指定某个用户的微博
在这个示例中,我们将会拉取选中用户的最近20条微博。
首先,查看Tweepy 文档,看下是否存在一个像这样的函数。稍微调查一番,可以发现user_timeline()
函数正是我们想要的。
可以看到,user_timeline()
函数有一些能够用到的重要参数,特别是id
(用户的ID)和count
(待拉取的微博数量)。注意,由于Twitter的频率限制,每次查询只能拉取一定数量的微博。
让我们来拉取Twitter账号@NyTimes的最近20条微博。
我们可以创建变量来存放待拉取的微博数量(即count),以及待拉取的用户(即name)。然后用这两个参数调用user_timeline()
函数。下面是更新后的代码(注意,在代码的顶部应该保持认证和API对象的创建)。
# 传入认证信息,并创建API对象
api = tweepy.API(auth)
# 待拉取微博的用户
name = "nytimes"
# 待拉取的微博数量
tweetCount = 20
# 使用上面的参数,调用user_timeline函数
results = api.user_timeline(id=name, count=tweetCount)
# 遍历所拉取的全部微博
for tweet in results:
# 打印存在微博对象中的text字段
print tweet.text
输出的结果看起来像这样:
这种类型数据的流行应用包括有:
- 对指定的用户进行分析,分析他们是如何与世界进行互动的
- 寻找Twitter的影响者并分析他们的粉丝的趋势和互动情况
- 监控某个用户的粉丝的变化情况
示例3:使用关键字查找微博
这是最后一个示例:获取包含某个关键字的最新的微博。如果想在Twitter世界中监控某个话题,或者甚至想看下你的商业被提到的情况,这都是相当有用的。假设现在想看下Twitter谈论Toptal的情况怎样。
翻阅完Tweept文档,search()
函数似乎是完成我们目标的最佳工具。
这里最重要的参数是q
——查询参数,即要查找的关键字。
还可以设置lang
参数,这样就只会取到想要的语言的微博。这里只返回英文(“en”)的微博。
现在可以修改代码,以体现要做的改变。首先创建存放参数(query和language)的变量,然后通过API对象调用相应的函数。最后在循环中也打印了发布微博的用户的终端名称。
# 传入认证信息,并创建API对象
api = tweepy.API(auth)
# 你想查找的关键字
query = "Toptal"
# 语言代码(遵循ISO 639-1标准)
language = "en"
# 使用上面的参数,调用user_timeline函数
results = api.search(q=query, lang=language)
# 遍历所拉取的全部微博
for tweet in results:
# 打印存在微博对象中的text字段
print tweet.user.screen_name,"Tweeted:",tweet.text
最后结果看起来像是这样:
以下是使用这些信息的一些实用途径:
- 创建空间图表,查看你们公司在世界哪些地方被提到最多
- 对微博进行情感分析,看下关于你们公司的整体意见是正面还是负面
- 创建关于发布你们公司或者产品相关微博中最热门的用户的社交图表
在后续的文章中,会覆盖到部分这些主题。
结论
Twitter的API接口在数据挖掘应用中非常有用,并且关于公众的意见能提供大量的见解。如果Twitter API接口和大数据分析是你未来会感兴趣的东西,建议查看Twitter API接口,Tweepy和Twitter的频率限制指南以获取更多信息。
在本教程,我们只是简单地讲了基本的访问和拉取。然而,Twitter的API接口还可用来服务于错综复杂的大数据问题,涉及人,趋势,和非常复杂以致单凭人类心智无法掌控的社交图。
译者注:本翻译旨在分享国外优秀文章,但翻译水平有限,如有不对,敬请指正,谢谢!