[关闭]
@elibinary 2017-10-14T05:13:25.000000Z 字数 2238 阅读 2041

主题模型开源项目 - baidu/Familia

MachineLearning


前段时间百度开源了一个 NLP 领域的一款主题模型项目,就是 Familia 了。Familia 开源项目主要包含文档主题推断工具、语义匹配计算工具以及基于工业级语料训练的三种主题模型:Latent Dirichlet Allocation(LDA)、SentenceLDA 和Topical Word Embedding(TWE)。

你可以使用工具包中所提供的方法来进行文本分类、文本聚类、个性化推荐等多种场景的调研和应用。不过目前只开源了新闻、网页和小说主题的模型。

主题模型(Topic Model)

主题模型在机器学习和自然语言处理等领域是用来在一系列文档中发现抽象主题的一种统计模型。最常见的主题模型便是 LDA 了,LDA 允许文档拥有多种主题。其它主题模型一般是在 LDA 基础上改进的。

说会文档模型,对于文档如果以词袋的形式来表示,那么其维度将可能会数千数万,常用主题模型对其进行降维,简单来说就是如果我们指定主题模型的主题个数为 k 个,然后通过训练得到这 k 个主题,那么就可以把文档从词项空间变换到主题空间,使用主题来生成文档的表达。
我们使用主题模型对文档的生成过程进行模拟,再通过参数估计得到各个主题。

这样说可能不太容易理解,下面举个例子:
假设我现在有一堆文档(语料),通过对这些语料进行分词等操作后得到了词袋,我们能够通过词袋来对文档进行细化的表达,也就是把其看做是一个词项空间,而每一个文档在这个空间中都有一个特定的表示(词向量)

比如现在有这两个文档:

  1. 1. John likes to watch movies. Mary likes movies too.
  2. 2. John also likes to watch football games.

他们就可以在

  1. [
  2. "John",
  3. "likes",
  4. "to",
  5. "watch",
  6. "movies",
  7. "also",
  8. "football",
  9. "games",
  10. "Mary",
  11. "too"
  12. ]

这个词项所组成的空间中得到表达

但是这样子这个空间的维度就可能会非常的高,想象下假如有成千上万的词项,那么接下来就是怎么对其进行降维了

我们假设目标预料有 k 个主题,然后通过训练来得到这 k 个主题,每个主题其实都是有 n 个相关的词项构成,可以预见 k 会远小于词项的个数,这是使用得到的主题来对文档进行表示就能得到低纬度的主题空间的文档表示。

主题模型先介绍到这里,接下来接着来看百度开源的 Familia

Familia

Familia 把主题模型的应用抽象为两大类: 语义表示和语义匹配。

我跑了下它的新闻类主题模型,百度开源的新闻主题模型使用百度新闻数据训练, 词表规模294657, 主题数2000

我从网易新闻上找了几个新闻语料,下面是其一

  1. 请输入文档:
  2. 战术灯(又称战术手电),是指专门安装在枪身上使用的强光电筒,近年来多用于反恐特警部队以及军方特战队在夜间或昏暗条件下瞄准目标。但近日网上放出的一组图片显示,战术灯的历史恐怕要比手电筒(19世纪末才问世)都要久远。
  3. Document Topic Distribution:
  4. 1522:0.333333 1214:0.166667 133:0.111111 524:0.100000 1144:0.044444 1669:0.044444 493:0.038889 1072:0.038889 431:0.027778 196:0.016667 1173:0.016667 77:0.011111 161:0.011111 262:0.005556 772:0.005556 953:0.005556 1167:0.005556 1310:0.005556 1478:0.005556 1772:0.005556

程序会输出稀疏化的主题分布,其中主题是用编号的方式表示,便是其中 [1522, 1214, 133, ...]

其中也提供了相应模型的主题词结果

  1. 请输入主题编号(0-1999):1522
  2. --------------------------------------------
  3. 市委 0.255428
  4. 书记 0.233813
  5. 常委 0.108936
  6. 省委 0.0808627
  7. 中共 0.0416329
  8. 市长 0.0213728
  9. 同志 0.0212068
  10. 政法委 0.0191149
  11. 组织部 0.017748
  12. 领导 0.0107506
  13. 请输入主题编号(0-1999):1214
  14. --------------------------------------------
  15. 留学 0.153357
  16. 留学生 0.076637
  17. 出国 0.0765076
  18. 回国 0.0450079
  19. 大学 0.0260389
  20. 国外 0.0181784
  21. 海归 0.0172521
  22. 专业 0.015575
  23. 申请 0.015296
  24. 学生 0.015031

其中我只展示了主题的前10个最重要的词

需要注意的是,由于采用文档内的Bag-of-Words假设,一篇文档内的单词可以交换次序而不影响模型的训练结果,也就是认为单词之间是相互独立的。在 LDA 的一些派生模型中,一些可交换性会被打破,以便构造相应的模型。

上面说过,通过主题模型将以词项空间表达的文档变换到新的主题空间,得到一个以主题为坐标的低维表达,该表达也就是文档的主题概率分布。得到的新的表示形式其实也可以针对查询,应用在信息检索中。

模型相关论文 - LDA/Sentence LDA/TWE

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注