我一直在使用Weka的J48和Naive Bayes多项式(NBM)分类器对RSS提要中的关键字频率进行html" target="_blank">分类,以将提要分类为目标类别。
例如,我的一个。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条feed,总共有570条记录需要分类。每个关键字都以代理项编号作为前缀,并以“频率”作为后缀。
我在“黑盒”的基础上对J48s和NBM分类器使用10倍x验证。使用的其他参数也是默认值,即J48s的置信度为0.25,最小对象数为2。
到目前为止,我对一个不同天数、日期范围和实际关键字频率的实例的分类率,J28和NBM结果在50-60%的范围内保持一致。但是,如果可能的话,我想对此进行改进。
我降低了决策树置信度,有时低至0.1,但改进非常有限。
有人能提出其他方法来改善我的成绩吗?
为了提供更多信息,这里的基本过程涉及各种RSS提要的集合,其中每个提要都属于一个类别。
对于给定的日期范围,例如2011年9月1日至10日,每个提要的项目元素的文本被组合。然后验证文本以删除带有数字、重音等的单词和停用词(使用MySQL中的500个停用词列表)。然后在Lucene中索引剩余的文本以计算出最流行的64个单词。
然后,在给定日期范围内的每一天,在提要的描述元素中搜索这64个单词中的每一个。作为其中的一部分,描述文本也以与标题文本相同的方式进行验证,并再次由Lucene索引。因此,标题中的流行关键字(例如“decines”)被词干为“declin”:然后,如果在描述元素中发现任何类似的词也来源于“declin”,例如“拒绝”,则“declin”的频率取自Lucene对描述元素中单词的索引。
中显示的频率。arff文件在此基础上进行匹配,即在上面的第一行,“nasa”、“fish”、“kill”未在当天BFE类特定饲料的描述项目中找到,但“show”找到了34次。每一行代表一天中所有64个关键字在提要描述项中的出现次数。
所以我认为低频不是因为词干。相反,我认为这是一些关键字在一个类别的提要中流行但在其他提要中根本不出现的必然结果。因此结果中显示的稀疏性。通用关键字在这里也可能是相关的。
其他可能性是每个类别的提要数量不同,其中NCA等类别的提要多于S,或者关键字选择过程本身存在故障。
尝试完全关闭词干分析。斯坦福大学IR简介的作者提供了一个粗略的理由,说明为什么在文本分类上下文中,词干会造成伤害,至少不会有帮助。
我在一个定制的多项式朴素贝叶斯文本分类工具上测试了自己的词干(准确率为85%)。我尝试了org提供的3个Lucene词干分析器。阿帕奇。lucene。分析en版本4.4.0,即EnglishMinimalStemFilter、KStemFilter和PorterStemFilter,并且没有词干,我在小型和大型培训文档语料库上进行了测试。当训练语料库较小时,词干显著降低了分类准确率,而对于较大的语料库,词干的准确率保持不变,这与IR简介的说法一致。
还有一些事情需要尝试:
你还可以转动很多其他的旋钮,但我会从这些开始。你应该能做得比60%好得多。80%到90%或更高是常见的。
你没有提到任何关于词干的内容。在我看来,如果您执行单词词干分析,并且WEKA评估基于关键字词干,您可能会有更好的结果。
例如,假设您的WEKA模型是在给定关键字surfing的情况下构建的,并且新的rss提要包含单词surf。这两个词之间应该有一个匹配。
有许多免费的词干器可用于多种语言。
对于英语,词干分析的一些可用选项包括:
如果您想使用WordNet的字典执行词干划分,有一些库
下面你可以找到其中的一些:
提供更多信息后编辑
我相信指定案例中的关键点是“最受欢迎的64个单词”的选择。选择的单词或短语应该是关键字或关键短语。所以这里的挑战是关键字或关键短语的提取。
有几本关于关键字/关键字提取的书籍、论文和算法。怀卡托大学在JAVA中实现了一种著名的算法,称为关键字提取算法(KEA)。KEA从文本文档中提取关键字,可用于自由索引或使用受控词汇表进行索引。该实现在GNU通用公共许可证下分发。
另一个需要考虑的问题是(词性)词性标注。名词比其他词性标记包含更多的信息。因此,如果您检查POS标记,并且所选的64个单词主要是名词,那么您可能会有更好的结果。
此外,根据阿内特·赫斯(Anette Hulth)发表的论文《改进自动关键词提取——赋予更多语言知识》,她的实验表明,关键词/关键短语大多具有或包含以下五种模式之一:
总之,我认为可以改进结果的一个简单操作是找到每个单词的POS标记,并选择大部分名词,以便评估新的RSS提要。您可以使用WordNet来查找每个单词的词性标记,正如我前面提到的,web上有许多库可以与WordNet的字典进行集成。当然,词干分析对于分类过程也是必不可少的,必须加以维护。
我希望这有帮助。
上例的数据格式如下: both sedentary moderate yes i100 both sedentary moderate no i100 health sedentary moderate yes i500 appearance active moderate yes i500 appearance moderate aggressive yes i500
我有一个数据集,有10个类,每个类40个示例(总共400个示例) 我为每个示例提取了大约27个特征。我使用了朴素贝叶斯分类器,使用十倍交叉验证,获得了大约96.75%的准确率。 我从混淆矩阵中注意到,十个类中只有两个类混淆了几个示例,而其余的类总是分类正确。然后,我决定删除除这两个类之外的所有其他类,保留相同数量的特征,并重新运行朴素贝叶斯分类器;它总是能够将示例正确地分为两类。 我很困惑为什么会
分类阶段比较简单,直接应用贝叶斯公式就可以了,让我们试试吧! 通过训练,我们得到以下概率结果: 比如下面这句话,要如何判断它是正面还是负面的呢? I am stunned by the hype over gravity. 我们需要计算的是下面两个概率,并选取较高的结果: P(like)×P(I|like)×P(am|like)×P(stunned|like)×... P(dislike)×P(I
我正在开发一个朴素的贝叶斯分类器使用简单的词袋概念。我的问题是,在朴素贝叶斯或任何其他机器学习中,senario'训练‘分类器是一个重要的问题。但是当我已经有了一个不同类别的词包时,如何训练朴素贝叶斯分类器呢?
1 介绍 朴素贝叶斯是一种构建分类器的简单方法。该分类器模型会给问题实例分配用特征值表示的类标签,类标签取自有限集合。它不是训练这种分类器的单一算法,而是一系列基于相同原理的算法:所有朴素贝叶斯分类器都假定样本每个特征与其他特征都不相关。 举个例子,如果一种水果其具有红,圆,直径大概3英寸等特征,该水果可以被判定为是苹果。尽管这些特征相互依赖或者有些特征由其他特征决定,然而朴素贝叶斯分类器认为
参考资料地址: http://www.cnblogs.com/leoo2sk/archive/2010/09/17/naive-bayesian-classifier.html 我的数据挖掘算法实现源码地址:https://github.com/linyiqun/DataMiningAlgorithm 介绍 要介绍朴素贝叶斯算法(Naive Bayes),那就得先介绍贝叶斯分类算法,贝叶斯分类算法