Press "Enter" to skip to content

垂直领域的概念标签建设技术实践

本站内容均来自兴趣收集,如不慎侵害的您的相关权益,请留言告知,我们将尽快删除.谢谢.

 

概念(Concept)蕴含着世界知识,指导着人类认知的发展,具有抽象性,概括性等特点。

 

标签的挖掘和标签体系建设也是一个重要的研究问题,尤其是针对UGC/PGC文档的处理更为实用和重要。但是目前的工作主要集中在综合领域的文档中的概念提取,垂直领域的概念标签挖掘的工作相对较少。

 

另外从推荐系统 使用概念标签角度来说,要求概念标签必须要和用户兴趣及用户认知相匹配,所以直接从文章或者百科中抽取普通、粒度粗、表层的概念,会和用户认知和兴趣相抵触,不利于在推荐系统中的应用。 举个例子: 别克 GL8 是个 “ mpv ” (一个普通的概念),用户更感兴趣的可能是, “省油的 mpv ”或者“进口 mpv ” 。 另外针对垂直领域的特点,只是简单抽取表层的概念,也会和用户的认知相悖。 举个例子: 丰田普拉多是个“越野车”(是个表层的概念),用户在专业汽车领域的 APP 里面感兴趣的更可能是,“适合山路越野的 suv ”或“硬派 suv ”,这样深层或者专业的概念。

 

从UGC/PGC等物料中挖掘概念标签并构建标签体系是内容理解的一个重要工作。如下图所示,一般来说内容理解可以按照抽象的程度划分为业务层、抽象层、细粒度层,每个层次都会产出一些语义结果。分类和主题直接和业务侧强耦合,细粒度层则显得语义跨度更加大同时也更加分散,概念标签、话题、需求则处于两层之间,构成了抽象层。

 

 

在推荐中,标签(Tag)被定义为能够代表文章语义的最重要的词或短语,相比于分类和主题,是更细粒度的语义。标签可以认为是推荐系统的“血液”,作用于推荐系统各个环节,多样性打散,画像维度、排序模型特征、召回模型特征等。

 

介于篇幅原因,本篇文章主要介绍概念标签挖掘相关的工作,阐述期间遇到的问题和解决方案。概念标签的文档打标模型则留待下一篇再做介绍。

 

候选概念标签挖掘

 

这部分会阐述候选概念标签挖掘的三种方法,以及遇到的问题和解决方案。

 

为了使挖掘出的概念标签符合用户认知和兴趣点,我们选择从query日志中挖掘候选的概念。其中挖掘方法包括一种无监督策略,半监督方法,另外也尝试了有监督的方法。

 

先举一些例子,展示我们从query中挖掘出来的概念。

 

 

再看下候选概念挖掘的整体框架

 

 

1、基于模式匹配的无监督挖掘方法

 

这种方法主要是针对query,目标是从query中抽取符合模式的概念。这样做的好处有两个a)因为是用户输入的query,所以抽取的概念词或短语更符合用户认知。

 

b)可以根据query的频次和点击率,筛选出用户感兴趣的词,并界定概念标签的粒度。

 

举个例子,“适合山路越野的车”这个概念可以进行缩放得到上下位词。它的上位词可以是”越野车”,下位词可以是“山路越野suv”。假如“适合山路越野的车”这个概念相比于其他两个概念频次更高,那幺我们认为这个概念的粒度更符合用户的兴趣点和认知。

 

如流程图的最左边所示,这种方法首先基于预定义的patterns抽取concepts。比如“最XXX的车”,“适合XXX的车”。可以通过这个模式抽取出一些概念,比如“最便宜实惠的车”中的“便宜实惠的车”,“适合露营的小车”中的“适合露营的车”。

 

但是预定义的patterns毕竟是有限的,我们还需要基于已有的concepts发现新的patterns。这里面可以分为两种方法:

 

第一种方法是基于机器的方法去发现新patterns。

 

首先我们根据已经挖掘到的概念“便宜实惠的车”和“适合露营的车”,来找出来所有包括这些概念的query,

 

然后从这些query里面找到新的pattern。比如“便宜实惠的车”可以匹配到“比亚迪有便宜实惠的车吗”可以找到“有XXX的车”这样的新pattern。然后通过新的pattern匹配得到新的concept。

 

这里面有个关键点是如何评估新pattern是否可用,既要保证pattern具有一定的泛化性,否则匹配到极少的query没有意义;又要保证pattern不会太宽泛,导致匹配的query过多。举个例子比如说“xx车”就是一个过于宽泛的模式,在语料中能匹配到20%的query。在实践中,对于新模式P,会计算P匹配到的query的覆盖率a,当a处于某个区间时,才会将P加入到模式库中。

 

第二种方法是基于品牌和车型去发现新patterns。

 

首先我们找出所有包含品牌和车型的query,

 

然后将品牌和车型进行mask,

 

最后将mask字符替换后从剩余的query中抽取concepts。举个例子,如下图所示我们使用这种方法可以得到概念“夜晚氛围灯”和“改装航空座椅”。

 

 

最终该 方法从最近 一段时间 的 query 中获取到 若干个 concept ,经过人工评估之后, 显示此种方法的 concept 的挖掘 准确率还是不错的。

 

2、基于AutoPhase的半监督挖掘方法

 

基于模式匹配的方法的优点是准确率较高,符合用户认知和兴趣,比较容易界定concept的粒度问题。但是缺点也很明显,依赖人工校准pattern,产出的concept不够多,并且由于用户输入会导致抽取的concept存在语序颠倒,过于口语化等问题。鉴于此,我们使用了AutoPhase的方法从点击率和曝光率较高的文章Title中抽取concept。

 

