之前,我曾经觉得不去停词也可以。这两天试做特征选择,才意识到去停词的重要性。
一个包含984个实例的中文文本训练集(含数字和英文字母单词等),竟然有3500多个特征,做一次Greedstepwise的特征选择用了14个小时还没有结果。
我决定必须去停词,而且打算使用大停词表。
处理如下:
(stopword.is(word)|| word.length()<2||word.charAt(0)>='0'&&word.charAt(0)<='9'
||word.charAt(0)>='a'&&word.charAt(0)<='z')
其中stopword是用的weka的Stopwords类,停词表是去掉单字的哈工大表。
确实去掉了很多词。但对1084个中文文本实例进行分析,仍然有4880个特征。对分词后的训练集进行特征选择(filter),发现耗费时间的主要是调用evaluateSubset 处理非数字字段,weka文件名 CfsSubsetEval.java。而且,处理速度一开始还挺快,越来越慢,到1000个特征以后就几乎慢得1秒一个了。
开始怀疑是IK的分词效果不好,换了JE,结果竟然完全一样,一个数都不差!这可怎么办?
https://blog.sciencenet.cn/blog-713110-569413.html
上一篇:
Weka中的特征选择(Attribute selection)下一篇:
一个分类模型的评估数据