0%

三毛

一个人至少拥有一个梦想,有一个理由去坚强。心若没有栖息的地方,到哪里都是在流浪。

— 三毛

一、文章编写优化


1、题头图片

  • 基础方法(无法定义大小)
    ![备注](url)
  • 修改图片方法
    <img src="" width=800 height=800 aligin=right >
阅读全文 »

人生如逆旅,我亦是行人。
—-苏轼

序言

  不知不觉,漫长的考研之路就这样结束啦,在看到录取名单的那一刻,没有想象中的那么开心,只是感觉心里的一块大石头终于落地了,曾经想象的种种结果都随着群里的喧嚣化为了泡影。第二天,之前联系的实验室学长发来消息,问我确认要去他们那边吗?虽然有一丝丝犹豫和迷惘,自己还是给了肯定的答复,在沟通完一些具体的工作内容后,自己挂断了电话。看样子一切都在按部就班,但是自己心里确久久不能平静,感觉自己正在慢慢走向自己曾经所未成想象过的路,这条路上依然充满未知和不确定。下笔时,想起了苏轼的那句人生如逆旅,我亦是行人,可能我并没有经历像苏轼那样的颠沛流离,但是生活这条路上,谁又不是一个行人呢!

忆往昔峥嵘岁月愁

  回顾考研这一路,虽然很累,但还是收获良多的。记得前段时间还和同学调侃到:“不考个研,还真不知道自己原来这么厉害,自己本科欠的债,考个研全还了”。平时和大家聊考研的时候,说起来很云淡风轻,其实还是有很多艰辛在其中的。正所谓少年不识愁滋味,爱上层楼,爱上层楼,其实做出考研这个决定的时候,自己就已经没有回头路了,在备考期间,自己也经历了不少挣扎,看着同学们一个个都找到了挺好的工作,心里其实也挺不是滋味的,总是想着如果当初自己也去找工作了该多好,也就不会像现在这么辛苦了。还记得最后冲刺的一段时间,眼睛发炎,然后又感冒,那段时间还是挺难熬的,不过总算还是挺过来了,现在回想起来还真的是感慨万千啊!!!

昨日星辰昨日风

  考研过程中,感觉自己每天都还是比较开心的,但是当自己录取后,却莫名的有了些失落感。现在仔细想想,考研期间自己目标很明确,感觉每一天都元气满满的,一切结束后,自己却像泄了气的皮球一样,一下子找不到找不到方向了。还记得考完研后就和团契的弟兄姐妹们一起去看了心灵奇旅,当时没有很深的体会,现在却慢慢感觉自己陷入了和男主一样的境地。
  很多时候,我们都在追逐着自己的理想,在努力实现自己的目标,把结果看的比一切都重要,也慢慢陷入比较的旋涡之中,然后迷失自我。我们也总憧憬着更大更辽阔的大海,确没有发现自己已经在最美丽的海洋中了。仔细想想自己,在考研前,想着一定要考一个好的学校,考研期间,想着一定要考高分,录取后,想着要找一个好的导师,一切都确定后,又开始为自己的未来着急,变得患得患失,然后又陷入考研前的迷茫之中。
  其实吧,在这样一个所谓很的社会,想让自己慢下来真的很难,所以我们需要给自己的心灵一段旅程,让它去好好体会生活的点点滴滴,而不是总囿于各种烦恼的事情。就像电影最后男主说的话一样:我将珍惜每一分钟去活着
  即将毕业,走入新的旅程,虽然很难,但依然还是要笑着和过去说再见了,一切都会化作星辰和风,留存在自己心里那最美的一页。さようなら

课题名称—基于爬虫的网络信息可视化分析平台

课题意义

  • 实现对一些主流信息发布网站数据的爬取,获取实时的信息数据
  • 对网络信息进行分析聚类然后进行可视化的直观展示,更快捷直观的了解热点问题及其影响
  • 通过定向数据爬取,更具体的了解某些热点信息的发展趋势

课题综述(研究现状)

  • 网络爬虫
  • NLP文本分析
  • 信息数据可视化

课题难点

  • 数据高并发批量爬取
  • 定向数据爬取的队列管理问题
  • 目标网站的反爬机制
  • 数据的抽取与清洗
  • 文本分析的目标结果与精度的提升
  • 可视化展示的信息时效性问题
  • 功能扩展接口

