# 新闻情绪分析功能说明

## 📋 功能概述

**更新日期**: 2025-09-30
**版本**: v1.4

为 Tushare 和 AKShare 数据源的新闻数据添加了完整的情绪分析、关键词提取、新闻分类和重要性评估功能。

## 🎯 核心功能

### 1. 情绪分析 (Sentiment Analysis)

自动分析新闻的情绪倾向，帮助投资者快速了解新闻对股票的影响。

#### 情绪类型
- **positive** (积极): 包含利好、上涨、增长等积极关键词
- **negative** (消极): 包含利空、下跌、亏损等消极关键词
- **neutral** (中性): 积极和消极关键词数量相当，或无明显倾向

#### 积极关键词
```
利好、上涨、增长、盈利、突破、创新高、买入、推荐、
看好、乐观、强势、大涨、飙升、暴涨、涨停、涨幅、
业绩增长、营收增长、净利润增长、扭亏为盈、超预期、
获批、中标、签约、合作、并购、重组、分红、回购
```

#### 消极关键词
```
利空、下跌、亏损、风险、暴跌、卖出、警告、下调、
看空、悲观、弱势、大跌、跳水、暴跌、跌停、跌幅、
业绩下滑、营收下降、净利润下降、亏损、低于预期、
被查、违规、处罚、诉讼、退市、停牌、商誉减值
```

### 2. 情绪分数 (Sentiment Score)

提供更精细的情绪量化评分，范围从 -1.0（极度消极）到 1.0（极度积极）。

#### 分数计算方法
- 不同关键词有不同的权重
- 高权重关键词：涨停(1.0)、跌停(-1.0)、暴涨(0.9)、暴跌(-0.9)
- 中权重关键词：大涨(0.8)、大跌(-0.8)、利好(0.6)、利空(-0.6)
- 低权重关键词：上涨(0.5)、下跌(-0.5)、增长(0.4)、下滑(-0.4)

#### 分数解读
- **0.5 ~ 1.0**: 强烈积极，重大利好
- **0.2 ~ 0.5**: 积极，一般利好
- **-0.2 ~ 0.2**: 中性，无明显倾向
- **-0.5 ~ -0.2**: 消极，一般利空
- **-1.0 ~ -0.5**: 强烈消极，重大利空

### 3. 关键词提取 (Keywords Extraction)

自动提取新闻中的财经关键词，帮助快速了解新闻主题。

#### 关键词类别
- **股票相关**: 股票、公司、市场、投资
- **财务相关**: 业绩、财报、盈利、亏损
- **政策相关**: 政策、监管、央行、利率
- **交易相关**: 涨停、跌停、上涨、下跌
- **资本运作**: 并购、重组、分红、回购、增持、减持
- **行业相关**: 科技、互联网、新能源、医药、房地产、金融

#### 提取规则
- 最多提取 10 个关键词
- 按出现顺序排列
- 自动去重

### 4. 新闻分类 (News Classification)

自动将新闻分类到不同类别，便于筛选和分析。

#### 分类类型

| 类别 | 英文名称 | 说明 | 关键词 |
|------|---------|------|--------|
| 公司公告 | company_announcement | 公司发布的正式公告 | 公告、业绩、财报、年报、季报 |
| 政策新闻 | policy_news | 政府政策和监管信息 | 政策、监管、央行、证监会、国务院 |
| 行业新闻 | industry_news | 行业动态和趋势 | 行业、板块、产业、领域 |
| 市场新闻 | market_news | 市场整体动态 | 市场、指数、大盘、沪指、深成指 |
| 研究报告 | research_report | 机构研究和分析 | 研报、分析、评级、目标价、机构 |
| 一般新闻 | general | 其他类型新闻 | - |

### 5. 重要性评估 (Importance Assessment)

评估新闻的重要性级别，帮助投资者优先关注重要信息。

#### 重要性级别

| 级别 | 英文名称 | 说明 | 关键词 |
|------|---------|------|--------|
| 高 | high | 对股价有重大影响 | 业绩、财报、重大公告、监管、政策、并购、重组、退市、停牌、涨停、跌停 |
| 中 | medium | 有一定参考价值 | 分析、预测、观点、建议、行业、市场、趋势、机会、研报、评级 |
| 低 | low | 一般性信息 | 其他 |

