一、原始落后的VSM
网上搜索关键词“短文本 相似度”,出来的结果基本上都是以BOW(Bag of words)的VSM方案,大致流程如下:
分词 —> 提取关键词 —> 计算tf或if-idf,以向量的形式替换原文本 —> 文本相似度的问题转变为计算向量相似度
一开始这样的一个思路,很清晰明了,而且网上相应的资料也很多,然后就开搞吧。
1、把所有短文本去掉标点符号,用jieba分词分好词,去除停用词,得到分好的文本;
2、按一定规则抽取特征词汇,作为后期向量的每一维;
3、用sklearn库中的原生方法CountVectorizer、TfidfVectorizer等得到矩阵;
4、每个短文本计算对应得到的向量,采用K-Means聚类的方法进行非监督学习。
文本分类的大致思路基本上就如上所述,具体的细节调整就视实际情况而定。然而,想法是美好的,现实是残酷的,全部分好词的文本,抽取的特征词较多,即向量的维度较大,且向量是稀疏的,在使用K-Means时,会出现有个别cluster下的文本数量特别大;