11

我们需要一个内容分类模块。贝叶斯分类器似乎是我正在寻找的。我们应该选择 Orange 还是 NLTK ?

4

3 回答 3

23

正如文档所证明的那样,每个库中的朴素贝叶斯实现都很容易使用,那么为什么不同时运行您的数据并比较结果呢?

Orange 和 NLTK 都是源自大型大学的成熟、稳定的库(每个库都开发了 10 年以上);它们共享一些共同的特征,主要是机器学习算法。除此之外,它们在范围、目的和实施上也大不相同。

Orange 与领域无关——不针对特定的学科或商业领域,而是将自己宣传为全栈数据挖掘和 ML 平台。它的重点是工具本身,而不是这些工具在特定学科中的应用。

它的功能包括 IO、数据分析算法和数据可视化画布。

另一方面,NLTK 最初是并且仍然是一所大型大学计算语言学系的一个学术项目。您提到的任务(文档内容分类)和您选择的算法(朴素贝叶斯)几乎是 NLTK 功能的核心。NLTK 确实有 ML/数据挖掘算法,但这只是因为它们在计算语言学中具有特殊的效用。

NLTK 当然包括一些 ML 算法,但这只是因为它们在计算语言学中具有实用性,以及文档解析器、标记器、词性分析器等——所有这些都包含 NLTK。

也许 Orange 中的朴素贝叶斯实现同样出色,我仍然会选择 NLTK 的实现,因为它明显针对您提到的特定任务进行了优化。

有许多关于 NLTK 的教程,特别是关于其用于使用内容分类的朴素贝叶斯。例如, Jim Plusstreamhacker.com上的一篇博客文章介绍了使用 NLTK 的朴素贝叶斯的优秀教程;第二个包括对访问该模块所需代码的逐行讨论。这两个帖子的作者都报告了使用 NLTK 的良好结果(前者为 92%,后者为 73%)。

于 2011-01-25T08:31:48.930 回答
3

我不知道 Orange,但为 NLTK +1:

我先后使用 NLTK 中的分类工具对文本和相关元数据进行分类。贝叶斯是默认值,但还有其他替代方法,例如最大熵。作为一个工具包,您可以根据需要进行自定义 - 例如。创建自己的功能(这是我为元数据所做的)。

NLTK 也有几本好书——其中一本可在 Creative Commons(以及 O'Reilly)下获得。

于 2011-01-25T03:55:43.013 回答
1

NLTK 是一个支持自然语言处理的四状态模型的工具包:

  1. 标记化:将字符分组为单词。这范围从琐碎的正则表达式到处理诸如“不能”之类的收缩
  2. 标记。这是将词性标签应用于标记(例如,“NN”表示名词,“VBG”表示动词动名词)。这通常是通过在训练语料库(即大量手动标记的句子列表)上训练模型(例如隐马尔可夫)来完成的。
  3. 分块/解析。这是获取每个标记的句子并将特征提取到树中(例如名词短语)。这可以根据手写语法或在语料库上训练的语法。
  4. 信息提取。这是遍历树并提取数据。这是您的特定 orange=fruit 将完成的地方。

NLTK 支持 WordNet,这是一个对单词进行分类的巨大语义词典。所以橙色有 5 个名词定义(南非的水果、树、色素、颜色、河流)。其中每一个都有一个或多个“上位词路径”,它们是分类的层次结构。例如,“橙色”的第一感觉有两条路径:

  • 橙子/柑橘/食用水果/水果/生殖结构/植物器官/植物部分/自然物体/整体/物体/物理实体/实体

  • 橙子/柑橘/食用水果/农产品/食品/固体/物质/物理实体/实体

根据您的应用领域,您可以将橙色识别为水果、食物或植物。然后您可以使用分块树结构来确定更多(谁对水果做了什么等)

于 2012-06-03T10:08:07.863 回答