用深度学习做垂直领域的句子主题模型
经典的篇章级的主题模型LDA已经被证明是行之有效的,这里我介绍一下项目中做过的句子级的主题管理,其目的是识别当前的句子属于某个话题。
我的基本思想是:一句话的中心意思可以用句子主干来表示,多句话的中心意思则可以用每句话的中心意思叠加起来表示。
先看几个例子,以下的句子都是单句,复合句也类似:
- A.我听的歌很好听
- B.我要听很好听的歌
- C.我听歌后心情很好
主干:
- A句的主干是:歌,好听
- B句的主干是:听,歌
- C句的主干是:心情,好
假设我们想识别3类话题:听歌、评歌、其他
简述过程:
1)标注数据
我听的歌很好听==》评歌
我要听很好听的歌==》听歌
我听歌后心情很好==》其他
2)数据处理
使用深度学习提取句子主干模块,生成句子主干:
我听的歌很好听==》歌,好听
我要听很好听的歌==》听,歌
我听歌后心情很好==》心情,好
3)生成主干词表
歌,好听,听,心情,好
4)词嵌入
主干词表使用one-hot表示,然后做词嵌入
5)话题表示
转‘评歌、听歌、其他’为0、 1、 2表示
6)模型
把话题识别看成是多分类问题,模型网络使用Bi-directional LSTM,模型框架使用tensorflow
说明:
1)本文仅使用分词,不用词性、词义、语义等
2)对模型使用同义词,会大大提高模型的鲁棒性。这里的同义词只需要垂直领域中的核心词汇的同义词。
3)“深度学习提取句子主干模块”有空我再上贴详细阐述
4)模型代码我就不上帖了,涉及到x密,大家可以参考“情感分类”的做法
5)对于三个分类中的“其他”分类,可以使用通用语料的数据来抽样自动标注