IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> 基于新闻的舆情体系构建方法 -> 正文阅读

[人工智能]基于新闻的舆情体系构建方法

为什么要构建舆情分析体系

舆情分析就是根据特定问题的需要,对针对这个问题的舆情进行深层次的思维加工和分析研究,得到相关结论的过程。(来自百度百科)
我认为舆情分析的主要作用有如下几点:

  • 去除数据冗余,直至核心;
    信息时代是一个信息爆炸的时代,我们每天都会接触各类信息,虽然方便我们去获取信息,但是也造成了信息冗余,对某一个事物的认知往往会不得要领。舆情监控可以帮助我们过滤一些垃圾信息、重复信息,并且获得正反多类信息。
  • 宏观把控趋势;
    建立舆情监控体系,有利于我们在宏观上把控市场趋势,根据行业评论、市场讨论等了解大众对事物的观点倾向。
  • 带入定量分析,预测拐点;
    建立的舆情体系,可以基于新闻等,利用深度学习、机器学习等算法获得一个相对合理的舆情值,对市场情绪进行定量化,舆情值还可以带入我们建立的预测模型里面,优化我们的模型,及时的发现市场拐点。

舆情分析构建框架

  • 数据采集
    结构化的数据采集可以爬取百度搜索指数、新闻指数等获取大众对某一特定行业的关注程度,非结构化的数据采集源可以是行业报告、行业评论、国家相关政策及其分析、上市公司商业评论、疫情/灾情等,渠道一般有证券公司行业分析网站、国家公开政策新闻发布网站、研报、论坛等。
  • 数据标注&情感分析
    利用深度学习或者机器学习,必须做好数据集的标注,商用的数据集标注可以外包或者自建;或者直接调用各大平台已经开发好的模型,如百度、腾讯、阿里、华为等智能平台。
  • 舆情值构建
    舆情值的构建可以有以下几种方式:加权平均值、机器学习回归模型、多源信息融合算法等。
  • 文本分类及观点抽取
    我们设计的舆情分析框架包含正负两个观点集合,文本分类可以借助公开平台的训练模型(文本相似度、文本情感分析等)进行分类,观点抽取也可以以类似的方式(文本摘要)对全篇进行抽取摘要。
  • 舆情报告
    最终我们获取的舆情报告有以下几大部分组成:舆情值及其趋势、正负观点抽取及罗列、分析师填写的结论。
    在这里插入图片描述

舆情分析构建实例

本例意在对A股大盘进行舆情分析,只是一个案例研究,不存在好坏。

- 数据获取

我们获取东方财富网站每天发布的对A股大盘的分析。http://stock.eastmoney.com/a/cchjy_2.html
在这里插入图片描述
以下是爬虫代码

#coding=utf-8
import re
from selenium import webdriver
import pandas as pd
driver = webdriver.Chrome('D:/webdrives/chromedriver.exe')
href_list_=[]
content_list = []
def href(i):
    href_t = driver.find_element_by_css_selector('#newsTr'+str(i)+' > div.text > p.title > a')
    href_ = href_t.get_attribute('href')
    return href_

def text():
    try:
        div = driver.find_element_by_css_selector('body > div.main > div.contentwrap > div.contentbox').text

        time = driver.find_element_by_css_selector('#topbox > div.tipbox > div.infos > div:nth-child(1)').text
        title = driver.find_element_by_css_selector('#topbox > div.title').text
        summary = driver.find_element_by_css_selector('body > div.main > div.contentwrap > div.contentbox > div.mainleft > div.zwinfos > div.abstract > div.txt').text
        summary_ = re.findall(".*】(.*)",summary)
        div_=re.sub('\s+', " ", div)
        content_x = re.findall(".*APP内免费看>>(.*)主力资金加仓名单.*",div_)   #body > div.main > div.contentwrap > div.contentbox > div.mainleft > div.zwinfos > div.abstract
        content = [title,time,content_x,summary_]
    except:
        content = []
    return content

for i in range(1,26):
    url = 'http://stock.eastmoney.com/a/cchjy_'+str(i)+'.html'
    driver.get(url)
    for j in range(20):
        href_ = href(j)
        href_list_.append(href_)
    #body > div.main > div.contentwrap > div.contentbox
for href in href_list_:
    driver.get(href)
    content = text()
    content_list.append(content)

driver.close()
data = pd.DataFrame(content_list,columns=['title','date','content','summary'])

data.to_csv('content_11.csv')

最终获得数据样例如下图所示,主要爬取标题、发布时间、摘要、正文。
在这里插入图片描述

- 情感分析

