你对政治事件感兴趣吗? 你想玩转世界上最大的数据库之一吗? 如果你的回答是“是”,请往下阅读,相信你会对本文内容感兴趣!
本文承诺,接下来会使用 PHP 来操作 GDELT。
我会用一个简单例子来说明如何通过 BigQuery 和 PHP 来操作 GDELT,以及如何在网页上可视化结果等。
GDelt(“全球事件,语言和音调数据库”)是世界上最大的政治事件开放数据库。 它由 Kalev Leetaru(个人网站)根据 Philip A. Schrodt 和其他人在2011年的工作开发而来。数据可以通过 zip 文件下载,并且自2014年以来,可以在 Google 的 BigQuery 网络界面查询,并通过其 API 和 GDELT 分析提供服务。
GDELT 项目:
以超过100种语言来监测来自每个国家的几乎每个角落的广播,印刷和网络新闻,并且识别每分每秒推动全球社会的人,地点,组织,计数,主题,来源,情绪,报价,图像和事件,为整个世界创建一个免费开放的计算平台。
芝麻糖人
翻译于 3周前
0 人顶
翻译得不错哦!
所有 GDELT 数据都由 BigQuery 提供。这个“大数据”数据库有一个 Web 接口,允许你查看表结构、预览数据,并支持使用自动提示功能进行查询的方式。
为在线体验 GDELT 数据集,你需要注册一个 Google 帐户,然后转至 BigQuery 信息中心。
如果你还没有 Google Cloud 项目,系统会提示您创建,因为此项目将是你的工作环境所必须的。
您可以通过“组合查询”创建自己的查询。 比如:
SELECT EventCode, Actor1Name, Actor2Name, SOURCEURL, SqlDate FROM [gdelt-bq:gdeltv2.events] WHERE Year = 2016 LIMIT 20
Tocy
翻译于 3周前
0 人顶
翻译得不错哦!
GDELT 允许你从其网站快速创建可视化数据。转到 分析页面 ,创建选择,随后可视化数据的链接将会以邮件形式发送给你。
GDELT 近期开放了两个 API,你可从单个 URL 中创建自定义数据反馈。这些 F 反馈可以直接进入 CartoDB,并用于创建实时可视化数据。
GKG GeoJSON 创建知识图的反馈( tutorial 教程)
全文搜索API 是基于过去24小时的新闻报道的反馈
你可以查询 GDELT 并使用工具创建可视化数据。 应用示例参考:由 Kenneth Davis 制作的 为难民献爱心的方案 ,他从 GDELT 全局知识图 API 获取数据,并使用 CartoDB 可视化;由 CuriousGnu 制作的 大家是如何看待希拉里·克林顿和唐纳德·特朗普 ,他通过将查询结果下载为 CSV 文件,之后将其导入 CartoDB 中。
Tocy
翻译于 3周前
0 人顶
翻译得不错哦!
为了使用 GDELT,你需要知道至少一些基本概念。 这些概念是由 Philip A. Schrodt 创建的,最终形成 CAMEO 本体论(用于冲突和中介事件观察)。
事件(Event)是两个团体间的政治互动。其事件代码描述了事件类型,例如,1411:“因领导变动而示威游行或集会”。
行动发起者(Actor )是参与事件的二者之一。Actor 可能是在一个国家范围内,也可能超出国家范围,如国际组织、运动或公司。Actor 编码包含一个或多个三字母缩写序列。例如,每个三元组指定一个 actor。 NGO=非政府组织,NGOHLHRCR(NGO HLH RCR)=非政府组织/卫生/红十字会。
事件的 音调(Tone) 是一个取值范围在 -100(负无穷)和 +100(正无穷)之间的分数。 最常见的值位于 -5 和 5 之间。
事件的 戈德斯坦得分( Goldstein scale ) 是一个取值范围在 -10 和 +10 之间的分数值,其表征该类事件将对国家的稳定性可能产生的影响的大小。
包含所有 event 动词和 actor 类型码的完整 CAMEO Codebook 在 此处 查看。
Tocy
翻译于 2周前
0 人顶
翻译得不错哦!
在应用程式中使用BigQuery 存取 GDELT,必须用到 Google 的 Cloud Platform。
首先,你必须 创建一个 Google 账户 。然后,进入 你的控制台 ,如果你还没有项目,系统会要求你创建一个。
检查控制台。点击左上角的汉堡菜单(带有三条水平线的图标),即可访问平台的所有部分。
使用项目,需前往 API 库 并启用 BigQuery API。
接下来,你需要为项目创建 服务帐户 ,并为此帐户指定 BigQuery User 以运行查询,稍后你可在 IAM 选项卡上更改权限。在“member”处,请选择你的服务帐户 ID。
服务帐户 允许你创建一个密钥,这个密钥是 JSON 文件,下载 并保存在安全的位置。在 PHP 代码中你会用到它。
最后,您需要为您项目 设置结算帐户 。虽然在1太字节内,GDELT 提供免费访问,谷歌也不会收取任何费用,但这是创建的必要步骤。
Google 帐户 提供3个月的免费试用。如果你开始正式使用申请,需要提供银行卡或银行账户信息。
snake_007
翻译于 2周前
0 人顶
翻译得不错哦!
之前你可能是通过 Google APIs PHP 客户端访问 BigQuery,但现在的首选是适用于 PHP 的 Google Cloud 客户端库。
我们可以用 Composer 安装:
composer require google/cloud
代码很简单,使用从 Google Cloud 控制台下载的项目密钥替换项目路径。
use Google/Cloud/BigQuery/BigQueryClient; // setup Composer autoloading require_once __DIR__ . '/vendor/autoload.php'; $sql = "SELECT theme, COUNT(*) as count FROM ( select SPLIT(V2Themes,';') theme from [gdelt-bq:gdeltv2.gkg] where DATE>20150302000000 and DATE < 20150304000000 and AllNames like '%Netanyahu%' and TranslationInfo like '%srclc:heb%' ) group by theme ORDER BY 2 DESC LIMIT 300 "; $bigQuery = new BigQueryClient([ 'keyFilePath' => __DIR__ . '/path/to/your/google/cloud/account/key.json', ]); // Run a query and inspect the results. $queryResults = $bigQuery->runQuery($sql); foreach ($queryResults->rows() as $row) { print_r($row); }
我们还可以查询元数据。先从列出项目的数据集开始(数据集是表的集合):
$bigQuery = new BigQueryClient([ 'keyFilePath' => '/path/to/your/google/cloud/account/key.json', 'projectId' => 'gdelt-bq' ]); /** @var Dataset[] $datasets */ $datasets = $bigQuery->datasets(); $names = array(); foreach ($datasets as $dataset) { $names[] = $dataset->id(); } print_r($names);
注意,在查询元数据之前,客户端配置时必须提供项目 ID(gdelt-bq)
这是代码的查询结果:
Array ( [0] => extra [1] => full [2] => gdeltv2 [3] => gdeltv2_ngrams [4] => hathitrustbooks [5] => internetarchivebooks [6] => sample_views )
Tocy
翻译于 3周前
0 人顶
翻译得不错哦!
政治事件数据已存在好几年,2010 年综合危机预警系统( ICEWS )的出现是此数据的重要里程碑。
Philip A. Schrodt 写的 Automated Production of High-Volume, Near-Real-Time Political Event Data (自动产生大容量近实时性的政治事件数据),以一种十分幽默的方式对全球事件数据进行了回顾与评论。
新闻可以持续从大量资源中获取(如,非洲新闻,法新社,美联社,BBC监测处,基督教科学箴言报,美国合众国际新闻社,华盛顿邮报的新闻)。而数据则是从各种新闻资源收集而来。我们之前是用人工处理这个过程,现在我们可以用自然语言处理(NLP)技术来完成。
GDELT 1 采用 TABARI 的 C++ 库来解析新闻,并经编码后的数据存入数据库。TABARI 于1979年诞生,它使用一个基于模式的浅层解析器来解析文章,并可以进行命名实体识别。
这里 有一个对 GDELT 早期的介绍,描述了新闻资源以及相关编程技术,作者是 LeetaruSc 和 Shrodt。
2015 年 2 月 GDELT 推出了 2.0 版。其中 TABARI 被 PETRARCH 库(语言为 Python)取代。GDELT 2.0 使用了斯坦福的 CoreNLP 解析器对文章进行翻译。(你可以从 Philip A. Schrodt’s slides 了解其改变原因。)GDELT 还通过 全球知识图 对事件数据进行了扩展。
2015 年 9 月,Internet Archive(互联网档案馆)和 Hathi Trust 数字图书馆的数据被合并进了 GDELT BigQuery 数据库。
榆木可期
翻译于 5天前
0 人顶
翻译得不错哦!
在 GDELT 项目网站的这个页面上 有相关数据集的概述。
数据集像这样被分组:
源 GDELT 1 的数据集: full . 详情参阅 Kalev Leetaru 发表的 博客 。
GDELT 2 的数据集: gdeltv2 和 gdeltv2_ngrams
Hathi Trust Book 数据集: hathitrustbooks
互联网档案(Internet Archive)数据集: internetarchivebooks , 此链接 展示了从互联网档案的书本数据上查询的例子。
GDELT 数据集(1 或 2)表和字段的文档请 在 GDELT 项目网站上的文档部分 查看 。
文档的表和互联网档案字段,还有 HathiTrust Book 文档可在 互联网档案 和 HathiTrust 的页面 上找到。
无若
翻译于 3周前
0 人顶
翻译得不错哦!
每月处理在数据在1 Terabyte 范围内是免费的,我认为 1TB/月完全够用,因此我输入了自己的银行帐户信息,并设置了几个简单的查询。
一个星期后进入了下一个月,我收到来自 Google Cloud 的消息:
“我们很快将会自动从您的银行账户中计费”
我被要求支付 10.96 欧元!这到底是怎么回事? 这时我仔细看了下定价策略。
Google Cloud 的定价页面 解释得很清楚。在查询 GDELT 的 Context 时,用户不需要为加载、复制和导出数据付费,也不需要支付元数据操作的费用(例如,列出现有表),但需支付查询费用。 准确来说:
查询定价是指执行 SQL 命令和用户定义函数的价格。BigQuery 通过使用统一标准为查询计费:实际处理的字节数。
它与查询的大小和结果集的大小无关,而与 BigQuery 实际处理的数据大小有关。看看我的 结算信息列表 ,我意识到 Google 向我收费是因为:
BigQuery 实际分析数据量: 3541.117 Gibibytes
BigQuery 已为我的查询处理了 3541Gibibytes 数据!除以 1024,它 转换 为 3,45812207TB。去除第一个免费 TB,再转换为欧元(当时的利率= 0.892),我最终需要付费 10.96 欧,而我计算出上面提到的单个 GDELT 示例查询(带有子查询的查询)的成本是 2.20 美元。
BigQuery
提供了“totalBytesProcessed”的信息。 从这里,我们可以以美元为标准计算其成本:
$results = $bigQuery->runQuery($sql); $info = $results->info(); $tb = ($info['totalBytesProcessed'] / Constants::BYTES_PER_TEBIBYTE); // 1099511627776 $cost = $tb * Constants::DOLLARS_PER_TEBIBYTE; // 5
Tocy
翻译于 2周前
0 人顶
翻译得不错哦!
BigQuery 每次加载一整列数据,仅读取一个记录。 例如,我运行:
SELECT Actor1Name FROM [gdelt-bq:gdeltv2.events] WHERE GLOBALEVENTID = 526870433
在关系数据库中,这是一个快速的查询,它使用 GLOBALEVENTID 上的索引来查找和返回单个记录。在 BigQuery 中,它会加载全部的 3.02GB 的数据列,并需要几秒钟才能完成,因为BigQuery 不使用索引。每当它需要一个列时,它会读取整列数据。当列非常大时,它会将查询分担到多个机器上,这些机器通过并行运行完成查询。BigQuery 未针对小型表进行优化,但它可以在几秒钟内完成对 PB 级数据的查询。
如需深入了解 BigQuery 架构,请阅读 本文 或者参考 这本关于 Google BigQuery 分析的书籍 。
Tocy
翻译于 3周前
0 人顶
翻译得不错哦!