如何使用SVM和KNN对文本文档进行分类

4
几乎所有的例子都是基于数字的。在文本文件中,我有单词而不是数字。
那么你能给我展示如何使用这些算法进行文本文件分类的简单例子吗?
我不需要代码示例,只需要逻辑。
伪代码会非常有帮助。

只是一个快速的问题。当你说大多数示例都基于数字时,你是指元素(在你的情况下是文档)被表示为向量,例如(1、0.77、0.4、...),对吗? - miguelmalvarez
3个回答

9

我想这可能非常低效,因为可能有成千上万的单词,我错了吗? - Furkan Gözükara
@MonsterMMORPG 不一定,因为并不是所有的单词都具有相同的相关性,你可能想忽略长度小于三个字符的短词,以及长度超过10个字符且出现频率较低的词。此外,一个由400到600个单词组成的向量应该足够,并且能够提供良好的性能。 - Pedrom
1
@Pedrom所描述的是特征选择,您可以选择最具代表性的术语。他解释的具体方法是基于文档频率的特征选择,这是一种非常简单(虽然非常强大)的限制您处理的信息以提高效率和在某些情况下提高效果(质量)的方法。然而,我不同意仅讨论特征数量。这在很大程度上取决于数据集,但我建议为获得最佳性能,您将需要1000到3000个特征,并且尝试几种配置。 - miguelmalvarez
这是一篇非常好的论文,比较和解释了文本分类中不同的特征选择度量方法。你还可以查看Sebastiani关于文本分类的调查报告,以获取更多关于分类的一般信息和特征选择的详细内容。 - miguelmalvarez
非常感谢。我编写了KNN代码,效果还不错。我也会尝试这个。 - Furkan Gözükara
1
@miguelmalvarez 很好的评论,我非常同意你所说的,我只是想根据需求和问题领域给出一个特征数量的下限,可能需要那么多特征。 - Pedrom

3
您代表文档中出现的术语作为向量中的权重,其中每个索引位置是术语的“权重”。例如,如果我们假设一个文档“hello world”,并将位置0与“hello”的重要性相关联,并将位置1与“world”的重要性相关联,并且我们将重要性测量为术语出现的次数,则该文档被视为d =(1,1)。
同时,仅说“hello”的文档将是(1,0)。
此表示可以基于文档中术语重要性的任何度量进行,其中术语频率(如@Pedrom建议的那样)是最简单的选项。最常见但足够简单的技术是应用TF-IDF,它结合了术语在文档中的常见程度以及在集合中的稀有程度。
希望这可以帮助到您,

0
在词袋模型中,您可以使用术语频率并根据它们在新文档和训练文档中的出现情况分配权重。之后,您可以使用相似性函数计算训练和测试文档之间的相似度。

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