但是我觉得你的问题是一个比较明显的短文本聚类问题,这个问题应该在国际上都是比较难的吧。
如果还涉及到中文,中文的相关处理又不能照抄英文短文本聚类的方法,相关资料更加少了。
我倒是建议你 多看一些短文本聚类相关的文章。
问题一:技术上python矩阵表示的话:你可以使用python包,如下:
from numpy import matrix
A = matrix( [[1,2,3],[11,12,13],[21,22,23]])
这样你需要额外规定化:行i表示文档编号i的文档,列j表示词j出现次数,A[i][j]表示在文档i中词j的出现频率
或者
如同那篇文章所说的采用dict表示法:A = [{'额外':1},{'每天':1,'回帖':1},......]表示整个文档集合。
问题二:如同这样的问题本质一样,短文本聚类是否还适合传统的分词,去除副词...等处理步骤,
如何选择合适的模型来表示这类问题,我觉得你还是参考一些这方面的文章,最好中文的。
比如现在很火的微博,也会有好多的人尝试对其中成干上万评论进行聚类。很多进行二类或者三类聚类/分类:支持-中立-反对。
论坛的评论应该很早以前就有研究聚类/分类.我觉得去那里参考会更好.如果不是特别面向指定目的的聚类,我觉得采用一些使用宽泛的方法就行了。感觉结果不会很好。
问题三:EM算法感觉像纯数学的东西,学术功底不够深,我也不好发表看法。
感觉这个问题的本质已经超出我的知识范畴。最简单文档聚类无非:分词-文本预处理[同义词之类]-文档与词计频矩阵表示-(TF-IDF预处理)-kmeans跑起来-输出结果.
1.numpy的导入和使用data1=mat(zeros((
)))
#创建一个3*3的零矩阵,矩阵这里zeros函数的参数是一个tuple类型(3,3)
data2=mat(ones((
)))
#创建一个2*4的1矩阵,默认是浮点型的数据,如果需要时int类型,可以使用dtype=int
data3=mat(random.rand(
))
#这里的random模块使用的是numpy中的random模块,random.rand(2,2)创建的是一个二维数组,需要将其转换成#matrix
data4=mat(random.randint(
10
,size=(
)))
#生成一个3*3的0-10之间的随机整数矩阵,如果需要指定下界则可以多加一个参数
data5=mat(random.randint(
,size=(
))
#产生一个2-8之间的随机整数矩阵
data6=mat(eye(
,dtype=
int
))
#产生一个2*2的对角矩阵
a1=[
]a2=mat(diag(a1))
#生成一个对角线为1、2、3的对角矩阵