主题模型
2016-07-11 14:23
169 查看
首先,需要对英文文本做一些预处理工作,譬如去停用词,对文本进行tokenize,stemming以及过滤掉低频的词
然后,通过这些文档抽取一个“词袋(bag-of-words)“,将文档的token映射为id,然后就可以 将字符串 转换为用id表示的文档向量
{‘a’: 0, ‘damaged’: 1, ‘gold’: 3, ‘fire’: 2, ‘of’: 5, ‘delivery’: 8, ‘arrived’: 7, ‘shipment’: 6, ‘in’: 4, ‘truck’: 10, ‘silver’: 9}
[[(0, 1), (1, 1), (2, 1), (3, 1), (4, 1), (5, 1), (6, 1)], [(0, 1), (4, 1), (5, 1), (7, 1), (8, 1), (9, 2), (10, 1)], [(0, 1), (3, 1), (4, 1), (5, 1), (6, 1), (7, 1), (10, 1)]]
有了这些信息,我们就可以基于这些“训练文档”计算一个TF-IDF“模型”,用tf-idf值表示的文档向量:
有了tf-idf值表示的文档向量,我们就可以训练一个LSI模型,我们设置topic数为2:
lsi的物理意义不太好解释,不过最核心的意义是将训练文档向量组成的矩阵SVD分解,并做了一个秩为2的近似SVD分解,有了这个lsi模型,我们就可以将文档映射到一个二维的topic空间中:
把文档建立成索引
最后就是计算其和index中doc的余弦相似度了
lda模型中的每个主题单词都有概率意义,其加和为1,值越大权重越大,物理意义比较明确,不过反过来再看这三篇文档训练的2个主题的LDA模型太平均了,没有说服力。
然后,通过这些文档抽取一个“词袋(bag-of-words)“,将文档的token映射为id,然后就可以 将字符串 转换为用id表示的文档向量
{‘a’: 0, ‘damaged’: 1, ‘gold’: 3, ‘fire’: 2, ‘of’: 5, ‘delivery’: 8, ‘arrived’: 7, ‘shipment’: 6, ‘in’: 4, ‘truck’: 10, ‘silver’: 9}
[[(0, 1), (1, 1), (2, 1), (3, 1), (4, 1), (5, 1), (6, 1)], [(0, 1), (4, 1), (5, 1), (7, 1), (8, 1), (9, 2), (10, 1)], [(0, 1), (3, 1), (4, 1), (5, 1), (6, 1), (7, 1), (10, 1)]]
有了这些信息,我们就可以基于这些“训练文档”计算一个TF-IDF“模型”,用tf-idf值表示的文档向量:
有了tf-idf值表示的文档向量,我们就可以训练一个LSI模型,我们设置topic数为2:
lsi的物理意义不太好解释,不过最核心的意义是将训练文档向量组成的矩阵SVD分解,并做了一个秩为2的近似SVD分解,有了这个lsi模型,我们就可以将文档映射到一个二维的topic空间中:
把文档建立成索引
最后就是计算其和index中doc的余弦相似度了
lda模型中的每个主题单词都有概率意义,其加和为1,值越大权重越大,物理意义比较明确,不过反过来再看这三篇文档训练的2个主题的LDA模型太平均了,没有说服力。
相关文章推荐
- mac 安装brew
- MYSQL附近的人设计思路
- Java并发编程:并发容器之ConcurrentHashMap(转载)
- Putty打不开
- ZBrush中保存历史记录太多该如何解决
- 关于语义化标签
- Codeforces Round #361 (Div. 2) 套题
- leetcode.177. Nth Highest Salary
- 如何根据基类指针来判断这个基类是由那个子类转换而来!
- HTML5
- web,视频播放两种方法
- Java ConcurrentModificationException异常原因和解决方法
- UVA - 699 The Falling Leaves 二叉树
- oninput,onpropertychange,onchange的用法
- 字符串-401 - Palindromes
- Hibernate+JPA注解
- PHP 获取中国时间,即上海时区时间
- Javascript数组操作详细解答
- oracle列出两个日期间所有日期
- Mike and Cellphone