大数据时代如何从网络媒体发布的药品安全事件、药品安全监管及药品安全形势等医药新闻报道中跟踪药品安全舆情,是卫生部门和医药企业研判舆情的关键。本文利用八爪鱼采集器从某医药网获取2012年12月25日到2015年4月29日间9888条医药新闻,经数据清洗和人工识别选取了8类药品安全领域话题,共5667例实验数据。采用Hadoop平台和朴素贝叶斯分类算法实现药品安全话题跟踪。研究结果表明基于Hadoop平台的朴素贝叶斯分类算法的准确率较好、召回率较差、调和平均指标F1值为0.57时模型整体最佳。 Track public opinion of drug safety and from online media news is beneficial to the health departments and pharmaceutical companies judging public opinion and making decisions quickly, accurately and efficiently. The medical news from December 25, 2012 to April 29, 2015 from a medical network is obtained by the Octopus collector. After data cleaning and manual selection, the experiments data are 5667 medical news including 8 categories of drug safety topics. The Hadoop platform and Naive Bayes classification algorithm are used to track drug safety topics. The research results show that the Naive Bayes classification algorithm based on Hadoop platform has better accuracy, poor recall rate and the best overall model when the F1 value is 0.57.
张文学1,王莹1,徐静2
1宁夏医科大学理学院,宁夏 银川
2宁夏医科大学公共管理研究中心,宁夏 银川
收稿日期:2019年10月25日;录用日期:2019年11月8日;发布日期:2019年11月15日
大数据时代如何从网络媒体发布的药品安全事件、药品安全监管及药品安全形势等医药新闻报道中跟踪药品安全舆情,是卫生部门和医药企业研判舆情的关键。本文利用八爪鱼采集器从某医药网获取2012年12月25日到2015年4月29日间9888条医药新闻,经数据清洗和人工识别选取了8类药品安全领域话题,共5667例实验数据。采用Hadoop平台和朴素贝叶斯分类算法实现药品安全话题跟踪。研究结果表明基于Hadoop平台的朴素贝叶斯分类算法的准确率较好、召回率较差、调和平均指标F1值为0.57时模型整体最佳。
关键词 :药品安全舆情,话题跟踪,Hadoop,朴素贝叶斯
Copyright © 2019 by author(s) and Hans Publishers Inc.
This work is licensed under the Creative Commons Attribution International License (CC BY).
http://creativecommons.org/licenses/by/4.0/
近年来,与药品有关的事件越来越多,如毒胶囊、问题疫苗、假药等。这些药品事件的事实通过各种媒体报道在网络上飞速传开,引起了越来越多的人的了解和关注,产生了许多不良的舆论。药品安全事件与人们的身体健康密切相关。大众对此关注度高,容易产生消极的非理性情绪。此外,信息传播在时空上呈现出不断变化的复杂趋势 [
刘晓欣 [
李艳业 [
刘能燕 [
李纲等 [
张雄宝 [
杨柳 [
通过上述分析发现关于药品安全舆情的话题跟踪模型与算法已经有很多可行的理论研究,如表1所示,但是对基于Hadoop的药品安全舆情的话题跟踪模型与算法的研究甚少,在本文中,借助各位学者之前的研究,继续探讨基于Hadoop的药品安全舆情的话题跟踪模型与算法。
研究点 | 研究内容 | 参考文献 |
---|---|---|
研究分析 | 采用文献法、基于大数据系统抓取相关数据和案例进行药品网络舆情研究 | [ |
完善政府舆情管理实现路径、现有突发事件预警研究重点 | [ | |
应对策略 | 政府需要关注大众需求,对于危机做到良好的修复监管;各类媒体要控制好传播尺度,相辅相成,共同建立良好社会环境;涉医人员要担负起对社会的职责,传播科学的舆论进行引导;基层公众要提高媒体素养,共同抵制舆论的传播 | [ |
研究方法 | 图结构模型、突发特征及重要词的研究方法 | [ |
针对微博突发事件的地域进行分析检测的方法 | [ |
表1. 药品舆情话题跟踪相关研究文献
话题跟踪(Topic tracking)技术可以帮助人们在社交媒体发布的众多的信息中鉴别出已知话题并对其不断地、准确的跟踪,提供人们所需的信息。它主要包括下述概念:话题,是指某个事件的核心内容或与之关联的事件。事件,是指由特定的原因和条件引发的,包含人物,时间以及地点等。报道,对于某时间段的相关报道,过去主要是指未提及的新闻报道,延伸到社交媒体和社交信息,例如一篇文章可被视为一篇报道。话题检测与跟踪技术是一项非常全面的技术,它要求多种技术相结合,而话题跟踪就是关键。
朴素贝叶斯分类(Naïve Bayes, NB)算法十分简单,容易实现;朴素贝叶斯模型分类效率稳定;能处理好小型的数据,它可以同时处理多个分类,还可以增加数据进行训练;对于缺少的数据敏锐度不高,它经常被用于文本分类。采用朴素贝叶斯(NB)分类算法作为药品安全舆情话题的分类算法,对抓取的数据经过预处理之后将文本依据不同的类别分好类,然后将分好类的部分文本输入,训练话题模型,最后利用模型判定分好类的测试文本的类别。
对于药品安全舆情信息,可以通过朴素贝叶斯(NB)分类算法的步骤一步一步实现药品安全舆情文档的分类,进而实现药品安全舆情话题的跟踪。但是由于药品安全舆情信息的数据量太大,仅仅依靠服务器处理难以满足药品安全舆情信息的跟踪。
Hadoop作为一个能够处理大量数据的平台就出现了,它通过对药品安全舆情信息进行存储和处理,能够有效的提高数据处理效果。本文的编程模型采用了MapReduce,可以更有效的提高朴素贝叶斯分类算法对药品安全舆情的分类能力。算法中的MapReduce,其包含Map和Reduce,首先利用Map函数主要是对原始数据进行清洗操作,然后再利用Reduce进行数据加工,实现数据合并,获得分类结果;因此可以减少数据移动,并提高算法的处理速度。本文通过其构造基于Hadoop的药品安全舆情话题跟踪模型与算法,完成对药品安全舆情信息的跟踪。根据统计药品安全舆情文档中词语出现的概率、各个类别文档的数量等信息输入分类算法进行训练,构建模型分类器,达到药品安全舆情信息的分类处理的目的。
本文的朴素贝叶斯算法是通过计算先验概率和条件概率实现对药品安全舆情话题的分类,算法中计算先验概率是通过计算每个类的文档在总训练类中占的比例,即先验概率P (a) = 类a下文档总数/整个用来训练模型的样本的文档总数;计算条件概率是通过计算每类文档中各词语在文档中出现的次数统计加一之和在每类中词语的总统计数与不重复的词语的总统计数之和中占的比例。具体过程如下所示:
Step 1:DocOfClassMap:获取训练模型时统计的训练集的样本数量和每个类下单词的数量,输入处理后的测试数据,测试数据格式< , word1 word2 ...>,构建新的<类别,概率>键值对。
Step 2:DocOfClassReduce:对数据进行循环遍历并进行输出,对第一次循环先进行赋值,然后进行比较,当期概率更大时进行更新。
Step 3:GetPriorProbably (String docNum):根据上述步骤结果计算先验概率,该静态函数计算每个类的文档在总类中占的比例,即先验概率P(a) = 类a下文档总数/整个用来训练模型的样本的文档总数。
Step 4:GetConditionProbably (String wordCount):根据上述步骤结果计算条件概率,条件概率通过计算每类文档中各词语在文档中出现的次数统计加一之和在每类中词语的总统计数与不重复的词语的总统计数之和中占的比例。
算法执行过程如下:
Step 1:执行命令。
cd /usr/local/run
hadoop fs-rmr/jobs/naive_bayes
hadoop fs-mkdir-p/jobs/naive_bayes/input/data
#进入本地Excel文件所在目录,上传Excel文件到hdfs
hadoop fs-put 8个类别.xlsx/jobs/naive_bayes/input/data/
hadoop fs-mkdi-p/jobs/naive_bayes/output
Step 2:预处理数据。
ParseData.parseTrainDataset (dataOrg, trainData);
ParseData.parseValidateDataset (predictOrg, predictData);
Step 2.1:parseTrainDataset解析训练集。
Step 2.2:parseValidateDataset解析验证集。
Step 3:在Hadoop平台利用数据训练的过程,并输出模型。
BayesClassify.main (new String[
Step 3.1:DocNums_Map:它继承Mapper,主要实现对训练集数据各类别名的读写;DocNums_Reduce:继承Reducer,成为自定义的Reducer,主要业务逻辑就是复写其中的reduce函数,实现对训练集各类别下文档遍历并统计每个类对应的文件数量。
Step 3.2:WordCount_Map:继承Mapper,实现对训练集数据各词语的读写;WordCount_Reduce:继承Reducer,实现对训练集各类别下词语遍历并统计每个类下词语数量。
Step 4:用输出的模型对测试集文档进行分类测试,输出每个测试文档的分类结果。
Step 4.1:WordMapper:继承Mapper,实现对测试集数据各文档和词语的读写;WordReducer:继承Reducer,实现对测试集数据各类别下词语遍历并统计每个类下词语数量。
Step 4.2:DocOfClassMap:输入处理测试数据,测试数据格式< , word1 word2 ...>,设置HashMap < String, Double > classProbably为先验概率;HashMap < String, Double > wordsProbably为条件概率。DocOfClassReduce:循环遍历输出,当概率更大时就更新tempClass和tempProbably。
Step 4.3:GetPriorProbably (String docNum):计算先验概率,该静态函数计算每个类的文档在总类中占的比例。
Step 4.4:GetConditionProbably (String wordCount):计算条件概率。
Step 5:利用测试文档的真实类别,计算评价指标。
Step 5.1:OriginalDocOfClassMap:读写原本的文档分类,得到文档分类的类别,Reduce:计算得出初始情况下各个类有哪些文档。
Step 5.2:ClassifiedDocOfClassMap:读取经贝叶斯分类器分类后的结果文档 ,并将其转化为 形式,Reduce:计算得出经贝叶斯分类后各个类有哪些文档。
Step 5.3:GetEvaluation:利用所选评价指标评价算法。
实验环境。本文在PC上搭建整体测试环境,以保证后续系统测试的顺利进行。实验硬件配置:Intel (R) Core (TM) i5-5200U CPU@2.20GHz 2.19GHz,内存12.0 GB,外部存储硬盘500 G。实验软件环境:操作系统Windows8、centos7.3_1,Java环境JDK1.8,开发工具eclipse,Hadoop版本hadoop2.7.6。
评测机制。在文本分类中,评估是一个必要的工作,本文采用精确率(Precision)、召回率(Recall)和F1来评估话题跟踪的性能,其具体定义为:
Precision:P = TP/(TP + FP)。
Recall:R = TP/(TP + FN)。
P和R的调和平均:F1 = 2PR/(P + R)。
TP是指统计初始情况下的分类和贝叶斯分类两种情况下各个类公有的文档数目(即针对各个类分类正确的文档数目);FN是指初始情况下的各个类总数目减去结果正确的数目;FP是指贝叶斯分类得到的各个类的总数目减去结果正确的数目。
数据集:本文利用八爪鱼采集器从某医药网获取9888条医药新闻作为分析数据源,后续的实验数据均由原始数据处理后得到。数据预处理:在数据集中以手工标记的方式从原始数据集中选取8类药品安全领域数据共5667例作为后续实验数据。手工标记的实验数据类别分布情况如表2所示。并利用中文分词技术进行文本的预处理,对标点符号及无意义虚词的剔除,最终形成实验使用的语料库。
序号 | 记录数 | 类别 |
---|---|---|
话题1 | 377 | 药品研发 |
话题2 | 500 | 药品安全 |
话题3 | 511 | 药品供应 |
话题4 | 635 | 药品销售 |
话题5 | 936 | 药品质量 |
话题6 | 1073 | 疫苗 |
话题7 | 1681 | 药品生产 |
话题8 | 54 | 药品法 |
表2. 手工标记的实验数据类别
将上述数据集作为输入测试基于NB和Hadoop的话题跟踪算法,其实验结果如表3所示:
序号 | 话题 | Precision (%) | Recall (%) | F1 (%) |
---|---|---|---|---|
话题1 | 药品研发 | 54.0 | 42.6 | 47.6 |
话题2 | 药品安全 | 37.3 | 56.2 | 44.9 |
话题3 | 药品供应 | 66.6 | 42.3 | 51.8 |
话题4 | 药品销售 | 56.1 | 59.9 | 57.9 |
话题5 | 药品质量 | 21.6 | 52.6 | 30.7 |
话题6 | 疫苗 | 95.0 | 3.5 | 68.3 |
话题7 | 药品生产 | 14.5 | 85.1 | 24.7 |
话题8 | 药品法 | 92.4 | 19.1 | 31.6 |
average | 54.7 | 45.2 | 37.0 |
表3. 基于NB和Hadoop的话题跟踪算法测试结果
由表3可知,基于Hadoop平台的朴素贝叶斯分类算法能够运行并能够实现测试样本的正确分类。但根据的实验结果表明,朴素贝叶斯返回相关实例的能力,即精确度相对较好;而识别所有相关实例的能力,即召回率相对较差;且调和平均指标,即F1的整体最佳模型出现在阈值0.57处,即话题4。
随着网络的高速发展和普及,各种社交媒体每天发布的信息呈指数性增长,面对大量的网络信息,传统人工抓取数据和跟踪药品安全舆情的方式已经不能满足实际舆情工作需求,而Hadoop为解决大数据处理和存储问题提供了有效途径。本文以医药新闻为数据源,使用人工标记提取相应的主题,在Hadoop平台上使用朴素贝叶斯算法对药品安全话题进行跟踪,虽然取得了一定的效果,但今后还需要提升算法的准确率、召回率以及调和平均指标F1值。
宁夏自然科学基金(NZ17083),国家社会科学基金西部项目(17XGL016),2017年宁夏医科大学优秀青年后备骨干培育对象(宁医校发[
张文学,王 莹,徐 静. 基于Hadoop的药品安全舆情的话题跟踪模型与算法Topic Tracking Model and Algorithms for Drug Safety Public Opinion Based on Hadoop[J]. 计算机科学与应用, 2019, 09(11): 2045-2051. https://doi.org/10.12677/CSA.2019.911230