news 2026/6/4 22:19:12

博客九:用户画像模块(情感桑基图 + 大模型人设生成)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
博客九:用户画像模块(情感桑基图 + 大模型人设生成)

一、阶段定位

前面我们把数据处理、智能分析的功能都搭建好了,这一阶段主要做用户画像挖掘。系统有了原始数据,也能做分析,但没法归纳出用户群体的特征,这也是我们需要补齐的地方。

这个模块原本是组长负责的,对方只搭了一个简单框架,没有写能运行的业务代码。后面就由我接手,从零开始写代码、重构功能,同时适配项目现有的数据规则,把框架里隐藏的问题逐一修复。

二、项目核心痛点

接手框架测试后,发现里面大大小小问题挺多,算法运行和接口稳定性都不太理想。 原始代码没有做数据预处理,直接拿原始数据跑聚类。数据量一大,运行速度就特别慢。而且不同数据的数值差距很大,数值偏高的字段会主导分类结果,最后聚类出来的效果并不理想。

调用大模型生成用户人设时,返回的格式乱七八糟,也没有对应的容错处理。一旦解析出错,整个接口就会直接报错。

桑基图的数据组装逻辑有漏洞,图表里的节点顺序经常错乱,部分场景还会缺失节点,可视化展示效果很差。

代码也没考虑极端情况,数据集数据很少、或者内容单一的时候,聚类算法直接就运行失败了。

三、技术落地实现

3.1 8 维特征工程

我从评论数据里提取了八个维度的用户特征,涵盖评分喜好、评论习惯、内容倾向等内容,用来区分不同的用户群体。

class FeatureEngineer: def extract_features(self, df): if "user_id" not in df.columns: return self._extract_review_level_features(df) return self._extract_user_level_features(df)

3.2 KMeans 聚类 + 自动选 K

我选用 KMeans 算法做用户分群,结合轮廓系数算出最合适的聚类数量。同时针对数据量少的情况,单独写了备用逻辑,避免算法运行报错。

def cluster(self, feature_df, min_k=2, max_k=8): available_cols = [c for c in FEATURE_COLS if c in feature_df.columns] X = feature_df[available_cols].fillna(0).values if len(X) < 10: return self._fallback_cluster(feature_df) # 小样本降级 scaler = StandardScaler() X_scaled = scaler.fit_transform(X) best_k = min_k best_score = -1 best_model = None max_k = min(max_k, len(X) // 2) # 防止K大于样本数/2 for k in range(min_k, max_k + 1): model = KMeans(n_clusters=k, random_state=42, n_init=10, max_iter=300) labels = model.fit_predict(X_scaled) score = silhouette_score(X_scaled, labels) if score > best_score: best_score = score best_k = k best_model = model

3.3 情感旅程桑基图

我按照用户消费的不同阶段划分关键词,统计每个阶段对应的情感分布,再计算不同阶段之间的情感流转关系,最后整理成桑基图可用的数据格式。

STAGE_KEYWORDS = { "下单阶段": ["下单", "购买", "发货", "付款", "下了", "拍了"], "收货阶段": ["收到", "收货", "包装", "快递", "物流", "到了", "签收"], "使用初期": ["刚用", "刚开始", "初次", "第一次", "试用", "开箱", "刚收到"], "长期使用": ["用了", "一周", "一个月", "耐用", "效果", "稳定", "持续", "长期"], } def compute_sankey_data(self, df, feature_df): stages = list(STAGE_KEYWORDS.keys()) # 先给每条评论分配阶段 # 再计算每个阶段的情感分布 # 最后计算阶段间的情感流转 # 生成nodes和links

四、AI 辅助开发记录

用户画像模块是我接手后从零完善的,原来只有个空架子。开发时我会用AI帮我想思路,但特征提取、聚类算法、桑基图数据结构这些具体代码都是我自己写的。

最开始做用户分群,我只想到用评分、评论长度两个特征。AI建议我可以从用户行为、评论习惯、情感倾向等方向扩展。我结合我们项目的评论数据,最后定了8个特征:

