前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >【NLP落地应用】内容理解在新浪微博广告中的应用

【NLP落地应用】内容理解在新浪微博广告中的应用

作者头像
zenRRan
发布于 2020-06-20 06:23:56
发布于 2020-06-20 06:23:56
2.1K0
举报

来自:DataFunTalk

嘉宾:陈兆基 微博 资深算法专家

整理:付一韬

来源:DataFunTalk

导读:做算法的人常说"数据为王", 而对于做广告的人来说,内容理解则是广告投放的基础。本次分享将介绍在微博广告中,内容理解起到了哪些作用。

主要内容包括:

  • 广告系统及微博内容商业化简介
  • 内容理解能力不足引发的问题
  • 构建内容理解能力以及具体商业应用

01

广告系统及微博内容商业化简介

1. 广告系统各方利益诉求

广告投放实际上是广告主、广告平台以及用户三方利益分配的问题,因为需要平衡三方的利益诉求,所以广告平台的核心任务是如何在尽量不打扰用户正常的内容消费流程下达成尽可能多的广告主投放 ROI。

2. 广告投放核心任务

简单来讲,广告投放核心任务是让用户在合适的时间看到适合的广告。我们可以拆解成三个部分,分别是:

  • 谁在看:对用户的追踪,对用户的历史数据收集及各种用户画像的挖掘;
  • 看的是什么:理解当下用户在平台上消费/交互过的内容;
  • 适合看什么:根据上面两部分加上其他信息,会针对该用户当下适合看什么广告进行投放。

3. 非内容场景

在微博中,非内容场景主要是关注流/热门流。它主要的特点是内容多样,上下关联性弱。在这样的场景下,用户对于流内内容没有太多的预判,广告也不一定需要和紧挨着的自然内容有联系,所以这种情况下广告投放更偏向于选人。

4. 内容场景

与非内容场景对应的是内容场景,主要包括正文页、评论和搜索等场景,用户通过对特定内容消费进去该场景。在这样的场景下,投放广告对内容的相关性有要求,所以内容理解对这类场景下广告投放的影响更为显著。

02

内容理解能力不足引发的问题

1. 问题及难点:针对单一内容

首先,针对单一内容/单一广告由于内容理解能力的不足会引发以下几个问题:

  • 营销内容监管:用户有时会抱怨平台的广告太多。经过日志分析,我们发现除了通过广告系统投放出去的广告外,曝光记录中还包括用户关注账号自行发布的营销目的较明显的"自然博文",所以这个时候用户刷微博的时候会认为这些都是广告,比如下图左侧中某明星在双十一发布了一篇自然博文就带有明显营销属性。我们的解决方案是将非广告营销内容通过模型自动识别出来,而这方面的难点就是每天发博量太大,而且缺乏标注。
  • 内容展示时机把握:这个主要体现在相邻自然内容传递的情感不一定适合做营销内容展示,比如下图中间上下两条自然内容都是关于某品牌的概念机,但上面一条说它"没有实用价值",是一条负面的博文,而下面是一条正面的博文。如果下面是一条商业推广的广告,则当下并不是一个好的展示时机。我们的解决方案是对自然内容进行情感分析和实体标注,在广告投放是进行规避。难点是微博会"创造"新的表达方式,比如2018年的"锦鲤"事件。
  • 效果评估中的噪声:如果不对特定内容进行识别,那么创意模式引起的特定指标表现"虚高"或"虚低"。比如下图右侧上方是一条"骗点击"的广告素材 ( CTR 虚高 ),而下方是一条通过内容内嵌导流信息 ( CTR 虚低 )。我们的解决方案是识别/标注特定内容模式,其中难点主要是广告主会对创意进行不断迭代,我们也需要对模型进行不断的迭代。

2. 问题及难点:非单一内容