课题方案和需要条件

一、爬虫

  • 使用scrapy+redis实现分布式爬虫
  • 定向数据爬取时维护一个优先级队列,同时针对当前网站状况和目标优先级进行排队处理

二、文本分析

  • 文本聚类
  • 情感分析
  • 时间演化分析

三、数据可视化

  • 基于echarts实现前端图表展示
  • 热点排行、关注度
  • 情感positive
  • 情感时间演变图表

计划进度与预期成果

  • 爬虫功能和接口开发
  • 数据的清洗和过滤模块开发
  • 文本分析模型构建和调试
  • 前端可视化界面搭建
  • 后期调试与

论文翻译

  • Oladejo Bolanle;Babajide Olanrewaju A Framework for News Media Knowledge Discovery Based on Text Mining Techniques[J] SJZN181115640011,2020
  • Kaur P,Attwal KS.Data Mining:Review[J].International Journal of Computer Science & Information Technolo,2014
  • Generative Models for Mining Latent Aspects and Their Ratings from Short Reviews. Li H,Lin R,Hong R,et al. IEEE International Conference on Data Mining . 2016

项目方向

利用NLP加爬虫实现对大批量文本的抽取和语义分析,然后通过网站平台进行可视化分析和展示

项目目标

利用爬虫技术和NLP技术,实现对一些新闻或者实时热点网站的抓取和分析,然后通过网页端进行可视化的展示,可以选择性将爬虫和网站抓取作为重点,

项目选型

— 后台 django+scrapy爬虫+mongodb(这里数据的存储用于网站的用户数据分析,比如热点问题)

—前端Vue+echarts实现可视化展示

项目细节

— 爬虫

项目核心,暂定使用scrapy爬虫实现高并发数据爬取,这里主要要解决的是爬取的队列问题。目标可以是一些主流的信息发布网站,比如微博、头条等等。

— 语义分析

这里要解决的问题是大批量的文本的语义分析,对于语义分析,也就是挖取文本的有用信息,这里也是项目最大的扩展点,这里可以先基于简单的文本positive概率等信息进行分析,然后预留一些功能拓展的接口。

— 数据可视化
相较于传统基于已有数据的网站,基于爬虫的网站要解决的就是信息时效性的展示问题,本系统因为后台还要对数据进行爬取分析和整理会比较耽误时间,所以可以将前端的展示界面设计为定时更新的一些分析结果,比如一些热点讨论等等。

然后在前端可以实现对指定目标信息的选取,然后后台会将目标放入等待队列中进行同步,然后按照优先级和当前运行状况进行数据的爬取、清洗和分析,然后将结果先保存在后台数据库中,等到用户后面进行信息查看的时候,再将结果进行可视化展示。

像素操作

1.图像基本操作(像素操作)

1.1获取并修改像素值

1
2
3
4
5
6
7
8
9
import cv2
import numpy as np
img=cv2.imread('/home/duan/workspace/opencv/images/roi.jpg')
print(img.item(10,10,2))
img.itemset((10,10,2),100)
print(img.item(10,10,2))
## 50
## 100
# 使用numpy的item获取像素,可以优化,使用itemset可以修改像素

1.2获取图像属性

1
2
3
img.shape #返回图像的形状
img.size #返回图像的像素个数
img.dtype #返回图像的数据类型

1.3图像ROI(特定区域操作)

1
2
3
#通过切片操作指定区域
ball=img[280:340,330:390]
img[273:333,100:160]=bal

1.4拆分合并通道

1
2
b,g,r=cv2.split(img) #拆分图像,或者直接切片操作
img=cv2.merge(b,g,r) #合并新的通道

1.5图像扩边

1
2
3
4
cv2.copyMakeBorder(img,top,bottom.left,right,borderType)#第一个参数为图像,第二个为四个方向扩充长度,第三个为便捷类型
#cv2.BORDER_REPLICATE 重复最后一个元素
#cv2.BORDER_CONSTANT 添加有颜色的常数值边界,还需要下一个参数为颜色填充类型
#cv2.BORDER_REFLECT 边界元素的镜像

1.6图像运算

