在 Python 中用于内容分类的 Orange vs NLTK [关闭]
Posted
技术标签:
【中文标题】在 Python 中用于内容分类的 Orange vs NLTK [关闭]【英文标题】:Orange vs NLTK for Content Classification in Python [closed] 【发布时间】:2011-06-14 22:18:50 【问题描述】:我们需要一个内容分类模块。贝叶斯分类器似乎是我正在寻找的。我们应该选择 Orange 还是 NLTK?
【问题讨论】:
【参考方案1】:正如文档所证明的那样,每个库中的朴素贝叶斯实现很容易 使用,那么为什么不同时运行您的数据并比较结果呢?
Orange 和 NLTK 都是成熟、稳定的库(每个库都开发了 10 年以上) 起源于大型大学;它们共享一些共同的特征,主要是机器学习 算法。除此之外,它们在范围、目的和实施上也大不相同。
Orange 与领域无关——不针对特定学科 或商业领域,而是将自己宣传为全栈数据挖掘 和机器学习平台。它的重点是工具本身,而不是这些工具在特定学科中的应用。
其功能包括 IO、数据分析算法和 数据可视化画布。
另一方面,NLTK 开始并一直是计算领域的学术项目 一所大型大学的语言学系。你提到的任务 (文档内容分类)和您选择的算法(朴素贝叶斯) 几乎是 NLTK 功能的核心。 NLTK 确实如此 有机器学习/数据挖掘算法,但这只是因为它们有一个特定的 在计算语言学中的实用性。
NLTK 当然包括一些 ML 算法,但这只是因为它们在计算语言学中具有实用性,以及文档解析器、标记器、词性 分析器等——所有这些都包含 NLTK。
也许 Orange 中的朴素贝叶斯实现也一样好,我仍然会选择 NLTK 的 实施,因为它显然针对您提到的特定任务进行了优化。
有很多关于 NLTK 的教程,特别是关于它的朴素贝叶斯的使用 内容分类。 Jim Plus 和 streamhacker.com 的另一篇博文,例如表现出色 使用 NLTK 的朴素贝叶斯的教程;第二个包括逐行 讨论访问此模块所需的代码。这两篇文章的作者 使用 NLTK 的帖子报告了良好的结果(前者为 92%,后者为 73%)。
【讨论】:
总是对我在这里得到的答案的深度感到惊讶,谢谢。 我是这个领域的菜鸟。我们要做的是根据在文本中找到的特征将内容分类为类别,即使类别名称不是特征之一。 (如果文本中没有“水果”一词,想要将橙色分类为水果事件。)我们应该寻找特定类型的分类还是我们正在寻找的朴素贝叶斯? 我应该补充一点,结果应该是多个类别。这是否违背了朴素贝叶斯的目的?在这种情况下,Fisher 方法是否更合适? 这是我对 Naive Bayes 的 SO 问题的回答,应该是正确的。【参考方案2】:我不知道 Orange,但为 NLTK +1:
我已经先后使用 NLTK 中的分类工具对文本和相关元数据进行分类。贝叶斯是默认值,但还有其他替代方法,例如最大熵。作为一个工具包,您可以根据需要进行自定义 - 例如。创建自己的功能(这是我为元数据所做的)。
NLTK 也有几本好书——其中一本可以在 Creative Commons(以及 O'Reilly)下获得。
【讨论】:
【参考方案3】:NLTK 是一个支持自然语言处理的四状态模型的工具包:
-
标记化:将字符分组为单词。这包括从琐碎的正则表达式到处理诸如“不能”之类的收缩
标记。这是将词性标签应用于标记(例如,“NN”表示名词,“VBG”表示动词动名词)。这通常通过在训练语料库(即大量手动标记的句子列表)上训练模型(例如隐马尔可夫)来完成。
分块/解析。这是获取每个标记的句子并将特征提取到树中(例如名词短语)。这可以根据手写语法或在语料库上训练的语法。
信息提取。这是遍历树并提取数据。这是完成您的特定 orange=fruit 的地方。
NLTK 支持 WordNet,这是一个对单词进行分类的巨大语义词典。所以橙色有 5 个名词定义(南非的水果、树、色素、颜色、河流)。其中每一个都有一个或多个“上位词路径”,它们是分类的层次结构。例如。 “橙色”的第一感觉有两条路径:
橙子/柑橘/食用水果/水果/生殖结构/植物器官/植物部分/自然物体/整体/物体/物理实体/实体和
橙子/柑橘/edible_fruit/produce/food/solid/matter/physical_entity/entity根据您的应用领域,您可以将橙色识别为水果、食物或植物。然后你可以使用分块的树结构来确定更多(谁对水果做了什么等)
【讨论】:
以上是关于在 Python 中用于内容分类的 Orange vs NLTK [关闭]的主要内容,如果未能解决你的问题,请参考以下文章