做工具自动识别负面思维句子,转换成积极表达,颠覆习惯性内耗。

1 阅读12分钟

🌟 负面思维转积极表达自动化工具

📁 项目结构

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 # 通用工具函数

📚 核心知识点

详见 knowledge_cards.md

🤝 贡献指南

欢迎提交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解决实际问题,如果你觉得这个工具好用,欢迎关注长安牧笛!