假设我有一堆我想要标记、分类等的文章(数千篇)。理想情况下,我想通过手动分类/标记几百来训练一些东西,然后放开它。
你会推荐哪些资源(书籍、博客、语言)来完成这样的任务?我的一部分认为这将非常适合贝叶斯分类器甚至潜在语义分析,但除了我从一些红宝石中发现的内容外,我对任何一个都不太 熟悉。
贝叶斯分类器可以解决这样的问题吗?我应该更多地关注语义分析/自然语言处理吗?或者,我应该只是从那里寻找关键字密度和映射吗?
任何建议表示赞赏(如果需要的话,我不介意拿起几本书)!
假设我有一堆我想要标记、分类等的文章(数千篇)。理想情况下,我想通过手动分类/标记几百来训练一些东西,然后放开它。
你会推荐哪些资源(书籍、博客、语言)来完成这样的任务?我的一部分认为这将非常适合贝叶斯分类器甚至潜在语义分析,但除了我从一些红宝石中发现的内容外,我对任何一个都不太 熟悉。
贝叶斯分类器可以解决这样的问题吗?我应该更多地关注语义分析/自然语言处理吗?或者,我应该只是从那里寻找关键字密度和映射吗?
任何建议表示赞赏(如果需要的话,我不介意拿起几本书)!
哇,这是一个相当大的话题,你正在冒险:) 肯定有很多关于它的书籍和文章,但我会尝试提供一个简短的介绍。我不是一个大专家,但我研究过一些这样的东西。
首先,您需要决定是否要将文章分类为预定义的主题/类别(分类问题),或者您希望算法自行决定不同的组(聚类问题)。根据您的描述,您似乎对分类感兴趣。
现在,在进行分类时,首先需要创建足够的训练数据。您需要将许多论文分成不同的组。例如 5 篇物理论文、5 篇化学论文、5 篇编程论文等等。通常,您需要尽可能多的训练数据,但多少足够取决于特定的算法。您还需要验证数据,它与训练数据基本相似,但完全分开。这些数据将用于判断算法的质量(或数学表现)。
最后,算法本身。我熟悉的两个是基于贝叶斯的和基于 TF-IDF 的。对于贝叶斯,我目前正在用 ruby 为自己开发类似的东西,并且我已经在我的博客中记录了我的经验。如果您有兴趣,请阅读此内容 - http://arubyguy.com/2011/03/03/bayes-classification-update/如果您有任何后续问题,我会尽力回答。
TF-IDF 是 TermFrequence - InverseDocumentFrequency 的缩写。基本上,这个想法是让任何给定的文档在训练集中找到与其最相似的一些文档,然后据此找出它的类别。例如,如果文档 D 与物理的 T1 和物理的 T2 和化学的 T3 相似,您猜 D 很可能是关于物理和一点化学的。
它的完成方式是对稀有词应用最重要,对常见词不重视。例如“核”是罕见的物理词,但“工作”是非常常见的无趣词。(这就是为什么它被称为逆词频)。如果您可以使用 Java,那么有一个非常好的 Lucene 库,它提供了开箱即用的大部分内容。寻找“类似文档”的 API 并研究它是如何实现的。或者如果你想实现你自己的 'TF-IDF' 谷歌
我过去使用一些向量聚类算法做过类似的事情(尽管它是针对短新闻文章)。我现在不记得了,它是谷歌在其初期使用的。使用他们的论文,我能够在一两天内用 PHP 运行一个原型,然后为了提高速度我将它移植到 Java。
http://en.wikipedia.org/wiki/Vector_space_model
http://www.la2600.org/talks/files/20040102/Vector_Space_Search_Engine_Theory.pdf