0098977172
1. 修复词云断句问题 - 添加英文单词过滤 2. 创建 Word2Vec + CNN 情绪感知模型 3. 创建情绪时间序列分析脚本(基于大连理工大学情感词典) 4. 添加停用词文件(1427个中英文停用词) 5. 更新 analyze.py 保存时间字段 post_publish_time 6. 更新 requirements.txt 添加必要依赖
163 lines
4.3 KiB
Markdown
163 lines
4.3 KiB
Markdown
# 股吧数据爬取与情感分析系统
|
||
|
||
基于东方财富网股吧数据的爬虫系统,支持数据爬取、情感分析和关键词挖掘。
|
||
|
||
## 功能特性
|
||
|
||
- 🕷️ **股吧数据爬取** - 自动爬取指定股票的股吧帖子
|
||
- 😊 **情感分析** - 基于大连理工大学情感词汇本体进行情绪计算
|
||
- 🔍 **关键词挖掘** - 使用TF-IDF算法提取热门话题
|
||
- 📊 **可视化输出** - 生成词云、情绪分布图等可视化图表
|
||
|
||
## 项目结构
|
||
|
||
```
|
||
guba2vec/
|
||
├── spider.py # 股吧数据爬虫
|
||
├── sentiment_analysis.py # 情感分析模块
|
||
├── analyze.py # TF-IDF关键词分析
|
||
├── requirements.txt # 依赖列表
|
||
├── 大连理工大学中文情感词汇本体.xlsx # 情感词典
|
||
└── data/ # 爬取数据存储目录
|
||
└── guba_*.json/xlsx
|
||
```
|
||
|
||
## 安装依赖
|
||
|
||
```bash
|
||
pip install -r requirements.txt
|
||
```
|
||
|
||
## 使用方法
|
||
|
||
### 1. 爬取股吧数据
|
||
|
||
```bash
|
||
python spider.py
|
||
```
|
||
|
||
默认爬取以下游戏行业股票:
|
||
- 完美世界 (002624)
|
||
- 三七互娱 (002555)
|
||
- 巨人网络 (002558)
|
||
- 世纪华通 (002602)
|
||
- 昆仑万维 (300418)
|
||
- 游族网络 (002174)
|
||
- 掌趣科技 (300315)
|
||
- 吉比特 (603444)
|
||
|
||
爬取结果保存在 `data/` 目录下,包含 JSON 和 Excel 两种格式。
|
||
|
||
### 2. 情感分析
|
||
|
||
```bash
|
||
python sentiment_analysis.py
|
||
```
|
||
|
||
基于大连理工大学中文情感词汇本体进行情绪分析,支持7种情绪类型:
|
||
- 正面情绪:快乐、好评、惊讶
|
||
- 负面情绪:愤怒、悲伤、恐惧、厌恶
|
||
|
||
分析结果保存在 `sentiment_output/` 目录,包含:
|
||
- 各股票详细情感数据(CSV)
|
||
- 情绪统计汇总(CSV)
|
||
- 可视化图表(PNG)
|
||
|
||
### 3. 关键词分析
|
||
|
||
```bash
|
||
python analyze.py
|
||
```
|
||
|
||
使用TF-IDF算法提取关键词并生成词云,结果保存在 `output/` 目录。
|
||
|
||
## 核心模块说明
|
||
|
||
### spider.py
|
||
|
||
主要函数:
|
||
- `fetch_guba_data(code, page, page_size, sort_type)` - 爬取单页数据
|
||
- `fetch_stock_posts(code, name, pages, page_size)` - 爬取多页数据
|
||
- `save_to_json(data, name, filename)` - 保存为JSON格式
|
||
- `save_to_excel(data, name, filename)` - 保存为Excel格式
|
||
|
||
### sentiment_analysis.py
|
||
|
||
主要函数:
|
||
- `build_sentiment_dictionary()` - 构建情感词典
|
||
- `emotion_caculate(text, sentiment_dict)` - 计算文本情绪
|
||
- `load_and_analyze_data(data_dir, output_dir)` - 批量分析数据
|
||
- `generate_visualizations()` - 生成可视化图表
|
||
|
||
### analyze.py
|
||
|
||
主要函数:
|
||
- `clean_text(text)` - 文本清洗
|
||
- `tokenize(text)` - 中文分词
|
||
- `calculate_tfidf(texts)` - 计算TF-IDF
|
||
- `get_top_keywords()` - 获取Top关键词
|
||
- `generate_wordcloud()` - 生成词云
|
||
|
||
## 情感词典
|
||
|
||
使用 **大连理工大学中文情感词汇本体**(需自行准备),包含:
|
||
- 27469个情感词汇
|
||
- 7种情感分类
|
||
- 3种强度等级
|
||
- 2种极性(正面/负面)
|
||
|
||
备用方案:内置简化版情感词典,包含约200个常用情感词。
|
||
|
||
## 数据格式
|
||
|
||
### 爬取数据 (JSON)
|
||
```json
|
||
{
|
||
"stock_code": "002624",
|
||
"stock_name": "完美世界",
|
||
"total_pages": 10,
|
||
"total_posts": 200,
|
||
"crawl_time": "2024-01-01T12:00:00",
|
||
"posts": [
|
||
{
|
||
"post_id": "123456",
|
||
"post_title": "标题",
|
||
"post_content": "内容",
|
||
"post_user": {"user_nickname": "用户名"},
|
||
"post_publish_time": "2024-01-01 10:00",
|
||
"post_click_count": 100,
|
||
"post_comment_count": 10,
|
||
"post_like_count": 5
|
||
}
|
||
]
|
||
}
|
||
```
|
||
|
||
### 情感分析结果 (CSV)
|
||
| 帖子ID | 标题 | 内容 | positive | negative | sentiment_score |
|
||
|--------|------|------|----------|----------|-----------------|
|
||
| 123456 | ... | ... | 5 | 2 | 3 |
|
||
|
||
## 注意事项
|
||
|
||
1. 爬虫使用模拟移动端请求,请合理控制爬取频率
|
||
2. 情感词典文件需放置在项目根目录
|
||
3. 首次运行可能需要下载jieba分词字典
|
||
4. 生成词云需要系统安装中文字体(默认使用SimHei)
|
||
|
||
## 依赖列表
|
||
|
||
| 库 | 版本 | 用途 |
|
||
|----|------|------|
|
||
| requests | >=2.28.0 | HTTP请求 |
|
||
| pandas | >=2.0.0 | 数据处理 |
|
||
| openpyxl | >=3.1.0 | Excel读写 |
|
||
| jieba | >=0.42.1 | 中文分词 |
|
||
| scikit-learn | >=1.3.0 | TF-IDF计算 |
|
||
| numpy | >=1.24.0 | 数值计算 |
|
||
| matplotlib | >=3.7.0 | 可视化 |
|
||
| wordcloud | >=1.9.0 | 词云生成 |
|
||
|
||
## License
|
||
|
||
MIT License |