基于Python爬取了1500条阳光热线中关于城乡建设的留言,通过BERT预训练语言模型提取文本的语义向量特征,利用临近传播算法对语义向量特征进行聚类得到127类群众关注问题,定义热度评价指标并利用归一化和熵值法得到评价指标的权重以计算当前群众关注的热点问题。
爬虫编码流程:指定url——发起请求——获取响应数据——数据解析——持久化存储
import requests
from lxml import etree
import pandas as pd
# 用于保存数据
col_t = ['编号','留言用户','问政标题']
df = pd.DataFrame(columns=col_t)
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.87 Safari/537.36'
}
url = 'http://wz.sun0769.com/political/depart/getList?'
param={
'id':'29','page':page}
# 发起请求
page_text = requests.get(url=url,params=param,headers=headers).text
# 获取响应数据
tree = etree.HTML(page_text)
# 数据解析
for li in li_list:
num = li.xpath('./span[1]/text()')[0]
title = li.xpath('./span[3]/a/text()')[0]
# 跳转到详情页面,获取详细信息
new_url = 'http://wz.sun0769.com/' + str(li.xpath('./span[3]/a/@href')[0])
detail_text = requests.get(url=new_url,headers=headers).text
new_tree = etree.HTML(detail_text)
name = new_tree.xpath('/html/body/div[3]/div[2]/div[2]/div[1]/span[1]/text()')
# 保存数据
df = df.append([{
'编号':num, '留言用户':name, '问政标题':title,}],ignore_index=True)
hit_x = data['问政详情']
r1 = '[a-zA-Z0-9’!"#$%&\'()*+,-./:;<=>?@,。?★、…【】《》?\n“”\t‘’\r![\\]^_`{|}~]+'
# 采用正则表达式,除去非文字符号的内容
hit_x = hit_x.apply(lambda x: re.sub(r1, '',x))
data['问政详情'] = hit_x
使用方法从原始数据中提取出具有代表性的特征,例如主成分分析、小波变换、局部二值模式等。
主成分分析:原理是将n维特征映射到k维上,k维是全新的正交特征,这k维特征成为主成分,是重新构造出来的k维特征。
计算流程:
更多【数据分析-数据分析简单项目总结】相关视频教程:www.yxfzedu.com