- avg_rating:评分倾向,归一化到0-1
- avg_word_count:评论长度,归一化
- image_rate:带图率
- followup_rate:追评率
- neg_word_density:负面词密度,我列了"不好"、"差"、"烂"这些负面词来统计
- preferred_dimension:关注维度,用关键词匹配物流/质量/外观/服务/价格
- time_preference:时间偏好,20点到6点算夜间
- language_style:语言风格,统计理性词(测试、参数、对比)和感性词(太好了、超喜欢、棒棒)
这些都在 feature_engineer.py#L26-L66 里。
聚类直接用原始数据跑效果很差,AI说要做特征标准化,不然数值大的特征会主导结果。我就加上了 StandardScaler ( cluster_service.py#L47-L48 )。还加了个小样本的判断:如果样本少于10条,就直接用降级逻辑,按评分高/中/低分群,不然KMeans会报错 ( cluster_service.py#L110-L123 )。

桑基图的数据结构我之前没接触过,不知道怎么组织。AI给我看了个示例:要有nodes数组存节点,links数组存关联。我就照着这个思路,先按关键词把评论分到4个阶段(下单→收货→使用初期→长期使用),然后每个阶段算3种情感的数量,最后按顺序生成节点,这样图表就不会乱了 ( cluster_service.py#L338-L431 )。

大模型生成用户人设时,最开始名称很敷衍,就是"用户群1"这种。我改了好多版提示词,要求生成2-4字的昵称、50字以内的描述、3条运营建议。还用正则 re.search(r'$$.*$$', response, re.DOTALL) 提取,就算格式不对也有兜底 ( cluster_service.py#L125-L181 )。

五、优化细节

优化 1:小样本降级逻辑

数据集里只有几条数据时,KMeans 算法会因为样本不足运行失败。我加了备用逻辑,数据量过少就直接按照评分划分人群,接口可以正常返回结果。

优化 2:LLM 输出格式三重校验

大模型输出格式没法固定,我依次尝试原生解析、正则提取、备用模板三种方式层层兜底,现在基本不会出现解析失败的情况。

优化 3:桑基图节点强制排序

之前节点顺序混乱,图表逻辑看着很别扭。我固定了节点的生成顺序,按照消费阶段搭配情感类型排列,流转逻辑清晰了很多。

优化 4:特征标准化

不同特征的数值范围差别很大,会干扰聚类结果。加入标准化处理后,所有特征的权重变得均衡,聚类的精准度也提升了。

六、阶段总结

做完这个模块,我明显感觉到本地测试和线上项目运行完全是两回事。代码在自己电脑上跑测试案例一切正常,部署到项目里,各种各样的边界问题都会冒出来。

算法能算出结果只是基础,想要在线上稳定运行,异常处理、参数调试这些工作都不能少。接手的时候这个模块只有空架子,经过一步步开发和优化,最后实现了全部功能,也算是超额完成了分配的任务。

AI 能帮我们快速搭基础代码、拓宽思路,但算法落地过程里的细节调试、问题排查,还是得靠自己慢慢摸索积累经验。


版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/4 22:16:42

D2RML:暗黑破坏神2重制版专业级多开自动化解决方案

D2RML&#xff1a;暗黑破坏神2重制版专业级多开自动化解决方案 【免费下载链接】D2RML Diablo 2 Resurrected Multilauncher 项目地址: https://gitcode.com/gh_mirrors/d2/D2RML D2RML&#xff08;Diablo 2 Resurrected Multi-Launcher&#xff09;是一款专为《暗黑破坏…

作者头像 李华
网站建设 2026/6/4 22:16:42

Mac菜单栏太乱?3步用Ice打造清爽高效工作空间

Mac菜单栏太乱&#xff1f;3步用Ice打造清爽高效工作空间 【免费下载链接】Ice Powerful menu bar manager for macOS 项目地址: https://gitcode.com/GitHub_Trending/ice/Ice 你是否每天都要在拥挤不堪的Mac菜单栏中寻找需要的图标&#xff1f;各种应用图标杂乱地堆叠…

作者头像 李华
网站建设 2026/6/4 22:14:38

零样本时序预测革命:Google TimesFM 2.5

摘要&#xff1a;本文将带您快速入门Google最新发布的TimesFM 2.5模型&#xff0c;体验无需任何训练即可进行高精度时间序列预测的“魔法”。我们将从零开始&#xff0c;通过命令行和Python脚本两种方式&#xff0c;完成一次完整的预测任务&#xff0c;并解释其背后的核心概念。…

作者头像 李华
网站建设 2026/6/4 22:05:42

AI工具与智能福利整合不是选择题——而是生存线:2024年员工留存率每提升1%,企业隐性成本下降¥386万(麦肯锡实证数据)

更多请点击&#xff1a; https://kaifayun.com 第一章&#xff1a;AI工具与智能福利整合不是选择题——而是生存线 当企业还在争论“要不要上AI”时&#xff0c;领先者已将AI工具深度嵌入员工福利系统&#xff1a;从个性化健康干预、动态弹性休假推荐&#xff0c;到基于情绪识…

作者头像 李华