• NCspider项目总结


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

    项目分三个阶段。

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

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

    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,一个中文自然语言处理三方库,它本身带有感情倾向分析,但是从结果上来看,并不能有效地分析出新闻评论的感情倾向。

    总结:

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

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

        

    最后:

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

  • 相关阅读:
    BUPT复试专题—最长连续等差子数列(2014软院)
    BUPT复试专题—奇偶求和(2014软件)
    BUPT复试专题—网络传输(2014网研)
    Hopscotch(POJ 3050 DFS)
    Backward Digit Sums(POJ 3187)
    Smallest Difference(POJ 2718)
    Meteor Shower(POJ 3669)
    Red and Black(poj 1979 bfs)
    测试
    Equations(hdu 1496 二分查找+各种剪枝)
  • 原文地址:https://www.cnblogs.com/learn-to-rock/p/5952685.html
Copyright © 2020-2023  润新知