闲鱼是怎么让二手属性抽取准确率达到95%+的?

闲鱼是怎么让二手属性抽取准确率达到95%+的?

先上效果

个护.gif

图1 - 二手属性抽取算法效果Demo(1)


背景

闲鱼作为一款C2X的app,站在商品发布的角度,闲鱼商品相对于淘宝商品的特点有:

  1. 轻发布导致商品信息不足 闲鱼采用图文描述的轻发布模式,迎合了用户快速发布的体验,但也导致了商品结构化信息不足的问题。如果平台希望更理解商品到底是什么,就需要算法去识别用户描述的图片和文本。
  2. 商品具有独特的二手属性 不同于淘宝新品的一手属性(例如品牌、型号、规格参数等),二手属性指的是在商品入手一段时间后,能够反映商品折损/保值情况的属性,比如商品的【使用次数】、【购买渠道】、【包装/配件是否完整】等。 不同类目有该类目独特的二手属性,比如个护美妆有【保质期】,手机有【屏幕外观】、【拆修情况】,服装类有【是否下过水】等。

问题和难点

二手属性抽取在NLP领域属于信息抽取(Information Extraction)问题,通常的做法是拆解为命名实体识别(NER)任务和文本分类(Text Classification)任务。

二手属性抽取任务的难点有:

  1. 不同的类目、不同的二手属性/属性簇,需要构建不同的模型。
  2. 如果使用有监督学习(Bert家族),打标工作会非常的繁重,开发周期会变得很长。

解决方案

方法论

在当今NLP环境,依旧是Bert家族(或Transformer衍生的各种算法)大行其道,霸榜GLUE、CLUE等各大NLP榜单,信息抽取任务也不例外,所以笔者在本方案中的某些场景也使用了Bert家族。不过笔者认为,没有一种算法在各种场景下都是全能的,只有在给定领域、指定场景下最适用的算法。此外,笔者总结了自己的一套属性抽取的方法论:

  1. 句式相对固定,或者句式受模板限制,如文本描述模板是典型的时间+地点+人物+事件(某事某地某人做了啥事),用NER,建议方法:CRF、BiLSTM+CRF、Bert家族、Bert家族+CRF等。
  2. 句式不固定,但领域/场景关键词相对固定,或者有一些关键词模板、俗称、行话等,用文本分类:
    1. 近义词、近义表述不是特别多的情况(≤几十种到上百种),关键词呈对数正态分布/指数分布(即有很多高频且集中的关键词),建议方法:正则表达式+规则。
    2. 近义词、近义表述非常多的情况(≥几百种到上千种),典型的如地名识别,建议方法:用Bert家族
  3. 句式和词语都不固定,典型的如社交评论/聊天的情感分析,建议方法:用Bert家族。

方案架构

 

架构.png

图2 - 二手属性抽取方案架构图

图2 - 二手属性抽取方案架构图

  • NLP任务 如前所述,将不同的二手属性识别需求拆解为文本多分类、多标签分类以及NER任务。
  • 文本多分类:即“n选1”问题,比如根据文本判断商品是否包邮(二分类)。
  • 多标签分类:即同时进行多个“n选1”问题,比如同时判断某手机商品的屏幕外观(好/中/差)和机身外观(好/中/差)。多标签分类通常的做法是对不同标签共享网络层,并将损失函数以一定权重叠加,由于多个标签之间有一定程度的联系,效果有时候会比做多个单独的“n选1”问题更好,同时由于是多个属性(属性簇)一起建模,在训练和推断的时候也会更省事。
  • NER:即命名实体识别。


建模方法

1. 人工打标阶段 由于打标的人工成本比较高,需要设法利用集团的AliNLP进行辅助。方法是,首先利用AliNLP的电商NER模型对输入文本进行解析。然后进行拆解,对属于NER任务的二手属性,如保质期/保修期/容量/使用次数/服装风格等,可以直接定位到相关词性或实体的关键词进行BIO标注;对属于分类任务的其它二手属性,则可以在电商NER的分词结果基础上打标,提高人工标注的效率。

2. 算法训练阶段 此为方案核心,本方案训练算法主要通过3种途径:

