3

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

 1 year ago
source link: https://www.51cto.com/article/718388.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

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

原创
作者: 之家技术 2022-09-08 21:09:50
本文介绍并实践了概念标签的挖掘的通用方法和技术方案,总共有基于模式匹配的无监督方法,基于AutoPhase框架的半监督方法、基于NER的有监督方法,并阐述了三个方法之间的关系和实际效果。

概念(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的有监督方法,并阐述了三个方法之间的关系和实际效果。另外针对垂直领域的特点介绍了所做的优化,也对标签重复等实际问题介绍了解决方案。下期主要介绍下概念标签打标的相关方法。

责任编辑:庞桂玉 来源: 之家技术

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK