使用预制字典进行文本分类的SVM特征向量表示

Posted

技术标签:

【中文标题】使用预制字典进行文本分类的SVM特征向量表示【英文标题】:SVM feature vector representation by using pre-made dictionary for text classification 【发布时间】:2016-08-17 17:41:20 【问题描述】:

我想将一个文本集合分为两类,假设我想做一个情感分类。我有两个预制的情感词典,一个只包含积极的词,另一个只包含消极的词。我想将这些字典合并到 SVM 分类器的特征向量中。我的问题是,是否可以将正负词词典分开来表示为 SVM 特征向量,尤其是当我为测试集生成特征向量时?

如果我的解释不够清楚,让我举个例子。假设我有这两个句子作为训练数据:

Pos: The book is good
Neg: The book is bad

正面词典中存在“好”一词,负面词典中存在“坏”一词,而其他词都不存在于这两个词典中。我希望与句子类匹配的字典中存在的单词具有较大的权重值,而其他单词的权重值较小。所以,特征向量会是这样的:

+1 1:0.1 2:0.1 3:0.1 4:0.9
-1 1:0.1 2:0.1 3:0.1 5:0.9

如果我想对一个测试句“The food is bad”进行分类,当我无法匹配测试句的类时,我应该如何为测试集生成一个权重取决于现有字典的特征向量与每个字典?我能想到的是,对于测试集,只要这个词在两​​个字典中都存在,我会给这个词一个很高的权重值。

0 1:0.1 3:0.1 5:0.9

我想知道这是否是为训练集和测试集创建向量表示的正确方法。

--编辑-- 我忘了提到这些预制字典是使用某种主题模型提取的。例如,主题 1 中的前 100 个词有点代表正类,主题 2 中的词代表负类。我想使用这种信息来改进分类器,而不是只使用词袋功能。

【问题讨论】:

【参考方案1】:

简而言之 - 这不是它的工作方式

学习的全部意义在于赋予分类器自行分配这些权重的能力。您不能“强制它”为特定功能的每个类提供高价值(我的意思是,您可以在优化级别上,但这需要更改整个 svm 结构)。

所以正确的方法是简单地创建一个“正常”表示。没有任何额外的规范。让模型来决定吧,他们真的比人类的直觉更擅长统计分析。

【讨论】:

根据您的回答我的理解,如果我按照上面提到的条件进行分类,我需要将正负字典合二为一。之后,如果这个组合字典中存在一个词,则给它一个高值,否则给它一个低值,并让分类器决定其余的。对吗? 您应该简单地创建一个字典,并在上面使用 SVM。它会自行分配正确的权重,不要试图过度设计它,这不是一个好主意。为了实现您描述的目标(这又不是一个好主意),您必须更改优化程序,在特定权重上添加符号约束,这可能会限制双重优化技术的应用(不确定它,需要检查几个条件),并在原始情况下为您提供梯度优化(这对于线性情况很好)。

以上是关于使用预制字典进行文本分类的SVM特征向量表示的主要内容,如果未能解决你的问题,请参考以下文章

自然语言处理——将文本特征转换为特征向量

文本分类学习 特征权重(TF/IDF)和特征提取

文本分类之特征描述vsm和bow

如何将文本文档表示为特征向量进行文本分类?

如何使用线性支持向量机 (SVM) 分类器确定最重要/信息量最大的特征

基于卷积神经网络(CNN)的中文垃圾邮件检测