yangxiaohui d3022c2454 Merge remote-tracking branch 'origin/how_1125_v2' into how_1125_v1 4 天之前
..
docs fb4fcfbcc9 docs: 组织需求文档并更新README 2 周之前
README.md fb4fcfbcc9 docs: 组织需求文档并更新README 2 周之前
__init__.py 4712e854a3 feat: 新增当前帖子解构任务列表提取脚本 2 周之前
analyze_first_step.py e69fe2671c feat: 添加数据分析脚本并更新默认账号配置 1 周之前
analyze_first_step_v2.py e69fe2671c feat: 添加数据分析脚本并更新默认账号配置 1 周之前
build_match_graph.py a70cd23ef9 feat: 添加跨层边提取和图谱流程一键脚本 5 天之前
build_persona_tree.py d54ab25b6c feat: 优化关系图与人设树联动,修复多边显示 5 天之前
build_post_tree.py 8d67e969d1 feat: 添加帖子树可视化,优化布局为三层结构 4 天之前
check_empty_key_points.py 8b13ebe897 feat: 添加key_points空值检查脚本 1 周之前
extract_category_edges.py 64380d838c add 6 天之前
extract_current_posts.py d512b4720b feat: 实现多账号目录管理和可配置过滤规则 1 周之前
extract_feature_categories.py d512b4720b feat: 实现多账号目录管理和可配置过滤规则 1 周之前
extract_features_from_posts.py d512b4720b feat: 实现多账号目录管理和可配置过滤规则 1 周之前
extract_nodes_and_edges.py 0e9eb86f42 feat: 优化匹配过滤和边类型区分 5 天之前
filter_how_results.py 0e9eb86f42 feat: 优化匹配过滤和边类型区分 5 天之前
match_inspiration_features.py bbfd5a7778 refactor: 优化匹配流程和进度显示 1 周之前
match_inspiration_features_v2.py 4fc53acd97 feat: 添加批量匹配分析器和可视化工具v2 1 周之前
migrate_data_structure.sh d512b4720b feat: 实现多账号目录管理和可配置过滤规则 1 周之前
path_config.py 458321e73f data 1 周之前
run_all.sh d512b4720b feat: 实现多账号目录管理和可配置过滤规则 1 周之前
run_all_with_config.sh d512b4720b feat: 实现多账号目录管理和可配置过滤规则 1 周之前
run_graph_pipeline.sh a70cd23ef9 feat: 添加跨层边提取和图谱流程一键脚本 5 天之前
visualize_how_results.py 80bd99c744 refactor: 提取相似度阈值为常量配置 5 天之前
visualize_how_results_v2.py 4fc53acd97 feat: 添加批量匹配分析器和可视化工具v2 1 周之前
visualize_match_graph.py 8d67e969d1 feat: 添加帖子树可视化,优化布局为三层结构 4 天之前

README.md

数据处理模块

本模块提供数据提取和转换功能,用于处理小红书帖子的特征提取和分类映射。

目录结构

script/data_processing/
├── __init__.py                          # 模块初始化
├── README.md                             # 使用文档(本文件)
├── docs/                                 # 需求文档目录
│   ├── 1、获取标签->分类.md              # extract_feature_categories.py 的需求
│   ├── 2、获取标签->帖子.md              # extract_features_from_posts.py 的需求
│   └── 3、构造解构任务列表.md            # extract_current_posts.py 的需求
├── extract_feature_categories.py         # 特征分类映射提取脚本
├── extract_features_from_posts.py        # 特征帖子来源提取脚本
└── extract_current_posts.py              # 当前帖子解构任务列表提取脚本

脚本说明

1. extract_current_posts.py

当前帖子_what解构结果 目录中提取当前帖子的解构任务列表。

需求文档: docs/3、构造解构任务列表.md

功能:

  • 从当前帖子的解构结果中提取灵感点、目的点、关键点
  • 自动获取帖子详情(标题、正文、图片、点赞数等)
  • 提取每个点的名称、描述和特征列表
  • 生成统一格式的解构任务列表