其次,针对非单一内容由于内容理解能力的不足会引发以下几个问题:

  • 营销内容同质化:主要的问题是违规内容暴力闯审,频控/负反馈失效,比如下图左侧中的两个营销内容,乍看一眼两个广告是一样的 ( 发布视频相同,文字相似 ),但是发布营销内容是不同账号的,这样用户对一个广告点了不感兴趣,还是会刷到相似的广告。我们的解决方案是识别标注相同/相似营销内容,而难点是在不同场景下面相同/相似的定义是不同的。
  • 自然/营销内容不完全匹配:微博中娱乐明星/幽默搞笑/时事新闻是每日自然内容曝光大头,这样商业属性并不明显,比如下图中间是微博的热搜榜,这些自然内容所对应的标签是很难进行广告投放。我们的解决方案是构建统一的商业内容标签体系,对自然内容进行商业属性挖掘,并且基于这个进行广告投放。这里的难点是缺乏标注,覆盖率低。
  • 优质内容生产门槛制约中长尾广告:中长尾的广告主缺乏相应能力/资金创建高质量营销内容,对于任何平台来说广告收入主要来源于一小部分头部广告主这是不安全的,所以通常情况是要拉进来中长尾的广告主。我们的方案基于过往效果好的广告,智能生成/推荐创意内容,而难点就是现有模型能力与实际应用是有差距的。

03

构建内容理解能力以及具体商业应用

1. 内容理解任务

内容理解任务的定义:对于给定内容 ( 文本/图片/视频 ),通过算法完成几类的事情:

  • 分词/实体识别:基本的分词和实体识别 ( 人名、地名、品牌等 );
  • 情感分析:识别内容中的正负面情感,针对负面内容还需要进一步的判定,例如对于全局负面 ( 空难、车祸… ) 是否出广告,针对特定品牌负面内容不适合出特定品牌的广告,但不影响出其它品牌的广告;
  • 相似判定:给定两篇内容,判定是否相似,或者给定一篇内容和查找范围,返回这个候选范围与之相似的内容;
  • 内容分类:构建一套商业的标签体系,基于不同的内容类型训练分类模型,其中文本的分类和图片的分类最终结果融合是一个难点。例如卖手机壳和卖手机的广告在图片上面是很难区分的,所以需要搭配着文案进行区分;
  • 特定内容识别与生成:包括关键词识别、创意模式识别、智能创意生成和基于微博内容构建明星品牌知识图谱

2. 基于内容的广告投放

基于内容的广告投放是针对内容场景,除了在已有人群定向之外,增加利用内容理解的方式进行广告投放和优化的能力,主要分为:

  • 标签构建:在标签构建中需要有区分度将内容分开,并且需要合适的颗粒度来保证标签不会太细导致投放无法产生足够的曝光;
  • 对内容进行标注:有了上面的标签体系之后,需要对内容进行标注,我们目前有两个模型: 1. 快速响应模型:基于公开语料来作词向量和倒排索引来应对搜索或新发热门博文等; 2. 深度模型:基于Bert通过微博语料进行分类任务的 fine-tune,但是由于性能的问题无法满足直接用于线上 inference 的延时需求,但可以通过高速 KV 存储构建缓存,将深度模型的结果倒入线上投放;
  • 基于内容广告投放:将内容的标签打好之后,可以根据内容进行广告的投放: 1. 隐式优化:在满足广告主人群定向的条件下,根据当前的内容进行广告的优化,比如一个用户身上有两个标签 ( 汽车和数码 3C ),当用户刷到了汽车相关的内容,在这个场景下面投放汽车相关的广告效果会更好; 2. 显式优化:开放内容标签给广告主,将广告投放在选定内容标签对应的内容相关广告位,这时并不关心当前请求对应用户画像标签属性。

上图是我们内容定向的简单流程图。

3. 明星品牌知识图谱构建及应用

对于为什么要做明星品牌知识图谱,主要原因是娱乐明星是微博内容的护城河,而品牌广告是微博收入的核心,所以希望利用微博数据挖掘明星和品牌之间的商业联系,更好的将这两者结合在一起。

