🌟 负面思维转积极表达自动化工具
📁 项目结构
positive_mindset/ ├── README.md # 项目说明文档 ├── requirements.txt # 依赖包清单 ├── core/ # 核心模块 │ ├── init.py │ ├── text_analyzer.py # 文本分析器 │ ├── negative_detector.py # 负面思维检测器 │ ├── reframe_engine.py # 积极重构引擎 │ └── expression_optimizer.py # 表达优化器 ├── utils/ # 工具模块 │ ├── init.py │ ├── mindset_templates.py # 思维模式模板库 │ ├── sentiment_dict.py # 情感词典 │ └── helpers.py # 辅助函数 ├── examples/ # 示例文件 │ ├── negative_samples.json │ └── positive_outputs.json ├── main.py # 主程序入口 ├── demo.py # 演示脚本 └── knowledge_cards.md # 核心知识点卡片
📝 README.md
🌈 负面思维转积极表达自动化工具
📖 项目简介
这是一个基于Python的智能思维转换系统,专为打破习惯性内耗、培养积极心态设计。通过分析负面思维句子,自动识别思维模式,并转换为积极、建设性的表达方式。
💡 适用人群:容易内耗的人群、心理咨询师、内容创作者、数字文化艺术创新创业课程学习者
✨ 核心功能
| 功能模块 | 说明 |
|---|---|
| 🔍 思维分析 | 识别负面思维模式类型 |
| 😔 痛点定位 | 找出内耗的核心触发点 |
| 🔄 积极重构 | 将消极表达转为建设性语言 |
| 🎭 表达优化 | 让积极表达更自然有感染力 |
| 📊 进度追踪 | 记录思维模式转变历程 |
🚀 快速开始
1️⃣ 安装依赖
bash
pip install -r requirements.txt
2️⃣ 准备负面思维样本
创建 negative_samples.json 文件:
json
{
"thoughts": [
"我总是做不好事情,我就是个废物",
"别人都比我强,我永远赶不上",
"这次又失败了,我果然不行",
"我担心会搞砸,还是别试了"
]
}
3️⃣ 运行程序
bash
python main.py --input negative_samples.json --output positive_results.json
4️⃣ 查看结果
bash
python demo.py
📋 输出示例
json
{
"original": "我总是做不好事情,我就是个废物",
"mindset_type": "自我贬低型",
"reframed": "我在某些方面还在学习中,每一次尝试都是进步的机会",
"positive_expression": "我正在积累经验,每一步都在让我变得更好!",
"transformation_level": 4
}
🏗️ 代码结构
core/
├── text_analyzer.py # 文本预处理与模式识别
├── negative_detector.py # 负面思维类型检测
├── reframe_engine.py # 积极思维重构逻辑
└── expression_optimizer.py # 表达自然化优化
utils/
├── mindset_templates.py # 思维模式转换模板库
├── sentiment_dict.py # 情感词典与关键词库
└── helpers.py # 通用工具函数
📚 核心知识点
🤝 贡献指南
欢迎提交Issue和PR!请确保代码符合PEP8规范。
📄 许可证
MIT License © 2026 Digital Culture Innovation Course
📦 requirements.txt
jieba>=0.42.1 # 中文分词 snownlp>=0.12.3 # 中文自然语言处理 numpy>=1.21.0 # 数值计算 pandas>=1.3.0 # 数据处理 pyyaml>=6.0 # YAML配置解析 transformers>=4.0.0 # 预训练模型(可选,用于高级情感分析)
🔧 核心模块代码
core/text_analyzer.py
""" 📄 文本分析器模块 功能:负面思维文本预处理、模式识别、特征提取 核心教学点:文本挖掘与模式识别在心理领域的应用 """
import jieba import re from typing import Dict, List, Tuple, Optional from collections import Counter, defaultdict import numpy as np
class NegativeThoughtAnalyzer: """ 负面思维文本分析器
核心职责:
1. 清洗和标准化用户输入的思维描述
2. 识别关键情感词汇和表达模式
3. 提取思维结构特征
4. 为后续负面类型检测做准备
设计理念:
在心理学中,思维模式的识别是认知行为疗法(CBT)的基础
本模块将这种专业分析过程数字化、自动化
"""
def __init__(self):
"""初始化分析器,加载专业词典"""
self._load_sentiment_dictionary()
self._load_thinking_patterns()
def _load_sentiment_dictionary(self):
"""
加载情感词典
词典来源:结合知网Hownet、台湾大学NTUSD、自研心理专业词汇
技术要点:
- 负面词汇按强度分级(1-5级)
- 区分不同维度的负面情绪
- 建立同义词和反义词映射
"""
# 负面情感词汇库(按强度分级)
self.negative_words = {
"绝望类": {
5: ["彻底完了", "毫无希望", "死定了", "没救了", "万劫不复"],
4: ["完了", "没希望", "不可能", "无法挽回", "注定失败"],
3: ["很难", "不太可能", "令人失望", "让人沮丧", "比较糟"],
2: ["有点难", "不太顺利", "有些失望", "稍微遗憾", "不够好"],
1: ["不够理想", "略有不足", "稍显逊色", "不够完美", "略有遗憾"]
},
"自我否定类": {
5: ["废物", "垃圾", "一无是处", "彻底失败", "毫无价值"],
4: ["没用", "不行", "很差", "很糟糕", "不配"],
3: ["不够好", "有待提高", "有缺陷", "有不足", "不够优秀"],
2: ["一般般", "马马虎虎", "还行吧", "不太理想", "普通"],
1: ["可以更好", "有提升空间", "略显青涩", "尚待打磨", "需要努力"]
},
"焦虑担忧类": {
5: ["恐惧", "恐慌", "崩溃", "焦虑发作", "精神崩塌"],
4: ["很担心", "很害怕", "很紧张", "很不安", "很焦虑"],
3: ["担心", "害怕", "紧张", "不安", "焦虑"],
2: ["有点担心", "稍微紧张", "略感不安", "些许焦虑", "有点忐忑"],
1: ["略有顾虑", "稍显谨慎", "有点犹豫", "略微紧张", "稍作思量"]
},
"比较自卑类": {
5: ["不如死了", "活着没意义", "完全比不上", "彻底落后", "毫无优势"],
4: ["比不上", "输定了", "落后很多", "没优势", "不如人"],
3: ["不够突出", "相对较差", "略逊一筹", "稍显不足", "不够领先"],
2: ["差不多", "各有千秋", "互有长短", "难分伯仲", "旗鼓相当"],
1: ["可以学习", "有借鉴价值", "值得参考", "可以合作", "互相促进"]
}
}
# 积极反义词映射(用于重构)
self.positive_antonyms = {
"废物": "正在成长的学习者",
"垃圾": "有独特价值的个体",
"失败": "获得宝贵经验的尝试",
"没用": "有发展潜力的",
"不行": "正在进步的",
"很差": "有改善空间的",
"恐惧": "充满期待的",
"担心": "谨慎准备的",
"比不上": "有不同优势的",
"落后": "有追赶空间的"
}
def _load_thinking_patterns(self):
"""
加载思维认知模式库
基于认知行为疗法(CBT)的经典思维陷阱分类
七种常见负面思维模式:
1. 非黑即白思维
2. 过度概括
3. 心理过滤
4. 否定正面
5. 妄下结论
6. 放大缩小
7. 情绪化推理
"""
self.thinking_patterns = {
"非黑即白": {
"keywords": ["总是", "从不", "完全", "绝对", "根本", "彻底", "百分之百"],
"patterns": [
r"总是.*?不", r"从来.*?没有", r"完全.*?失败",
r"绝对.*?不可能", r"根本.*?不行", r"彻底.*?完了"
],
"description": "用极端化方式看待事物,没有中间地带"
},
"过度概括": {
"keywords": ["每次", "大家都", "所有", "没有一次", "从来都", "凡是"],
"patterns": [
r"每次.*?都", r"大家都.*?比", r"所有.*?都",
r"没有一次.*?成功", r"从来都.*?不", r"凡是.*?都"
],
"description": "从单一事件得出普遍结论"
},
"心理过滤": {
"keywords": ["但是", "然而", "除了", "只是", "仅仅", "不过"],
"patterns": [
r"虽然.*?但是", r"然而.*?却", r"除了.*?都",
r"只是.*?而已", r"仅仅.*?是", r"不过.*?又"
],
"description": "只关注负面细节,忽略整体积极面"
},
"否定正面": {
"keywords": ["侥幸", "只是", "碰巧", "其实", "实际上", "说白了"],
"patterns": [
r"侥幸.*?成功", r"只是.*?碰巧", r"其实.*?不",
r"实际上.*?没", r"说白了.*?就是", r"只不过.*?是"
],
"description": "将积极经历归因于外部因素,不认可自身能力"
},
"妄下结论": {
"keywords": ["肯定", "一定", "绝对", "必然", "肯定", "显然"],
"patterns": [
r"他.*?肯定.*?看不起", r"这.*?一定.*?完了",
r"他们.*?绝对.*?不喜欢", r"这.*?必然.*?失败",
r"显然.*?是.*?针对我"
],
"description": "缺乏证据就做出负面判断(读心术/先知错误)"
},
"放大缩小": {
"keywords": ["巨大", "灾难", "可怕", "严重", "重大", "极其"],
"patterns": [
r"巨大的.*?灾难", r"可怕的.*?错误", r"严重的.*?问题",
r"重大的.*?失败", r"极其.*?糟糕", r"天大的.*?麻烦"
],
"description": "夸大问题严重性,缩小自身优点和能力"
},
"情绪化推理": {
"keywords": ["感觉", "觉得", "认为", "好像", "似乎", "看来"],
"patterns": [
r"我感觉.*?就是", r"我觉得.*?肯定", r"我认为.*?一定",
r"好像.*?所有人", r"似乎.*?没人", r"看来.*?我"
],
"description": "将主观感受当作客观事实"
}
}
def preprocess_text(self, raw_text: str) -> Dict:
"""
文本预处理与分析
Args:
raw_text: 原始负面思维描述
Returns:
包含多种分析结果的字典
处理逻辑:
1. 清理特殊符号和多余空格
2. 分词并标注词性
3. 识别情感词汇及其强度
4. 提取思维模式和结构特征
"""
# 清理文本
cleaned = self._clean_text(raw_text)
# 分词处理
words = list(jieba.cut(cleaned))
word_positions = list(jieba.tokenize(cleaned))
# 识别负面情感词汇
negative_analysis = self._analyze_negative_words(words)
# 识别思维模式
pattern_analysis = self._detect_thinking_patterns(cleaned)
# 提取句子结构特征
structure_features = self._extract_structure_features(cleaned, words)
return {
"original": raw_text,
"cleaned": cleaned,
"words": words,
"word_count": len(words),
"negative_analysis": negative_analysis,
"pattern_analysis": pattern_analysis,
"structure_features": structure_features
}
def _clean_text(self, text: str) -> str:
"""清理和标准化文本"""
# 移除特殊符号,保留中文、英文、数字和基本标点
cleaned = re.sub(r'[^\u4e00-\u9fa5a-zA-Z0-9,。!?、:;""''()\s]', '', text)
# 合并连续空格
cleaned = re.sub(r'\s+', ' ', cleaned).strip()
return cleaned
def _analyze_negative_words(self, words: List[str]) -> Dict:
"""
分析负面情感词汇
返回:
- detected_words: 检测到的负面词汇列表
- intensity_scores: 各词汇的强度分数
- categories: 负面情感类别分布
- overall_intensity: 整体负面强度(1-5)
"""
detected_words = []
intensity_scores = []
categories = defaultdict(list)
# 遍历所有负面词汇库
for category, intensity_dict in self.negative_words.items():
for intensity, words_list in intensity_dict.items():
for neg_word in words_list:
if neg_word in "".join(words):
detected_words.append(neg_word)
intensity_scores.append(intensity)
categories[category].append((neg_word, intensity))
# 计算整体负面强度
if intensity_scores:
overall_intensity = np.mean(intensity_scores)
else:
overall_intensity = 0
return {
"detected_words": detected_words,
"intensity_scores": intensity_scores,
"categories": dict(categories),
"overall_intensity": round(overall_intensity, 2)
}
def _detect_thinking_patterns(self, text: str) -> List[Dict]:
"""
检测负面思维模式
基于CBT理论的七种思维陷阱识别
返回检测到的思维模式列表,按置信度排序
"""
detected_patterns = []
for pattern_name, pattern_info in self.thinking_patterns.items():
confidence = 0
matched_keywords = []
matched_patterns = []
# 检查关键词
for keyword in pattern_info["keywords"]:
if keyword in text:
confidence += 0.2
matched_keywords.append(keyword)
# 检查正则模式
for pattern in pattern_info["patterns"]:
if re.search(pattern, text):
confidence += 0.3
matched_patterns.append(pattern)
# 只有当置信度足够时才记录
if confidence >= 0.3:
detected_patterns.append({
"pattern_type": pattern_name,
"confidence": round(confidence, 2),
"description": pattern_info["description"],
"matched_keywords": matched_keywords,
"matched_regex": matched_patterns
})
# 按置信度排序
detected_patterns.sort(key=lambda x: x["confidence"], reverse=True)
return detected_patterns
def _extract_structure_features(self, text: str, words: List[str]) -> Dict:
"""
提取句子结构特征
用于深入理解思维模式的结构性特征
"""
features = {
"sentence_count": len(re.split(r'[。!?]', text)),
"has_self_reference": any(w in "".join(words) for w in ["我", "自己", "本人"]),
"has_comparison": any(w in "".join(words) for w in ["比", "相比", "不如", "超过"]),
"has_catastrophic_prediction": any(w in "".join(words) for w in ["完了", "毁了", "完了", "灾难"]),
"has_perfectionism": any(w in "".join(words) for w in ["应该", "必须", "一定要", "绝对"]),
"has_black_white": any(w in "".join(words) for w in ["总是", "从不", "完全", "绝对"]),
"question_count": len(re.findall(r'[?]', text)),
"exclamation_count": len(re.findall(r'[!]', text))
}
return features
def calculate_mental_fatigue_index(self, analysis_result: Dict) -> float:
"""
计算精神内耗指数
基于多个维度综合评估思维对心理能量的消耗程度
维度包括:
- 负面情感强度
- 思维模式复杂度
- 自我攻击程度
- 未来导向的负面预期
"""
fatigue_score = 0
# 负面情感强度贡献 (0-2分)
intensity = analysis_result["negative_analysis"]["overall_intensity"]
fatigue_score += (intensity / 5) * 2
# 思维模式复杂度贡献 (0-2分)
pattern_count = len(analysis_result["pattern_analysis"])
fatigue_score += min(pattern_count * 0.3, 2)
# 自我攻击程度贡献 (0-2分)
if analysis_result["structure_features"]["has_self_reference"]:
if "自我否定类" in analysis_result["negative_analysis"]["categories"]:
fatigue_score += 1.5
else:
fatigue_score += 0.5
# 灾难化预测贡献 (0-2分)
if analysis_result["structure_features"]["has_catastrophic_prediction"]:
fatigue_score += 1.5
# 非黑即白思维贡献 (0-2分)
if analysis_result["structure_features"]["has_black_white"]:
fatigue_score += 1
return round(min(fatigue_score, 5), 2)
def generate_analysis_report(self, analysis_result: Dict) -> str:
"""
生成分析报告
为人类专家或用户提供可读性强的分析结果
"""
report_lines = [
"=" * 50,
"📊 负面思维分析报告",
"=" * 50
]
# 基本信息
report_lines.append(f"\n📝 原始思维:{analysis_result['original']}")
report_lines.append(f"📏 文本长度:{analysis_result['word_count']}字")
# 负面情感分析
neg_analysis = analysis_result["negative_analysis"]
report_lines.append(f"\n😔 负面情感强度:{neg_analysis['overall_intensity']}/5")
if neg_analysis["detected_words"]:
report_lines.append(f"🔍 检测到负面词汇:{', '.join(neg_analysis['detected_words'][:5])}")
# 思维模式分析
pattern_analysis = analysis_result["pattern_analysis"]
if pattern_analysis:
report_lines.append(f"\n🧠 识别到的思维模式:")
for pattern in pattern_analysis[:3]:
report_lines.append(f" • {pattern['pattern_type']} (置信度: {pattern['confidence']})")
report_lines.append(f" 描述:{pattern['description']}")
# 精神内耗指数
fatigue = self.calculate_mental_fatigue_index(analysis_result)
report_lines.append(f"\n⚡ 精神内耗指数:{fatigue}/5")
report_lines.append("\n" + "=" * 50)
return "\n".join(report_lines)
core/negative_detector.py
""" 😔 负面思维检测器模块 功能:基于分析结果识别负面思维类型和严重程度 核心教学点:心理学分类体系的技术实现 """
from typing import Dict, List, Tuple, Optional from dataclasses import dataclass, field from enum import Enum import random
class MindsetType(Enum): """负面思维模式枚举""" SELF_DEPRECATION = "自我贬低型" CATASTROPHIZING = "灾难化思维型" OVER_GENERALIZATION = "过度概括型" BLACK_WHITE_THINKING = "非黑即白型" COMPARISON_INFERIORITY = "比较自卑型" ANXIETY_WORRY = "焦虑担忧型" EMOTIONAL_REASONING = "情绪化推理型" PERFECTIONISM = "完美主义型" HELPLESSNESS = "无助无力型" MIND_READING = "读心术型"
class SeverityLevel(Enum): """严重程度等级""" MILD = "轻度" MODERATE = "中度" SEVERE = "重度" CRITICAL = "极重度"
@dataclass class NegativeThoughtProfile: """ 负面思维档案
包含对负面思维的全面画像
"""
original_text: str
mindset_type: MindsetType
severity: SeverityLevel
confidence: float
key_indicators: List[str]
emotional_impact: Dict
cognitive_distortions: List[str]
transformation_difficulty: int # 1-5,转换难度
class NegativeThoughtDetector: """ 负面思维检测器
设计理念:
基于认知行为疗法(CBT)和积极心理学理论
将复杂的心理现象转化为可计算的分类模型
核心功能:
1. 识别负面思维的具体类型
2. 评估严重程度和影响
3. 生成详细的思维档案
"""
def __init__(self):
"""初始化检测器"""
self.type_signatures = self._load_type_signatures()
self.severity_indicators = self._load_severity_indicators()
def _load_type_signatures(self) -> Dict[MindsetType, Dict]:
"""
加载思维类型特征签名
每种负面思维模式都有独特的语言和行为特征
这些特征基于临床心理学研究和实践经验
"""
return {
MindsetType.SELF_DEPRECATION: {
"core_keywords": ["废物", "垃圾", "没用", "失败", "一无是处", "毫无价值"],
"linguistic_patterns": [
r"我就是.*?[废物垃圾没用]",
r"我.*?彻底.*?[失败不行]",
r"我.*?毫无.*?[价值用处]"
],
"cognitive_features": ["自我标签化", "价值否定", "能力质疑"],
"emotional_tone": "自我攻击",
"transformation_strategy": "价值重构"
},
MindsetType.CATASTROPHIZING: {
"core_keywords": ["完了", "毁了", "灾难", "崩溃", "万劫不复", "彻底完了"],
"linguistic_patterns": [
r".*?彻底.*?完了",
r".*?巨大的.*?灾难",
r".*?完全.*?毁了",
r".*?万劫不复"
],
"cognitive_features": ["极端预测", "放大后果", "失去控制感"],
"emotional_tone": "恐慌绝望",
"transformation_strategy": "现实检验"
},
MindsetType.OVER_GENERALIZATION: {
"core_keywords": ["总是", "从不", "每次", "所有", "没有一次", "从来都"],
"linguistic_patterns": [
r"总是.*?不",
r"从来.*?没有",
r"每次.*?都",
r"所有.*?都.*?失败"
],
"cognitive_features": ["以偏概全", "忽视例外", "绝对化判断"],
"emotional_tone": "绝望无力",
"transformation_strategy": "证据收集"
},
MindsetType.BLACK_WHITE_THINKING: {
"core_keywords": ["完全", "绝对", "根本", "彻底", "百分之百", "要么要么"],
"linguistic_patterns": [
r"完全.*?[成功失败]",
r"绝对.*?不可能",
r"根本.*?不行",
r"要么.*?要么.*?没有中间"
],
"cognitive_features": ["二元对立", "缺乏灰度", "极端判断"],
"emotional_tone": "僵化固执",
"transformation_strategy": "灰度思维"
},
MindsetType.COMPARISON_INFERIORITY: {
"core_keywords": ["比不上", "输定了", "落后", "不如", "没优势", "完全比不上"],
"linguistic_patterns": [
r"比.*?差.*?远了",
r"输.*?定了",
r"完全.*?比不上",
r"没.*?任何.*?优势"
],
"cognitive_features": ["社会比较", "优势忽视", "价值条件化"],
"emotional_tone": "自卑嫉妒",
"transformation_strategy": "优势发掘"
},
MindsetType.ANXIETY_WORRY: {
"core_keywords": ["担心", "害怕", "紧张", "焦虑", "恐惧", "不安"],
"linguistic_patterns": [
r"很担心.*?会",
r"害怕.*?出.*?问题",
r"紧张.*?得.*?要命",
r"焦虑.*?得.*?睡不着"
],
"cognitive_features": ["未来导向", "风险放大", "控制欲求"],
"emotional_tone": "紧绷不安",
"transformation_strategy": "应对准备"
},
MindsetType.EMOTIONAL_REASONING: {
"core_keywords": ["感觉", "觉得", "认为", "好像", "似乎", "看来"],
"linguistic_patterns": [
r"我感觉.*?就是",
r"我觉得.*?肯定",
r"看来.*?我.*?[不行失败]",
r"似乎.*?所有人.*?都"
],
"cognitive_features": ["感受等同事实", "主观臆断", "证据忽视"],
"emotional_tone": "困惑迷茫",
"transformation_strategy": "事实核查"
},
MindsetTyp
利用AI解决实际问题,如果你觉得这个工具好用,欢迎关注长安牧笛!