Query热词及文本热点话题挖掘

96
sudop
1.4 2019.03.01 13:06 字数 1254

最近被问到热词挖掘,几种挖掘场景用到的算法思路都比较接近,特整理思路如下,做以后参考。

几个热词挖掘常见场景:

  1. 搜索query热词挖掘
  2. 舆情长文本热词挖掘
  3. 社交短文本的热点话题挖掘

什么是热词?

1.搜索频次大于一定阈值
2.搜索频次在某时间范围内增长迅速

热词挖掘主要步骤

    1. 热词提取
    • 对于长文本场景比如头条文章,新闻等可以使用TF-IDF,textrank算法进行关键词提取。(需要解决分词未登录词问题)
    • 对于微博,评论等短文本场景,可以使用互信息,左右熵进行话题词挖掘
    1. 热度计算
    • 贝叶斯平均法
    • 牛顿冷却法
新词发现算法

在一个单字文本集合中,一个n-gram能够成词的主要因素主要可以通过以下两个维度来判断

凝聚度(互信息)

互信息表示两个随机变量中任意一个变量确定之后对另一个变量不确定性的减少。
互信息的定义如下:

image

可以看出来,互信息是针对随机变量计算一个平均值。在计算机领域,更常用的是点间互信息,点间互信息计算了两个具体事件之间的互信息。点间互信息的定义如下:

image

当 x, y 相互独立时,x 跟 y 不相关,则 p(x , y) = p(x)p(y), PMI 则为0。二者相关性越大,则 p(x , y) 就相比于 p(x)p(y) 越大, 那 PMI 也就越大。因此后面的式子比较容易理解,可以说是表示内部凝聚力。拿 “知”、“乎” 这两个字来说,假设在 5000 万字的样本中, “知” 出现了 150 万次, “乎” 出现了 4 万次。那 “知” 出现的概率为 0.03, “乎” 出现的概率为 0.0008。如果两个字符出现是个独立事件的话,”知”、“乎” 一起出现的期望概率是 0.03 * 0.0008 = 2.4e-05. 如果实际上 “知乎” 出现了 3 万次, 则实际上”知”、“乎” 一起出现的概率是 6e-03, 是期望概率的 250 倍。 这通常被成为凝合度,数值越大表示两个片段一起出现的概率越大。

自由度(左右熵)

熵是一种表示信息量的指标,熵越高就意味着信息含量越大,不确定性越高,越难以预测。通常对于一个随机变量 X, 它的熵可以被表示成:

image

p(x) 表示的是事件 x 出现的概率,在新词挖掘的时候就是一个词出现的概率。

自由度可以理解为该词所处语境的丰富程度,信息熵说明了信息量的大小。那么如果一个词组的左右信息熵越大,即词组左右的可能情况越多,左右的搭配越丰富,则独立成词的可能性越大。

在短文本话题挖掘中则说明这个词组在不同的语境里可讨论的事情越多,越可能可以独立说明一个事件或话题。

热度计算方法
贝叶斯平均法(Bayesian average)

先来理解一下利用贝叶斯统计算法的公式:


QQ截图20160606113934.png-6.2kB

WR是每个词的加权得分,WR越大表示热度越大
R是该词汇的平均得分(这里设定都为1)
v是总词频
m是排名前n的词汇的最低词频(n是自定义的阀值)

牛顿冷却定律

将热词排名想象成一个即自然冷却的过程。可以利用物理学定律,建立“温度”与“时间”之间的函数关系,构建一个“指数式衰减”的过程。
牛顿冷却定律:物体的冷却速度,与其当前温度与室温之间的温差成正比。
若仅仅使用今天与昨天的搜索量对比,时间差为1,最终的冷却系数可以通过如下公式计算:

为了防止除数为0,将公式改为

若冷却系数越低则说明热度就越大

query热词挖掘

搜索query词我们可以不用分词,本身用户在搜索时输入的query可以看成一个完整的词,在数据预处理的时候去除长度超过10的长尾词和单字即可。然后直接可取昨天和前天的query日志进行热度计算。

NLP
Gupao