博物馆新闻采集分析子系统周记 - sekaiiiii/BUCTCS1703SECD GitHub Wiki

博物馆新闻采集分析子系统周记

第六周

本周我们召开了启动会。 讨论了将要完成的任务, 并进行了比较明确的分工, 还提前布置了下周的准备工作。 具体如下:

  • 组内分工

    • 文档:王思远
    • 爬虫:张俊峰、孟铃翔、王棨玢、黄帅旺
    • 机器学习文本分析:孟铃翔
  • 更新周记

    • 王思远
  • 项目管理计划

    • 周日之前完成
  • GitHub创建子系统目录

    • 注册GitHub账号
    • 按照群里说明
    • GitHub链接
  • 下次:需求分析

    • 缩写说明
    • 术语定义
    • 参考资料
    • 项目目标
    • 应用环境
    • 功能规格
    • 角色定义
    • 用例图
    • 功能详细描述

第七周

  1. 本周我们进入了需求分析的阶段。
  2. 小组成员间进行了爬虫技术学习的探讨。
  • 第一步:调度端启动爬虫,询问url管理器是否有要爬取的url
  • 第二步:url管理器将要爬取的url返还给调度端,调度端根据获取的url,利用网页下载器下载url对应的页面内容。
  • 第三步:网页下载器将下载好的内容发给页面解析器来解析,返回解析好的内容和新的url列表,获取所感兴趣的有价值的数据。本项目中主要实现html的解析。
  1. 小组内组织了Git学习,组员们拥有了对Git基本的理解,并有了基础的Git使用能力。

  2. 最后进行了明确的组内分工,明确了各组员的需求分析报告任务。

    具体如下:

    - 缩写说明(UML, Scrapy, sklearn)    - 王思远

    - 术语定义(爬虫、机器学习、文本分析)  - 王思远

    - 参考资料  - 张俊峰、孟铃翔

    - 项目目标  - 王思远

    - 应用环境  - 黄帅旺

    - 功能规格  - 孟铃翔

        - 角色定义

        - 用例图

    - 功能详细描述  - 王棨玢

第八周

  1. 完成了概要设计的文档
  2. 深入根据需求文档明确了项目需求。
  3. 系统地了解了Scrapy爬虫框架的具体部件
  • 调度器
  • 爬虫
  • 爬虫中间件
  • 下载中间件
  • 管道
  1. 爬虫端实现了简单的新闻爬取,完成了项目的demo。

第九周

  1. 各小组组长开会,确定了数据库的E-R图,给出了数据库的结构以及各组需要用到的数据库。
  2. 进行了新闻数据库的测试, 学习了爬虫项目与数据库的交互。
  3. 进行了少量关于文本分析的讨论。
  4. 完善了Scrapy项目命令行参数的处理。
  5. 基本实现了功能需求中的第1个需求,指定起始和时间和终止时间,从百度新闻api中爬取数据。

第十周

  1. MuseumNews项目完全实现了指定功能1的需求,将爬取到的数据保存到了数据库中。
  2. MuseumNews项目实现了指定功能2中的部分需求。从百度新闻的博物馆新闻列表中提取出新闻的标题、作者、发布时间。
  3. demoSpider项目实现了从数据库中获取新闻url列表的功能。
  4. demoSpider项目实现了将url中的正文通过爬虫保存到本地的功能。
  5. items.json存放保存到本地的新闻正文。
  6. pipelines.py为对爬取的item进行数据筛选,筛选出url无效的item,将满足要求的item通过管道。

第十一周

  1. demoSpider项目实现了指定功能2中的全部内容,在上周的基础上实现了通过新闻正文提取出涉及到的博物馆的功能。
  2. 对指定功能3中的内容进行了探索。学习了文本分析的方法。
  • 传统方法:使用词典进行计算
  • 目前性能较好方法:使用机器学习。可以使用传统式的朴素贝叶斯、SVM方法进行学习。也可以使用深度学习神经网络方法进行监督学习或无监督学习。
  1. 关于爬虫项目
  • items.json存放保存到本地的新闻正文
  • news.html为进行html解析时的测试html代码

第十二周

  1. 使用传统方法进行文本分析,在查阅资料后,决定修改主要使用库,由sklearn替换为jieba
  2. 使用jieba对已获取到的原文进行分词
  3. 使用结巴内置的停用词词典,对新闻进行了去停用词操作
  4. 根据去停用词之后的词典,通过jieba内置的tf-idf方法和TextRank方法提取出对情感最有用的词及他们的词频。
  5. 使用了BosenNLP的开源情感词典,从中获取对应到各个词的情感评分。
  6. 根据提取到的tf-idf值和TextRank值计算出对应出原文的情感评分。
  • 情感评分小于0时,为负面新闻,对应数据库中tag为0.
  • 情感评分介于0、1之间时,为中性新闻,对应数据库tag为1.
  • 情感评分大于1时,为正面新闻,对应数据库中tag为2.
  1. 初步实现了需求功能3.

第十三周

  1. 由于朴素贝叶斯方法在区分垃圾邮件与非垃圾邮件时有着较好的性能,故探索了机器学习监督学习方法中的朴素贝叶斯方法。
  2. 使用sklearn提供的第三方机器学习库。使用CCF大数据竞赛中的新闻情感分析训练集对模型进行训练。
  3. 使用交叉验证对模型进行训练,在CCF数据集中的交叉分出的测试集的准确率69%左右。
  4. 使用拟合好的模型对数据库中的新闻进行分析,但由于数据集的不同,导致了分析失败。

第十四周

  1. 由于项目进度要求,放弃使用机器学习方法进行文本分析的探索。使用百度集成好的aip框架对新闻进行文本分析。
  2. 同时使用投票机制,对tf-idf方法、TextRank方法、aip方法得到的tag求平均值后四舍五入作为最终tag。
  3. 根据第五组的后端框架,学习了基础的node-js后端用法,实现了get_customed_news接口,传入指定的博物馆、新闻起止时间、以及新闻标签,得到从数据库中查询到的新闻数据项,实现了指定功能4中的数据定制功能。
  4. 将Museum_News与demoSpider项目进行合并,形成museum_news_spider作为一整体爬虫。
  5. 与前端做交互,进行集成测试。
  6. 简单地将爬虫技术部署到服务器上。