Feature Selection(特征提取) 单纯高信息量unigram与参考情感词典词汇对比

本文探讨了在情感分析中,使用卡方统计法提取高信息量的unigram作为特征,发现特征数量与算法性能的关系。通过对比,发现在一定范围内增加特征数量可提升性能,但过多可能导致性能下降,特别是KNN算法。为提高性能,作者尝试使用情感词典对特征进行筛选,只保留与情感词典匹配的词汇。然而,实验结果显示,这种提纯后的特征在大多数分类器中导致性能下降,尽管某些分类器如NBM和SMO的部分类别对比例有所提高,但总体效果并不明显。这表明在特征选择上需要更加谨慎。
摘要由CSDN通过智能技术生成

在之前的实验中我使用卡方统计法,提取语料库中单词信息量最高的1000 2000 3000词不等。

之后发现大部分算法还是需要一定的features量,也就是 在一定范围内(如 1000~3000)提取的词汇越多,classifier性能越好。达到一定峰值后 性能会下降。

只有Knn算法出现了与众不同的现象,features越大,性能有呈现下降趋势。其本身性能也不是很好,所以没给予更多关注。

后来想提高算法性能,于是打算先从已有的features下手。导师建议我去review一下提取的unigram,看里面是个什么情况。简单浏览一下发现,很多词汇是没什么情感色彩的名词,这些词汇似乎对情感分析没有帮助,而且有可能起到负面作用。于是想试下提纯features。 导师推荐了用情感词典做为参考。

于是做了一个筛选:如果选出来的features在情感词典中 那么保留,如果不在,丢弃。

import itertools

    
line = []
share_words = []    
inpfile = open("my_features.txt", "r")   # 提取的features,可多提取一些,如8000个 best_words         
line1 = inpfile.readline()
my_features = []
while line1:
    word1 = line1.strip()
    my_features.append(word1)
    line1 = inpfile.readline()
inpfile.close()




inpfile = open("lexicon.txt", "r")            # 情感词典
line2 = inpfile.readline()
lexicon = []
while line2:
    word2 = line2.strip()
    lexicon.append(word2)
    line2 = inpfile.readline()
inpfile.close()


for w in my_features:
    if(w in lexicon):
      
        line.append(w)
        share_words.append(line)


f1=open('shared_words.txt','w') # 写入到文件(此例子中为1662个shared features)
words = share_words
words = list(itertools.chain(*words))

for item in words:
   
    f1.write(item+"\n")  #k
f1.close()


这样处理后再用weka进行

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值