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

如何使用SVM和KNN对文本文档进行分类,svm,knn,document-classification,text-classification,Svm,Knn,Document Classification,Text Classification,几乎所有的例子都是基于数字的。在文本文档中,我使用单词而不是数字 那么,你能给我展示一下如何使用这些算法进行文本文档分类的简单示例吗 我不需要代码示例,只需要逻辑 伪代码将大有帮助常用的方法是使用一个单词包模型(),其中分类器将学习文本中单词的存在,虽然很简单,但效果却出奇地好 此外,这里还有一个类似的问题:您将文档中出现的术语表示为向量中的权重,其中每个索引位置都是术语的“权重”。例如,如果我们假设一个文档为“hello world”,我们将位置0与“hello”的重要性相关联,将位置1与世界

几乎所有的例子都是基于数字的。在文本文档中,我使用单词而不是数字

那么,你能给我展示一下如何使用这些算法进行文本文档分类的简单示例吗

我不需要代码示例,只需要逻辑


伪代码将大有帮助

常用的方法是使用一个单词包模型(),其中分类器将学习文本中单词的存在,虽然很简单,但效果却出奇地好


此外,这里还有一个类似的问题:

您将文档中出现的术语表示为向量中的权重,其中每个索引位置都是术语的“权重”。例如,如果我们假设一个文档为“hello world”,我们将位置0与“hello”的重要性相关联,将位置1与世界的重要性相关联,并将重要性度量为术语出现的次数,则该文档被视为d=(1,1)

同时,只说“hello”的文档将是(1,0)

这种表示可以作为衡量文件中术语重要性的基础,因为术语频率(如@Pedrom所建议)是最简单的选择。最常见但足够简单的技术是应用,它结合了术语在文档中的常见程度和在集合中的罕见程度


我希望这会有所帮助,

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

只是一个简单的问题。当您的意思是大多数示例基于数字时,您指的是元素(您案例中的文档)表示为向量,如(1,0.77,0.4,…),是吗?我想这可能是非常低效的,因为可能有数十万个单词是我错了吗?@MonsterMMORPG不一定所有的单词都具有相同的相关性。你可能希望忽略短单词(少于三个字符),也可能忽略非常长(>10)和频率较低的单词。另外,400-600个单词的向量应该很好,可以给您提供良好的性能@Pedrom所描述的被称为特征选择,您可以选择最具代表性的术语。他解释的具体方法是基于文档频率的特征选择,这是一种非常简单(尽管非常强大)的方法,可以限制您处理的信息,以提高效率,在某些情况下还可以提高效率(质量)。但是,我不同意提及功能的数量。这在很大程度上取决于产品系列,但我认为您需要1000到3000个功能才能获得最佳性能,我建议您尝试几种配置。这是一篇非常好的论文,比较和解释了文本分类的不同特征选择度量。您也可以查看文本分类调查,了解有关分类的一般扩展信息,特别是特征选择。@miguelmalvarez Nice comment Miguel,我非常同意您所说的,我只是想给出特征数量的下限,根据需求和问题的领域,您可能需要许多功能。