训练libsvm进行文本分类(情感)

3

通过以下链接,我得出了一些想法。我想问一下,我的做法是正确的还是错误的。如果我走错了路,请指导我。

链接
使用libsvm进行文本分类c#
如何使用libsvm进行文本分类?

我的方法

首先计算每个训练集中单词的数量
为每个单词创建一个映射列表

例如

sample word count form training set
|-----|-----------|
|     |   counts  |
|-----|-----|-----|
|text | +ve | -ve |
|-----|-----|-----|
|this | 3   | 3   |
|forum| 1   | 0   |
|is   | 10  | 12  |
|good | 10  | 5   |
|-----|-----|-----|

正面训练数据

this forum is good

那么训练集也会是这样

+1 1:3 2:1 3:10 4:10

这些都是我从上面链接中收到的内容。请帮助我。
2个回答

4
你做得很好。
我不知道你的标签为什么叫“+1”,应该是一个简单的整数(指文档“+ve”),但总体来说这样就可以了。
对于文档分类,您可能希望查看专门设计用于处理大量特征的liblinear。

另外一个问题是,既然我的样本词数索引和训练词数索引匹配,那么索引会来自训练词数中的“这个论坛很好”,还是来自样本词数?此外,如果有一个单词重复出现怎么办?比如,“这个论坛非常非常好”,如果“非常”这个词出现了3次,新的训练集会是什么? - bunkdeath
首先,这不是一个适合在Stackoverflow上提问的问题,但是:我不知道我是否理解正确,但基本上你需要一组特征(具有属性的文档),将其放入svm中。每个集合属于第一或第二个文档类(1或2)。支持向量机将通过计算它们之间的边距将它们分成2组。当您现在使用未分类/未知文档馈送svm时,它将检查它属于哪个分类集并返回结果(您真的应该阅读维基百科)。 - snøreven
为了获取特征/属性,您可以创建一个将单词映射到ID的字典。就像在您的示例中,“this”这个词得到了ID 1,“forum”-2等等。当然,您需要为所有文档使用相同的单词<->ID关联,因此您需要一个集中的字典。 - snøreven
1
在您的示例中,您使用“1 1:3 2:1 3:10 4:10”作为训练集。这意味着您描述了“+ve”文档 - 具有id为1的单词在文档中出现3次,具有id为2的单词出现1次。依此类推...在您最后一个示例(“这个论坛非常好”)中,功能集将是:“这个论坛非常好”,“1:1, 2:1, 3:1, 4:1, 5:2”,其中5是单词“very”的新id(它被保存在字典中以供将来使用)。 - snøreven

0

你也可以从这里使用libshorttext: libshortText

在Python中


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接