基于新浪微博的冰雹实况信息提取方法和实用性研究*

2020-11-29 10:17张永瑞张岳军田瑞敏
科技与创新 2020年23期
关键词:分词冰雹分类器

张永瑞,张岳军,田瑞敏,王 林

(1.山西省气象灾害防御技术中心,山西 太原 030002;2.山西省气象科学研究所,山西 太原 030002)

1 引言

山西是中国冰雹灾害较重的省份之一,几乎每年各地都有不同程度的冰雹灾害发生。据统计,1949—2000 年,一年中遭受雹灾在30 个以上县(市、区),且平均2.4 年有一年遭受严重雹灾[1]。冰雹具有局地性强、历时短、发生区域广等特征。许多冰雹信息受到时间、地域等诸多因素的限制而没有记录[2]。

微博是基于用户关系的社交媒体平台,用户通过PC、手机等多种移动终端接入,以文字、图片、视频等多媒体形式,实现信息的即时分享、传播互动。用户数上截至2020-03,微博月活跃用户达5.5 亿,日活跃用户达2.4 亿。是目前最受欢迎的社交媒体平台之一,包含了大量的信息。

气象台站信息虽然准确,但是台站分布太少,不能反映更大范围的情况,利用网络信息的提取可以在广阔的范围内获取这方面的信息。

本文将基于新浪微博的冰雹信息,比较多种文本分类方法,研究最佳的方法,提取2010—2019 年冰雹的实况信息,并与观测资料比较,分析其实用性。

2 资料与方法

2.1 资料

本文采用山西109个气象台站2010-02—2020-12的冰雹信息以及新浪微博地址为山西省共辖的11个地级市2010-02—2019-12 以“冰雹”为关键词的所有微博信息。

2.2 方法

2.2.1 网络爬虫

目前,从新浪微博上下载用户数据主要途径有2 个:第一种是通过新浪API 接口,但是有较大限制,需要被下载方授权许可,授权有效期为24 h。除了这些限制外,新浪API 针对一个用户在使用一个应用的请求次数上还有限制,对于测试授权来说,单个用户每个应用每小时只能请求150次,不能满足本文研究需求。本文采用第二种途径,通过网络爬虫(又被称为网页蜘蛛、网络机器人),是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本[3-5]。

2.2.2 分词器及文本分类的特征选择

“结巴”分词是一个Python 中文分词组件,可以对中文文本进行分词、词性标注、关键词抽取等功能,并且支持自定义词典。

如果把所有的分词都作为文本特征,则经过分词处理后的文本类样本的特征维度将是巨大的,同时由于分类能力很弱的分词的使用会松动训练出优良分类器的根基,因此有必要在对分词分类贡献率分析的基础上进行分词选择,即特征选择。基本思想是使用评估函数对分词集的每个分词进行评估,然后按照评估得分的大小对分词进行排序,并选取前n个分词作特征,形成对“文本”类样本的描述向量。

本文使用类别信息的评估函数有文档频率(DF)、词频-逆向文档频率(TF-IDF)、信息增益(IG)、互信息(MI)、卡方检验(CHI)、类间词频方差(DAC)[6]。

2.2.3 计算机学习

本文采用 Python 中的机器学习模块Scikit-Learn 中的SVM 支持向量机、NB 朴素贝叶斯分类器、KNN K 近邻分类器、DT 决策树以及Google 公司2018-10-11 发布的BERT模型进行分类器的训练与测试。

2.2.4 分类性能的评价指标

本文采用分类性能评估指标为:准确率(Precision)、召回率(Recal1)和综合考虑准确率与召回率的F1 测度值(F.measure)。

3 数据爬取、建模样本形成及特征向量选取

3.1 新浪微博数据爬取及建模

模拟登录新浪微博,关键词为“冰雹”,地址分别为“太原”“大同”等山西11 个地市,时间为2010-01-01T01:00—2019-12-23T15:00,由于每一次搜索,微博只提供50 页的数据,所以为了避免遗漏,每一次搜索的时间间隔为24 h,使用requests 库,加载网页的HTML,利用正则表达式提取HTML 的每一条微博的博主姓名、发表内容和发表时间。共爬取了33 979 条山西关于“冰雹”的微博。

随机抽取3 696 条微博信息作为样本,分为2 类:①博主第一视角第一时间发现冰雹所发表的微博;②听闻他人说、回忆、不确定信息、新闻报道、天气预警预报信息等。其中,第一类有2 061 条,第二类有1 635 条。分别随机抽取样本60%、20%、20%,为机器分类样本集、验证集和测试集。

3.2 特征向量提取和多种函数分类

对发表内容去重、去标点,利用python 中文分词器JIEBA 分词器分词,遍历所用微博内容,识别一元词到五元词组,如微博“下大雨了,还夹着冰雹,玉米粒似的”,分为{下,大雨,了,还,夹着,冰雹,玉米,粒,似的,下大雨,大雨了,还夹着,夹着冰雹,玉米粒,粒似的,下大雨了,还夹着冰雹,玉米粒似的},并分别统计各个词在爬取微博中的出现频率。删除掉停用词“的”“了”等和出现频率5 次及以下、带数字、特殊符号的词组后,共获得49 899个词组。用7 种评估函数对特征向量重新排序,根据分数大小排出6 种词组顺序。