1
2
cv2.add(x,y) #实现图像像素加,但是会饱和,numpy中的加法是取模操作
dst=cv2.addWeighted(img1,0.7,img2,0.3,0) #图像按权重混合
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#不规则图形获取
import cv2
import numpy as np
# 加载图像
img1 = cv2.imread('roi.jpg')
img2 = cv2.imread('opencv_logo.png')
# I want to put logo on top-left corner, So I create a ROI
rows,cols,channels = img2.shape
roi = img1[0:rows, 0:cols ]
# Now create a mask of logo and create its inverse mask also
img2gray = cv2.cvtColor(img2,cv2.COLOR_BGR2GRAY)
ret, mask = cv2.threshold(img2gray, 175, 255, cv2.THRESH_BINARY)
mask_inv = cv2.bitwise_not(mask)
# Now black-out the area of logo in ROI
# 取 roi 中与 mask 中不为零的值对应的像素的值,其他值为 0
# 注意这里必须有 mask=mask 或者 mask=mask_inv, 其中的 mask= 不能忽略
img1_bg = cv2.bitwise_and(roi,roi,mask = mask)
# 取 roi 中与 mask_inv 中不为零的值对应的像素的值,其他值为 0。
# Take only region of logo from logo image.
img2_fg = cv2.bitwise_and(img2,img2,mask = mask_inv)
# Put logo in ROI and modify the main image
dst = cv2.add(img1_bg,img2_fg)
img1[0:rows, 0:cols ] = dst
cv2.imshow('res',img1)
cv2.waitKey(0)
cv2.destroyAllWindows()

2. opencv中的图像处理

2.1颜色空间转换

1
2
3
4
cv2.cvtColor(input_image,flag) #第一个参数是图像,第二个参数是转换类型
# cv2.COLOR_BGR2GRAY
# cv2.COLOR_BGR2RGB
# cv2.COLOR_BGR2HSV ...
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#实现颜色追踪
import cv2
import numpy as np
cap=cv2.VideoCapture(0)
while(1):
# 获取每一帧
ret,frame=cap.read()
# 转换到 HSV
hsv=cv2.cvtColor(frame,cv2.COLOR_BGR2HSV)
# 设定蓝色的阈值
lower_blue=np.array([110,50,50])
upper_blue=np.array([130,255,255])
# 根据阈值构建掩模
mask=cv2.inRange(hsv,lower_blue,upper_blue)
# 对原图像和掩模进行位运算
res=cv2.bitwise_and(frame,frame,mask=mask)
# 显示图像
cv2.imshow('frame',frame)
cv2.imshow('mask',mask)
cv2.imshow('res',res)
k=cv2.waitKey(5)&0xFF
if k==27:
break
# 关闭窗口
cv2.destroyAllWindows()

3.opencv几何变换

3.1 扩展缩放

1
2
3
4
5
6
7
8
img=cv2.imread('messi5.jpg')
# 下面的 None 本应该是输出图像的尺寸,但是因为后边我们设置了缩放因子
# 因此这里为 None
res=cv2.resize(img,None,fx=2,fy=2,interpolation=cv2.INTER_CUBIC)
#OR
# 这里呢,我们直接设置输出图像的尺寸,所以不用设置缩放因子
height,width=img.shape[:2]
res=cv2.resize(img,(2*width,2*height),interpolation=cv2.INTER_CUBIC)

3.2平移

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
import cv2
import numpy as np


img1 = cv2.imread('./Image/reba_color.jpg',cv2.IMREAD_COLOR)


tx = 20
ty = 20

affine_arr = np.float32([[1,0,tx],[0,1,ty]])# tx,ty正负表示平移的方向

res = cv2.warpAffine(img1,affine_arr,(img1.shape[1],img1.shape[0]))

cv2.imshow('img',img1)
cv2.imshow('res',res)

cv2.waitkey(0)

3.3旋转

1
2
3
4
5
# 这里的第一个参数为旋转中心,第二个为旋转角度,第三个为旋转后的缩放因子
# 可以通过设置旋转中心,缩放因子,以及窗口大小来防止旋转后超出边界的问题
M=cv2.getRotationMatrix2D((cols/2,rows/2),45,0.6)
# 第三个参数是输出图像的尺寸中心
dst=cv2.warpAffine(img,M,(2*cols,2*rows))