下午就要答辩了,想把项目经历再总结一下。

项目分三个阶段。

第一阶段,是信息搜集整理阶段

要想法设法从各个门户网站上抓取到新闻和对应的评论数据。首先要分析网站结构。

1. 从哪里找到网站每日发布的所有新闻呢?

每个门户网站都提供了一个滚动新闻播报的网站。

以新浪为例:http://roll.news.sina.com.cn/s/channel.php?ch=01

这里能及时而全面地得到网站发布的新闻,而且可以看出有的新闻经过简单的修改重新发布过。

让人开心的是,控制台查看浏览器后台找到了提供原始数据的 API,可以用JSON直接解析了。

http://roll.news.sina.com.cn/interface/rollnews_ch_out_interface.php?col=89&spec=&type=&date=2015-10-31&ch=01&k=&offset_page=0&offset_num=0&num=1000

2. 针对每个新闻进行处理

从新闻页面开始看:首先,要对页面HTML进行解析提取出新闻文本。并尝试得到更多的数据。

然后就是抓取对应评论了,我从评论界面后台找到了提供评论内容的API,弄明白参数后,修改参数尽可能多地抓取评论。对返回的json进行分析,数据还是很丰富的,包括评论有多少人参与,具体包括点赞还有发言,但是并没有数据指出评论的情感倾向,这导致以后难以对其进行感情倾向分析。

抓取阶段虽然看起来逻辑简单,不过具体操作上还是遇到了很多问题,比如怎样设计数据库,在没有指导和前车之鉴的情况下只能自己摸索,保证新闻和评论的正确关联,怎样面对更新过的新闻,设置数据之间的约束,选取什么字段作为 primarykey等等。又比如,在进行数据抓取时,遇到了不同编码带来的问题,要根据不同的网站选取合适的解码方式,同时对于新出现的emoji表情也要采取一定的措施。也要考虑怎样降低计算强度,提高抓取速度。尽量减少使用效率相对低下的三方库,直接用re解析HTML文本,宽度优先搜索高效率地展开多线程。

第二阶段,进行网站搭建,展示热门新闻。

怎样找出热门新闻并排序呢?

提出思路:根据新闻参与互动的人数来进行排序。后来证明达到了理想的效果,比如今年王宝强先生连读多日用多条新闻占据各大网站头条。

发现,为数不多的几条热门新闻占据了绝大多数读者的注意力。头条的力量很强大!

再将新闻评论展示出来,其实除了热门新闻,大多数新闻的评论数量寥寥无几。

第三阶段,进行情感分析

一开始我打算从简单的两个维度来判断评论的感情,即积极和消极。这就涉及到自然语言处理了。

对于新闻评论,有一些比较突出的特点,比如用词广泛,语法不严格,而且错别字出现比较多。

想要针对性地建立语言分析模型,就得有可以用来参考的模式。

如果要用机器学习的方法进行建模的话,得有一个经过标记的训练集。考虑到时间和人手,我们难以抽出经历对每条新闻进行标记。分词的工具Github已经有了,比如结巴分词。

在网上查过一些论文,阅读了一些机器学习方面书籍,想要把情感分析做好还是有一定难度的。

总之,这一点目前更多地停留在理论阶段。

我自己尝试过Github上的SnowNLP,一个中文自然语言处理三方库,它本身带有感情倾向分析,但是从结果上来看,并不能有效地分析出新闻评论的感情倾向。

总结:

学海无涯,处处留心皆学问,亲历之,更觉如此。

大问题需要团队合作,如果团队里各司其职,各尽其力,我想项目会好很多。

最后:

有的人划得一手好水。人各有志亦或是各有所长,不想再对团队里的其他成员做太多评论。

转载于:https://www.cnblogs.com/learn-to-rock/p/5952685.html

