闲鱼的商品结构化是如何演进的

news2024/10/6 6:46:46

闲鱼商品结构化和淘宝/天猫最大的区别在于闲鱼卖家都是个人用户,无论是专业程度还是行动力远不及淘宝卖家。为了不阻碍商品发布,闲鱼一直倡导轻发布,理想状况用户拍完照片输入一段描述即可完成发布。但是这和商品结构化相悖:卖家输入信息越多,越有利于商品结构化,但是用户发布商品的意愿就会越低。 我们要做的就是在不阻碍用户发布商品的前提下提高商品结构化程度。

结构化历程

闲鱼商品结构化的探索一直没有停过。目前为止,可以划分出四个阶段

  • 2016年及以前:利用文本挖掘算法,从用户输入的标题/描述中提取出结构化信息。
  • 2017年:文本属性依赖用户输入。遗憾的是大部分闲鱼用户输入相当"简洁"。于是我们把目光转向图片:1)从商品图片中提取结构化信息。2)根据商品图片预测商品类目。
  • 2018年:2018年以前闲鱼类目处于刀耕火种的原始状态,发布时需要选择商品应该在哪个类目之下。所以我们建立了闲鱼渠道类目,将类目映射到渠道类目。另一个尝试就是将闲鱼商品直接与天猫的SPU(Standar Product Unit,标准产品单元)映射。
  • 2019年:启动了哥伦布项目,进一步挖掘图像潜力。通过图像相似度识别,直接将闲鱼商品和淘宝/天猫商品进行关联,通过对淘宝同款的结构化信息清洗得到闲鱼商品的结构化信息。

当前结构化策略

目前围绕着算法,我们在商品发布的各个环节都提供了同款关联的入口:从智能发布到发布完成之后的算法识别以及售卖体系。

现阶段闲鱼商品结构化围绕着算法,在商品发布的各个环节都提供了同款关联的入口:从智能发布到发布完成之后的算法识别以及售卖体系。

  • 端侧智能发布。商品发布过程中,充分利用端侧计算能力,将商品结构化的产品问题,转变成同款商品匹配这样的技术问题。模糊检测,相似度检测,主体识别这些算法都是在端侧实现的。
  • 算法图像识别。商品发布完成后,借助图像识别算法,对于精度较高的识别结果直接和商品建立映射关系。
  • 售卖项目。当图像识别算法只能缩小范围而无法精确给出结果时,借助于售卖任务体系,可以让用户选择完成同款关联。

通过同款关联,闲鱼商品结构化往前走了一大步,使得闲鱼商品结构化的比例有将近47%的提升。尽管如此闲鱼商品结构化现状仍不容乐观,主要体现在

  1. 同款覆盖率。覆盖虽然提升比例较大,但离目标还有一定的距离。
  2. 同款精度。1)部分类目精度低,比如手机和手机壳在图像上相似,但实际是不同的商品。2)整体精度离目标仍有较大gap。
  3. 结构化信息应用。目前只应用在了搜索场景的商品扩招回,结构化信息的应用仍有待充分挖掘。

未来的打法

当前结构化策略面临着一个问题:当算法能力达到上限后,如何继续推进结构化覆盖&精度提升?目前为止起码有三种手段

  • 算法多模态。集团有着众多在各自领域深耕的图像算法团队,比如在女装等垂直类目上沉淀深厚的专家系统。融合多算法团队能在一定程度上提升算法能力的天花板。
  • 文本识别。在下面的case中,单纯凭借图片无法识别是否是同款,因为图像确实非常相似,这个时候就需要文本的辅助。

  • 输入辅助。文本识别模型依赖用户的输入。输入辅助引导用户输入更多高质量文本的同时降低用户描述成本。另一方面输入辅助也可以承担部分属性补全的能力。

然而在现阶段以算法为中心的工程体系中,上面的策略应用上会面临很多痛点

  • 如何定义结构化。本质上是结构化标准的问题,一方面相同的商品算法识别出来的结果千差万别,相同的商品不同算法识别出来的结果最终如何归一化成相同的同款。另一方面对于算法覆盖不到的领域如何通过其他手段来完成结构化。
  • 算法多模态接入成本飙升。如何抹平多算法之间的差异,算法对大盘的贡献,各个算法之间的效果快速上线对比?
  • 输入辅助。输入辅助需要解决2个问题:1)输入联想素材池来源。2)用户体验,输入辅助对实时响应有着非常高的要求。

