使用 weka 进行文本分类
Posted
技术标签:
【中文标题】使用 weka 进行文本分类【英文标题】:Text classification with weka 【发布时间】:2012-03-27 05:41:54 【问题描述】:我正在使用 Weka 库在 java 中构建一个文本分类器。
首先我删除停用词,然后我使用词干分析器(例如将汽车转换为汽车)。 现在我有 6 个预定义的类别。我训练分类器 每个类别 5 个文件。文档长度差不多。
待分类的文本较短时,结果还可以。但是当文字较长时 100多字结果越来越陌生。
我返回每个类别的概率如下: 概率:
[0.0015560238056109177, 0.1808919321002592, 0.6657404531908249, 0.004793498469427115, 0.13253647895234325, 0.0144816134815]4]
这是一个非常可靠的分类。
但是当我使用超过 100 个单词的文本时,我会得到如下结果:
概率:[1.2863123678314889E-5, 4.3728547754744305E-5, 0.9964710903856974, 5.539960514402068E-5, 0.002993481218084141, 4.234371
哪个好。
现在我使用朴素贝叶斯多项式对文档进行分类。我读过了 关于它,我发现我可以在较长的文本上表现得很奇怪。可能是我现在的问题?
有人知道为什么会这样吗?
【问题讨论】:
培训文件有多长?如果它们很短,那么当输入较长时,分类器可能没有足够的信息。 大约 200-400 字。但是,正如我所说,我每个类别只使用 5 个文档。我认为我应该使用更多文档来更好地分类,但我认为它不会解决问题(当然分类会更准确,但我认为错误仍然存在:/) 对于你的 >100 字测试用例,是不是表明分类文档是 P=0.996 的第 3 类?其他数字如此之小这一事实表明被分类的示例绝对不在这些类别中。第 3 类正确吗? 编辑:实际上这似乎是正确的,我认为问题在于培训文件很少。我会尝试添加更多文档,然后再报告。 【参考方案1】:这种行为可能有多种因素。如果您的训练和测试文本不在同一个域中,则可能会发生这种情况。此外,我相信为每个类别添加更多文档应该会有所帮助。每个类别中的 5 个文档似乎非常少。如果你没有更多的训练文档或者很难有更多的训练文档,那么你可以在你的训练集中综合添加正负实例(详细参见 SMOTE 算法)。随时向我们发布更新。
【讨论】:
以上是关于使用 weka 进行文本分类的主要内容,如果未能解决你的问题,请参考以下文章