我们是做照片管理 App 的。公司有自己的 ML pipeline,给一张图能吐至少一百个标签出来,每个标签有可信度和主题相关度的数据。标签自身是公司内部的知识图谱中的节点,所以互相之间有层级关系 (食物->年糕->韩式炒年糕)。
我收到的需求是既要利用 ML 的标签,又要允许用户自己给照片标注,还希望能自动合并两种标签。比如用户标了几张图片是狗,ML 判定有狗的图片也会被归在一处。
目前我的疑惑是,我怎么知道用户的狗和 ML 的狗是一种东西?不可能依靠字符串匹配吧...
想法 1 )只使用顶级标签(食物,交通工具;而不是年糕,捷安特),用户创建的时候给他个自动补全,如果用户执意不选自动补全给出的狗标签,那就认为用户的狗和 ML 的狗不一样
想法 2 )直接告诉 PM 没戏,合并不了,只能并存
即使你的 ML 已经打了一个『狗』的标签,用户硬要再打一个『小狗』的标签也没有任何问题啊。
1. 用户自定义的 tag 和用于聚类推荐的 tag 做分离!
千万不要直接用于生产环境做聚类!
最差的情况也是离线清洗后重新上线。
2. 对于 1 中需清洗的 tag,人工界定分类层级,人工对应,高级点的你做个 ML 聚类,知识图谱,词向量相似度之类的做辅助判断。当然,还要判断和图片主题真正的内容契合度。具体不展开说了,方法很多。
3. 用户打 tag 时建议首先给出 suggestion tag,引导用户先 focus 到你给到的 tag
4. 限制用户 tag 数量,潜意识让用户谨慎选择。
最简单的,你打个 tag 是「狗」,用户打个 tag 是「柯基」,文本相似度搞不定。
但这个 tag 一定别直接用到公共领域,能玩死你。
有些用户就真得很闲,tag 写个「 123 」,甚至狗图片打个「猫」 tag,各种匪夷所思,防不胜防