数据目录配置说明.md 7.6 KB

数据目录配置说明

概述

本项目支持将数据目录独立于代码目录,并自动使用项目文件夹名称作为输出版本标识,实现不同代码版本的输出隔离。

核心特性

1. 数据根目录配置

支持三种方式配置数据根目录(优先级从高到低):

方式1: 环境变量(临时使用,推荐)

# 临时设置
DATA_ROOT=~/Documents/账号数据 ./script/data_processing/run_all_with_config.sh 阿里多多酱1

# 永久设置(添加到 ~/.zshrc 或 ~/.bashrc)
export DATA_ROOT=~/Documents/账号数据

方式2: 配置文件(项目级配置)

编辑 config/accounts.json

{
  "data_root": "~/Documents/账号数据",  // 支持 ~、绝对路径、相对路径
  ...
}

方式3: 默认值(向后兼容)

如果不配置,默认使用项目内的 data/ 目录。

2. 输出版本自动识别

默认行为:自动使用项目根目录名称作为输出版本

例如:

  • 项目目录:how_1124_v1 → 输出版本:how_1124_v1
  • 项目目录:how_1121_v2 → 输出版本:how_1121_v2

覆盖方式(优先级从高到低):

  1. 通过环境变量:

    OUTPUT_VERSION=experiment_weighted ./script/data_processing/run_all_with_config.sh 阿里多多酱1
    
    1. 通过配置文件: json { "output_version": "custom_version_name", ... }
  2. 通过代码参数:

    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: 独立数据目录(推荐)

# 一次性设置
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: 多个项目版本并行实验

# 终端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: 自定义版本名称

# 强制使用自定义版本名
OUTPUT_VERSION=experiment_20241124 ./script/data_processing/run_all_with_config.sh 阿里多多酱1

# 输出到:.../how解构_outputs/experiment_20241124/

场景5: 查看和对比不同版本

# 查看所有版本
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

验证配置

运行以下命令查看当前配置:

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 配置示例:

{
  "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: 如何迁移现有数据?

# 1. 创建新的数据目录
mkdir -p ~/Documents/账号数据/账号

# 2. 移动数据
mv data/账号/* ~/Documents/账号数据/账号/

# 3. 设置环境变量
export DATA_ROOT=~/Documents/账号数据

# 4. 验证
python script/data_processing/path_config.py

Q: 如何删除旧版本的输出?

# 删除特定版本
rm -rf ~/Documents/账号数据/账号/阿里多多酱1/how解构_outputs/how_1120_v1/

# 只保留最新3个版本(示例)
cd ~/Documents/账号数据/账号/阿里多多酱1/how解构_outputs/
ls -t | tail -n +4 | xargs rm -rf

Q: 如何在配置文件中使用环境变量?

{
  "data_root": "${HOME}/Documents/账号数据"
}

注意:需要使用 ${VAR} 格式,不是 $VAR