输入:

  • data/data_1117/当前帖子_what解构结果/*.json - 当前帖子的解构结果

输出:

  • data/data_1117/当前帖子_解构任务列表.json - 当前帖子的解构任务列表

使用方法:

# 从项目根目录运行
python script/data_processing/extract_current_posts.py

# 或者从任意目录运行
python /path/to/script/data_processing/extract_current_posts.py

输出格式:

{
    "解构任务列表": [
        {
            "帖子id": "690d977d0000000007036331",
            "帖子详情": {
                "title": "你不会无缘无故刷到的",
                "body_text": "...",
                "like_count": 123,
                "publish_time": "2025-11-07 15:08:59",
                ...
            },
            "what解构结果": {
                "灵感点列表": [
                    {
                        "名称": "发现立冬和教资查分是同一天",
                        "描述": "创作者在构思内容时...",
                        "特征列表": ["立冬", "教资查分", "时间巧合"]
                    }
                ],
                "目的点列表": [...],
                "关键点列表": [...]
            }
        }
    ]
}

2. extract_features_from_posts.py

过去帖子_what解构结果 目录中提取特征名称及其来源信息。

需求文档: docs/2、获取标签->帖子.md

功能:

  • 从帖子的三点解构(灵感点、目的点、关键点)中提取特征
  • 自动获取帖子详情(标题、正文、图片、点赞数等)
  • 根据当前帖子的最早发布时间过滤数据,避免时间穿越
  • 输出特征名称到帖子来源的映射关系

输入:

  • data/data_1117/过去帖子_what解构结果/*.json - 过去帖子的解构结果
  • data/data_1117/当前帖子_what解构结果/*.json - 当前帖子的解构结果(用于获取时间阈值)

输出:

  • data/data_1117/特征名称_帖子来源.json - 特征名称及其帖子来源映射

使用方法:

# 从项目根目录运行
python script/data_processing/extract_features_from_posts.py

# 或者从任意目录运行
python /path/to/script/data_processing/extract_features_from_posts.py

输出格式:

{
    "灵感点": [
        {
            "特征名称": "猫咪",
            "特征来源": [
                {
                    "点的名称": "猫咪照片拍出了专业模特感",
                    "点的描述": "...",
                    "帖子id": "69114f150000000007001f30",
                    "帖子详情": {
                        "title": "老师 我家孩子可以做童模吗",
                        "body_text": "...",
                        "like_count": 765,
                        "publish_time": "2025-11-10 10:33:58",
                        ...
                    }
                }
            ]
        }
    ],
    "目的点": [...],
    "关键点": [...]
}

3. extract_feature_categories.py

过去帖子_pattern聚合结果.json 中提取特征名称及其分类层级信息。

需求文档: docs/1、获取标签->分类.md

功能:

  • 提取特征名称到分类的映射关系
  • 构建分类层级结构(包括层级深度、是否叶子节点、下一级节点等)
  • 根据当前帖子的最早发布时间过滤数据
  • 打印被过滤掉的帖子警告信息

输入:

  • data/data_1117/过去帖子_pattern聚合结果.json - Pattern聚合结果
  • data/data_1117/当前帖子_what解构结果/*.json - 当前帖子(用于获取时间阈值)

输出:

  • data/data_1117/特征名称_分类映射.json - 特征名称到分类的映射
  • data/data_1117/分类层级映射.json - 分类层级结构

使用方法:

# 从项目根目录运行
python script/data_processing/extract_feature_categories.py

# 或者从任意目录运行
python /path/to/script/data_processing/extract_feature_categories.py

输出格式1 - 特征名称_分类映射.json:

{
    "灵感点": {
        "猫咪": {
            "所属分类": ["物体", "实质"]
        }
    },
    "目的点": {...},
    "关键点": {...}
}

输出格式2 - 分类层级映射.json:

{
    "灵感点": {
        "形式": {
            "几级分类": 1,
            "是否是叶子分类": false,
            "下一级": [
                {
                    "节点类型": "分类",
                    "节点名称": "概念"
                },
                {
                    "节点类型": "分类",
                    "节点名称": "方式"
                }
            ]
        }
    },
    "目的点": {...},
    "关键点": {...}
}

时间过滤机制

两个脚本都实现了时间过滤功能,避免使用"未来"的数据(时间穿越):

  1. 获取时间阈值:从 当前帖子_what解构结果 目录中获取最早的帖子发布时间
  2. 过滤条件:只保留发布时间早于阈值的过去帖子
  3. 警告信息:打印被过滤掉的帖子ID和发布时间

示例输出:

当前帖子最早发布时间: 2025-11-07 15:08:59

正在应用时间过滤 (< 2025-11-07 15:08:59),避免使用晚于当前帖子的数据...
  ⚠️  过滤掉帖子 69114f150000000007001f30 (发布时间: 2025-11-10 10:33:58,晚于阈值)
  ⚠️  过滤掉帖子 6915dfc400000000070224d9 (发布时间: 2025-11-14 10:22:16,晚于阈值)

过滤掉 2 个帖子(穿越),保留 17 个帖子

依赖

  • script.detail.get_xiaohongshu_detail - 获取小红书帖子详情

注意事项

  1. 脚本会自动使用缓存的帖子详情,避免重复请求
  2. 如果当前帖子目录不存在或为空,将不启用时间过滤
  3. 过滤后只保留有来源的特征,避免空数据
  4. 所有路径都相对于项目根目录,可以从任意位置运行脚本