| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129 |
- #!/bin/bash
- # 图谱构建与可视化流程(步骤5-9)
- #
- # 依赖前置步骤(1-4)已执行完成:
- # 1. extract_feature_categories.py
- # 2. extract_features_from_posts.py
- # 3. extract_current_posts.py
- # 4. match_inspiration_features.py
- #
- # 本脚本执行:
- # 5. filter_how_results.py - 过滤how解构结果
- # 6. extract_nodes_and_edges.py - 提取节点和边
- # 7. build_persona_tree.py - 构建人设树
- # 8. build_match_graph.py - 构建匹配图谱
- # 9. visualize_match_graph.py - 生成可视化HTML
- #
- # 使用方式:
- # ./run_graph_pipeline.sh # 使用默认账号
- # ./run_graph_pipeline.sh 阿里多多酱 # 指定账号
- # ACCOUNT_NAME=xxx ./run_graph_pipeline.sh
- set -e # 遇到错误立即退出
- # 获取脚本所在目录的绝对路径
- SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
- PROJECT_ROOT="$(cd "$SCRIPT_DIR/../.." && pwd)"
- cd "$PROJECT_ROOT"
- # 颜色定义
- GREEN='\033[0;32m'
- RED='\033[0;31m'
- YELLOW='\033[1;33m'
- BLUE='\033[0;34m'
- NC='\033[0m'
- print_info() { echo -e "${BLUE}[INFO]${NC} $1"; }
- print_success() { echo -e "${GREEN}[SUCCESS]${NC} $1"; }
- print_error() { echo -e "${RED}[ERROR]${NC} $1"; }
- print_step() { echo -e "${YELLOW}[$1]${NC} $2"; }
- # 执行单个步骤
- run_step() {
- local step_num=$1
- local step_name=$2
- local script_name=$3
- print_step "$step_num/5" "$step_name"
- if python "script/data_processing/$script_name"; then
- print_success "$step_name 完成"
- echo ""
- return 0
- else
- print_error "$step_name 失败"
- return 1
- fi
- }
- # 主处理函数
- process_account() {
- local account_name=$1
- echo ""
- echo "=========================================="
- echo "图谱构建与可视化流程"
- echo "账号: $account_name"
- echo "项目: $PROJECT_ROOT"
- echo "=========================================="
- echo ""
- # 设置环境变量
- export ACCOUNT_NAME="$account_name"
- # 步骤5: 过滤how解构结果
- run_step 1 "过滤how解构结果" "filter_how_results.py" || return 1
- # 步骤6: 提取节点和边
- run_step 2 "提取节点和边" "extract_nodes_and_edges.py" || return 1
- # 步骤7: 构建人设树
- run_step 3 "构建人设树" "build_persona_tree.py" || return 1
- # 步骤8: 构建匹配图谱
- run_step 4 "构建匹配图谱" "build_match_graph.py" || return 1
- # 步骤9: 生成可视化HTML
- run_step 5 "生成可视化HTML" "visualize_match_graph.py" || return 1
- echo "=========================================="
- print_success "图谱构建与可视化流程完成!"
- echo "=========================================="
- }
- # 获取默认账号
- get_default_account() {
- python -c "
- import json
- from pathlib import Path
- config_file = Path('config/accounts.json')
- with open(config_file) as f:
- config = json.load(f)
- print(config.get('default_account', ''))
- "
- }
- # 主逻辑
- main() {
- local account_name=""
- # 解析参数
- if [ -n "$1" ]; then
- account_name="$1"
- elif [ -n "$ACCOUNT_NAME" ]; then
- account_name="$ACCOUNT_NAME"
- else
- account_name=$(get_default_account)
- if [ -z "$account_name" ]; then
- print_error "未指定账号,请通过参数或环境变量指定"
- echo "用法: $0 <账号名>"
- exit 1
- fi
- print_info "使用默认账号: $account_name"
- fi
- process_account "$account_name"
- }
- main "$@"
|