所以我正在尝试使用Weka SVM对文本进行分类。到目前为止,我用于训练SVM的特征向量由培训文本中出现的unigrams和bigrams的TF-IDF统计数据组成。但是,我从测试训练有素的SVM模型得到的结果根本不准确,所以有人能给我反馈我的程序吗?我按照以下步骤对文本进行分类:
另外,我是否需要训练具有更多功能的SVM?如果是这样,在这种情况下哪些功能最有效?非常感谢任何帮助,谢谢。
答案 0 :(得分:8)
自然语言文档通常包含许多仅出现一次的单词,也称为Hapax Legomenon。例如,Moby-Dick中44%的不同单词只出现一次,17%出现两次。
因此,包括语料库中的所有单词通常会导致过多的功能。为了减小此特征空间的大小,NLP系统通常使用以下一个或多个:
对于词干分析,删除停用词,索引语料库,计算tf_idf或文档相似度,我建议使用Lucene。谷歌“Lucene在5分钟内”提供了一些关于使用lucene的快速简便的教程。
答案 1 :(得分:2)
在这些类型的分类中,重要的是你的矢量不是很大,因为你可以在其中获得大量的零,这可能会对结果产生不良影响,因为这些矢量太近而且很难将它们分开正确。此外,我建议你不要使用每个bigrams,选择频率最高的一些(在你的文字中),以减少矢量的大小,并保持足够的信息。一些技术人员为什么会被推荐:http://en.wikipedia.org/wiki/Curse_of_dimensionality最后也很重要的是你有多少数据,你的矢量越大你应该拥有的数据就越多。