NCspider项目总结相关推荐

  1. 在k8s中使用gradle构建java web项目镜像Dockerfile

    在k8s中使用gradle构建java web项目镜像Dockerfile FROM gradle:6-jdk8 AS build COPY --chown=gradle:gradle . /home ...

  2. Dockerfile springboot项目拿走即用,将yml配置文件从外部挂入容器

    Dockerfile 将springboot项目jar包打成镜像,并将yml配置文件外挂. # 以一个镜像为基础,在其上进行定制.就像我们之前运行了一个 nginx 镜像的容器,再进行修改一样,基础镜 ...

  3. SpringBoot项目使用nacos,kotlin使用nacos,java项目使用nacos,gradle项目使用nacos,maven项目使用nacos

    SpringBoot项目使用nacos kotlin demo见Gitte 一.引入依赖 提示:这里推荐使用2.2.3版本,springboot与nacos的依赖需要版本相同,否则会报错. maven ...

  4. Gradle 将项目publish到Nexus,Kotlin将项目发布到nexus,springboot项目发布到maven仓库

    示例见:Gitte 公仓设置 在项目中添加maven-publish的插件 plugins {kotlin("jvm") version "1.3.72"kot ...

  5. springboot项目使用junit4进行单元测试,maven项目使用junit4进行单元测试

    首先,maven项目中引入依赖 <dependency><groupId>junit</groupId><artifactId>junit</ar ...

  6. IDEA设置单个文件、单个包、单个项目的编码格式

    IDEA设置单个文件.单个包.单个项目的编码格式 File-> Settings-> File Enclodings 选择编码格式,确定即可. 注意:此处的编码格式设定以后,该包已经存在的 ...

  7. spring boot项目 中止运行 最常用的几种方法

    spring boot项目 中止运行 最常用的几种方法: 1. 调用接口,停止应用上下文 @RestController public class ShutdownController impleme ...

  8. 两步完成项目定时启动,java项目定时启动

    两步完成项目定时设置: 在需要定时启动或运行的方法上面加上注解@Scheduled //当天只跑一次 @Scheduled(cron = "0 40 21 * * ?") 在启动类 ...

  9. Myeclipse中项目没有代码错误提示,jsp页面无编译迹象?如何解决

    在使用Myeclipse开发项目时,发现jsp页面中嵌入的java代码没有编译的迹象,错误的get方法没有报错,没有报错信息我们如何知道我们开发的内容是正确的呢? 接下来就演示一下如何解决

最新文章

  1. IO设计模式:Reactor和Proactor对比
  2. 1.10 instanceof关键字
  3. Tomcat服务部署和优化
  4. 最简单的 SAP Cloud Application programming CDS 练习
  5. [Java基础]字符流中的编码解码问题
  6. pxe+kickstart 自动化部署linux操作系统
  7. camera (13)---智能手机双摄像头工作原理详解:RBG +RGB, RGB + Mono
  8. 26.Linux/Unix 系统编程手册(上) -- 监控子进程
  9. markdown引入代码_Markdown 插入代码
  10. FW: Why PUT and DELETE?铪铪
  11. Android网易云信无脑接入(IM+音视频)【网易云信】
  12. react native Animated 使用详解(基础)
  13. 2018 CCPC网络赛1004 HDU6441 Find Integer
  14. 浅析故障电弧探测器在电气防火中的作用与应用介绍
  15. onedrive手机客户端_OneDrive手机版
  16. 基于人体骨架检测的安全警戒线
  17. FpML to QuantLib 外滙歐式Barrier選擇權估值 fx-ex12-fx-barrier-option.xml
  18. 用css控制点击穿透
  19. 树莓派4B接4K60p显示器要点
  20. 基于jQuery经典扫雷游戏源码

热门文章

  1. Example: Communication between Activity and Service using Messaging
  2. Android SQLite Database的使用模板
  3. asp.net html table,在ASP.NET中利用HtmlTable动态创建表格 | 学步园
  4. java下载pdf6_疯狂java讲义第6版 电子版(pdf格式)
  5. postgresql 备份_在Kubernetes上使用PostgreSQL的正确姿势:第三部分
  6. http中的请求头各部分都是什么意思_小前端探索HTTP
  7. 一个中科院退学博士生的感想(zz)
  8. HDU 6155 Subsequence Count (DP、线性代数、线段树)
  9. Django restful framework之 rest接口设计规范
  10. day02.3-元组内置方法