网站建设招标需求,住房和城乡建设部网站建筑电工,建设储蓄卡网站,网站开发维护者一、GDELT介绍
GDELT ( www.gdeltproject.org ) 每时每刻监控着每个国家的几乎每个角落的 100 多种语言的新闻媒体 -- 印刷的、广播的和web 形式的#xff0c;识别人员、位置、组织、数量、主题、数据源、情绪、报价、图片和每秒都在推动全球社会的事件#xff0c;GDELT 为全…一、GDELT介绍
GDELT ( www.gdeltproject.org ) 每时每刻监控着每个国家的几乎每个角落的 100 多种语言的新闻媒体 -- 印刷的、广播的和web 形式的识别人员、位置、组织、数量、主题、数据源、情绪、报价、图片和每秒都在推动全球社会的事件GDELT 为全球提供了一个自由开放的计算平台。
GDELT 主要包含两大数据集 Event Database 事件数据库 、 Global Knowledge Graph (GKG, 全球知识图谱记录了从1969 年至今的新闻并于每十五分钟更新一次数据。
二、研究内容
本次研究数据来自 gdelt 数据库爬取 2022.01.01-2022.07.20 所有 export 和 mentions 表从中提取俄乌 冲突相关数据由此进行分析。主要分析内容如下
基于BERT实现GDELT新闻事件数据中事件正文文本的情感分析基于MySQL的本地数据库导入、查询和存储基于JavaScript和echarts的数据可视化图表库对新闻事件数据进行多方面可视化将可视化界面部署到服务器上以供其他用户通过网址查看其他算法进行情感分析
三、项目实施方法设计
1、使用语言
前段静态页面 html 、 css 、 JavaScript 、 echarts
连接数据库页面增加 php 连接 MySQL
数据处理 PycharmPython JupyterPython
2、项目流程 四、具体实现与测试
1、数据集下载
def get_data(url):# 获取urlfile_name url.split(gdeltv2/)[1].split(.zip)[0]r requests.get(url)temp_fileopen(./temp.zip, wb)temp_file.write(r.content)temp_file.close()try:my_zipzipfile.ZipFile(./temp.zip,r)my_zip.extract(file_name,path./data)my_zip.close()except Exception:print(%s not exist % file_name)return None
def get_data_df(): #日期读取fopen(date.txt)date[]time[]for i in f.readlines():date.append(i.strip(\n))f.close()fopen(time.txt)for i in f.readlines():time.append(i.strip(\n))f.close()#地址整合url1 http://data.gdeltproject.org/gdeltv2/%s.export.CSV.zipurl2 http://data.gdeltproject.org/gdeltv2/%s.mentions.CSV.zipfor i in date:for j in time:str_real_timeijget_data(url1%str_real_time)get_data(url2%str_real_time)print(%s-complete%i)
下载 2022.01.01-2022.07.20 的数据 数据量大约 20GB 下载完成后 export 表和 mentions 表混合放置因此需要将表按月分类放置代码如下
import os
import shutil
for i in range(1,8):src_folder./totaldata/20220str(i)tar_folder./totaldata/20220str(i)filesos.listdir(src_folder)for file in files:src_pathsrc_folder/filefor file in files:# 将每个文件的完整路径拼接出来src_path src_folder / fileif os.path.isfile(src_path):tar_path tar_folder / file.split(.)[-2]print(tar_path)# 如果文件夹不存在则创建if not os.path.exists(tar_path):os.mkdir(tar_path)# 移动文件shutil.move(src_path, tar_path)
为了更方便处理我们将 export 表的数据合并 mentions 表的数据合并代码如下
os.chdir(Folder_Path)
file_listos.listdir()
for i in range(1,len(file_list)):dfpd.read_csv(file_list[i],sep\t)df.to_csv(SaveFile_Path/SaveFile_Name,encodingutf_8_sig,indexFalse,headerNone,modea)sys.stdout.write(\r已合并%.2f%%%float((i/len(file_list))*100))sys.stdout.flush()
2、数据集处理
1查看空字段数量并排序
is_nulldf_01.isnull().sum().sort_values(ascendingFalse)
is_null[is_nullrow*0.85]#筛选出空值数量大于85%的数据
2删除缺失率大于85%字段
drop_columns[Actor2Type3Code,Actor1Type3Code,Actor2Religion2Code,
Actor1Religion2Code,Actor2EthnicCode,Actor1EthnicCode,
Actor2Religion1Code,Actor2KnownGroupCode,Actor1Religion1Code,
Actor1KnownGroupCode,Actor2Type2Code,Actor1Type2Code]
df_01.drop(drop_columns,axis1,inplaceTrue)
得到结果如下 3、数据导入MySQL与分析
1创建数据库
这里值得注意的是很多字段在后续分析中没有用到但还是导入进去了为了和元数据保持一致性。
CREATE TABLE export (
GLOBALEVENTID int NOT NULL,
SQLDATE bigint,
MonthYear bigint,
Year bigint,
FractionDate bigint,
Actor1Code varchar(255),
Actor1Name varchar(255),
Actor1CountryCode varchar(255),
Actor1Type1Code varchar(255),
Actor2Code varchar(255),
Actor2Name varchar(255),
Actor2CountryCode varchar(255),
Actor2Type1Code varchar(255),
IsRootEvent varchar(255),
EventCode varchar(255),
EventBaseCode varchar(255),
EventRootCode varchar(255),
QuadClass int,
GoldsteinScale double,
NumMentions int,
NumSources int,
NumArticles int,
AvgTone double,
Actor1Geo_Type varchar(255),
Actor1Geo_FullName varchar(255),
Actor1Geo_CountryCode varchar(255),
Actor1Geo_ADM1Code varchar(255),
Actor1Geo_ADM2Code varchar(255),
Actor1Geo_Lat double,
Actor1Geo_Long double,
Actor1Geo_FeatureID varchar(255),
Actor2Geo_Type varchar(255),
Actor2Geo_FullName varchar(255),
Actor2Geo_CountryCode varchar(255),
Actor2Geo_ADM1Code varchar(255),
Actor2Geo_ADM2Code varchar(255),
Actor2Geo_Lat double,
Actor2Geo_Long double,
Actor2Geo_FeatureID varchar(255),
ActionGeo_Type varchar(255),
ActionGeo_FullName varchar(255),
ActionGeo_CountryCode varchar(255),
ActionGeo_ADM1Code varchar(255),
ActionGeo_ADM2Code varchar(255),
ActionGeo_Lat double,
ActionGeo_Long double,
ActionGeo_FeatureID varchar(255),
DATEADDED bigint,
SOURCEURL text,
PRIMARY KEY (GLOBALEVENTID)
);
2导入数据
LOAD DATA INFILE E:/term/code/mergedata/export/export_202201.csv INTO TABLE
export
FIELDS TERMINATED BY ,
LINES TERMINATED BY \r\n
IGNORE 1 ROWS;
3年份处理和简单查询
DELETE
FROM rus_and_ukr
WHERE MonthYear202201
SELECT COUNT(GLOBALEVENTID) FROM export -- 21504131