橙色与NLTK用于Python中的内容分类[关闭
-
24-10-2019 - |
题
我们需要一个内容分类模块。贝叶斯分类器似乎是我想要的。我们应该去橙色还是NLTK?
解决方案
正如文档所证明的那样,每个库中的幼稚贝叶斯实现都很易于使用,那么为什么不将数据运行并比较结果呢?
橙色和NLTK都是起源于大型大学的成熟,稳定的图书馆(每个图书馆的开发10年以上)。他们共享一些共同的功能,主要是机器学习算法。除此之外,它们在范围,目的和实施方面截然不同。
橙色是无知的领域,而不是针对特定的学术学科或商业领域,而是将自己宣传为全栈数据挖掘和ML平台。重点是 工具 本身,而不是在特定学科中应用这些工具。
它的功能包括IO,数据分析算法和数据可视化画布。
另一方面,NLTK的开始,一直是一所大型大学的计算语言学系的学术项目。您提到的任务(文档内容分类)和您选择的算法(天真的贝叶斯)几乎是NLTK功能的核心。 NLTK确实具有ML/数据挖掘算法,但仅是因为它们在计算语言学中具有特殊的效用。
当然,NLTK包括一些ML算法,但这仅仅是因为它们在计算语言学中具有实用性,以及文档解析器,代币器,词性分析仪等 - 所有这些都包含NLTK。
也许橙色的幼稚贝叶斯实现也一样好,我仍然会选择NLTK的实现,因为它明确针对您提到的特定任务进行了优化。
NLTK上有许多教程,尤其是其天真的贝叶斯用于使用内容分类。博客文章 吉姆加 还有另一个 StreamHacker.com, ,例如,为使用NLTK的天真贝叶斯提供了出色的教程;第二个包括对访问此模块所需的代码的逐条讨论。这两个帖子的作者都报告了使用NLTK的良好结果(前者为92%,后者为73%)。
其他提示
我不知道橙色,但是+1 for nltk:
我已经依次使用NLTK中的分类工具来对文本和相关的元数据进行分类。贝叶斯是默认值,但还有其他替代方案,例如最大熵。另外,作为工具包,您可以根据自己的合适来自定义 - 例如。创建您自己的功能(这是我为元数据所做的)。
NLTK也有几本好书 - 其中一本可在Creative Commons(以及O'Reilly)下购买。
NLTK是一个支持自然语言处理的四个状态模型的工具包:
- 令牌化:将字符分组为单词。这范围从琐碎的正则事情到处理诸如“不能”之类的宫缩
- 标记。这是将词性标签应用于令牌(例如名词的“ nn”,“ vbg”的动词gerund)。这通常是通过在训练语料库上训练模型(例如隐藏的马尔可夫)(即用手标记的句子的大清单)来完成的。
- 分块/解析。这将每个标记的句子和将特征提取到树中(例如名词短语)。这可以根据手写的语法或在语料库中训练的语法。
- 信息提取。这是在遍历树并提取数据。这是您的特定橙色=将完成的地方。
NLTK支持WordNet,这是一个巨大的语义词典,该字典对单词进行了分类。因此,有5个名词定义(水果,树,色素,颜色,南非的河流)。这些中的每一个都有一个或多个“超核路径”,这些路径是分类的层次结构。例如,“橙色”的第一感有两条路径:
- 橙色/柑橘/edible_fruit/fruit/prodoductive_structure/plant_organ/plant_part/natural_object/natural_object/thult/object/yectern_entity/enthity/entity
和
- 橙色/柑橘/Edible_fruit/produce/food/solid/solid/yrathy_entity/实体
根据您的应用领域,您可以将橙色识别为水果,食物或植物的东西。然后,您可以使用块状的树结构来确定更多(谁对水果做了什么,等等)