我一直在使用 Weka 的 J48 和朴素贝叶斯多项式 (NBM) 分类器根据 RSS 提要中的关键字频率将提要分类为目标类别。
例如,我的 .arff 文件之一包含以下数据提取:
@attribute Keyword_1_nasa_Frequency numeric
@attribute Keyword_2_fish_Frequency numeric
@attribute Keyword_3_kill_Frequency numeric
@attribute Keyword_4_show_Frequency numeric
…
@attribute RSSFeedCategoryDescription {BFE,FCL,F,M, NCA, SNT,S}
@data
0,0,0,34,0,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,24,0,0,0,0,13,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,BFE
0,0,0,12,0,0,0,0,0,20,0,0,0,0,0,0,0,0,0,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,BFE
0,0,0,10,0,0,0,0,0,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,BFE
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,BFE
…
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,FCL
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,F
…
20,0,64,19,0,162,0,0,36,72,179,24,24,47,24,40,0,48,0,0,0,97,24,0,48,205,143,62,7
8,0,0,216,0,36,24,24,0,0,24,0,0,0,0,140,24,0,0,0,0,72,176,0,0,144,48,0,38,0,284,
221,72,0,72,0,SNT
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,SNT
0,0,0,0,0,0,11,0,0,0,0,0,0,0,19,0,0,0,0,0,0,0,0,0,0,10,0,0,0,0,0,0,0,0,0,0,0,0,0
,0,0,0,0,0,0,0,0,0,17,0,0,0,0,0,0,0,0,0,0,0,0,0,20,0,S
依此类推:总共有 570 行,其中每一行都包含一天中某个关键字在提要中的频率。在这种情况下,有 10 天的 57 个提要,总共有 570 条要分类的记录。每个关键字都以代理编号为前缀,并以“频率”为后缀。
我在“黑盒”的基础上对 J48s 和 NBM 分类器使用 10 倍 x 验证。使用的其他参数也是默认值,即 J48 的置信度为 0.25,最小对象数为 2。
到目前为止,我对不同天数、日期范围和实际关键字频率的实例的分类率,J28 和 NBM 结果在 50-60% 范围内是一致的。但是,如果可能的话,我想改进它。
我降低了决策树的置信水平,有时低至 0.1,但改进非常有限。
任何人都可以提出任何其他改进我的结果的方法吗?
为了提供更多信息,这里的基本过程涉及各种 RSS 提要集合,其中每个提要属于一个类别。
对于给定的日期范围,例如 2011 年 9 月 1 日至 10 日,每个提要的项目元素的文本都会合并。然后验证文本以删除带有数字、重音符号等的单词和停用词(使用来自 MySQL 的 500 个停用词列表)。然后在 Lucene 中对剩余的文本进行索引,以计算出最流行的 64 个单词。
然后在给定日期范围内的每一天的提要的描述元素中搜索这 64 个单词中的每一个。作为其中的一部分,描述文本也以与标题文本相同的方式进行验证,并再次被 Lucene 索引。因此,标题中的流行关键字(例如“declines”)被归结为“declin”:那么如果在描述元素中发现任何类似的词也源自“declin”,例如“declined”,则“declin”的频率取自 Lucene 对描述元素中的单词的索引。
.arff 文件中显示的频率在此基础上匹配,即在上面的第一行中,“nasa”、“fish”、“kill”在当天 BFE 类别中特定提要的描述项中找不到,但 'show' 被找到了 34 次。每行代表一天中所有 64 个关键字在提要的描述项中出现的次数。
所以我认为低频不是由于词干。相反,我认为这是某些关键字在某一类别的提要中流行但根本没有出现在其他提要中的必然结果。因此,结果中显示了备用性。通用关键字在这里也可能是相关的。
其他可能性是每个类别的提要数量不同,其中 NCA 等类别中的提要多于 S,或者关键字选择过程本身有问题。