情感分析主要借助于百度API接口进行分析,百度情感倾向分析API调用指南如https://cloud.baidu.com/doc/NLP/s/zk6z52hds所示,其他博客也有类似的教程,不在赘述。如“使用百度API进行情感分析(python)(一)
以下是调用代码及分析结果:

#coding=utf-8
import re
import time
import pandas as pd
import numpy
import requests
import json
text_ = pd.read_excel('content_09.xlsx')

#获取token
host = 'https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id={自己的id}&client_secret={自己的id}'
response = requests.get(host)
print(response.json()) #运行获取token

运行上述代码获取access_token。
在这里插入图片描述
将上述access_token导入下面代码中


token = '上述获取的access_token'
url = 'https://aip.baidubce.com/rpc/2.0/nlp/v1/sentiment_classify?charset=UTF-8&access_token={}'.format(token)
negative_list = []
list =[]


def sentiment(text_,i):
    new_data={'text':text_.content[i]}
    new_data = json.dumps(new_data)
    res=requests.post(url,data=new_data)
    json_data = json.loads(res.text)
    negative = json_data['items'][0]['negative_prob']
    positive = json_data['items'][0]['positive_prob']
    positive_list = [negative,positive]
    return positive_list
list1=[]
list2=[]
for i in range(len(text_)):
    try:
        p_n = sentiment(text_,i)
        list1.append(p_n[0])
        list2.append(p_n[1])
    except:
        list1.append('n')#百度提供的免费API不稳定,为完整数据,先填满不能识别的数据
        list2.append('p')
    time.sleep(5)
text_['positive'] = [i for i in list2]
text_['negative'] = [i for i in list1]
text_.to_excel('content_sentiment.xlsx')

最终得到的结果如下:
在这里插入图片描述

问题

  1. 百度提供的api稳定不足,有可能我使用的是免费调用的原因,有大概30%~50%的不能分析出来;
  2. 百度提供的API,对应的是大行业,而且并未公布其训练数据的倾向,若要求准确性,需要自己收集本行业的数据,从“数据标注——>模型选择——>模型训练——>模型验证——>模型应用”着手,自己训练适合本行业的模型,方更具有说服力。
  3. 本案例数据有限,不能获取同一频次内至少10+的文章,不具备进行细粒度的舆情分析。

文章摘要

最后一步即是要对一段时间内的多个文本进行观点抽取,此处我们依然调用百度文本摘要的API。

# -*- coding: utf-8 -*-
import pandas as pd
import re
import requests
import json

text = pd.read_excel('content_sentiment.xlsx')
host = 'https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id={自己的id}&client_secret={自己的id}'
response = requests.get(host)
print(response.json())

运行上述代码获取access_token。
在这里插入图片描述
将上述access_token导入下面代码中

# -*- coding: utf-8 -*-
import pandas as pd
import re
import requests
import json

text = pd.read_excel('content_sentiment.xlsx')
host = 'https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=jZzHwZkYY34wBfIwoKNfqDMS&client_secret=Goi0IQHyswhCEfiWTRA7CD2X4qvN6wgj'
response = requests.get(host)
print(response.json())
token = '24.fe4901284bb9b8510835059adf4d69fd.2592000.1630637330.282335-24648109'
url = 'https://aip.baidubce.com/rpc/2.0/nlp/v1/news_summary?charset=UTF-8&access_token={}'.format(token)

new_data={'content':text.content[1],"max_summary_len":200}
new_data = json.dumps(new_data)
res=requests.post(url,data=new_data)
print(text.content[1])
print(res.text)

最后得到的结果如下

{"log_id": 6681357197830018885, "summary": "A股市场在上周前半周市场波动加大、成交放量,但伴随着投资者逐渐消化政策意图、监管表态稳定市场,市场有所企稳,成长板块在后半周又再度大幅跑赢,但消费板块依然低迷。近期A股的波动加剧更多源于情绪面扰动,市场调整也是风险释放的过程,暂不具备系统性风险。"}

问题

  1. 百度提供的API是基于抽取式文本摘要算法,可读性有保证,但是不足以概括文本的核心观点,如需要概况性的生成核心观点,恐怕需要借助与深度学习,但是根据最新NLP的发展,目前的主流技术生成的中文摘要可读性较差,如基于RNN、transform、bert等深度学习的算法,国外的技术基本只针对英文摘要,不可迁移。
  2. 本文由于只是提供一种构建舆情分析的框架和思想,采集的数据较少,不能做细粒度的舆情分析。

最后

我们希望得到的舆情分析报告样例如下。

在这里插入图片描述

  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2021-08-06 09:37:50  更:2021-08-06 09:44:12 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/17 22:28:28-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码