文本分类/归类算法

15

我的目标是[半]自动地将文本分配到不同的类别中。有一组用户定义的类别和每个类别的一组文本。理想的算法应该能够从人工定义的分类中学习,然后自动分类新的文本。 是否有人能建议这样的算法,并且可能有实现它的.NET库?

7个回答

19
这并不容易。显然,您可以构建一个将某些关键词映射到类别的字典。仅找到一个关键词就会暗示一定的类别。
然而,在自然语言文本中,关键词通常不会处于其词干形式。您需要一些形态学工具来查找词干形式并在字典上使用它。
但是,有人可能会写出像“这篇文章不是关于...”之类的东西。这就引入了对句法和语义分析的需要。
然后,您会发现某些关键词可以用于多个类别:“band”可以用于音乐、技术甚至手工艺品制作。因此,您需要本体论和统计或其他方法来权衡选择类别的概率(如果不是明确的)。
有些关键词甚至可能很难适应本体论:数学家更接近程序员还是园丁?但是您在问题中说类别是由人构建的,因此他们也可以帮助构建本体论。
请参阅计算语言学这里以及维基百科以进行进一步研究。
现在,您的文本领域越窄,结构越明确,词汇量越小,问题就越容易解决。
进一步研究的一些关键词:形态学、句法分析、语义学、本体论、计算语言学、索引、关键词。

7

对于自动文本分类,有多种方法可供选择。朴素贝叶斯分类器可能是其中最简单的一个。另一个方法是K最近邻算法。您可以使用这个谷歌答案中的文本分类帮助您。


您提供的链接获得了一个Up-V。回答经过严谨的研究,总结的信息令人惊叹。感谢!我希望能够给一个答案10个投票。 - Fr0zenFyr
链接很好,可能相对稳定,但是Stack Overflow的答案应该是自包含的。您能否至少简要概述一下您正在链接的资源? - tripleee

5

3

虽然这个链接可能回答了问题,但最好在此处包含答案的基本部分并提供参考链接。如果链接页面更改,仅有链接的答案可能会失效。- 来自审查 - Aᴍɪʀ
在这种情况下,答案真的是使用那个特定的框架,我已经在我的答案中命名了它。哪种算法更适合取决于数据。 - Diego

2
支持向量机。每个人都喜欢支持向量机。您需要阅读相当多的资料,甚至可能需要购买一本书。但是,您可以先阅读一篇论文,看看是否喜欢这个想法。

1
一个比我更懂这方面的朋友说:“如果你有大量的数据集,那么SVM确实是一个明智的选择。但是如果你想获得类似的结果,还有更高效的技术。每个类别有多少训练样本?”我回答道:“不确定,我会问别人。但是应该不多。”他接着回答道:“好的,简单来说,SVM是一个很好的起点。”现在你知道了。 - Tom Anderson
3
使用支持向量机(SVM)进行多类分类更加困难,而使用朴素贝叶斯或K最近邻算法则更容易。 - Neil McGuigan

1
我已经寻找这个问题的答案有一段时间了。今天我找到了答案。
有一个名为“dbacl”的开源程序可以做到这一点。它可以将文档分类为您想要的任意类别(最多达到一定的最大值)。
其他回答中提到的“不容易的事情”都是真的,但是拥有一个易于使用的软件包可以帮助您更好地管理难题。

虽然这是一个有用的现成工具,但问题和本站都是关于编程问题,而不是寻找有用的工具。因此,这个答案可能应该是一个评论。 - tripleee
同意,如果“编程”是主题,标准实用工具就是离题的。另一方面,开源程序允许您调查并提取所使用的算法。我认为原始问题是:“我有这个问题需要解决,如果必要,我愿意自己编程。”在这种情况下,标准实用工具将帮助原始提问者以及最终遇到类似问题的人们。 - rew

1
这些方法的通用术语是“多元方法”。通过搜索“文本分类”或“文本归类”,应该能找到一些有用的线索。祝你好运!

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