文档章节

[译] Twitter数据挖掘:如何使用Python分析大数据

暗夜在火星
 暗夜在火星
发布于 2017/06/15 23:14
字数 3107
阅读 291
收藏 0

原文请见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了。

稍候都要用到这些数据,所以先不要关闭这些标签。

安装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进行查询。

你还可以看到,每一条微博都带有博主的相关信息。

要是想获取博主的namelocation属性,可以执行print tweet.user.screen_nameprint 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接口TweepyTwitter的频率限制指南以获取更多信息。

在本教程,我们只是简单地讲了基本的访问和拉取。然而,Twitter的API接口还可用来服务于错综复杂的大数据问题,涉及人,趋势,和非常复杂以致单凭人类心智无法掌控的社交图。

译者注:本翻译旨在分享国外优秀文章,但翻译水平有限,如有不对,敬请指正,谢谢!


------------------------

© 著作权归作者所有

暗夜在火星

暗夜在火星

粉丝 168
博文 177
码字总数 326789
作品 1
广州
程序员
私信 提问
月薪20K的Python程序员2018年Python学习进阶书籍推荐

用了python,与太阳肩并肩,本文与大家分享一些Python编程语言的入门书籍,其中不乏经典。以下书籍已经经中心多位编辑老师进行详细阅读后才整理出来供大家学习!推荐下大数据技术学习群:8050...

加米谷
2018/07/09
0
0
八月暑期福利,10本Python热门书籍免费送!

八月第一周,网易云社区联合博文视点为大家带来Python专场送书福利,10本关于Python的书籍内容涉及Python入门、绝技、开发、数据分析、深度学习、量化投资等。以下为书籍简介,送书福利请见文...

网易云
2018/08/02
0
0
荐书丨从数据分析到机器学习,大数据新书给你赋能

大数据作为人工智能的基石,犹如互联网世界的石油。数字经济的发展离不开大数据,大数据从业人员也离不开持续的学习。 dbaplus社群携手@图灵教育,推荐三本大数据好书,给大家提供持续学习的...

dbaplus社群
08/04
0
0
地铁译:Spark for python developers ---构建Spark批处理和流处理应用前的数据准备

从github,twitter,meetup 获得数据,并理解数据,由于GFS, 代码的执行要翻墙的…… 使用PySpark和PyData相关库构建应用来分析社交网络中含有Spark的交互信息. 我们从GitHub收集有关Apach...

abel_cao
01/17
0
0
大家都在学的编程语言 Python,可以用来干什么?

编者按:Python因为简单全面易用而成为近年来大热的编程语言。但是很多人学习了这门余元的语法和基本功能之后却不知道Python能干什么以及怎么做。Realpython.com上面的一篇文章于是把Python可...

Python燕大侠
2018/07/18
4.2K
19

没有更多内容

加载失败,请刷新页面

加载更多

DDD(五)

1、引言 之前学习了解了DDD中实体这一概念,那么接下来需要了解的就是值对象、唯一标识。值对象,值就是数字1、2、3,字符串“1”,“2”,“3”,值时对象的特征,对象是一个事物的具体描述...

MrYuZixian
50分钟前
3
0
数据库中间件MyCat

什么是MyCat? 查看官网的介绍是这样说的 一个彻底开源的,面向企业应用开发的大数据库集群 支持事务、ACID、可以替代MySQL的加强版数据库 一个可以视为MySQL集群的企业级数据库,用来替代昂贵...

沉浮_
今天
4
0
解决Mac下VSCode打开zsh乱码

1.乱码问题 iTerm2终端使用Zsh,并且配置Zsh主题,该主题主题需要安装字体来支持箭头效果,在iTerm2中设置这个字体,但是VSCode里这个箭头还是显示乱码。 iTerm2展示如下: VSCode展示如下: 2...

HelloDeveloper
今天
6
0
常用物流快递单号查询接口种类及对接方法

目前快递查询接口有两种方式可以对接,一是和顺丰、圆通、中通、天天、韵达、德邦这些快递公司一一对接接口,二是和快递鸟这样第三方集成接口一次性对接多家常用快递。第一种耗费时间长,但是...

程序的小猿
今天
5
0
Python机器学习之数据探索可视化库yellowbrick

背景介绍 从学sklearn时,除了算法的坎要过,还得学习matplotlib可视化,对我的实践应用而言,可视化更重要一些,然而matplotlib的易用性和美观性确实不敢恭维。陆续使用过plotly、seaborn,...

yeayee
今天
8
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部