453 lines
21 KiB
Python
453 lines
21 KiB
Python
#!/usr/bin/env python3
|
||
"""
|
||
生成完整MD报告:体质数据挖掘报告
|
||
"""
|
||
|
||
import json
|
||
import os
|
||
|
||
BASE_DIR = "/home/songyi/Documents/ai_agent_scraper_study/data/大医网"
|
||
|
||
# 加载数据
|
||
with open(os.path.join(BASE_DIR, "02_加工数据/中医体质/九种体质详细数据.json"), "r", encoding="utf-8") as f:
|
||
constitutions = json.load(f)
|
||
constitution_dict = {c["名称"]: c for c in constitutions}
|
||
|
||
with open(os.path.join(BASE_DIR, "03_关联融合/交叉关联分析/体质-药膳推荐体系.json"), "r", encoding="utf-8") as f:
|
||
dietary_data = json.load(f)
|
||
|
||
with open(os.path.join(BASE_DIR, "02_加工数据/中医体质/体质-大医网交叉关联.json"), "r", encoding="utf-8") as f:
|
||
cross_data = json.load(f)
|
||
|
||
with open(os.path.join(BASE_DIR, "03_关联融合/交叉关联分析/体质-疾病症状挖掘.json"), "r", encoding="utf-8") as f:
|
||
disease_data = json.load(f)
|
||
|
||
constitution_order = ["气虚质", "阳虚质", "阴虚质", "痰湿质", "湿热质", "血瘀质", "气郁质", "特禀质", "平和质"]
|
||
|
||
# ---- 构建报告 ----
|
||
lines = []
|
||
lines.append("# 大医网 | 九种中医体质数据挖掘报告")
|
||
lines.append("")
|
||
lines.append("> **生成日期:** 2025年 \n> **数据来源:** 大医网(www.dayi.org.cn) \n> **分析范围:** 基于大医网疾病、症状、方剂、药材、穴位、药膳六大数据库,对九种中医体质进行系统性交叉数据挖掘。")
|
||
lines.append("")
|
||
|
||
# ===== 一、体质-疾病症状关联分析 =====
|
||
lines.append("---")
|
||
lines.append("## 一、体质-疾病症状关联分析")
|
||
lines.append("")
|
||
lines.append("### 分析概述")
|
||
lines.append("")
|
||
disease_summary = disease_data.get("统计摘要", {})
|
||
lines.append(f"基于大医网疾病库与症状库,对9种中医体质进行疾病-症状关联挖掘。共关联疾病{disease_summary.get('总关联疾病数(去重)', 'N')}种(去重),总关联频次{disease_summary.get('总关联疾病数(含重复)', 'N')}次。阈值评分≥3.0。")
|
||
lines.append("")
|
||
|
||
# 各体质疾病TOP3
|
||
lines.append("### 各体质TOP3关联疾病")
|
||
lines.append("")
|
||
lines.append("| 体质类型 | TOP1 | TOP2 | TOP3 |")
|
||
lines.append("|---------|------|------|------|")
|
||
disease_map = disease_data.get("体质-疾病", {})
|
||
for cname in constitution_order:
|
||
items = disease_map.get(cname, [])
|
||
top3 = items[:3]
|
||
names = [x.get("名称", "") for x in top3]
|
||
if not any(names):
|
||
# Try alternate key
|
||
names = [x.get("疾病名称", "") for x in top3]
|
||
row = [cname] + (names + ["", "", ""])[:3]
|
||
lines.append(f"| {' | '.join(row)} |")
|
||
lines.append("")
|
||
|
||
# 各体质症状TOP3
|
||
lines.append("### 各体质TOP3高频症状")
|
||
lines.append("")
|
||
lines.append("| 体质类型 | TOP1 | TOP2 | TOP3 |")
|
||
lines.append("|---------|------|------|------|")
|
||
symptom_map = disease_data.get("体质-症状频率", {})
|
||
for cname in constitution_order:
|
||
items = symptom_map.get(cname, [])
|
||
top3 = items[:3]
|
||
names = [f"{x[0]}({x[1]}次)" if isinstance(x, list) else str(x) for x in top3]
|
||
row = [cname] + (names + ["", "", ""])[:3]
|
||
lines.append(f"| {' | '.join(row)} |")
|
||
lines.append("")
|
||
|
||
# 各体质关联疾病数
|
||
lines.append("### 各体质关联疾病数量分布")
|
||
lines.append("")
|
||
lines.append("| 体质类型 | 关联疾病数 |")
|
||
lines.append("|---------|-----------|")
|
||
disease_counts = disease_summary.get("各体质关联疾病数", {})
|
||
for cname in constitution_order:
|
||
cnt = disease_counts.get(cname, 0)
|
||
lines.append(f"| {cname} | {cnt} |")
|
||
lines.append("")
|
||
|
||
# ===== 二、体质-方剂挖掘 =====
|
||
lines.append("---")
|
||
lines.append("## 二、体质-方剂挖掘")
|
||
lines.append("")
|
||
lines.append("### 分析概述")
|
||
lines.append("")
|
||
lines.append("基于大医网方剂库(约1000+方剂),通过功效匹配、主治疾病关联等方式,对每种体质关联方剂数据。详细数据请参见:`03_关联融合/交叉关联分析/体质-药膳推荐体系.json`(与药膳体系整合的关联参考)及`02_加工数据/中医体质/体质-大医网交叉关联.json`。")
|
||
lines.append("")
|
||
lines.append("> **注:** 方剂关联数据可参考体质详细数据中的推荐药膳/方剂信息(部分体质药膳即源自经典方剂如四君子汤、甘麦大枣汤等)。详细方剂-体质关联挖掘将在后续任务中展开。")
|
||
lines.append("")
|
||
|
||
# ===== 三、体质-药材挖掘 =====
|
||
lines.append("---")
|
||
lines.append("## 三、体质-药材挖掘")
|
||
lines.append("")
|
||
lines.append("### 分析概述")
|
||
lines.append("")
|
||
herb_assoc = cross_data.get("体质-药材关联", {})
|
||
total_herb_assoc = cross_data.get("总结统计", {}).get("总关联药材数", 0)
|
||
lines.append(f"基于大医网中药材库,通过功效匹配、性味归经关联等方式,关联分析获得各体质推荐药材。总计{total_herb_assoc}条药材-体质关联数据。详细数据参见:`体质-大医网交叉关联.json`。")
|
||
lines.append("")
|
||
|
||
lines.append("### 各体质TOP5推荐药材")
|
||
lines.append("")
|
||
lines.append("| 体质类型 | TOP1 | TOP2 | TOP3 | TOP4 | TOP5 |")
|
||
lines.append("|---------|------|------|------|------|------|")
|
||
for cname in constitution_order:
|
||
items = herb_assoc.get(cname, [])
|
||
top5 = items[:5]
|
||
names = [x.get("名称", "") for x in top5]
|
||
row = [cname] + names + [""] * (5 - len(names))
|
||
lines.append(f"| {' | '.join(row)} |")
|
||
lines.append("")
|
||
|
||
# ===== 四、体质-穴位挖掘 =====
|
||
lines.append("---")
|
||
lines.append("## 四、体质-穴位挖掘")
|
||
lines.append("")
|
||
lines.append("### 分析概述")
|
||
lines.append("")
|
||
acu_assoc = cross_data.get("体质-穴位关联", {})
|
||
total_acu_assoc = cross_data.get("总结统计", {}).get("总关联穴位数", 0)
|
||
lines.append(f"基于大医网针灸穴位库,通过主治病症匹配、功效关联等方式,关联分析获得各体质推荐穴位。总计{total_acu_assoc}条穴位-体质关联数据。详细数据参见:`体质-大医网交叉关联.json`。")
|
||
lines.append("")
|
||
|
||
lines.append("### 各体质TOP5推荐穴位")
|
||
lines.append("")
|
||
lines.append("| 体质类型 | TOP1 | TOP2 | TOP3 | TOP4 | TOP5 |")
|
||
lines.append("|---------|------|------|------|------|------|")
|
||
for cname in constitution_order:
|
||
items = acu_assoc.get(cname, [])
|
||
top5 = items[:5]
|
||
names = [x.get("名称", "") for x in top5]
|
||
row = [cname] + names + [""] * (5 - len(names))
|
||
lines.append(f"| {' | '.join(row)} |")
|
||
lines.append("")
|
||
|
||
# ===== 五、体质-药膳推荐体系 =====
|
||
lines.append("---")
|
||
lines.append("## 五、体质-药膳推荐体系")
|
||
lines.append("")
|
||
lines.append("### 5.1 分析方法")
|
||
lines.append("")
|
||
lines.append("采用**多因子评分模型**,对药膳食疗库(1000条)进行体质匹配评分:")
|
||
lines.append("")
|
||
lines.append("| 评分因子 | 权重 | 说明 |")
|
||
lines.append("|---------|-----|------|")
|
||
lines.append("| 功效字段含体质关键字 | +4 | 药膳功效直接体现调理方向,最高权重 |")
|
||
lines.append("| 简介/名称字段含体质关键字 | +3 | 名称和简介中提及调理方向 |")
|
||
lines.append("| 配方字段含体质推荐食材 | +2 | 配方含对应体质的推荐性味食材 |")
|
||
lines.append("| 适宜人群字段含体质关键字 | +3 | 明确标注适宜某类体质或证型 |")
|
||
lines.append("| 来源字段含经典文献 | +1 | 出自经典文献的药膳可信度更高 |")
|
||
lines.append("")
|
||
lines.append(f"**阈值:≥4.0**,取每种体质TOP30药膳。")
|
||
lines.append("")
|
||
|
||
# 评分结果汇总
|
||
lines.append("### 5.2 各体质推荐药膳TOP10")
|
||
lines.append("")
|
||
for cname in constitution_order:
|
||
recs = dietary_data["体质-药膳推荐"].get(cname, [])
|
||
top10 = recs[:10]
|
||
lines.append(f"#### {cname}")
|
||
lines.append("")
|
||
lines.append("| 排名 | 药膳名称 | 来源 | 功效 | 评分 | 跨体质共享 |")
|
||
lines.append("|------|---------|------|------|:----:|:--------:|")
|
||
for i, r in enumerate(top10, 1):
|
||
shared = "✅ " + ", ".join(r["共享体质"]) if r["是否共享"] else "—"
|
||
lines.append(f"| {i} | {r['名称']} | {r['来源']} | {r['功效']} | {r['得分']} | {shared} |")
|
||
lines.append("")
|
||
|
||
# 功效分类统计
|
||
lines.append("### 5.3 药膳功效分类统计")
|
||
lines.append("")
|
||
lines.append("统计各体质TOP30药膳的功效关键词分布:")
|
||
lines.append("")
|
||
for cname in constitution_order:
|
||
stats = dietary_data["体质-药膳功效统计"].get(cname, {})
|
||
top_stats = sorted(stats.items(), key=lambda x: -x[1])[:8]
|
||
if top_stats:
|
||
stats_str = "、".join([f"**{k}**({v})" for k, v in top_stats])
|
||
lines.append(f"- **{cname}**功效关键词:{stats_str}")
|
||
lines.append("")
|
||
|
||
# 来源分析
|
||
lines.append("### 5.4 药膳来源文献分析")
|
||
lines.append("")
|
||
source_stats = dietary_data.get("体质-药膳来源统计", {})
|
||
lines.append("各体质推荐药膳的来源文献分布(TOP15):")
|
||
lines.append("")
|
||
lines.append("| 来源文献 | 出现频次 |")
|
||
lines.append("|---------|:-------:|")
|
||
for source, cnt in list(source_stats.items())[:15]:
|
||
lines.append(f"| {source} | {cnt} |")
|
||
lines.append("")
|
||
lines.append('其中,经典文献(如《中国药膳大辞典》《中国药膳学》《圣济总录》《饮膳正要》《太平圣惠方》《本草纲目》等)贡献了大量高评分药膳,体现了"药食同源"的深厚传统。')
|
||
lines.append("")
|
||
|
||
# ===== 六、九种体质综合调理方案 =====
|
||
lines.append("---")
|
||
lines.append("## 六、九种体质综合调理方案")
|
||
lines.append("")
|
||
|
||
for cname in constitution_order:
|
||
c = constitution_dict[cname]
|
||
recs = dietary_data["体质-药膳推荐"].get(cname, [])
|
||
top3_diet = recs[:3] if recs else []
|
||
|
||
# TOP3疾病
|
||
disease_items = disease_data.get("体质-疾病", {}).get(cname, [])
|
||
top3_disease_names = [x.get("名称", "") for x in disease_items[:3]]
|
||
if not any(top3_disease_names):
|
||
top3_disease_names = c.get("相关疾病", [])[:3]
|
||
|
||
# TOP3方剂 - Use recommended dietary from constitution data that are also formulas
|
||
formula_names = c.get("推荐药膳", [])[:3] # Some 药膳 are classic formulas
|
||
|
||
# TOP3药材
|
||
herb_items = cross_data.get("体质-药材关联", {}).get(cname, [])
|
||
top3_herb_names = [x.get("名称", "") for x in herb_items[:3]]
|
||
|
||
# TOP3穴位
|
||
acu_items = cross_data.get("体质-穴位关联", {}).get(cname, [])
|
||
top3_acu_names = [x.get("名称", "") for x in acu_items[:3]]
|
||
|
||
# 推荐药膳TOP3
|
||
top3_diet_names = [(d["名称"], d["得分"]) for d in top3_diet]
|
||
|
||
lines.append(f"### {cname}")
|
||
lines.append("")
|
||
lines.append(f"**核心病机/特征:** {c.get('总体特征', '')}")
|
||
lines.append("")
|
||
lines.append(f"**调理原则:** {c.get('调理原则', '')}")
|
||
lines.append("")
|
||
|
||
lines.append("| 调理维度 | 推荐内容 |")
|
||
lines.append("|---------|---------|")
|
||
lines.append(f"| **核心病机** | {c.get('总体特征', '')} |")
|
||
lines.append(f"| **常见表现** | {c.get('常见表现', '')} |")
|
||
lines.append(f"| **发病倾向** | {c.get('发病倾向', '')} |")
|
||
|
||
disease_str = "、".join(top3_disease_names) if top3_disease_names else c.get('发病倾向', '').replace(';', '、')
|
||
lines.append(f"| **TOP3疾病** | {disease_str} |")
|
||
|
||
formula_str = "、".join(formula_names) if formula_names else c.get('推荐药膳', '—')[:3]
|
||
lines.append(f"| **TOP3方剂** | {formula_str} |")
|
||
|
||
herb_str = "、".join(top3_herb_names) if top3_herb_names else "—"
|
||
lines.append(f"| **TOP3药材** | {herb_str} |")
|
||
|
||
acu_str = "、".join(top3_acu_names) if top3_acu_names else "、".join(c.get('推荐穴位', [])[:3])
|
||
lines.append(f"| **TOP3穴位** | {acu_str} |")
|
||
|
||
diet_str = "、".join([f"{x[0]}(评分{x[1]})" for x in top3_diet_names]) if top3_diet_names else "、".join(c.get('推荐药膳', [])[:3])
|
||
lines.append(f"| **TOP3推荐药膳** | {diet_str} |")
|
||
|
||
food_ok = "、".join(c.get('饮食宜', ['未指定']))
|
||
lines.append(f"| **饮食原则** | 宜:{food_ok} |")
|
||
food_no = "、".join(c.get('饮食忌', ['未指定']))
|
||
lines.append(f"| | 忌:{food_no} |")
|
||
|
||
exercise = "、".join(c.get('推荐功法', ['未指定']))
|
||
lines.append(f"| **运动建议** | {exercise} |")
|
||
|
||
mental = c.get('心理特征', '未指定')
|
||
lines.append(f"| **情志调节** | {mental}。宜根据性格特点选择适合的情志调养方式。 |")
|
||
lines.append("")
|
||
|
||
# 完整TOP5药膳列表
|
||
lines.append(f"**{cname}完整推荐药膳TOP5:**")
|
||
lines.append("")
|
||
for i, d in enumerate(recs[:5], 1):
|
||
shared_tag = f"【共享:{'、'.join(d['共享体质'])}】" if d['是否共享'] else ""
|
||
lines.append(f"{i}. **{d['名称']}**(来源:{d['来源']},功效:{d['功效']},评分:{d['得分']}){shared_tag}")
|
||
lines.append("")
|
||
|
||
# ===== 七、体质间关联分析 =====
|
||
lines.append("---")
|
||
lines.append("## 七、体质间关联分析")
|
||
lines.append("")
|
||
|
||
# 体质间药膳共享
|
||
lines.append("### 7.1 药膳共享分析")
|
||
lines.append("")
|
||
shared_data = dietary_data["体质-药膳共享分析"]
|
||
lines.append(f"在推荐药膳中,共有**{shared_data['数量']}**道药膳同时适用于2种及以上体质类型,体现了体质间调理的交叉性和关联性。")
|
||
lines.append("")
|
||
lines.append("**跨体质药膳TOP示例:**")
|
||
lines.append("")
|
||
lines.append("| 药膳名称 | 适用体质 | 功效 | 来源 |")
|
||
lines.append("|---------|---------|------|------|")
|
||
for item in shared_data["跨体质药膳"][:10]:
|
||
lines.append(f"| {item['名称']} | {'、'.join(item['适用体质'])} | {item['功效']} | {item['来源']} |")
|
||
lines.append("")
|
||
|
||
# 体质相似度分析(基于共享药膳)
|
||
lines.append("### 7.2 体质相似度分析(基于共享药膳)")
|
||
lines.append("")
|
||
lines.append("基于跨体质药膳数量,构建体质间关联热度矩阵:")
|
||
lines.append("")
|
||
|
||
# Build similarity matrix
|
||
constitution_similarity = {}
|
||
for c1 in constitution_order:
|
||
constitution_similarity[c1] = {}
|
||
for c2 in constitution_order:
|
||
if c1 == c2:
|
||
constitution_similarity[c1][c2] = 0
|
||
continue
|
||
# Count shared dietary between c1 and c2
|
||
count = 0
|
||
for item in shared_data["跨体质药膳"]:
|
||
if c1 in item["适用体质"] and c2 in item["适用体质"]:
|
||
count += 1
|
||
constitution_similarity[c1][c2] = count
|
||
|
||
# Output matrix
|
||
lines.append("| 体质 | " + " | ".join([f"{c:<6}" for c in constitution_order]) + " |")
|
||
lines.append("|" + "|".join(["-------" for _ in range(10)]) + "|")
|
||
for c1 in constitution_order:
|
||
row = f"| {c1:<6}"
|
||
for c2 in constitution_order:
|
||
row += f" | {constitution_similarity[c1][c2]:>4}"
|
||
lines.append(row + " |")
|
||
lines.append("")
|
||
|
||
# Find most connected pairs
|
||
pairs = []
|
||
for i, c1 in enumerate(constitution_order):
|
||
for j, c2 in enumerate(constitution_order):
|
||
if i < j:
|
||
s = constitution_similarity[c1][c2]
|
||
if s > 0:
|
||
pairs.append((s, c1, c2))
|
||
pairs.sort(reverse=True)
|
||
lines.append("**关联最紧密的体质对(共享药膳数排名):**")
|
||
lines.append("")
|
||
for s, c1, c2 in pairs[:5]:
|
||
lines.append(f"- **{c1}** ↔ **{c2}**:共享 {s} 道药膳")
|
||
lines.append("")
|
||
|
||
# 体质间疾病症状关联
|
||
lines.append("### 7.3 体质转化与并发倾向")
|
||
lines.append("")
|
||
lines.append("基于中医体质学理论和数据挖掘结果,体质间存在以下转化/并发规律:")
|
||
lines.append("")
|
||
lines.append("| 体质A | 体质B | 关联依据 |")
|
||
lines.append("|-------|-------|---------|")
|
||
lines.append("| 气虚质 | 阳虚质 | \"气虚日久,阳亦衰\",气虚易发展为阳虚,共享温补类药膳 |")
|
||
lines.append("| 阴虚质 | 湿热质 | 阴虚生内热,湿热内蕴易伤阴液,均可见热象 |")
|
||
lines.append("| 痰湿质 | 湿热质 | 痰湿郁久化热即成湿热,两者病机相通,共享祛湿类药膳 |")
|
||
lines.append("| 血瘀质 | 气郁质 | \"气为血之帅\",气郁可致血瘀,血瘀亦可加重气滞 |")
|
||
lines.append("| 气虚质 | 特禀质 | 气虚卫外不固,易致过敏反应,均需益气固表 |")
|
||
lines.append("| 阴虚质 | 血瘀质 | 阴液不足则血脉不充,久则成瘀 |")
|
||
lines.append("")
|
||
|
||
# 平和质保健方案
|
||
lines.append("### 7.4 平和质保健方案")
|
||
lines.append("")
|
||
c_pinghe = constitution_dict["平和质"]
|
||
lines.append(f"**体质特征:** {c_pinghe.get('总体特征', '')}")
|
||
lines.append("")
|
||
lines.append(f"平和质是阴阳平衡、气血调和的理想体质状态。数据挖掘显示:")
|
||
lines.append(f"- 关联疾病数:{disease_summary.get('各体质关联疾病数', {}).get('平和质', 'N')}种(最少)")
|
||
lines.append(f"- 推荐保健药膳:{len(dietary_data['体质-药膳推荐'].get('平和质', []))}道")
|
||
lines.append("")
|
||
lines.append("**日常保健方案:**")
|
||
lines.append("")
|
||
lines.append("| 保健维度 | 推荐内容 |")
|
||
lines.append("|---------|---------|")
|
||
lines.append(f"| **饮食** | {', '.join(c_pinghe.get('饮食宜', []))};忌{', '.join(c_pinghe.get('饮食忌', []))} |")
|
||
lines.append(f"| **药膳** | {', '.join(c_pinghe.get('推荐药膳', []))} |")
|
||
lines.append(f"| **穴位** | {', '.join(c_pinghe.get('推荐穴位', []))} |")
|
||
lines.append(f"| **运动** | {', '.join(c_pinghe.get('推荐功法', []))} |")
|
||
lines.append(f"| **情志** | {c_pinghe.get('心理特征', '')} |")
|
||
lines.append("")
|
||
|
||
# ===== 八、附录 =====
|
||
lines.append("---")
|
||
lines.append("## 八、附录")
|
||
lines.append("")
|
||
lines.append("### 8.1 数据来源")
|
||
lines.append("")
|
||
lines.append("| 数据源 | 内容 | 数量 | 来源 |")
|
||
lines.append("|-------|------|:----:|------|")
|
||
lines.append("| 药膳食疗库 | 药膳食疗方 | 1000条 | 大医网 `01_来源数据/药膳食疗/` |")
|
||
lines.append("| 体质数据 | 九种体质详细描述 | 9种 | 大医网 `02_加工数据/中医体质/九种体质详细数据.json` |")
|
||
lines.append("| 疾病数据 | 疾病-症状关联 | 616+种疾病 | 大医网 `01_来源数据/疾病/` |")
|
||
lines.append("| 中药材库 | 中药材信息 | 2004+条关联 | 大医网 `01_来源数据/中药材/` |")
|
||
lines.append("| 针灸穴位库 | 穴位信息 | 1432+条关联 | 大医网 `01_来源数据/针灸穴位/` |")
|
||
lines.append("| 方剂库 | 经典方剂 | 1000+方剂 | 大医网 `01_来源数据/方剂/` |")
|
||
lines.append("")
|
||
|
||
lines.append("### 8.2 分析方法")
|
||
lines.append("")
|
||
lines.append("| 分析模块 | 方法 | 说明 |")
|
||
lines.append("|---------|------|------|")
|
||
lines.append("| 体质-疾病症状 | 关键字匹配评分 | 通过体质关联关键字与疾病症状进行匹配,评分≥3.0为有效关联 |")
|
||
lines.append("| 体质-药膳推荐 | 多因子评分模型 | 功效(+4)、简介/名称(+3)、配方食材(+2)、适宜人群(+3)、经典文献(+1),阈值≥4.0 |")
|
||
lines.append("| 体质-药材关联 | 功效/性味匹配 | 通过药材功效、性味归经与体质调理原则匹配 |")
|
||
lines.append("| 体质-穴位关联 | 主治匹配 | 通过穴位主治与体质常见症状匹配 |")
|
||
lines.append("")
|
||
|
||
lines.append("### 8.3 体质判定标准")
|
||
lines.append("")
|
||
lines.append("本报告采用中华中医药学会2009年发布的《中医体质分类与判定》标准,将中医体质分为以下9种基本类型:")
|
||
lines.append("")
|
||
lines.append("| 编号 | 体质类型 | 类型属性 |")
|
||
lines.append("|:----:|---------|---------|")
|
||
lines.append("| 1 | 平和质 | 健康体质 |")
|
||
lines.append("| 2 | 气虚质 | 偏颇体质 |")
|
||
lines.append("| 3 | 阳虚质 | 偏颇体质 |")
|
||
lines.append("| 4 | 阴虚质 | 偏颇体质 |")
|
||
lines.append("| 5 | 痰湿质 | 偏颇体质 |")
|
||
lines.append("| 6 | 湿热质 | 偏颇体质 |")
|
||
lines.append("| 7 | 血瘀质 | 偏颇体质 |")
|
||
lines.append("| 8 | 气郁质 | 偏颇体质 |")
|
||
lines.append("| 9 | 特禀质 | 偏颇体质 |")
|
||
lines.append("")
|
||
|
||
lines.append("### 8.4 参考文件")
|
||
lines.append("")
|
||
lines.append("| 文件路径 | 说明 |")
|
||
lines.append("|---------|------|")
|
||
lines.append("| `02_加工数据/中医体质/九种体质详细数据.json` | 九种体质详细描述数据 |")
|
||
lines.append("| `02_加工数据/中医体质/体质-大医网交叉关联.json` | 体质与药材、穴位、药膳的交叉关联 |")
|
||
lines.append("| `03_关联融合/交叉关联分析/体质-疾病症状挖掘.json` | 体质与疾病、症状的关联挖掘 |")
|
||
lines.append("| `03_关联融合/交叉关联分析/体质-药膳推荐体系.json` | 本报告药膳推荐体系数据 |")
|
||
lines.append("")
|
||
|
||
lines.append("---")
|
||
lines.append("")
|
||
lines.append("*报告生成完毕。所有数据基于大医网(www.dayi.org.cn)公开内容挖掘,仅供参考,不构成医疗建议。*")
|
||
|
||
report_content = "\n".join(lines)
|
||
|
||
# 保存报告
|
||
report_dir = os.path.join(BASE_DIR, "04_分析报告")
|
||
os.makedirs(report_dir, exist_ok=True)
|
||
report_path = os.path.join(report_dir, "体质数据挖掘报告.md")
|
||
|
||
with open(report_path, "w", encoding="utf-8") as f:
|
||
f.write(report_content)
|
||
|
||
print(f"报告已保存: {report_path}")
|
||
print(f"文件大小: {os.path.getsize(report_path) / 1024:.1f} KB")
|
||
print(f"总行数: {len(lines)}")
|