设为首页收藏本站

EPS数据狗论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 1927|回复: 0

有关虫草产品新闻报道文本分析2017年

[复制链接]

100

主题

2158

金钱

2936

积分

中级用户

发表于 2018-3-6 13:27:12 | 显示全部楼层 |阅读模式
随着互联网的高速发展,越来越多的用户会从多种类别的形式文档获取信息。这些信息构成了一个庞大的分布式数据库,这个数据库中存放的就是非结构化的文本数据。文本数据挖掘是一个多学科混杂的领域,涵盖了信息抽取、信息检索、机器学习、自然语言处理、统计数据分析等多种技术。
   文本分析在一定条件下可以转换为客户“声音”,特别是在客户体验、民生聆听和用户交互等方面有很多发展空间。下面小编展示一个文本分析在有关虫草花产品新闻数据中的应用。

一、背景简介

   冬虫夏草是我国的名贵中药材,因采集过度,野生资源日渐枯竭。许多学者一直致力于对其进行人工培养或在虫草属中寻找它的替代品。蛹虫草是虫草属的模式种,现有的研究表明,蛹虫草的化学成份与冬虫夏草无根本性差异,具有与冬虫夏草类似的功能,可以作为冬虫夏草的替代品。
   研究证明,蛹虫草具有免疫调节、改善肾功能、调节脂类代谢、抗肿瘤、促进造血、提升机能等功效。
   蛹虫草,又称虫草,作为一种进补品,以价格亲民、功效良好走进了平常小百姓的日常生活。
   我们通过爬虫工具爬取了淘宝网上有关蛹虫草产品的销量数据。从淘宝数据上看,截止到2018年1月24日,广东、吉林、辽宁地区的蛹虫草产品销量最好,具体来看,全国销量榜TOP3城市是吉林长春、广东河源、和广东广州。

14_1517294511337036663.png
   
   销量榜TOP3店铺是吉林长春的一庆堂旗舰店、广东河源的“曾吖宝”店铺和广东湛江的福东海旗舰店。在销量榜TOP10店铺中以个人店铺较受欢迎,特别是个人创业型的店铺,以高销量和高口碑在畅销榜中享受相当的影响力。在销量榜中“曾吖宝”店铺和“军人电商梦”店铺分别属于大学生创业和军人创业,所经营的蛹虫草产品在销量TOP5榜单中占有三席。

   随着虫草产品消费升温,也带来了一系列的热点问题,比如对人工蛹虫草的培植技术推进发展、对虫草类产品功效研究等。据统计,从2017年1月至2018年1月25日,新浪网上共发表了61篇有关“蛹虫草”的新闻,涉及科研技术、科普知识、产业报道、曝光打假等各方面,媒体来源覆盖沈阳日报、中国经营报、中国网、华商网、科技日报等40家媒体。
   我们通过抓取新浪网上2017年有关虫草产品新闻,61篇文章,81997+字,得到原始的数据素材。然后对其进行数据分析,生成词云。本文在使用python做文本分析时主要用到两个Python类库 jieba中文分词分词工具 和wordcloud词云生成工具。


二、使用python进行中文分词、关键词提取和词云分析

1、使用jieba进行中文分词和关键词提取

   我们分析一下上述61篇新闻的标题,使用python的基于TF-IDF算法提取其关键词。  

   代码如下:

#要重新载入sys。因为 Python 初始化后会删除 sys.setdefaultencoding这个方法
import sys
import jieba
from jieba import analyse
reload(sys)
sys.setdefaultencoding('utf-8')
filename='D:\\yongchongcao2017biaoti.txt'
bigstring=’‘
fin = open(filename, 'r') #以读的方式打开输入文件
for eachLine in fin: #按行读入文件内容
    line = eachLine.strip().decode('gbk', 'utf-8')
    #line = eachLine.strip()

#处理前进行相关的处理,包括转换成Unicode等   
    bigstring+=line+''
    #print line #打印原始字符
print bigstring  
newstring=bigstring.encode("utf-8")
print newstring
seg_list=jieba.cut(newstring)
print ",".join(seg_list)
tfidf = analyse.extract_tags
# 基于TF-IDF算法进行关键词抽取
keywords = tfidf(newstring)
print "keywords by tfidf:"
# 输出抽取出的关键词
for keyword in keywords:
    print keyword + "/",
result3= ' '.join( keywords)
result3 = result3.encode('utf-8')
with open("D:\\nlp_text3.txt", "w") as f3:
        f3.write(result3)