构建明星品牌知识图谱的几个方面:

  • 实体:包括明星 ( 性别/年龄/别名 )、作品 ( 年代/分类/粉丝 )、品牌 ( 别名/行业/粉丝 ) 等实体;
  • 关系:包括明星"代言"品牌、明星"参演"活动、品牌"赞助"活动等等;
  • 应用:有了上面的实体和关系,我们会基于 Neo4j/CQL 搭建在线查询服务,对明星/影视作品相关内容进行商业拓展,并针对相似账号进行投放推荐。

上图是我们明星/品牌知识图谱的一部分,我们看下上面可以怎么进行应用。

针对输入的 query "朱一龙",我们可以通过上图左侧的图谱定位到朱一龙"代言"味全酸奶,如果味全酸奶在微博投放广告就会出相关的广告,否则可以根据味全酸奶对应行业信息出相似的广告。

另一方面实体还可以有竞争关系,例如上图右侧的图谱,宝马跟其他汽车的实体存在"竞争"关系,宝马如果希望对投放内容进行"竞品"排除,可以根据图谱,避免宝马广告出现在提及其他"竞品"的内容对应广告位。

04

总结与展望

在微博商业化中,我们对内容理解有以下几方面应用:

  • 构建统一内容分析/表达能力:针对文本/图片/视频这些内容使用算法进行分析/表示,例如分词、关键词识别、文本向量化等等;
  • 统一向量表示:基于特定任务进行向量 fine-tune 来获得文本/图片/视频的向量化表示,并将这些向量化进行融合;
  • 提供基础内容理解服务:基于获取的统一向量表示可以完成对基础内容的理解,比如相似性判定、内容分类等等;
  • 灵活支撑各种商业场景:基于上面的基础内容理解服务,我们可以灵活支撑上层各种的商业场景,例如隐式内容优化、显式内容售卖。
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-06-18,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 深度学习自然语言处理 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
Solidity:call 和 delegatecall
在Solidity中,call和delegatecall是两种用于在合约之间进行交互的低级函数。它们都可以调用合约的函数,但是它们的工作方式和用途有所不同。
孟斯特
2024/05/28
2270
Solidity:call 和 delegatecall
Solidity:Gas 优化
在Solidity中,优化gas使用是非常重要的,因为每一笔交易都需要消耗gas。以下是一些可以帮助你优化gas使用的技巧:
孟斯特
2024/06/11
1860
Solidity:Gas 优化
Solidity:变量与常量
在Solidity中,存在三种主要类型的变量:局部(Local)变量、状态(State)变量和全局(Global)变量。它们的作用范围和行为各不相同。需要注意的一点是,状态变量和全局变量的使用可能会耗费更多的gas,因为它们涉及到在区块链上存储和读取数据。因此,应该尽量减少这两种类型变量的使用,特别是在需要大量计算的函数中。
孟斯特
2024/05/28
2030
Solidity:变量与常量
智能合约语言 Solidity 教程系列12 - 库的使用
这是Solidity教程系列文章第12篇介绍库的使用:库与合约的不同,使用库的正姿势。
Tiny熊
2018/08/23
6360
Solidity 智能合约开发 - 基础
去年读研的时候上的 HKU 的 <COMP7408 Distributed Ledger and Blockchain Technology>,课程中学习了以太坊智能合约的开发,做了一个简单的图书管理 ÐApp,然后毕业设计也选择了基于 Ethereum 做了一个音乐版权应用,详见 Uright - 区块链音乐版权管理ÐApp,对 Solidity 开发有一些基础了解。
pseudoyu
2023/04/11
8100
Solidity 智能合约开发 - 基础
Solidity:函数
在 Solidity 中,函数是执行特定任务的代码块。函数可以接受参数,并且可以返回值。函数在智能合约中起着核心作用,用于实现合约的逻辑。
孟斯特
2024/05/28
1290
Solidity:函数
solidity 合约入门
下面是一个简单的 Solidity 合约示例,它实现了一个简单的数字存储合约,允许用户设置和获取一个整数值。这个合约将帮助你了解 Solidity 合约的基本结构和语法。
孟斯特
2023/10/19
2930
solidity 合约入门
solidity 数据类型简介
Solidity(中文名称:Solidity 语言)是一种面向智能合约(Smart Contracts)的高级编程语言,最初由以太坊(Ethereum)的团队开发并用于以太坊平台上的智能合约编写。Solidity 的设计目标是简化以太坊智能合约的开发,使开发者能够创建安全、可靠的去中心化应用程序(DApps)。
孟斯特
2023/10/19
2220
solidity 数据类型简介
First Solidity App
在前文Hello World with solidity介绍了什么是 Solidity、Solidity 的合约结构以及如何使用Remix IDE[1]开发和测试智能合约。
孟斯特
2024/05/28
1230
First Solidity App
Solidity:在合约中创建其它合约
在Solidity中,new关键字用于创建一个新的智能合约实例。当你使用new关键字创建一个新的合约实例时,Solidity会在区块链上部署一个新的合约,并返回新合约的地址。自0.8.0版本开始,new关键字通过指定salt选项支持create2特性。
孟斯特
2024/05/30
1780
Solidity:在合约中创建其它合约
Hello World with solidity
Solidity 是一种面向对象的、静态类型的编程语言,专为在以太坊上编写智能合约而创建。由于以太坊上的智能合约可以处理真实世界的资产(比如加密货币),所以Solidity的设计非常关注安全性。
孟斯特
2024/05/17
1200
Hello World with solidity
Solidity:constructor函数
在Solidity中,constructor是一个特殊的函数,它在合约被部署到区块链时自动执行。这个函数在合约的生命周期中只会被调用一次,就是在合约创建时。
孟斯特
2024/05/28
1960
Solidity:constructor函数
Solidity:合约调用方式
在Solidity中,合约之间的交互是通过调用进行的。以下是一些主要的合约调用方式:
孟斯特
2024/05/29
3250
Solidity:合约调用方式
Solidity:接收 ETH
在Solidity中,payable是一个函数修饰符,它允许函数接收Ether(以太币)。如果一个函数被标记为payable,那么你可以在调用该函数时附带一定数量的Ether。如果一个函数没有被标记为payable,那么你不能在调用该函数时发送Ether,否则交易将被拒绝。
孟斯特
2024/05/28
1920
Solidity:接收 ETH
Solidity:数据存储位置
在 Solidity 中,有三种数据存储位置:storage、memory 和 calldata。这三者的差异主要在于它们的数据保存位置和存储周期。
孟斯特
2024/05/28
3310
Solidity:数据存储位置
以太坊智能合约安全开发建议
请求不可信的合约时可能会引入一些意外风险或错误。在调用外部合约时,外部合约或其依赖的其它合约中可能存在恶意代码。因此,每个外部合约的请求都应该被认为是有风险的。如必须请求外部合约,请参考本节中的建议以最大程度的减小风险。
Tiny熊
2020/12/29
1.2K0
Solidity:常用数据结构
在 Solidity 中,有各种各样的数据结构可用于组织和处理信息。以下是一些最常用的数据结构。
孟斯特
2024/05/28
1530
Solidity:常用数据结构
​使用Solidity和Ethereum开发智能合约的详细教程
智能合约是一种在区块链上执行的自动化合同,由Solidity编程语言编写。Ethereum是一个开源的区块链平台,支持智能合约的创建和执行。在这篇博客中,我们将详细介绍如何使用Solidity和Ethereum开发一个简单的智能合约,包括合约的编写、部署和交互。
Echo_Wish
2023/12/29
5701
深度解析Solidity的17个坑及超详细避坑指南
以太坊智能合约的一个特点是能够调用和使用其他外部合约的代码。合约也通常可以处理以太币,因此往往会将以太币传送到各种外部用户的地址。调用外部合约或将以太币发送到一个地址的操作,要求合约提交一个外部调用。
辉哥
2018/08/22
3.7K0
深度解析Solidity的17个坑及超详细避坑指南
Solidity:合约继承
在Solidity中,继承是一种使一个合约可以获取另一个合约的属性和方法的方式。这是一种代码复用的方法,可以使你的代码更加模块化,更易于理解和维护。
孟斯特
2024/05/28
1860
Solidity:合约继承
相关推荐
Solidity:call 和 delegatecall
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档