这些问题大部分本质还是工程问题(结构化定义,多算法融合,输入辅助等)。所以转换一下结构化思路:以算法为中心转向以工程为中心,把算法当作能力补齐插件。结构化围绕着属性补齐做如下抽象

总体策略

总结起来做这几件事

  1. 闲鱼vid体系重新定义结构化标准。
  2. 算法多模态接入,提升覆盖&精度。
  3. 引入规则引擎,服务于输入辅助等场景。
  4. 结构化数据持久化&特征计算,提升搜索推荐等导购场景的匹配效率。

重新定义结构化

定义结构化的标准,一方面可以抹平多算法接入带来的差异,另一方面对于拓展算法边界也有重要意义。所以重新给商品结构化下一个定义:如果一个商品的关键属性都有,那我们认为这个商品就是结构化的。

这套标准称为闲鱼vid(想好名字前暂且叫vid)体系,基于闲鱼渠道类目+属性组成。这套标准有两种方式生成

  1. 天猫spu体系。天猫的spu运营到现在,数据体系已经较为完善,标准品类和闲鱼有很大重叠部分,这部分可以直接实现spu互通。
  2. 对于非标品,从需求侧分析而来。通过搜索推荐等导购场景反向分析可以拿到当前买家关心的品类+属性。这部分可以补齐SPU缺失的数据。

基于这套标准体系,可以很好的解决多算法接入问题:直接以vid体系对应的种子商品集为候选池,实现同款挂靠。除此之外,算法没法覆盖的商品(图文质量较差)如果能确定类目和属性,也能实现vid挂靠。

算法多模态

工程上主要解决算法接入效率问题。当从商品发布到最后的导购主链路搭建完成,算法以插件化的方式运行在主链路之上。

这里多模态主要包括两方面:1)识别能力从图像扩展到文本,图文结合。2)算法模型从单团队拓展到多团队,能力互补。 解决的问题主要包括

  1. 屏蔽数据差异。不同算法数据产生方式的差异,实时/准实时/离线。
  2. 数据融合。算法快速上线/数据效果对比/结构化信息入引擎。
  3. 算法结果对齐。根据定义的结构化标准,抹平算法结果差异。如果识别出的同款商品本质上是同一个商品,那多算法的识别结果最终应当能归一化。

输入辅助

输入辅助需要解决两个问题:

  1. 联想素材池来源:用户输入具有持续时间很短的特征,所以在较短时间内辅助用户进行有价值的输入很关键。
  2. 用户体验:严苛的实时性要求。用户输入是一个连续且对时效要求极高的过程,所有数据的交互需在极短时间内完成。

第一个问题很好解决,素材池提炼可以包括:

  1. 搜索逆向分析产出。根据用户query统计分析,可以得到买家关心的属性。
  2. 算法产出:算法对动销高的商品进行特征提取得到,并归到对应的渠道类目上。
  3. 运营行业经验产出。

第二个问题最好的解法肯定是把所有的逻辑全部下放到端上本地执行避免响应问题。然而不可能把所有的逻辑放到端上,比如需要算法介入时,我们不可能把复杂的算法模型运行在端上。所以把素材池分成两部分:

  1. 需要算法介入的逻辑放在服务端来完成。
  2. 其余逻辑选择适当时机下发给端上执行,这部分需要保证良好的扩展能力。

通过对输入辅助的执行逻辑进行抽象发现其存在形式类似于规则引擎中的规则。在规则引擎中规则一般包含三要素:事实,规则,模式。

这里的事实对应着用户的输入,module对应着单个判定条件,rule则对应着条件判定以及对应的action。以运营的行业经验产出为例,手机类目下有两个很重要的属性:1)是否维修过。 2)是否过保。那这条经验可以翻译成两条规则:1)IF 类目=手机 AND 属性不包含 是否维修过 THEN 引导用户选择。2)IF 类目=手机 AND 属性不包含 是否过保 THEN 引导用户选择。 当执行逻辑被抽象成若干条规则时,就可以在适当的时机下发到客户端侧本地执行。整个流程抽象如下

当新的运营经验或者分析数据产生时,通过翻译成规则可以很好的实现辅助输入的扩展性。通过规则的共享,客户端的逻辑可以无感知的在服务端执行。

