$ pip install lda --user
示例
from __future__ import division, print_function
import numpy as np
import lda
import lda.datasets
# document-term matrix
X = lda.datasets.load_reuters()
print("type(X): {}".format(type(X)))
print("shape: {}\n".format(X.shape))
print(X[:5, :5])
'''输出:
type(X): <type 'numpy.ndarray'>
shape: (395L, 4258L)
[[ 1 0 1 0 0]
[ 7 0 2 0 0]
[ 0 0 0 1 10]
[ 6 0 1 0 0]
[ 0 0 0 2 14]]
'''
看这个题目很有兴趣,说两句mark一下学习。人在阅读时,不一定预设一个或者几个主题,而是根据词语涉及的场景或者类别逐步进入作者的思路,可能最后一句才发现那只是一段笑话。
LDA的不足我觉得主要有两个,一个是主题桶的数量,一个是词语无序的统计。
改进的思路,一个是把主题桶换成词典,就是把每个词可能的场景或者类别抽取出来分析,发散思维而不是在主题桶里选择。比如:苹果、价格、乔布斯。苹果可能的类别有水果、农业、经济、手机等,与后面的词语类别的重叠和统计,形成主题的神经网络,以后通过AI完善词典不断提高分析效果。
一个是增加对文本顺序的考虑,对剧情内容进行捕捉,通过对前后主题和场景的变化,达到分析剧情的目的。
只是一个思路,仅供参考。
for root, dirs, files in walk:for name in files:
f = open(os.path.join(root, name), 'r')
raw = f.read() #这里缩进对么?是原来就这样还是复制的时候出错了,这样些不就
只读了最后一个文件么,而且如果目录是空的,这个就会有问题吧,f就是为未定义,或者
使用上一次循环的文件,是不是这里引起的?
word_list = list(jieba.cut(raw, cut_all = False))
train_set.append(word_list)