• Python实现的热点话题发现系统


    目 录

    摘 要 … I
    ABSTRACT … III
    第 1 章 绪论 … 1
    1.1 国内外研究现状与意义 … 1
    1.2 本文创新点 … 2
    1.3 论文写作思路 … 2
    第 2 章 相关技术介绍 … 5
    2.1 网络爬虫技术 … 5
    2.2 中文分词技术 … 5
    2.3 特征选择及权重计算 … 6
    2.3.1 特征选择 … 6
    2.3.2 特征权重计算 … 7
    2.4 文本表示 … 8
    2.4.1 布尔模型 … 8
    2.4.2 概率模型 … 9
    2.4.3 向量空间模型 … 9
    2.5 文本聚类算法 … 9
    2.5.1 距离算法 … 10
    2.5.2 K-means 聚类算法 … 10
    2.5.3 二分 K-means 聚类算法 … 11
    第 3 章 校园微博热点话题发现系统设计与实现 … 13
    3.1 系统设计目标及要求 … 13
    3.1.1 系统设计目标 … 13
    3.1.2 系统设计要求 … 14
    3.2 系统详细架构设计 … 14
    3.3 系统功能模块设计与实现 … 15
    3.3.1 微博数据获取模块 … 15
    3.3.2 微博文本预处理模块 … 18
    3.3.2 校园微博热点话题发现模块 … 21 第 4 章 系统功能测试 … 25

    4.1 系统运行环境和参数  ............................... 25 
    4.2 实验数据及处理  ................................... 25 
    4.3 系统可视化界面  ................................... 27 
       4.3.1 数据获取界面  ................................ 27 
       4.3.2 热点话题排行榜  .............................. 27 
       4.3.3 热点话题热度直方图  .......................... 28 
       4.3.4 敏感词展示  .................................. 28 
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    总 结 与 展 望 … 31
    参 考 文 献 … 33
    致 谢 … 35
    附 录 … 37

    3 . 1 系 统 设 计 目 标 及 要 求

    3.1.1. 1 系 统 设 计 目 标

    本 文 以 高 校 学 生 微 博 用 户 为 研 究 对 象 ,实 现 对 高 校 学 生 微 博 热 点 话题 进 行 及 时 获 取 、分 析 和 监 控 ,并 根 据 热 点 话 题 类 别 进 行 图 表 方 式 展 示 。系 统 可 视 化 界 面 可 以 实 现 操 作 一 套 热 点 话 题 发 现 的 流 程 ,并 且 实 时 对 校园 微 博 热 点 话 题 进 行 监 控 , 从 而 提 供 微 博 舆 情 的 预 警 。
    由 于 高 校 微 博 用 户 群 体 用 户 量 大 ,产 生 的 数 据 量 也 随 之 增 大 ,因 此需 要 一 个 实 时 并 发 的 系 统 不 断 获 取 微 博 数 据 并 分 析 数 据 。
    功能性目标 :
    ( 1 ) 微 博 数 据 获 取 模 块
    系 统 获 取 的 文 本 来 源 于 新 浪 微 博 ,用 户 可 以 根 据 自 己 需 求 ,通 过 用户 可 视 化 界 面 操 作 配 置 需 要 监 控 的 微 博 号 ,并 获 取 该 校 园 微 博 号 的 文 本数 据 ,支 持 设 置 爬 取 数 据 页 数 ,一 页 有 十 条 微 博 内 容 ,后 续 可 实 现 支 持配 置 不 同 微 博 号 内 容 存 入 不 同 表 设 置 。
    ( 2 ) 微 博 文 本 预 处 理 模 块
    获 取 数 据 是 通 过 网 页 爬 虫 直 接 获 取 H T M L 文 本 , 因 此 需 要 对 文 本 进 行 提 取 , 提 取 微 博 发 布 内 容 、发 布 时 间 、评 论 数 、点 赞 数 等 。进 一 步 对 提 取 结 果 进 行 清 洗 ,去 除 无 效 或 无 意 义 的 微 博 内 容 及 没 有 评 论 的 微 博 , 对 文 本 进 行 分 词 处 理 及 特 征 选 择 及 提 取 等 操 作 后 构 建 向 量 空 间 模 型 。
    ( 3 ) 微 博 热 点 话 题 发 现
    短 文 本 聚 类 是 微 博 热 点 话 题 发 现 系 统 最 重 要 的 模 块 ,聚 类 结 果 对 于热 点 话 题 发 现 的 准 确 性 有 很 大 影 响 。该 模块只 需 在 可 视 化 界 面 上 操 作 获取 热 点 话 题 步 骤 就 可 以 获 取 热 点 话 题 。
    ( 4 ) 热 点 话 题 可 视 化 界 面
    在上面( 3 )步骤执行获取热点话 题步骤后,可在界 面上以图表 形式 展 示 热 点 话 题 信 息 及 相 关 热 点 关 键 词 , 并 实 现 敏 感 词 展 示 。

    3.1.2. 2 系 统 设 计 要 求

    校 园 微 博 热 点 话 题 发 现 系 统 是 集 数 据 获 取 、文 本 处 理 、文 本 挖 掘 等模块 ,网 页 爬 虫 、中 文 分 词 等 多 种 技 术 在 一 起 的 系 统 ,所 以 对 各 功 能 模块 的 可 用 性 要 求 比 较 高 。为 了 实 现 对 校 园 微 博 的 热 点 话 题 发 现 ,系 统 应该 具 备 以 下 特 性 :
    ( 1 ) 实 用 性 和 稳 定 性 。系 统 应 该 以 实 用 为 目 的 ,选 取 合 适 的 软 硬 件环 境 搭 建 系 统 ,并 保 证 系 统 长 时 间 正 常 运 行 ,而 且 需 在 发 生 故 障 发 生 后 , 能 快 速 恢 复 系 统 。
    ( 2 ) 精 准 性 。数 据 的 来 源 和 提 取 应 该 保 证 准 确 性 ,保 证 获 取 热 点 话题 和 舆 情 监 控 的 准 确 性 。
    ( 3 ) 可 维 护 性 和 可 扩 展 性 。微 博 数 据 的 不 断 增 长 ,导 致 系 统 各 模 块不 可 避 免 出 现 问 题 。当 出 现 问 题 时 ,就 需 要 系 统 具 备 可 维 护 性 ,快 速 定位 问 题 并 修 复 。考 虑 到 系 统 用 户 的 增 加 ,系 统 流 量 大 而 导 致 系 统 无 法 可用 , 就 需 要 系 统 具 备 可 扩 展 性 , 可 迁 移 到 更 高 配 置 的 软 硬 件 环 境 下 。
    由 于 校 园 微 博 用 户 群 体 大 ,微 博 数 据 增 长 量 也 随 之 剧 增 ,所 以 应 该合 理 设 计 系 统 各 个 功 能 模 块 ,保 证 每 个 功 能 模 块 的 可 用 性 ,并 能 保 证 系统 的 抗 压 能 力 。

    # -*- coding: utf-8 -*-
    """
    ~~~~~~~~~~~~~~~~~~~
    程序入口
    
    @author guoweikuang
    """
    import arrow
    
    from crawl.crawl import run_async_crawl
    from handle_text.k_means import run_kmeans
    from handle_text.k_means import run_kmeans_by_scikit
    from handle_text.k_means import run_min_kmeans
    from handle_text.k_means import run_mean_shift
    from handle_text.build_vsm import run_build_vsm
    from handle_text.build_vsm import run_build_vsm_by_file
    from handle_text.utils import classify_k_cluster_to_file
    from utils import run_first_cluster
    from utils import run_second_cluster
    from utils import run_hot_topic
    from utils import run_cluster
    from login.login import run_login_weibo
    from common.utils import classify_k_cluster_to_redis
    from crawl.crawl import run_crawl_by_multiprocess
    from classify_text.classify import run_classify
    from classify_text.main import run_classify_text
    from classify_text.config import corpus_path, seg_path, bag_path, test_bag_path, test_seg_path, test_corpus_path
    from draw_chart import run_draw_chart, run_draw_top_keyword_barh, run_draw_pie
    from handle_text.sensitive import run_sensitive
    from classify_text.utils import read_text_old_mysql, save_to_file
    from utils import run_old_all_process, run_new_all_process
    from handle_text.hot_topic import list_hot_topic
    from utils import run_old_second_all_process
    from handle_text.draw_chart import run_draw_pie
    from handle_text.draw_chart import run_draw_chart
    
    
    if __name__ == '__main__':
    
        # 登录模块
        #run_login_weibo(username='18902304731', password='')
    
        #   异步爬取模块
        #run_crawl_by_multiprocess(1, 20, 4)
        run_async_crawl(1, 10)
    
        #  读取数据并构建向量空间模型
        now = arrow.utcnow().date()
        start = arrow.utcnow().shift(days=-120).date()
        rows, texts = run_build_vsm(start_time=start, end_time=now)
        rows = run_build_vsm_by_file()
    
        #   读取旧数据库模块,用于test
        end_time = arrow.get("2016-10-30")
        rows = read_text_old_mysql(end_time, days=30, database='weibo')
        #save_to_file('old_mysql', rows)
    
        #   分类模块
        #run_classify_text(rows)
    
        #   k-means 聚类模块
        #labels = run_kmeans(k=4, vsm_name="total")
        labels = run_kmeans_by_scikit(k=3, vsm_name="total")
        #labels = run_min_kmeans(k=2, vsm_name='total')
    
        #  画图模块
        #run_draw_pie(db=2)
        #run_draw_chart(db=1)
        #run_draw_top_keyword_barh(db=2)
        #run_draw_cluster_chart(db=1)
    
        #   对聚类结果进行归类模块
        #classify_k_cluster_to_redis(labels=labels, texts=rows)
        #classify_k_cluster_to_file(labels=labels, texts=rows)
    
        #   敏感词发现模块
        results = []
        for row in rows:
            results.append([row[0], row[1], row[2], row[3].strip()])
        #run_sensitive(rows=results)
    
        #   一次及二次聚类模块
        #run_second_cluster()
        #run_first_cluster('1', '1')
        start = '2018-03-01'
        end = '2018-04-29'
        end_time = arrow.get("2016-10-30")
        #run_new_all_process(start, end, k=5)
        #run_old_all_process(end_time)
        #run_cluster(start, end, k=7)
        #run_old_all_process(end_time)
        #list_hot_topic(db=1)
        #run_old_second_all_process(start_time='1', end_time=end_time)
    
        #  热点话题热度值计算模块
        #run_hot_topic()
    
        # 分类并进行正确归类
        #run_classify_text(rows)
        #run_classify(corpus_path, seg_path, bag_path, test_bag_path, test_corpus_path, test_seg_path)
    
    
    • 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
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78
    • 79
    • 80
    • 81
    • 82
    • 83
    • 84
    • 85
    • 86
    • 87
    • 88
    • 89
    • 90
    • 91
    • 92
    • 93
    • 94
    • 95
    • 96
    • 97
    • 98
    • 99
    • 100
    • 101

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

  • 相关阅读:
    2023高教社杯数学建模国赛A题思路解析+代码+论文
    推荐一款免费的内网穿透工具ngrok
    算法训练(leetcode)第二十八天 | 509. 斐波那契数、70. 爬楼梯、746. 使用最小花费爬楼梯
    企业数字化&信息化运营管理规划方案
    基于Java swing+mysql+eclipse的【水电费管理系统】
    acl的构成-scheme与id、permissions
    电路设计 > eMMC应用和PCB layout布局布线参考设计
    2024年山东省职业院校技能大赛中职组 “网络安全”赛项竞赛试题-B卷
    stm32,STC89C51使用串口下载程序
    【C进阶】之数据类型起别名( typedef )
  • 原文地址:https://blog.csdn.net/newlw/article/details/126674578