|
|
@@ -0,0 +1,277 @@
|
|
|
+# 数据目录配置说明
|
|
|
+
|
|
|
+## 概述
|
|
|
+
|
|
|
+本项目支持将数据目录独立于代码目录,并自动使用项目文件夹名称作为输出版本标识,实现不同代码版本的输出隔离。
|
|
|
+
|
|
|
+## 核心特性
|
|
|
+
|
|
|
+### 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`。
|