友盟:以自动生成汪峰老师歌词为例浅谈文本分析方法

2016-03-29 14:44:46 |发布者: 安智宝

Keywords: topic model

前一篇中,我们讲解了在有标签体系的前提下,如何给 APP 打上相应的标签,其实我们还可以根据文本本身来自动生成标签。安卓刷活跃

这种自动生成标签(关键词)的方法很多,一种方式可以根据 tf-idf, text rank 等算法提取关键词,另一种方式则可以根据 topic model 来生成。Topic model 如果展开谈,可能需要从 lsa 说到 plsa,然后再说到 lda,涉及的东西太多,有兴趣的同学可以参考文末的参考资料深入学习。本篇文章里,我们只用一个例子简单解释一下。

有一位网友统计了汪峰老师在大陆发行的 9 张专辑中 117 首歌曲的歌词,同一词语在一首歌出现只算一次,形容词、名词和动词的前十名如下表所示(词语后面的数字是出现的次数):手机广告

a

形容词

b

名词

c

动词
0

孤独:34

0

生命:50

0

爱:54
1

自由:17

1

路:37

1

碎:37
2

迷惘:16

2

夜:29

2

哭:35
3

坚强:13

3

天空:24

3

死:27
4

绝望:8

4

孩子:23

4

飞:26
5

青春:7

5

雨:21

5

梦想:14
6

迷茫:6

6

石头:9

6

祈祷:10
7

光明:6

7

鸟:9

7

离去:10

如果我们随便写一串数字,然后按照数位依次在形容词、名词和动词中取出一个词,连在一起会怎么样呢?

例如取圆周率 3.1415926,对应的词语是:坚强,路,飞,自由,雨,埋,迷惘。稍微连接和润色一下:

坚强的孩子,

依然前行在路上,

张开翅膀飞向自由,

让雨水埋葬他的迷惘。

有没有感觉?其实,以上方式类似于模仿汪老师创造一首歌的过程:首先选择创造的主题,然后根据选择的主题,选择相应的 Keywords,然后让歌词变的通顺。应用宝下载

上面根据汪老师的主题风格,我们创作了一首歌。其实我们更关心的是如何得到这些主题,这就是 topic model 所要解决的问题。

下式中,d 表示文档,w 表示词语,z 表示隐含的主题。

其中 p(w|d) 表示 w 在文档 d 中出现的概率,p(w|z) 表示主题 z 下词语 w 出现的概率,p(z|d) 表示文档 d 中主题 z 出现的概率。所以主题模型就是利用大量已知的 P(w|d),训练出 p(z|d) 和 p(w|z)。

对应上面汪老师的例子就是,我们有很多汪老师写的歌曲,可以计算出 p(w|d),即汪老师每首歌每个歌词出现的概率。比如 p(w=迷惘|d=这首歌) = 0.2。然后根据主题模型,可以求解出 p(z|d),即汪老师某首歌包含某主题的概率,如 p(z=感情|d=这首歌) = 0.1,以及 p(w|z),即每个主题下的歌词出现的概率,比如 p(w=生命|z=事物) = 0.3。

对应上篇我们 APP 自动生成标签的例子,可以训练出如下主题及其关键词。试试看,通过关键词是否可以大体猜出 APP 的类别呢?友盟打包工具

topic #24 : 0.017三国 + 0.014敌人 + 0.014战斗 + 0.013角色 + 0.010人物 + 0.010主角 + 0.009武器 + 0.009画面 + 0.009场景 + 0.009玩家

topic #18: 0.077宝宝 + 0.041孩子 + 0.032儿童 + 0.024学习 + 0.016能力 + 0.015教育 + 0.014系列 + 0.012产品 + 0.012儿歌 + 0.012设计

参考资料

  • 汪峰老师例子参考自 Sina Weibo @于弦cos:http://weibo.com/fishcosine
  • 沈志勇,主题模型简介(PPT):http://dwz.cn/2kC5Av
  • 概率语言模型及其变形系列:http://blog.csdn.net/yangliuy/article/details/8330640
  • lda数学八卦:http://www.flickering.cn/tag/lda/


联系客服

Copyright © 2016 - 2020 anzhibao.com . All Right Reserved.

安智宝  版权所有