路径改动总结.md 6.8 KB

路径改动总结

改动概述

将数据处理脚本从硬编码路径改为配置驱动的路径管理,支持多账号批量处理。

核心变化

1. 目录结构

原始数据目录保持不变,只新增 how解构/ 输出目录:

data/账号/阿里多多酱/
├── what解构/                    # 原始数据(不动)
├── what解构_所有帖子/           # 原始数据(不动)
├── pattern/                     # 原始数据(不动)
│   └── cluster/
│       └── clustered_data.json
└── how解构/                     # 新增:所有输出结果
    ├── intermediate/            # 中间结果
    │   ├── 特征名称_分类映射.json
    │   ├── 分类层级映射.json
    │   ├── 特征名称_帖子来源.json
    │   └── 当前帖子_解构任务列表.json
    ├── results/                 # how解构最终结果
    │   └── *_how.json
    └── visualization/           # 可视化结果
        └── how解构结果_可视化.html

2. 路径对照表

文件类型 旧路径 新路径
pattern聚合结果 data/data_1118/过去帖子_pattern聚合结果.json data/账号/阿里多多酱/pattern/cluster/clustered_data.json
当前帖子what解构 data/data_1118/当前帖子_what解构结果/ data/账号/阿里多多酱/what解构/
过去帖子what解构 data/data_1118/过去帖子_what解构结果/ data/账号/阿里多多酱/what解构_所有帖子/
特征分类映射 data/data_1118/特征名称_分类映射.json data/账号/阿里多多酱/how解构/intermediate/特征名称_分类映射.json
分类层级映射 data/data_1118/分类层级映射.json data/账号/阿里多多酱/how解构/intermediate/分类层级映射.json
特征帖子来源 data/data_1118/特征名称_帖子来源.json data/账号/阿里多多酱/how解构/intermediate/特征名称_帖子来源.json
解构任务列表 data/data_1118/当前帖子_解构任务列表.json data/账号/阿里多多酱/how解构/intermediate/当前帖子_解构任务列表.json
how解构结果 data/data_1118/当前帖子_how解构结果/ data/账号/阿里多多酱/how解构/results/
可视化结果 data/data_1118/当前帖子_how解构结果_可视化.html data/账号/阿里多多酱/how解构/visualization/how解构结果_可视化.html

修改的文件

新增文件

  1. config/accounts.json - 账号配置文件
  2. script/data_processing/path_config.py - 路径配置管理类
  3. script/data_processing/run_all_with_config.sh - 支持多账号的运行脚本
  4. script/data_processing/migrate_data_structure.sh - 数据迁移脚本(已不需要)

修改的文件

  1. script/data_processing/extract_feature_categories.py

    • 添加 from script.data_processing.path_config import PathConfig
    • 使用 PathConfig 替代硬编码路径
  2. script/data_processing/extract_features_from_posts.py

    • 添加 from script.data_processing.path_config import PathConfig
    • 使用 PathConfig 替代硬编码路径
  3. script/data_processing/extract_current_posts.py

    • 添加 from script.data_processing.path_config import PathConfig
    • 使用 PathConfig 替代硬编码路径
  4. script/data_processing/match_inspiration_features.py

    • 添加 from script.data_processing.path_config import PathConfig
    • 使用 PathConfig 替代硬编码路径
  5. script/data_processing/visualize_how_results.py

    • 添加 from script.data_processing.path_config import PathConfig
    • 修改 load_feature_category_mapping()load_feature_source_mapping() 函数接受 PathConfig 参数
    • 使用 PathConfig 替代硬编码路径
  6. script/data_processing/run_all.sh (旧版本,已更新路径但建议使用新版本)

    • 更新所有 echo 输出中的路径描述

使用方式

单账号处理

# 方式1:命令行参数
./script/data_processing/run_all_with_config.sh 阿里多多酱

# 方式2:环境变量
ACCOUNT_NAME=阿里多多酱 ./script/data_processing/run_all_with_config.sh

# 方式3:使用默认账号(配置文件中的 default_account)
./script/data_processing/run_all_with_config.sh

批量处理多个账号

# 处理所有在配置文件中启用的账号
./script/data_processing/run_all_with_config.sh --all

Python脚本中使用

from script.data_processing.path_config import PathConfig

# 获取路径配置
config = PathConfig()  # 使用默认账号
# 或
config = PathConfig(account_name="阿里多多酱")

# 使用路径
input_file = config.pattern_cluster_file
output_file = config.feature_category_mapping_file

# 确保输出目录存在
config.ensure_dirs()

# 读写文件
with open(input_file, 'r') as f:
    data = json.load(f)

with open(output_file, 'w') as f:
    json.dump(result, f)

添加新账号

  1. 创建账号目录和原始数据:

    mkdir -p "data/账号/新账号名/what解构"
    mkdir -p "data/账号/新账号名/what解构_所有帖子"
    mkdir -p "data/账号/新账号名/pattern/cluster"
    # 放入原始数据...
    
    1. config/accounts.json 中添加配置: json { "name": "新账号名", "enabled": true, "description": "新账号描述" }
  2. 运行处理脚本:

    ./script/data_processing/run_all_with_config.sh 新账号名
    

    迁移说明

    从旧版本迁移到新版本:

    1. 数据无需迁移:原始数据路径保持不变
    2. 删除旧输出:可以删除 data/data_1118/ 下的中间结果和输出文件
    3. 使用新脚本:用 run_all_with_config.sh 替代 run_all.sh

    优势

    1. 原始数据安全:不修改原始数据目录结构
    2. 输出结构清晰:所有输出集中在 how解构/ 目录
    3. 支持多账号:轻松管理和批量处理多个账号
    4. 配置驱动:通过配置文件灵活调整路径
    5. 易于维护:统一的路径管理,避免硬编码
    6. 向后兼容:旧的 run_all.sh 仍可使用(路径已更新)

    验证

    验证配置是否正确:

    # 查看路径配置
    python script/data_processing/path_config.py 阿里多多酱
    
    # 测试路径并创建输出目录
    python -c "from script.data_processing.path_config import PathConfig; config = PathConfig('阿里多多酱'); config.check_and_print_status(); config.ensure_dirs()"
    

注意事项

  1. 运行脚本前确保账号目录下有完整的原始数据
  2. 首次运行时会自动创建 how解构/ 目录及子目录
  3. 可通过环境变量 ACCOUNT_NAME 指定账号,方便CI/CD集成
  4. 批量处理时,某个账号失败不会影响其他账号的处理