上线效果

商品结构化的目标围绕着结构化信息的覆盖&精度进行,目前已经上线了部分功能(文本同款以及算法多模态),从数据上看取得了不错的效果:1)算法多模态接入能对结构化覆盖占比8%绝对提升。2)文本同款正在分桶测试中,从分桶数据来看覆盖上涨13%绝对值提升。

展望

结构化的愿景是在不影响发布体验的前提下完成商品结构化工作。理想情况下只需要一张照片,一段描述就能完成商品发布,其余工作统统移交给算法以及工程同学。当图像和文本内容能被充分挖掘理解,标签成色甚至类目这些都可以去掉,用户只需要点确认发布按钮即可。我们会不断朝着这个目标努力。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1092354.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

基于php+thinkphp+vue的校园二手交易网站

运行环境 开发语言:PHP 数据库:MYSQL数据库 应用服务:apache服务器 使用框架:ThinkPHPvue 开发工具:VScode/Dreamweaver/PhpStorm等均可 项目简介 随着社会的发展,社会的各行各业都在利用信息化时代的优势。计算机的优势和普及使得各种信息系统的开发…

Folium 笔记:使用PopUp突出subzone的空间分布

0 效果图 点开某一个区域后,内容是这个区域的用地类型分布 1 读取数据 import folium import matplotlib.pyplot as plt import re import geopandas as gpd subzonegpd.read_file(MasterPlan2019PlanningAreaBoundaryNoSea.geojson) subzone 2 提取subzone 信息 …

thinkphp6

unexpected , expecting case (T_CASE) or default (T_DEFAULT) or } 在模板中应用{switch}{/switch}标签,报错,其实是switch的问题,模板解析后,switch:和第一个case:之间不能有有输出的,一个空格也不行,所以第一个要紧跟着 Thi…

【LeetCode刷题(数据结构)】:对称二叉树

给你一个二叉树的根节点 root 检查它是否轴对称 输入&#xff1a;root [1,2,2,3,4,4,3] 输出&#xff1a;true 输入&#xff1a;root [1,2,2,null,3,null,3] 输出&#xff1a;false 提示&#xff1a; 树中节点数目在范围 [1, 1000] 内 -100 < Node.val < 100 对称二叉…

芯片学习记录AM26LS31INSR

AM26LS31INSR 芯片介绍 AM26LS31 系列器件是四路互补输出线路驱动器&#xff0c;可 满足 ANSI TIA/EIA-422-B 和 ITU &#xff08;原 CCITT &#xff09;建议 V.11 的要求。三态输出可提供用于驱动双绞线或平行 双线传输线路等平衡线路的高电流&#xff0c;并在断电情况下处…

C# 解决从其他地方迁移项目,引用中大多数包是感叹号的问题

当在 Visual Studio 中复制别人的 C# 项目时&#xff0c;遇到许多包冒感叹号的问题通常是因为缺少相关的 NuGet 包或引用不正确导致的。这会在解决方案资源管理器中的引用下显示感叹号。 解决办法如下&#xff1a; 在 Visual Studio 中打开项目。 在解决方案资源管理器中&…

Ubuntu 上传项目到 GitHub

一、前言 GitHub 作为时下最大的开源代码管理项目&#xff0c;广泛被工程和科研人员使用&#xff0c;本文主要介绍如何如何将自己的项目程序上传到 GitHub 上。 要上传本地项目到 GitHub 上&#xff0c;主要分为两步&#xff0c;第一步是 二、创建 SSH keys 首先登录 GitHu…

[Linux打怪升级之路]-管道

前言 作者&#xff1a;小蜗牛向前冲 名言&#xff1a;我可以接受失败&#xff0c;但我不能接受放弃 如果觉的博主的文章还不错的话&#xff0c;还请点赞&#xff0c;收藏&#xff0c;关注&#x1f440;支持博主。如果发现有问题的地方欢迎❀大家在评论区指正 本期学习目标&…

SystemVerilog Assertions应用指南 第一章(1.25章节 “throughout”运算符)

