【问题标题】:Document Analysis and Tagging文档分析和标记
【发布时间】:2011-07-03 16:53:20
【问题描述】:

假设我有一堆文章(数千篇)要标记、分类等。理想情况下,我想通过手动分类/标记几百篇来训练 something,并且然后放开它。

您会推荐哪些资源(书籍、博客、语言)来完成这样的任务?我的一部分认为这很适合Bayesian Classifier 甚至Latent Semantic Analysis,但除了我从一些ruby gems 中找到的内容之外,我并不熟悉。

贝叶斯分类器可以解决这样的问题吗?我应该更多地关注语义分析/自然语言处理吗?或者,我应该只是从那里寻找关键字密度和映射吗?

感谢任何建议(如果需要的话,我不介意挑选几本书)!

【问题讨论】:

  • 在这个领域,NLP 主要用于“标记化”——即将输入文档切割成单个单词。然而,一种天真的方法(单词是字母,其他都是空格)通常足以进行分类,所以我不会过多地打扰。对于其他一切,请参阅下面的答案:)

标签: nlp tagging classification bayesian


【解决方案1】:

哇,这是一个相当大的话题,你正在冒险:) 肯定有很多关于它的书籍和文章,但我会尽量提供一个简短的介绍。我不是一个大专家,但我研究过其中的一些东西。

首先,您需要决定是要将论文分类为预定义的主题/类别(分类问题),还是希望算法自行决定不同的组(聚类问题)。根据您的描述,您似乎对分类感兴趣。

现在,在进行分类时,首先需要创建足够的训练数据。您需要将许多论文分成不同的组。例如 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',请在谷歌上搜索

【讨论】:

  • 感谢您的信息!今天我将开始深入研究其中的一些链接。对于分类(这是我目前更感兴趣的),基于贝叶斯和基于 TF-IDF 的算法是否允许分类为多个类别,或者它们是否更有针对性地识别 one 主要类别?感谢您的帮助!
  • 是的,这两种方法都允许多个类别。事实上,你会得到一个带有分数的有序类别列表。您可以选择前 n 个类别,或高于阈值的类别或任何其他方法
【解决方案2】:

我过去曾使用一些矢量聚类算法做过类似的事情(尽管它是针对短新闻文章)。我现在不记得了,它是谷歌在其初期使用的。 使用他们的论文,我能够在一两天内用 PHP 运行一个原型,然后我将它移植到 Java 以提高速度。

http://en.wikipedia.org/wiki/Vector_space_model

http://www.la2600.org/talks/files/20040102/Vector_Space_Search_Engine_Theory.pdf

【讨论】:

    猜你喜欢
    • 2020-12-26
    • 2011-07-22
    • 1970-01-01
    • 1970-01-01
    • 2011-01-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多