## 📊 数据结构

新闻数据包含以下字段：

```python
{
    "symbol": "000001",                    # 股票代码
    "title": "某公司发布年度业绩报告",      # 新闻标题
    "content": "...",                      # 新闻内容
    "summary": "...",                      # 新闻摘要
    "url": "https://...",                  # 新闻链接
    "source": "东方财富",                   # 新闻来源
    "author": "张三",                      # 作者
    "publish_time": "2025-09-30 10:00:00", # 发布时间
    
    # 分析结果
    "category": "company_announcement",     # 新闻分类
    "sentiment": "positive",                # 情绪类型
    "sentiment_score": 0.75,                # 情绪分数
    "keywords": ["业绩", "增长", "盈利"],   # 关键词列表
    "importance": "high",                   # 重要性级别
    
    "data_source": "akshare"                # 数据源
}
```

## 🔧 使用示例

### Python API

```python
from tradingagents.dataflows.providers.akshare_provider import get_akshare_provider

# 获取新闻数据（包含情绪分析）
provider = get_akshare_provider()
news_data = await provider.get_stock_news(symbol="000001", limit=10)

# 查看分析结果
for news in news_data:
    print(f"标题: {news['title']}")
    print(f"情绪: {news['sentiment']} (分数: {news['sentiment_score']:.2f})")
    print(f"分类: {news['category']}")
    print(f"重要性: {news['importance']}")
    print(f"关键词: {', '.join(news['keywords'])}")
    print()
```

### 查询 MongoDB

```python
from app.core.database import get_mongo_db

db = get_mongo_db()

# 查询积极情绪的新闻
positive_news = await db.stock_news.find({
    "sentiment": "positive",
    "importance": "high"
}).sort("publish_time", -1).limit(10).to_list(10)

# 查询特定关键词的新闻
keyword_news = await db.stock_news.find({
    "keywords": {"$in": ["业绩", "财报"]}
}).to_list(100)

# 查询情绪分数高的新闻
high_score_news = await db.stock_news.find({
    "sentiment_score": {"$gte": 0.5}
}).sort("sentiment_score", -1).limit(10).to_list(10)
```

## 📈 应用场景

### 1. 情绪监控
- 监控特定股票的新闻情绪变化
- 识别市场情绪转折点
- 预警负面新闻

### 2. 投资决策
- 结合新闻情绪和股价走势
- 识别投资机会和风险
- 辅助买卖决策

### 3. 舆情分析
- 分析行业整体舆情
- 对比不同公司的新闻情绪
- 追踪热点话题

### 4. 量化策略
- 将新闻情绪作为量化因子
- 构建情绪驱动的交易策略
- 优化投资组合

## ⚠️ 注意事项

### 1. 分析准确性
- 情绪分析基于关键词匹配，可能存在误判
- 建议结合人工判断和其他分析方法
- 复杂语境可能影响分析结果

### 2. 数据时效性
- 新闻数据有一定延迟
- 建议定期同步最新数据
- 重要新闻应及时关注

### 3. 使用建议
- 情绪分析仅供参考，不构成投资建议
- 应结合基本面和技术面分析
- 注意风险控制

## 📚 相关文档

- [新闻数据同步功能](./NEWS_SYNC_FEATURE.md)
- [多周期数据同步更新](./MULTI_PERIOD_DATA_SYNC_UPDATE.md)
- [多数据源同步指南](./MULTI_SOURCE_SYNC_GUIDE.md)

## 🔄 更新历史

### v1.4 (2025-09-30)
- ✅ 为 AKShare Provider 添加情绪分析功能
- ✅ 添加情绪分数计算（-1.0 到 1.0）
- ✅ 添加关键词提取（最多10个）
- ✅ 添加新闻分类（6种类别）
- ✅ 添加重要性评估（3个级别）
- ✅ 扩展关键词库（积极28个，消极28个）
- ✅ 优化分析算法
- ✅ 更新文档

## 📞 技术支持

如有问题或建议，请：
1. 查看相关文档
2. 运行测试脚本：`python scripts/test_news_sentiment_analysis.py`
3. 检查日志文件
4. 提交 Issue