f3.close()
  
     关键词输出为:百科 冬虫夏草 互动 抗癌 词条 虫草 农博会 曝光 虚假 晚会 垃圾站 涉嫌 双创 广告 研究 神坛 乱象 农产品 三板 神医

   具体来看,2017年蛹虫草的热点新闻报道主要有两条:

   第一条是在2017年315期间“央视315晚会曝光互动百科虚构词条交钱不验资质就能上”的热点新闻。具体事件是互动百科收钱创建了一个词条名叫“极藻5s”,称含有“真核盐藻、极地蛹虫草”等五大稀缺成分,“被誉为神丹妙药”,不仅能“美容壮阳”,甚至还能“明显抑制肿瘤生长”。产品见证中,一位肝癌患者服用“极藻5s”仅仅7天,癌细胞就不见了。可是如此神奇的产品,在国家食品药品监督管理总局网站上却查不到任何相关信息。该词条被查出是虚假宣传,在多家媒体报告曝光。
   第二条是对冬虫夏草的抗癌功能的纠正,比如“冬虫夏草被确认不抗癌 部分药店仍宣称有抗癌功效”等类似的新闻报道,具体内容比如“......根据基因及产生模式,冬虫夏草不可能含抗癌成分虫草素和喷司他丁(Pentostatin),相反,广泛分布、价格低廉的蛹虫草却含有喷司他丁及虫草素成分。.....”
   此外,像沈阳市生物医药产业升级转型的代表弘侨生物作为首家蛹虫草生产企业上市、首诚集团的“蛹虫草”培育车间、金蛹虫草生物科技(深圳)有限公司与保利青洲香市文化产业园在东莞签订战略合作协议等产业新闻报道也较多。

2、使用python实现词云分析

   词云又叫文字云,是对文本数据中出现频率较高的“关键词”在视觉上的突出呈现,形成关键词的渲染形成类似云一样的彩色图片,从而一眼就可以领略文本数据的主要表达意思。
  
   我们分析一下2017年新浪网上有关虫草花所有新闻正文,并作出词云图。

   代码如下:

from os import path
from scipy.misc import imread
import matplotlib.pyplot as plt
import jieba
from wordcloud import WordCloud, ImageColorGenerator
# 获取当前文件路径
# __file__ 为当前文件, 在ide中运行此行会报错,可改为
# d = path.dirname('.')
d = path.dirname(__file__)
stopwords = {}
isCN = 1 #默认启用中文分词
back_coloring_path = "D:\\picture.jpg" # 设置背景图片路径
text_path = "D:\\yongchongcao2017.txt" #设置要分析的文本路径
font_path = "D:\\HYQiHei-25J.ttf" # 设置字体
stopwords_path = "D:\\stop_words\stop_words.txt" # 停用词词表
imgname1 = "WordCloudDefautColors.png" # 保存的图片名字1(只按照背景图片形状)
imgname2 = "WordCloudColorsByImg.png"# 保存的图片名字2(颜色按照背景图片颜色
布局生成)
back_coloring = imread(path.join(d, back_coloring_path))# 设置背景图片
# 设置词云属性
wc = WordCloud(font_path=font_path,  # 设置字体
               background_color="black",  # 背景颜色
               max_words=2000,  # 词云显示的最大词数
               mask=back_coloring,  # 设置背景图片
               max_font_size=100,  # 字体最大值
               random_state=42,
               width=1000, height=860, margin=2,
               )
text = open(path.join(d, text_path)).read()
def jiebaclearText(text):
    mywordlist = []
    seg_list = jieba.cut(text, cut_all=False)
    liststr="/ ".join(seg_list)
    f_stop = open(stopwords_path)
    try:
        f_stop_text = f_stop.read( )
        #f_stop_text=unicode(f_stop_text,'utf-8')
        f_stop_text=f_stop_text.decode('gbk', 'utf-8')
    finally:
        f_stop.close( )
    f_stop_seg_list=f_stop_text.split('\n')
    for myword in liststr.split('/'):
        if not(myword.strip() in f_stop_seg_list) and len(myword.strip())>1:
            mywordlist.append(myword)
    return ''.join(mywordlist)
if isCN:
    text = jiebaclearText(text)
# 生成词云, 可以用generate输入全部文本(wordcloud对中文分词支持不好,
#建议启用中文分词),
#也可以我们计算好词频后使用generate_from_frequencies函数
wc.generate(text)
# wc.generate_from_frequencies(txt_freq)
# txt_freq例子为[('词a', 100),('词b', 90),('词c', 80)]
# 从背景图片生成颜色值
image_colors = ImageColorGenerator(back_coloring)
plt.figure()
# 以下代码显示图片
plt.imshow(wc)
plt.axis("off")
# 绘制词云
plt.show()
# 保存图片
wc.to_file(path.join(d, imgname1))
image_colors = ImageColorGenerator(back_coloring)
plt.imshow(wc.recolor(color_func=image_colors))
plt.axis("off")
# 绘制背景图片为颜色的图片
plt.figure()
plt.imshow(back_coloring, cmap=pltNaN.gray)
plt.axis("off")
plt.show()
# 保存图片
wc.to_file(path.join(d, imgname2))

   输出词云图如下:

15_1517294967267089718.png
   
   从词云结果上看,与2017年虫草产品的新闻标题相似,从关键词上看,科普、打假和产业报道是2017年虫草产品新闻正文的重点。

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

客服中心
关闭
在线时间:
周一~周五
8:30-17:30
QQ群:
653541906
联系电话:
010-85786021-8017
在线咨询
客服中心

意见反馈|网站地图|手机版|小黑屋|EPS数据狗论坛 ( 京ICP备09019565号-3 )   

Powered by BFIT! X3.4

© 2008-2028 BFIT Inc.

快速回复 返回顶部 返回列表