3

我正在尝试使用支持向量机 (SVM) 进行文档分类。我拥有的文件是电子邮件的集合。我有大约 3000 个文档来训练 SVM 分类器,并且有一个大约 700 个需要分类的测试文档集。

我最初使用二进制 DocumentTermMatrix 作为 SVM 训练的输入。使用测试数据进行分类的准确率约为 81%。在删除几个停用词后使用 DocumentTermMatrix。

由于我想提高这个模型的准确性,我尝试使用基于 LSA/SVD 的降维,并使用生成的降维因子作为分类模型的输入(我尝试使用原始包中的 20、50、100 和 200 个奇异值〜3000字)。在每种情况下,分类的性能都变差了。(使用 LSA/SVD 的另一个原因是为了克服具有 65 个级别的响应变量之一的记忆问题)。

有人可以就如何提高 LSA/SVD 分类的性能提供一些指导吗?我意识到这是没有任何特定数据或代码的一般问题,但希望专家提供一些关于从哪里开始调试的意见。

仅供参考,我正在使用 R 进行文本预处理(包:tm、雪球、lsa)和构建分类模型(包:kernelsvm)

谢谢你。

4

3 回答 3

1

这里有一些一般性的建议 - 没有特定于 LSA,但它可能有助于改善结果。

  1. 'binary documentMatrix' 似乎暗示您的数据由二进制值表示,即 1 表示文档中存在的术语,0 表示不存在的术语;转向其他评分方案(例如 tf/idf)可能会带来更好的结果。

  2. 在某些情况下,LSA 是一个很好的降维指标,但在其他情况下则不然。因此,根据数据的确切性质,考虑其他方法可能是个好主意,例如 Infogain。

  3. 如果降低维度的主要动机是具有 65 个级别的一个参数,也许专门处理这个参数,例如通过某种形式的量化,会导致更好的权衡?

于 2011-11-23T08:16:41.480 回答
1

这可能不是最适合的答案。希望这些建议能有所帮助。

也许您可以使用词形还原而不是词干来减少不可接受的结果。简短而密集: http: //nlp.stanford.edu/IR-book/html/htmledition/stemming-and-lemmatization-1.html

The goal of both stemming and lemmatization is to reduce inflectional forms and 
sometimes derivationally related forms of a word to a common base form. 

However, the two words differ in their flavor. Stemming usually refers to a crude 
heuristic process that chops off the ends of words in the hope of achieving this 
goal correctly most of the time, and often includes the removal of derivational 
affixes. Lemmatization usually refers to doing things properly with the use of a 
vocabulary and morphological analysis of words, normally aiming to remove 
inflectional endings only and to return the base or dictionary form of a word, 
which is known as the lemma.

一个例子:

go,goes,going ->Lemma: go,go,go ||Stemming: go, goe, go

并使用一些预定义的规则集;这样短期单词就被概括了。例如:

I'am -> I am
should't -> should not
can't -> can not

如何处理句子中的括号。

This is a dog(Its name is doggy)

括号内的文本通常指所提及实体的别名。您可以删除它们或进行关联分析并将其视为新句子。

于 2014-09-27T07:20:13.073 回答
1

尝试使用Local LSA,与 Global LSA 相比,它可以改进分类过程。此外,LSA 的威力完全取决于其参数,因此请尝试调整参数(从 1 开始,然后 2 或更多)并比较结果以提高性能。

于 2015-05-06T03:51:55.067 回答