AutoPhase是韩家炜团队提出的自动短语抽取框架。该框架独立于领域,只需要很少的人力或者语言分析,并包含了一种远程短语质量估计训练方法,提高了短语抽取的质量。

 

AutoPhase方法的整体流程

 

 

如上图所示,AutoPhase根据远程监督的方式抽取phrase candidates。根据wiki的词条和文档筛选出适合做短语的正例作为Positive Pool和不适合做短语的负例作为Noisy Negative Pool。由于正例是wiki词条,所以比较准确,而Negative Pool中则存在噪音,所以文中提到使用集成学习的方式降低噪音。

 

 

具体实现方式是,构建多组基本的分类器,分别从Positive Pool和Negative Pool中随机抽取出K个candidates。为了尽可能低的降低训练误差的基础分类器,构建一棵未进行剪枝的决策树的方式,当在perturbed training set中没有两个positive和negative phrase共享相同的特征值时,我们认为此时的决策树可以达到100%的训练准确率。最后通过ranking的方式输出排序的结果。

 

可以看下AutoPhase方法抽取的concept。

 

 

AutoPhase原始方法是使用wiki语料构建正负例,在这里我们改成方法1中得到的concept作为正例添加到Positive Pool,把包含concept的文章经过分词和POSTag处理后的token序列随机选择之后,作为负例添加到Negative Pool中。

 

最后,AutoPhase的结果虽然是可用的短语,但可能不适合作为concept。比如“高冷女神”,“比亚迪汽车”。

 

首先我们使用一些规则可以排除,比如检测是否包含品牌车系,首尾词的词性,短语长度,分词后包含token个数等等。

 

其次我们使用语义的方法,对于抽取的短语P,可以利用语义相似性得到相关的query,然后根据query的频次进行筛选。

 

最终我们利用 AutoPhase 框架从最近 一段时间 的高点击率文章 title 中 抽取了大量的 multi 短语,利用上述方法 经过 筛选,最后得到 concept (不包含方法 1 产生的 concept ),经过人工评估之后, 此种方法的 concept 的可用率比较高 。

 

3、基于NER有监督的方法的尝试

 

上述两个方法优点很明显,只需要少量人工,不依赖大量的标注数据。 但是缺点也比较明显,准确率较低,产生的结果不能直接作为 concept ,需要规 则过滤。 所以如果我们考虑使用端到端的模型抽取 concept 。

 

我们的思路是利用NER的方法去抽取concept。采用BIO标签体系,为concept所在的token预测BIO标签。我们主要在几个方面做了微创新。

 

一个方面是监督数据的构造。NER模型训练数据如果用人工来标注,成本很高,也比较耗费时间,所以我们监督数据来源是前两种挖掘方法的结果,训练数据构造如下:

 

 

首先我们挖掘的有concept和query的映射关系,以及query和title的点击数据。这样我们就得到了concept和title的对应关系,所以在构造数据时把concept对应的token当做实体,标记为B标签和I标签,其他词作为标记为O。

 

在模型训练方面,我们采用经典的预训练模型Bert-CRF做finetune,模型结构如下:

 

 

这里面有个trick,需要为bert和crf两层设置不同的学习率,让crf层充分学习到标签的概念分布,如果设置相同的学习率,会减弱crf层矫正标签的作用。

 

最终这种方法的标签产出率相比上述无监督和半监督方法稍高,准确率也有所提升。

 

4、标签重复问题

 

在整理标签库和标注打标训练数据时,我们发现了这个问题。这个问题会有两个表现。

 

a)同一个概念有两个不同的tag,比如“好看的车”和“颜值高的车”

 

b)两个概念之间有isA的关系,比如“适合长途的车”和“适合高速跑长途的车”。

 

这个其实属于标签库整理的问题,标签重复不仅会造成标签库冗余,还会造成后面打标时指标计算不准的问题。所以必须解决标签重复问题。

 

首先分析问题的来源,一个原因是由于我们的抽取语料来自于query,这就导致同一个概念不同的用户会有不同的表达方式。另外一个原因是由于我们在抽取的时候只判断候选concept是否准确,而忽略了和其他concept的关系。

 

针对这个问题,我们采用了两种解决方法。

 

 

解决方法一:利用编辑距离和同义词,筛选出来包含同义词或者词序不同的concept pair。比如“内饰色是白色的车”和“白内饰的车”可以计算编辑距离。“适合家庭自驾游的车”和“适合全家自驾游的车”可以利用word embedding计算相似度。

 

解决方法二:利用句子的语义相似性,筛选出来语义相似的concept pair。比如“适合个子小女孩子的车”和“适合矮个子女孩子的车”,利用simbert模型计算句子的语义相似度。

 

经过筛选,最终我们得到没有重复的概念标签。

 

本文介绍并实践了概念标签的挖掘的通用方法和技术方案,总共有基于模式匹配的无监督方法,基于AutoPhase框架的半监督方法、基于NER的有监督方法,并阐述了三个方法之间的关系和实际效果。另外针对垂直领域的特点介绍了所做的优化,也对标签重复等实际问题介绍了解决方案。下期主要介绍下概念标签打标的相关方法。

 

讲师介绍

 

 

李省委

 

智能数据中心-智能推荐部,一直从事NLP相关工作,目前负责内容理解的标签建设相关工作

 

Be First to Comment

发表回复

您的电子邮箱地址不会被公开。