微博相关性筛选算法
本帖最后由 0x55AA 于 2015-1-24 10:44 编辑关于微博的分类算法,可以采用机器学习的方法,比如支持向量机,亦可以采用词典匹配法。
支持向量机:
在一些情况下的确能够取得一定的效果,但是缺点也很明显。首先它要获取特征向量,特征向量的数目以及选取方法也对最后的分类效果起着重要的作用,所以这又涉及到了一个特征向量选取的重要算法;其次支持向量机需要样本进行训练,如果没有已经标记过的样本的话,依靠我们手工去标注,这无疑会把大量的时间浪费在人工上而不是依靠计算机的计算能力;最后,支持向量机不是万能的,当我们要进行行业相关性的判定时,即便我们提取了上千个特征向量,但是相对一个行业的浩瀚术语来讲依然是杯水车薪,这个时候如果用支持向量机的方法会造成很多相关的文本的特征向量全部是0,或者相关的特征向量微乎其微,误判就会在这个时候发生了,所以此时采取机器学习的方法就不是最理想的选择。
词典匹配算法:
词典匹配算法可以说是最原始的文本分类算法,它的原理是要建立起一个分类词典,然后提取每个样本中的词汇与分类词典中的词汇匹配,根据匹配的程序来判断分类。虽然词典匹配算法可以说是原始,但是原始的算法未必就不是最佳的算法,就以此项目中的微博相关性分类来说,首先每个微博的长度都是很短的,不超过140个字,平均来说就是说最多70个词语,很多微博仅仅一句话,词语数目就更加短了,所以微博要表达的核心思想就体现在了微博中的那些关键词上;其次对于中医相关性来说,中医术语浩瀚如海,包括中医的各种治疗方法,中草药种类,这些词汇就数以上万,如果采用机器学习的方法,特征向量就会极其的多,会导致计算速度非常缓慢,其次即便采用特征向量权重筛选的方法,去除那些权重小的特征向量,那么就会在分类时大量的误判;再次更加严重的问题是,我们 的正面样本特好说,特征向量可以提取,但是负面样本呢,跟中医无关的事情太多,特征向量更不用说怎么提取了。综上所示对微博的相关性采取词典匹配算法。
算法的核心思想:
建立起中医词库,分词,计算文本权重,判断
中医词典的建立:幸亏互联网丰富的资源,在网上搜索百度拼音,QQ拼音,搜狗拼音,利用他们丰富的词库资源,从中寻找跟中医相关的词库,如:中医药,中医治疗手段,医学,等等,利用词汇转换工具将他们转换成自己想要的格式,这样就初步建立起了词典库,再利用Set容器去除词典中的重复词汇,这样词典就初步建立起来了。
分词:汉语文本分类跟英语相比最大的一点不同就是汉语要进行分词,关于分词,我们可以自己写分词算法,亦可以采用开源的分词算法。在分词的时候要把之前建立的词典给加上,这样会提高分词的准确度,毕竟分词的好坏决定着分类好坏的上限。
文本权重计算:我们不能一视同仁的对待每个词汇,对于有些词汇,一旦出现我们就可以判定它是中医相关的,比如说“黄帝内经”,一条词汇那么少的微博,出现这么专业的一个中医词汇,我们当然要判断它是中医相关的了。所以除了建立一个中医词典外,我们另外还建立起了一个特殊词汇权重词典,对于这些特殊词汇,我们把它的权重设为20 ,其他一般的词汇权重则设为10。进行计算的时候,获取每个文本的权重值,通过设置的权重阈值,当大于等于这个阈值的时候我们就判断它是相关的,否则就是无关的。 百度的“其他人还搜”就是坨翔
页:
[1]