4 计算机学习测试

4.1 多分类函数的排序在SVM、Bayes、KNN、DT 验证集表现

比较文档频率(DF)、词频-逆向文件频率(TF-IDF)、信息增益(IG)、互信息(MI)、卡方检验(CHI)、类间词频方差(DAC)在SVM 支持向量机、NB 朴素贝叶斯分类器、KNN K 近邻分类器不同维度模型得分。其中,特征词MI 函数分类排序在NB 分类器取得的模型分数较高。MI函数排序在朴素贝叶斯分类器,在5206 特征维度模型分数(Model Score)为0.81。

利用Sklearn 中决策树的Grid Search CV 参数调优,训练集分成5 等份相互验证。比较文档频率(DF)、词频-逆向文件频率(TF-IDF)、信息增益(IG)、互信息(MI)、卡方检验(CHI)、类间词频方差(DAC)在DT 决策树验证集模型得分。MI 函数排序在DT 分类器,在1000 特征维度模型分数较高为0.761,其中参数为:{不纯度计算方法(criterion): gini, 决策树深度(max_depth): None,节点划分最小不纯度(min_impurity_decrease):0.0,叶子结点的最小样本数(min_samples_leaf): 3}。

4.2 BERT 验证集表现

把训练集调入 BERT 模型, 分别调节参数train_batch_size为8和16,num_train_epochs为3、4,learn_rate为1.00E-5、2.00E-5、3.00E-5、4.00E-5。在train_batch_size为 8,num_train_epochs 为 3,learn_rate 为 2e-5 验证集模型准确率最高为0.801。

4.3 多分类器模型的测试集表现

特征词MI 函数分类排序在NB 分类器5206 特征词训练的模型、特征词MI 函数分类排序在DT 分类器1000 特征词训练的模型以及最佳验证集参数参数:{不纯度计算方法(criterion):gini,决策树深度(max_depth):None,节点划分最小不纯度(min_impurity_decrease):0.0,叶子结点的最小样本数(min_samples_leaf):3}的BERT 的训练模型在测试集测试,比较各模型的准确率(Precision)、召回率(Recal1)和F1 测度值(F.measure),最终MI 函数分类排序在NB 朴素贝叶斯分类器训练的模型表现最好,准确率(Precision)为0.84,召回率(Recall)为0.8,F1 测度值为0.83。

5 冰雹实况信息抽取

冰雹实况信息包括降雹的时间、地点及冰雹大小,由于微博的短文本居多和内容随意性强的特点,这些要素有时会有一定的缺失。为将这三要素从降雹事件类中提取出来,本文从已标注的微博数据中归纳出该三要素常用的表达规则,通过模板匹配法提取冰雹实况信息。时间为博主发微博时间,地区已经确定,具体地址遍历该地区乡镇街道,并提取。比如“太原”则遍历太原市现辖的六区、三县、一个市,及其县市区内的街道乡镇,有相同地址名称则提取。冰雹大小的提取主要基于2 个规则:①关于直径的描述,为{直径|最大直径|空}+{多达|可达|有|达到|空}+数字+{厘米|毫米|cm|mm};②关于比喻的描述,{有|如|像|比|跟|大如|空}+比喻对象+{那么大|似的|般|般大|般大小|大|还大|一样|一样大小|大小|状||小一些|空},比喻对象有[玉米]、[黄豆]、[乒乓球]、[棒球]、[西瓜]、[汤圆]、[鸡蛋]、[盐粒]、[豆粒]、[花生粒]、[弹珠]、[杏核]、[鹌鹑蛋]等30 个词语,比如“有玉米粒那么大”“如鹌鹑蛋般大小”等。

6 与观测资料对比分析

为了提高准确性,特征词MI 函数分类排序在NB 分类器5206 特征词训练的模型,在同一天符合一类数量在3 条以上记录为该地区为降雹日。对比山西109 站2010-02—2019-12 降雹数据。机器分类精准率(precision)为0.93,说明通过微博爬取的降雹事件是有参考性的,可以弥补一些地区降雹未被气象台站记录的问题。查全率(recall)为0.87,说明微博博主并不能完全记录下降雹事件,气象台站对冰雹事件记录得更全面,在降雹事件中通过微博博主的信息是不能替代气象台站工作的。

7 结论和讨论

本文基于新浪微博的冰雹信息,比较多种文本分类方法,发现互信息(MI)函数分类排序在朴素贝叶斯(NB)分类器训练的模型在对冰雹降雹事件识别准确率较高,利用冰雹大小的规则提取出冰雹的时间、地点、大小,与气象台站观测资料对比,通过微博提取冰雹实况信息虽然不能替代气象台站的工作,但是有一定参考性。

猜你喜欢
分词冰雹分类器
少样本条件下基于K-最近邻及多分类器协同的样本扩增分类
冰雹是冰的,却为何出现在夏天
学贯中西(6):阐述ML分类器的工作流程
分词在英语教学中的妙用
基于朴素Bayes组合的简易集成分类器①
结巴分词在词云中的应用
结巴分词在词云中的应用
盛夏冰雹
夏日冰雹
基于AdaBoost算法的在线连续极限学习机集成算法