# 数据处理模块 本模块提供数据提取和转换功能,用于处理小红书帖子的特征提取和分类映射。 ## 脚本说明 ### 1. extract_features_from_posts.py 从 `过去帖子_what解构结果` 目录中提取特征名称及其来源信息。 **功能:** - 从帖子的三点解构(灵感点、目的点、关键点)中提取特征 - 自动获取帖子详情(标题、正文、图片、点赞数等) - 根据当前帖子的最早发布时间过滤数据,避免时间穿越 - 输出特征名称到帖子来源的映射关系 **输入:** - `data/data_1117/过去帖子_what解构结果/*.json` - 过去帖子的解构结果 - `data/data_1117/当前帖子_what解构结果/*.json` - 当前帖子的解构结果(用于获取时间阈值) **输出:** - `data/data_1117/特征名称_帖子来源.json` - 特征名称及其帖子来源映射 **使用方法:** ```bash # 从项目根目录运行 python script/data_processing/extract_features_from_posts.py # 或者从任意目录运行 python /path/to/script/data_processing/extract_features_from_posts.py ``` **输出格式:** ```json { "灵感点": [ { "特征名称": "猫咪", "特征来源": [ { "点的名称": "猫咪照片拍出了专业模特感", "点的描述": "...", "帖子id": "69114f150000000007001f30", "帖子详情": { "title": "老师 我家孩子可以做童模吗", "body_text": "...", "like_count": 765, "publish_time": "2025-11-10 10:33:58", ... } } ] } ], "目的点": [...], "关键点": [...] } ``` --- ### 2. extract_feature_categories.py 从 `过去帖子_pattern聚合结果.json` 中提取特征名称及其分类层级信息。 **功能:** - 提取特征名称到分类的映射关系 - 构建分类层级结构(包括层级深度、是否叶子节点、下一级节点等) - 根据当前帖子的最早发布时间过滤数据 - 打印被过滤掉的帖子警告信息 **输入:** - `data/data_1117/过去帖子_pattern聚合结果.json` - Pattern聚合结果 - `data/data_1117/当前帖子_what解构结果/*.json` - 当前帖子(用于获取时间阈值) **输出:** - `data/data_1117/特征名称_分类映射.json` - 特征名称到分类的映射 - `data/data_1117/分类层级映射.json` - 分类层级结构 **使用方法:** ```bash # 从项目根目录运行 python script/data_processing/extract_feature_categories.py # 或者从任意目录运行 python /path/to/script/data_processing/extract_feature_categories.py ``` **输出格式1 - 特征名称_分类映射.json:** ```json { "灵感点": { "猫咪": { "所属分类": ["物体", "实质"] } }, "目的点": {...}, "关键点": {...} } ``` **输出格式2 - 分类层级映射.json:** ```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. 所有路径都相对于项目根目录,可以从任意位置运行脚本