1.绪论
1.1背景介绍
Python 的 Tkinter 库提供了创建用户界面的工具,可以用来构建股票评论数据及投资者情绪分析的图形用户界面(GUI)。通过该界面,用户可以输入股票评论数据,然后通过情感分析等技术对评论进行情绪分析,以了解投资者对特定股票的情绪倾向。这种界面的应用可以帮助投资者更好地了解市场舆论对股票价格的影响,从而做出更明智的投资决策。在界面中,用户可以触发情绪分析,然后界面将展示分析结果,如正面、负面情绪的比例,帮助用户更好地理解市场情绪。同时,该界面也可以提供可视化的情绪分析结果,如饼图,使用户可以直观地了解投资者情绪分布情况。这样的界面不仅提供了数据输入和分析结果的展示,还能通过直观的可视化形式帮助用户更好地理解和应用情绪分析结果,从而更好地进行投资决策。
1.2需求设计
1.2.1需求描述
基于 Python Tkinter GUI 界面的股票评论数据及投资者情绪分析应用旨在为用户提供一个方便易用的平台,用于采集股票评论数据并进行情感分析,以帮助投资者更好地了解市场舆论对股票价格的影响。该应用具有直观的用户界面,包括股票数据展示、用户情绪与股价分析、模型指标分析、评论数据展示、词云分析和情感分析结果展示等功能模块。用户可以通过界面导入股票数据,并对评论进行情感分析,从而了解投资者情绪倾向。此外,该应用还提供了股票数据可视化展示、用户情绪与股价关联分析、模型指标结果展示、评论数据呈现、词云分析和情感分析结果展示等功能,帮助用户更好地理解和应用情绪分析结果。通过这个应用,用户可以更加直观地了解市场情绪,从而做出更明智的投资决策。
1.2.2需求分析
具备以下功能模块:
1.股票数据展示:允许用户查看股票的开盘价、最高价、最低价、收盘价、成交数和成交金额等信息;
2.用户情绪与股价分析:支持用户查看用户情绪与股价的关联分析结果,如用户情绪对股价的影响趋势等;
3.模型指标分析:允许用户查看不同模型对股票评论数据进行情感分析的指标结果;
4.评论数据展示:提供股票评论数据的展示,包括时间、内容和用户名等信息;5.词云分析:支持用户进行评论数据的词云分析,直观展示热词和舆情关键词;6.情感分析结果展示:提供对股票评论数据进行情感分析的结果展示,如正面、负面和中性情绪的比例等。
在界面设计上,注重用户交互体验,确保操作简单直观,同时提供数据可视化展示,如图表、词云等,帮助用户更好地理解和应用情绪分析结果。
2.总体设计
2.1功能框图
基于Python Tkinter GUI界面的股票评论数据及投资者情绪分析应用将包括股票数据展示、用户情绪与股价分析、模型指标分析、评论数据展示、词云分析和情感分析结果展示等功能模块。用户可通过界面导入股票数据并进行情感分析,同时可查看数据的可视化展示,帮助用户更好地理解市场情绪,提高投资决策的准确性。整体功能框架图如图2-1所示
图 2-1 功能框图
2.2流程图
图 2-2 系统流程图
3.详细设计
3.1数据文件类型表示
3.1.1数据文件类型
表 3-1说明了开发过程中主要使用的类型及用途。
文件名 | 用途 |
caifupl.py | 东方财富网采集大唐电力股票的评论数据 |
ciyun.py | 对采集的评论数据进行词频分析,生成词云图 |
compute_sent_idx.py | 对股票评论数据进行情感分析,计算情感指数,并将情感指数与股票数据进行合并,最终将合并后的数据保存到一个新的 CSV 文件中 |
GUI.Py | 基于 Tkinter 的 GUI 界面程序,用于展示股票评论数据并分析投资者情绪。通过按钮触发,使用多线程来执行,以避免界面卡顿。整个界面包括了按钮、表格和图片展示的功能,以及布局和界面样式的设计。 |
Main.py | 主函数,点击这个运行即可 |
model_ml.py | 训练多个机器学习模型并评估其性能,然后利用最佳模型对新的评论数据进行情感分析,并保存结果。 |
pagupiao.py | 东方财富网采集大唐电力股票的数据 |
plot_sent_idx.py | 可视化用户情绪指数和上证指数随时间的变化趋势,以便更直观地观察它们之间的关系。 |
qinggan.py | 对股票评论数据进行情感分析结果的可视化展示,以便直观地展示积极和消极情感的比例,帮助用户更好地理解股票评论数据的情感倾向。 |
data文件夹 | 模型训练的数据集,包括标注的股评文本:正负语料各4607条,已分词 |
3.1.2文件结构
下图展示了整个项目的文件结构。
图 3-1 文件结构
3.2模块功能简介
下面是对系统各个模块的介绍,以及界面图示。
3.2.1数据采集模块
流程图如下:
通过爬虫技术从东方财富股吧网站上抓取股票讨论区的帖子信息,并将抓取到的帖子标题、日期和用户名保存到一个名为 'datangfadiancaifu.csv' 的 CSV 文件中。
首先,通过 requests 库向东方财富股吧网站发送 HTTP 请求,获取股票讨论区的网页内容。使用 lxml 库对网页内容进行解析,提取出帖子的标题、日期和用户名等信息。将提取到的信息写入 'datangfadiancaifu.csv' 文件中,每行包括帖子的日期、标题和用户名信息。其中使用了循环,通过修改 URL 中的页码参数,实现了对多个页面的信息抓取。在写入 CSV 文件时,使用了 'a' 模式,以追加的方式将抓取到的信息写入文件中。主要代码如下:
采集结果如下:
3.2.2数据清洗与处理
1、情感分析模型训练数据加载与清洗,具体步骤如下:
加载情感词典和情感标注的文本数据:通过加载 'positive.txt' 和 'negative.txt' 文件,分别包含了积极情感和消极情感的词汇,作为情感词典的数据源。这些词汇数据被用于训练情感分析模型时进行情感特征提取。
进行数据平衡处理:通过加载积极和消极情感的文本数据,并确保二者的样本数量相近。在代码中,通过限制积极和消极情感文本数据的数量,使得二者的样本数量保持平衡。
文本数据转换为模型可接受的格式:在 load_dataset_tokenized 函数中,首先使用 jieba 分词工具对文本进行分词处理,然后去除停用词,最终将文本数据转换为模型可接受的格式。这些文本数据将作为情感分析模型的训练输入。
其他清洗处理:在加载情感词典和情感标注的文本数据时,还需要进行其他清洗处理,例如处理特殊字符、去除空白符等,以确保数据的准确性和一致性。
2、股票评论数据进行情感指数的计算,具体步骤如下:
加载股票评论数据和股票报价数据:通过读取 'stock_comments_analyzed.csv' 和 'datangfadian.csv' 文件,分别包含了股票评论数据和股票报价数据,作为情感分析的数据源。
情感指数的计算:根据代码中的 BI_func 和 BI_Simple_func 函数,对股票评论数据进行情感指数的计算。这些函数根据评论数据中的积极和消极情感标签计算出情感指数的值,用于衡量评论数据的情感倾向。计算看涨公式如图:
数据整合和缺失值处理:将计算得到的情感指数数据与股票报价数据进行整合,需要处理两个数据集之间的时间对齐问题,确保数据的一致性。此外,还需要对缺失的数据进行处理,例如使用向前填充等方法保证数据的完整性。
格式转换和保存:对处理后的数据进行格式转换,确保数据的存储格式和结构满足后续分析和应用的需求。最后将处理后的数据保存到 merged_sentiment_idx.csv 文件中,以便后续的数据分析和应用。处理后结果如下图:
3.2.3情感分析建模
情感分析建模主要是训练多个机器学习模型并评估其性能,然后利用最佳模型对新的评论数据进行情感分析,并保存结果。具体步骤如下:
- 数据准备:首先定义了两个用于加载数据集的函数 load_dataset 和 load_dataset_tokenized。这些函数用于加载训练数据,将正面和负面情感的文本数据加载到数据框中,并对数据进行预处理和平衡处理。主要代码如下:
2、模型训练:定义了几个用于机器学习模型训练和评估的函数,其中 KFold_validation 函数用于在训练数据上进行 K 折交叉验证,评估模型的性能,benchmark_clfs 函数用于对多个分类器进行评估,记录其准确率、精确率、召回率和 F1 分数等指标。eval_model 函数用于加载训练好的模型,对新的评论数据进行情感分析,并将结果保存到 CSV 文件中。主要代码如下:
3、主函数:在主函数中,先调用 benchmark_clfs 函数对多个分类器进行评估,将结果保存到 CSV 文件中。然后调用 eval_model 函数对新的评论数据进行情感分析,同样将结果保存到 CSV 文件中。运行结果如下:
3.2.3GUI主界面模块
主界面设置了 7个按钮,分别代表各个功能,点击可以进入其他模块。采用多线程,以避免界面卡顿。
图 3-1 系统主界面
3.2.4数据展示界面
股票数据展示功能界面提供了股票数据表格的展示,用户可以通过界面上的按钮选择“股票数据”或者“评论数据”、“情感分析”等,界面将展示股票的开盘价、最高价、最低价、收盘价、成交数、成交金额等数据。用户可以通过界面上的滚动条进行垂直滚动,查看表格中的完整数据内容。这使用户能够直观地了解股票的历史交易数据,帮助他们分析股票的价格波动情况,为投资决策提供支持。股票数据展示如图3-2-1,评论数据展示如图3-2-2,情感分析数据展示如图3-2-3
图 3-2-1 股票数据界面
图 3-2-2 评论数据界面
图 3-2-3 情感分析界面
3.2.5模型展示
模型指标分析功能提供了对多个机器学习模型的性能指标进行展示。用户可以通过界面上的按钮选择“模型指标分析”,界面将展示各个机器学习模型在不同性能指标(如准确度、精确度、召回率、F1分数等)上的评估结果。用户可以通过界面上的滚动条进行垂直滚动,查看完整的模型性能指标数据。这使用户能够直观地比较不同机器学习模型的性能表现,帮助他们选择最适合的模型进行进一步分析或应用。
3.2.6词云分析
词云分析功能提供了对股票评论数据的文本内容进行词云可视化展示。用户可以通过界面上的按钮选择“词云分析”,界面将展示基于股票评论数据生成的词云图。词云图将根据评论数据中词语的出现频率和重要性,以视觉化的形式展现词语的大小和分布,帮助用户直观地了解评论中的关键词和热门话题。用户可以通过观察词云图快速把握评论数据的主要内容和情感倾向,为深入分析和决策提供参考。
3.2.7情感分析结果展示
情感分析结果功能提供了对股票评论数据进行情感分析后的结果展示。用户可以通过界面上的按钮选择“情感分析结果”,界面将展示评论数据中每条评论的情感分析结果。这包括情感分类的统计数据,可以是饼图或其他形式的可视化图表,展示不同情感类别(如积极、消极)在评论数据中的分布比例。这使用户能够直观地了解评论数据中情感倾向的分布情况,帮助他们分析用户情绪和市场情感波动,为投资决策提供参考。通过界面的展示,用户可以快速了解评论数据的情感倾向分布,从而更好地把握市场情绪和用户态度。
3.2.8用户情绪与股价分析
用户情绪与股价分析功能允许用户通过界面按钮选择“用户情绪与股价分析”,界面将展示用户情绪与股价相关性的图表折线图。该功能旨在帮助用户理解股票市场情绪与股价走势之间的关联。用户可以通过交互式操作来查看情绪数据与股价走势之间的趋势和相关性,以便更好地理解市场情绪对股价的影响。这个功能为用户提供了直观的方式来探索情绪数据与股价走势之间的关系,从而辅助他们做出更具洞察力的投资决策。
4.总结
本次基于Python Tkinter GUI界面的股票评论数据及投资者情绪分析系统为用户提供了一个交互式的平台,以便他们能够轻松地分析股票市场的情绪和评论数据。该系统包括了股票数据展示、用户情绪与股价分析、模型指标分析、评论数据展示、词云分析和情感分析结果展示等功能。用户可以通过简单的点击按钮来执行不同的分析操作,并直观地查看数据结果。通过股票数据的可视化展示和情感分析结果的图表,用户可以更好地理解股票市场情绪和评论内容,为投资决策提供支持。此外,用户还可以通过模型指标分析功能了解不同机器学习模型的性能评估,从而选择适合的模型进行进一步分析。总体而言,该系统为用户提供了一个便捷、直观的分析工具,帮助他们更好地理解股票市场的情绪波动和评论数据,从而做出更明智的投资决策。