文本分类/分类算法[关闭]
Posted
技术标签:
【中文标题】文本分类/分类算法[关闭]【英文标题】:Text classification/categorization algorithm [closed] 【发布时间】:2011-04-04 19:26:55 【问题描述】:我的目标是[半]自动将文本分配到不同的类别。有一组用户定义的类别和每个类别的一组文本。理想的算法应该能够从人为定义的分类中学习,然后自动对新文本进行分类。 任何人都可以建议这样的算法,也许是实现ше的.NET库?
【问题讨论】:
【参考方案1】:这样做并非易事。显然,您可以构建一个将某些关键字映射到类别的字典。只需找到一个关键字就会建议某个类别。
然而,在自然语言文本中,关键字通常不会采用词干形式。您需要一些形态学工具来查找词干形式并将其用于字典。
但是有人可能会这样写:“这篇文章不是关于……”。这将引入对语法和语义分析的需求。
然后您会发现某些关键字可以用于多个类别:“乐队”可以用于音乐、技术甚至手工艺品。因此,如果不确定,您将需要一个本体和统计或其他方法来权衡要选择的类别的概率。
有些关键词甚至可能不容易融入本体:数学家更接近程序员还是园丁?但是您在问题中说类别是由男性构建的,因此他们也可以帮助构建本体。
在这里查看computational linguistics 和Wikipedia 以进行进一步研究。
现在,你的文本来自的领域越窄,它们就越有条理,词汇量越小,问题就越容易。
再进一步研究一些关键词:形态学、句法分析、语义学、本体论、计算语言学、索引、关键词
【讨论】:
【参考方案2】:自动文本分类有多种方法。朴素贝叶斯分类器可能是其中最简单的一个。另一个是您可以使用的 K-最近邻。 categorization of text 上的这个谷歌答案可能会对您有所帮助。
【讨论】:
您提供的链接的Up-V。答案经过了严格的研究,其中总结的信息令人震惊。谢谢!我希望我能给一个答案 10 票。 链接很好,可能相当稳定,但 Stack Overflow 的答案应该是独立的。您能否至少简要总结一下您链接到的资源?【参考方案3】:观看我关于这个主题的视频系列。
http://vancouverdata.blogspot.com/2010/11/text-analytics-with-rapidminer-loading.html
分类在视频 5 中,但其他视频可能会帮助您快速了解。
这一切都基于 FOSS 程序 RapidMiner。
【讨论】:
【参考方案4】:查看this example from scikit learn。示例中应用了一大堆不同的算法,因此您可以比较结果。
【讨论】:
虽然此链接可能会回答问题,但最好在此处包含答案的基本部分并提供链接以供参考。如果链接页面发生更改,仅链接答案可能会失效。 - From Review 在这种情况下,答案确实是使用那个特定的框架,我已经在我的答案中命名了它。哪种算法更适合取决于数据。【参考方案5】:支持向量机。每个人都喜欢支持向量机。你需要做很多阅读,甚至可能买一本书。但是你可以先阅读a paper 看看你是否喜欢这个想法。
【讨论】:
一位比我了解更多的朋友说“SVM 确实是一个明智的选择 Tom。不过,如果您有大型数据集,有更有效的技术可以为您提供类似的结果.. . 每个类别有多少训练样本?”,我回答说“不确定,我问别人。但不是很多,我想。”,他反过来回答“好吧,简单的答案是 SVM将是一个很好的起点。”。所以现在你知道了。 更难用 SVM 进行多类分类。使用朴素贝叶斯或 knn 会更容易【参考方案6】:这些方法的总称是“多变量方法”。通过搜索“文本分类”或“文本分类”应该会带来一些有用的线索。祝你好运!
【讨论】:
【参考方案7】:我一直在寻找这个问题的答案。今天我找到了我的答案。
有一个名为“dbacl”的开源程序可以做到这一点。它将文档分类为您喜欢的多个类别(最多为某个最大值)。
说“不平凡”之类的其他答案都是正确的,但是拥有一个易于使用的包来完成困难的工作有助于使其易于管理。
【讨论】:
虽然这是一个有用的现成实用程序,但问题和本网站都是关于编程问题,而不是找到有用的实用程序。因此,这个答案也许应该是一个评论。 同意,如果“编程”是主题,那么标准实用程序是题外话。另一方面,开源程序允许您对其进行调查并提取所使用的算法。我将最初的问题视为:“我有这个问题想要解决,如有必要,我愿意自己编程”。鉴于此,标准实用程序将帮助最初的提问者以及最终遇到类似问题的人。 "。以上是关于文本分类/分类算法[关闭]的主要内容,如果未能解决你的问题,请参考以下文章