蕴含( (implication)是目前讨论到的允许定义前提条件的一项技术。例如,要对一个指定的序列进行检验,必须某个前提条件为真。也有这样的情况,要求在检验序列的整个过程中,某个条件必须一直为真。蕴含只在时钟边沿检验前提条件一次,然后就开始检验后续算子部分,因此它不检测先行算…

“一馆一策”保亚运,精准气象服务背后的数据魔法

第十九届杭州亚运会已隆重闭幕&#xff0c;十五个比赛日留下了无数精彩的瞬间&#xff1a;开幕式数字火炬手点燃主火炬、男女100米接力赛的激情澎湃、“时间孤勇者”丘索维金娜的坚持、围棋选手柯洁的泪洒赛场…… 作为亚洲水平最高的综合型运动会&#xff0c;本届杭州亚运会竞…

指令跳转:原来if...else就是goto

目录 CPU 是如何执行指令的&#xff1f; 从 if…else 来看程序的执行和跳转 如何通过 if…else 和 goto 来实现循环&#xff1f; 小结 你平时写的程序中&#xff0c;肯定不只有 int a 1 这样最最简单的代码或者指令。我们总是要用到 if…else 这样的条件判断语句、while 和…

教你怎么在电脑端下载西瓜视频源文件

家里长辈平时爱用西瓜视频&#xff0c;看到喜欢的广场舞就会收藏&#xff0c;甚至想下载到视频机&#xff0c;晚上去广场跟着跳&#x1f923;。 这时计算机专业出身的我&#xff0c;就派上用场了。不废话&#xff0c;直接上手&#xff1a; 打开西瓜视频官网&#xff0c;搜索到…

SystemVerilog Assertions应用指南 第一章(1.27章节 “within”运算符)

“ within”构造允许在一个序列中定义另一个序列。 seq1 within seq2 这表示seq1在seq2的开始到结束的范围内发生,且序列seq2的开始匹配点必须在seq1的开始匹配点之前发生,序列seq1的结束匹配点必须在seq2的结束匹配点之前结束。属性p32检查序列s32a在信号“ start”的上升沿和…

【Redis】Java客户端使用list命令

lpush/lrange rpush/rpop/lpop blpop/brpop llen

SQL Server——数据与表的操作

SQL Server 一、实验目的二、实验内容三、实验要求四、实验过程图形化界面完成此实验使用SQL语句进行创建数据库、表格&#xff0c;修改数据库内容、删除数据库 五、实验心得与体会&#xff1a; 一、实验目的 1)熟悉management studio环境。2)掌握management studio环境下创建…

Hadoop3教程(五):NameNode和SecondaryNameNode

文章目录 &#xff08;59&#xff09;NN和2NN的工作机制&#xff08;60&#xff09;FsImage镜像文件&#xff08;61&#xff09;Edits编辑日志&#xff08;62&#xff09;Checkpoint时间设置参考文献 &#xff08;59&#xff09;NN和2NN的工作机制 NameNode的数据是存储在磁盘…

TLP2168

学习记录一下TLP2168 光耦&#xff08;Optocoupler&#xff09;是一种将电气信号转换为光信号再转换回电气信号的装置。它通常由一个发光二极管&#xff08;LED&#xff09;和一个光敏三极管&#xff08;Phototransistor&#xff09;或光敏二极管组成。光耦在电子电路中起到隔…

带你清晰理解二叉树的递归与解题思路(框架思维!)

文章目录 前言&#xff1a;&#x1f415;啥叫“框架思维”&#x1f3e8;深入理解前中后序&#x1fa80;前序位置与后序位置区别 两种解题思路&#xff1a;下面用几道简单题来练习一下&#xff1a;&#x1f380;力扣 104.二叉树的最大深度&#x1f380;力扣 144.翻转二叉树 前言…

树莓派部署.net core控制台程序

1、在自己的电脑上使用VS写一个Net6.0的控制台程序&#xff0c;我假设我就写个Helloworld。 发布项目 使用mobaxterm上传程序 就传三个文件就行 回到在mobaxterm中&#xff0c;进入目录输入&#xff1a;cd consolepublish,运行程序&#xff1a; dotnet ConsoleApp1.dll 输出h…

亚马逊精细化运营是什么意思?旺季如何高效进行数据精细化运营?—站斧浏览器

亚马逊精细化运营是什么意思&#xff1f; 精细化运营是去精心打造一件产品&#xff0c;例如把店铺运作的某款产品挑出来着重分析。分析方式可以是把卖家所看中在亚马逊中排名较好的产品&#xff0c;用EXCEL电子表格对选中的产品&#xff0c;在平台相关数据表现做数据统计对比。…