(1)使用Albert-Tiny:建模采用主流对预训练+finetune的方案。由于该模型推断速度更快,用于对QPS和响应要求非常高的实时在线场景。对于NER任务也可以尝试在网络最后面接一层CRF或不接。 Albert:Albert意指“A lite bert”,名副其实,它的优点在训练速度快。


Albert的源码相比Bert的源码基本如出一辙,但网络结构有几点重要的区别:

1. Word Embedding层做了因式分解,在词向量上大大减少了参数量。设词表大小为V,词向量长度为H,对Bert,词向量参数量为V*H;对Albert,先把词向长度量缩减为E,再扩充为H,参数量为V*E+E*H,由于E远小于H,H远小于V,用于训练的参数量得到锐减。

1. 跨层参数共享:以albert-base为例,albert会在12层之间共享每层的attention参数或全连接层ffn的参数,默认是两者都共享。源码中通过tenorflow.variable_scope的reuse参数可以轻松实现。参数共享进一步减少了需要训练的参数量。 除此之外,Albert还有一些训练任务和训练细节上的优化,此处按下不表。


Albert依据网络深度不同分为: - Albert-Large/xLarge/xxLarge:24层 - Albert-Base:12层 - Albert-Small:6层 - Albert-Tiny:4层 一般来说,层数越多,训练和推断耗时都会越久。考虑到线上部署的实时性要求更快的推断速度,本方案选择了最小的Albert-Tiny。其中文推断速度相对bert-base提高约10倍,且精度基本保留(数据引用自[github/albert_zh](https://github.com/brightmart/albert_zh))。

(2)使用StrutBert-Base:建模采用主流对预训练+finetune的方案。经测算,在二手属性识别上,它比Albert-Tiny准确率相对提升约1%到1.5%,可用于离线T+1场景。对于NER任务也可以尝试在网络最后面接一层CRF或不接。 **StructBert**:为阿里自研算法,优点在精度高,[GLUE榜单](https://gluebenchmark.com/leaderboard)上已经排到第3名。


Word Structural Objective:StrutBert在Bert的MLM任务基础上,加上了打乱词序并迫使其重构正确词序的任务:论文中是随机抽取一个三元词组(trigram)进行打乱,然后加上了如下公式作为MLM损失函数的约束。StrutBert的这个灵感也许来自于网上的一个段子:“研表究明,汉字序顺并不定一影阅响读,事证实明了当你看这完句话之后才发字现都乱是的”。

 

本方案之所以选择StrutBert,是因为集团内有该算法在电商领域专属的预训练模型(接口),它依据网络深度不同分为:

  • StrutBert-Base:12层
  • StrutBert-Lite:6层
  • StrutBert-Tiny:4层

在离线T+1场景下,追求精度更高而对实时性无太大要求,因此本方案选择了StrutBert-Base。

本方案之所以选择StrutBert,是因为集团内有该算法在电商领域专属的预训练模型(接口),它依据网络深度不同分为:

  • StrutBert-Base:12层
  • StrutBert-Lite:6层
  • StrutBert-Tiny:4层

在离线T+1场景下,追求精度更高而对实时性无太大要求,因此本方案选择了StrutBert-Base。

(3)使用正则表达式:优点:速度最快,比Albert-Tiny还快10-100倍以上;且在许多句式和关键词相对固定的二手属性上,准确率比上面两种算法更高;且易于维护。缺点:非常依赖业务知识、行业经验和数据分析对大量正则模式进行梳理。

3. 规则修正阶段

  1. 识别结果归一化:对于NER任务,许多识别出来的结果不能直接使用,需要做“归一化”,例如某件男装衣服的尺码识别出来为“175/88A”,那么应该自动映射到“L码”。
  2. 某些二手属性之间可能会存在冲突或依赖,因此在算法识别之后,需要对识别结果依据业务规则进行一定修正。比如某商品卖家声称是“全新”,但是同时又表明“仅用过3次”,那么“全新”会自动降级为“非全新”(99新或95新,不同类目分级略有不同)。

算法部署

  • 离线T+1场景:通过ODPS(现名MaxCompute)+UDF的方式进行部署,即算法会通过Python写成UDF脚本,模型文件则作为资源上传到ODPS上。
  • 在线实时场景:模型通过PAI-EAS进行分布式部署,数据交互通过iGraph(一种实时图数据库)和TPP完成。

算法评估

对每个类目的每个二手属性,制定好评测的标准,然后抽样一定量级的数据,交由外包进行人工评估。评估工作通过对比人工识别的结果和算法识别的结果是否一致,给出准确率、精确率、召回率等。

最终效果

准确率

本方案识别结果经过人工评估,每个类目无论是准确率、精召率都达到了非常高的水平,且误差值均远小于上线限制,并已经上线应用在闲鱼主要类目的商品上。

应用场景&后续展望

二手属性抽取的结果目前已应用的场景包括:

  1. 定价场景
  2. 聊天场景
  3. 优质商品池挖掘
  4. 搜索导购
  5. 个性化商品推荐

后续展望:

  1. 目前二手属性抽取总共覆盖闲鱼主流类目商品,随着开发进行,后续计划覆盖到全部类目。
  2. 目前二手属性抽取主要依赖于文本识别,闲鱼商品是图文描述,后续可以考虑在图片上下功夫,通过图像算法完善商品的结构化信息。
  3. 利用和分析商品二手属性,形成优质商品标准,扩充优质商品池。

作者:渐漓

原文链接 

本文为阿里云原创内容,未经允许不得转载

 

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

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

相关文章

代号红狗:那些站在微软云起点的中国创业者

作者:亲爱的数据 来源:亲爱的数据011996年的北京。上高中二年级的左玥,代表崇文区参加市一级"四通杯"青少年计算机程序设计竞赛,得了一等奖。据左玥回忆,在去参赛的路上,辅导老师还在吐槽&#x…

如何迁移 Flink 任务到实时计算

简介: 本文由阿里巴巴技术专家景丽宁(砚田)分享,主要介绍如何迁移Flink任务到实时计算 Flink 中来。 通常用户在线下主要使用 Flink run,这会造成一些问题,比如:同一个配置因版本而变化&#xf…

如何落地云原生DevOps?

简介: 什么是云原生DevOps?在阿里内部有怎样的实践?企业又该如何落地?阿里云云效专家团队提出了下一代精益产品开发方法体系——ALPD,提供了系统的云原生DevOps落地的方法支撑,帮助企业渐进式地迈入云原生D…

亚马逊独霸美国安云计算未来十年订单;英伟达推出首个元宇宙平台;华为云、天翼云会合并吗?...

NEWS本周新闻回顾亚马逊独霸美国安云计算未来十年订单,微软表示不服亚马逊AWS获得美国国家安全局100亿美元云计算合同。得知亚马逊拿下订单后,微软已向政府问责提交文件,提出抗议。最终……还是亚马逊笑到了最后英伟达推出全球首个元宇宙平台…

如何做好技术 Team Leader?

简介: 作为一个技术TL(Team Leader),除了自身技能,还会面临诸多团队管理上的困难和挑战。如何定义和明确团队的目标?怎样建立优秀的工程文化?让团队长期发挥战斗力和创新能力的核心是什么&#…

android应用控制百度地图,Android中应用百度地图API开发地图APP实例-显示百度地图...

场景效果在使用百度地图API之前需要先在百度地图开放平台中申请API_KEY申请API_KEY登录百度开放平台后找到控制台下的应用管理-创建应用依次输入应用名,应用类型选择Android SDK然后下面需要输入发布版SHA1和包名获取应用SHA1首先来到.Android文件所在的位置&#x…

数禾云上数据湖最佳实践

简介: 数禾科技从成立伊始就组建了大数据团队并搭建了大数据平台。并在ECS上搭建了自己的Cloudera Hadoop集群。但随着公司互联网金融业务的快速扩张发展,大数据团队承担的责任也越来越重,实时数仓需求,日志分析需求,即…

程序员只能吃“青春饭”?IT行业年龄焦虑如何破局?

2019 年搜狐科技《中国互联网简史》报告显示,国内近一半的程序员年龄在 25-29 岁之间,其次为 30-34岁,占比 24.6%,35 岁 -39 岁的程序员占比 6.1%,而 40岁 的程序员仅占 1.2%。由于程序员需要长时间面对电脑工作&#…

对容器镜像的思考和讨论

简介: 常言道,startup 有 startup 的好,大厂有大厂的好,那么大厂究竟好在哪呢?拿硅谷老牌大厂们 FLG 来说,如果要问最令人怀念的是什么?Free food 和基础设施(Infrastructure)一定是会上榜的&am…

android 高度上分权重,Android LinearLayout weight权重使用

在日常的开发过程中,我们通常或多或少会使用到LinearLayout的weight属性来进行权重设置,进而达到按比例显示布局的意图通常我们在使用时,会这样使用android:layout_width"match_parent"android:layout_height"match_parent&qu…

实时计算pv/uv Demo

简介: 本文由阿里巴巴高级技术专家邓小勇(静行)分享,主要用 Demo 演示如何通过实时计算 Flink 实时计算pv/uv的场景。 本文由阿里巴巴高级技术专家邓小勇(静行)分享,主要用 Demo 演示如何通过实…

《天际友盟DRP数字风险防护报告(2021年上半年)》重磅发布

今天,数字化正在发生,整个社会正在步入数字化革新。根据市场研究公司IDC的预测,到2023年超过50%的全球经济将由数字经济所驱动。在中国,2021-2024数字化转型总支出将达到1.5万亿美元,年均增长率超过17%。由此可见&…

Android Native crash 处理案例分享

简介: Android Native crash 处理案例分享 1. 背景 目前 mPaas[1] Android使用Crash SDK对闪退进行的处理,CrashSDK 是 Android 平台上一款功能强大的崩溃日志收集 SDK,有着极高的崩溃收集率和完整、全面的崩溃日志信息,生成的日…

Mendix:低代码与无代码的异同点与用例

投稿 | Mendix 编辑 | 宋 慧 头图 | 付费下载于 IC photo 低代码和无代码应用开发都遵循着代码抽象化原则来实现建模的可视化。但基于这两种方法构建的应用在规模和类型却有着根本性的区别。 低代码与无代码的相同之处 低代码和无代码开发平台都无需编写代码就能构建软件应用…

解读:云原生下的可观察性发展方向

简介: 非常有幸参加了云原生社区Meetup北京站,有机会和众多业内的大牛一起讨论云原生相关的技术和应用,本次Meetup上我和大家分享了关于云原生下的可观察性相关的议题,本篇文章主要是视频的文字性总结,欢迎大家留言讨论…

一文读懂 Serverless,将配置化思想复用到平台系统中

简介: 搭建一个 aPaaS 平台是需要很长时间的,当然也可以基于一些公有云产品的 Serverless 方案实现现有系统的灵活性与扩展性,从而实现针对于不同客户的定制。 写在前面 在 SaaS 领域 Salesforce 是佼佼者,其 CRM 的概念已经扩展…

9.9 元福利价,解锁校园满分计划

移动云开发者社区致力于为广大开发者提供技术交流和能力输出,是移动云开发者交流汇聚地、移动云产品首席体验官工作台、移动云技术能力布道者讲台和移动云能力输出窗口。通过移动云开发者社区,在帮助移动云开发者用好云、好用云的同时,还可以…

亲历者说 | 完整记录一年多考拉海购的云原生之路

简介: 考拉海购的整个云化改造是从 2019 年 10 月份开始的,当时的唯一目标就是短时间内快速完成迁移。在不到 4 个月的时间里,考拉团队唯一考虑的是如何以最快的速度完成使命,云原生是我们选择的最合适的一条路。 前言 考拉海购的…

为了一个HTTPS,浏览器操碎了心···

作者:轩辕之风O来源:编程技术宇宙 浏览器我是一个浏览器,每到夜深人静的时候,主人就打开我开始学习。为了不让别人看到浏览记录,主人选择了“无痕模式”。但网络中总是有很多坏人,他们通过抓包截获我和服务…

深度 | 阿里云蒋江伟:什么是真正的云原生?

简介: 而今,云原生成了耳熟能详的热门词,似乎不提云原生就落伍了,加入 CNCF 也成了云厂商引以为傲的技术优势。 我们也看到各种云原生的定义,有来自 CNCF 的“微服务容器持续交付DevOps”,也有来自不同云厂…