# 数据目录配置说明 ## 概述 本项目支持将数据目录独立于代码目录,并自动使用项目文件夹名称作为输出版本标识,实现不同代码版本的输出隔离。 ## 核心特性 ### 1. 数据根目录配置 支持三种方式配置数据根目录(优先级从高到低): #### 方式1: 环境变量(临时使用,推荐) ```bash # 临时设置 DATA_ROOT=~/Documents/账号数据 ./script/data_processing/run_all_with_config.sh 阿里多多酱1 # 永久设置(添加到 ~/.zshrc 或 ~/.bashrc) export DATA_ROOT=~/Documents/账号数据 ``` #### 方式2: 配置文件(项目级配置) 编辑 `config/accounts.json`: ```json { "data_root": "~/Documents/账号数据", // 支持 ~、绝对路径、相对路径 ... } ``` #### 方式3: 默认值(向后兼容) 如果不配置,默认使用项目内的 `data/` 目录。 ### 2. 输出版本自动识别 **默认行为:自动使用项目根目录名称作为输出版本** 例如: - 项目目录:`how_1124_v1` → 输出版本:`how_1124_v1` - 项目目录:`how_1121_v2` → 输出版本:`how_1121_v2` **覆盖方式**(优先级从高到低): 1. 通过环境变量: ```bash OUTPUT_VERSION=experiment_weighted ./script/data_processing/run_all_with_config.sh 阿里多多酱1 ``` 2. 通过配置文件: ```json { "output_version": "custom_version_name", ... } ``` 3. 通过代码参数: ```python config = PathConfig(account_name="阿里多多酱1", output_version="v1_baseline") ``` ## 目录结构 ### 典型配置(数据独立) ``` # 代码目录 ~/Desktop/workspace/daily/1113/ ├── how_1120_v1/ # 项目版本1 ├── how_1121_v2/ # 项目版本2 └── how_1124_v1/ # 项目版本3(当前) # 数据目录(独立存储) ~/Documents/账号数据/ └── 账号/ └── 阿里多多酱1/ ├── what单独解构/ # 输入:当前帖子 ├── 用于pattern聚类/ # 输入:历史帖子 ├── pattern相关文件/ # 输入:pattern聚合 │ └── how解构_outputs/ # 输出(按版本隔离) ├── how_1120_v1/ # 版本1的输出 │ ├── intermediate/ │ ├── results/ │ └── visualization/ │ ├── how_1121_v2/ # 版本2的输出 │ └── ... │ ├── how_1124_v1/ # 版本3的输出 │ └── ... │ └── latest -> how_1124_v1/ # 软链接(可选) ``` ## 使用场景 ### 场景1: 默认使用(项目内数据) ```bash cd ~/Desktop/workspace/daily/1113/how_1124_v1 ./script/data_processing/run_all_with_config.sh 阿里多多酱1 # 数据路径: # 输入:./data/账号/阿里多多酱1/what单独解构/ # 输出:./data/账号/阿里多多酱1/how解构_outputs/how_1124_v1/ ``` ### 场景2: 独立数据目录(推荐) ```bash # 一次性设置 export DATA_ROOT=~/Documents/账号数据 cd ~/Desktop/workspace/daily/1113/how_1124_v1 ./script/data_processing/run_all_with_config.sh 阿里多多酱1 # 数据路径: # 输入:~/Documents/账号数据/账号/阿里多多酱1/what单独解构/ # 输出:~/Documents/账号数据/账号/阿里多多酱1/how解构_outputs/how_1124_v1/ ``` ### 场景3: 多个项目版本并行实验 ```bash # 终端1:运行旧版本 cd ~/Desktop/workspace/daily/1113/how_1120_v1 DATA_ROOT=~/Documents/账号数据 ./script/data_processing/run_all_with_config.sh 阿里多多酱1 # 输出到:~/Documents/账号数据/账号/阿里多多酱1/how解构_outputs/how_1120_v1/ # 终端2:同时运行新版本 cd ~/Desktop/workspace/daily/1113/how_1124_v1 DATA_ROOT=~/Documents/账号数据 ./script/data_processing/run_all_with_config.sh 阿里多多酱1 # 输出到:~/Documents/账号数据/账号/阿里多多酱1/how解构_outputs/how_1124_v1/ # 两个版本互不干扰! ``` ### 场景4: 自定义版本名称 ```bash # 强制使用自定义版本名 OUTPUT_VERSION=experiment_20241124 ./script/data_processing/run_all_with_config.sh 阿里多多酱1 # 输出到:.../how解构_outputs/experiment_20241124/ ``` ### 场景5: 查看和对比不同版本 ```bash # 查看所有版本 ls ~/Documents/账号数据/账号/阿里多多酱1/how解构_outputs/ # 输出: # how_1120_v1/ # how_1121_v2/ # how_1124_v1/ # 打开旧版本的可视化 open ~/Documents/账号数据/账号/阿里多多酱1/how解构_outputs/how_1120_v1/visualization/how解构结果_可视化.html # 打开最新版本的可视化 open ~/Documents/账号数据/账号/阿里多多酱1/how解构_outputs/how_1124_v1/visualization/how解构结果_可视化.html ``` ## 验证配置 运行以下命令查看当前配置: ```bash python script/data_processing/path_config.py ``` 输出示例: ``` ============================================================ 项目根目录: /Users/semsevens/Desktop/workspace/daily/1113/how_1124_v1 项目名称: how_1124_v1 数据根目录: /Users/semsevens/Desktop/workspace/daily/1113/how_1124_v1/data 输出版本: how_1124_v1 账号: 阿里多多酱1 过滤模式: exclude_current_posts 账号根目录: .../data/账号/阿里多多酱1 输入路径: 当前帖子目录: .../what单独解构 过去帖子目录: .../用于pattern聚类 pattern聚合文件: .../pattern相关文件/optimization/... 输出路径: 中间结果目录: .../how解构_outputs/how_1124_v1/intermediate how解构结果目录: .../how解构_outputs/how_1124_v1/results 可视化结果目录: .../how解构_outputs/how_1124_v1/visualization ============================================================ ``` ## 配置文件参考 完整的 `config/accounts.json` 配置示例: ```json { "data_root": "data", "accounts": [ { "name": "阿里多多酱1", "enabled": true, "description": "主账号" } ], "default_account": "阿里多多酱1", "filter_mode": "exclude_current_posts", "paths": { "account_base": "账号", "input": { "current_posts": "what单独解构", "historical_posts": "用于pattern聚类", "pattern_cluster": "pattern相关文件/optimization/optimized_clustered_data_gemini-3-pro-preview.json" }, "output": { "intermediate": "how解构_outputs/{version}/intermediate", "how_results": "how解构_outputs/{version}/results", "visualization": "how解构_outputs/{version}/visualization" } } } ``` ## 最佳实践 1. **开发阶段**:使用项目内 `data/` 目录(默认) 2. **生产阶段**:设置 `DATA_ROOT` 环境变量,指向独立数据目录 3. **多版本对比**:保持不同项目目录并行,共享同一个数据根目录 4. **版本命名**:项目目录命名规范化,如 `how_MMDD_v{N}` ## 常见问题 ### Q: 如何迁移现有数据? ```bash # 1. 创建新的数据目录 mkdir -p ~/Documents/账号数据/账号 # 2. 移动数据 mv data/账号/* ~/Documents/账号数据/账号/ # 3. 设置环境变量 export DATA_ROOT=~/Documents/账号数据 # 4. 验证 python script/data_processing/path_config.py ``` ### Q: 如何删除旧版本的输出? ```bash # 删除特定版本 rm -rf ~/Documents/账号数据/账号/阿里多多酱1/how解构_outputs/how_1120_v1/ # 只保留最新3个版本(示例) cd ~/Documents/账号数据/账号/阿里多多酱1/how解构_outputs/ ls -t | tail -n +4 | xargs rm -rf ``` ### Q: 如何在配置文件中使用环境变量? ```json { "data_root": "${HOME}/Documents/账号数据" } ``` 注意:需要使用 `${VAR}` 格式,不是 `$VAR`。