微博feed流nlp

难点与问题

  1. 博文较短且容易图文无关——主题模型不适用
  2. 语言随意化——不能从语法结构入手
  3. 用户搜索行为序列不好获取
    文本简短,页面中能看到全文,没必要点击。从停留行为来看,由于一页展示多条博文,也不能准确定位用户感兴趣的是哪条微博。
  4. 用户 feed 行为序列不能准确获取
    用户停留在 feed 流的页面中,不能准确区分哪条微博为用户感兴趣的。部分高点击的博文是由于用户想查看图片的内容才点击进入微博的正文页,但是这样的点击不能代表用户对该博文感兴趣

结论:
综上所述,目前的微博场景很难获取十分准确的用户行为序列 ( 用户行为序列包括展示页,点击,停留,转发,评论,赞,收藏等 ),导致使用 LDA/PLSA 主题的方式用户行为序列方式建模效果都不太好。

标签系统

博文标签

一级标签:对应频道,例如财经,法律,IT 产业,军事,历史,美食等标签。

二级标签:一级标签 “财经”,包含的二级标签:投资,众筹,货币,股票,保险,债券,基金,贷款,美股等。

如何打标签?
目前分类系统使用 fasttext+bert 结合的方案,是由于 bert 效果好,而 fasttext 性能好。我们有如下的方案:针对关注度高 ( 明星 ) 和高质量的博文使用 bert,其他的博文先过一遍 fasttext,若标签得分高于阀值 ( 95分 ),则不再使用 bert 进行处理;若最高得分只有70分,那么使用 bert 再预测一次。Bert 是一种多层的编码器,最近的研究表明,bert 不同层的 embedding 捕获到了不同的句子知识。比如底层 embedding 捕获到词法方面特征,中间层 embedding 捕获到句法特征,高层 embedding 捕获到语义特征。因此,我们对 bert 的结构做了优化,使用对各层 embedding 加权后获得的 embedding 作为整个博文的表征,后续的博文质量模型也是这种做法
在这里插入图片描述

实体标签

实体标签在我们的场景中也叫三级标签,实体标签的来源:人工收集、微博热搜 query 和模型识别。如下图可看到一二级标签和实体标签之间的关系
在这里插入图片描述
模型如图结构所示,首先经过 bert 层输出每个词对应每个序列标注的概率分布,再经过 crf 层输出最终的标注结果。而这些序列标注的训练数据是由人工标注的。
在这里插入图片描述

关键词标签

关键词来源为两块:名词短语和用户 query。这是由于博文的文本较短所决定的 ( 90%以上都是100个字符以内 ),使用传统的主题模型方式并不奏效。有 Stanford NLP、哈工大 LTP 和 HanLP 等工具包可以获取句子的依存句法

名词短语

我们提取关键词短语有如下规则:

  1. 名词短语在多个句法 parser 中,在同一个 chunker 下,例如 “击剑比赛” 三个工具输出都是同一个 chunker。

  2. 长度大于等于三个字以上的名词,长度小于 L 的名词短语,不宜太长 ( 实际操作中长度不超过6 )。

  3. 名词短语边界与分词结果兼容,否则名词短语及名词短语所在同一 chunker 的短语不能作为候选 。例如我们使用 Stanford NLP 依存句法结果与一个分词结果做兼容,依存句法结果:香农/在/信息论/中/把/信息/熵定义/为/自/信息/的/期望 ,分词器的结果:香农/在/信息论/中/把/信息熵/定义/为/自信息/的/期望。

可得到如下结论:

  1. “信息论” 依存句法和分词都是同一个词说明兼容;

  2. “信息熵定义” 依存句法分割为 “信息” 和 “熵定义”,而分词结果为 “信息熵” 和 “定义”,这两个切分的边界不一致。即依存句法边界在信息、熵的中间,而分词边界在熵、定义中间说明与分词不兼容。若依存句法为信息/熵/定义,那么熵、定义是拆开的,边界算是与分词保持一致,那么 “信息熵” 则与分词结果兼容;

  3. “自信息” 依存句法为/自/信息/,分词结果为/自信息/,这里虽然依存句法自、信息被拆开了,但是与分词结果 “自信息” 是兼容的。

  4. “信息熵定义”,依存句法结果为/信息/熵定义/,分词结果为/信息熵/定义/,因为分词结果/信息熵/定义/是拆开的,并且依存句法拆分不一致所以与分词结果不兼容,除非依存句法与分词结果拆分一致都为/信息熵/定义/,那么才说明与分词兼容。

用户 query

  1. Query 必须为高频

  2. 需要限制长度,不易太长

  3. 另外,query 会存在边界错误的情况。可使用新词发现的方式,通过左右信息熵和紧密度进行噪音过滤。

query匹配算法
在这里插入图片描述
ac自动机效率最高
在这里插入图片描述
在这里插入图片描述
使用匹配算法和分词验证兼容性得到以上关键词,其中天龙八部、新笑傲江湖等是和电影相关的词,但是与博文中的主题相关性不一致 ( 主题是旅游 ),由于关键词需要映射到用户画像上来统计用户兴趣,这些词不能代表用户的偏好。
标签与博文的相关性计算流程为:获取文本向量 -> 向量相似度计算 -> 设置阈值过滤标签。其中,我们使用 bert 获取文本向量,博文和标签 ( 关键词 ) 分别以字的形式输入至 bert 模型中,对模型最后一层的每个字相加求均值,效果最好 ( 不同文本相似度计算任务向量取法有所区别,有的任务取最后一层 cls 的向量效果较好 )。我们用于计算相似度的 bert 模型是基于博文的分类 fine-tuning 结果的模型
在这里插入图片描述

发布了79 篇原创文章 · 获赞 8 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/qq_34219959/article/details/103895842
今日推荐