【问题标题】:How to programmatically classify a list of objects如何以编程方式对对象列表进行分类
【发布时间】:2012-07-27 13:54:41
【问题描述】:

我正在尝试获取一长串对象(在本例中是来自 iTunes App Store 的应用程序)并更具体地对它们进行分类。例如,目前有很多应用程序被归类为“教育”,但我想将它们标记为生物学、英语、数学等。

这是一个人工智能/机器学习问题吗?我在该领域没有任何背景,但想要一些关于从哪里开始做这类事情的资源或想法。

【问题讨论】:

标签: python machine-learning artificial-intelligence classification


【解决方案1】:

可能不会。您需要做一些工作才能以某种可用的形式(例如姓名)提取数据,而且归根结底,可能没有足够的类别来手动识别列表每个类别的关键字,并在标题/描述上设置一个松散的解析器。

例如,您可以浏览六个生物学应用程序,并意识到在名称/描述/您可以访问的任何内容中,“细胞”、“生命”和“生长”等词经常出现 - 而不是作为一些机器学习的结果,但作为你自己人类直觉的结果。因此,构建一个解析器,将包含这些词的所有内容分类为生物学应用程序,并对其他类别执行类似的操作。

除非您尝试对整个 iTunes 应用商店进行分类,否则就足够了,而且手动检查具有多个分类或没有分类的任何应用程序将是一项相对较小的任务。使用简单的解析器 + 手动检查异常所涉及的劳动可能远远少于构建更复杂的解析器以帮助机器学习、设置机器学习然后再次检查所有内容所涉及的劳动,因为机器学习不是 100% 准确的.

【讨论】:

    【解决方案2】:

    是的,你是对的。分类是一个机器学习问题,基于文本数据进行分类涉及自然语言处理。

    规范分类问题是使用朴素贝叶斯分类器进行垃圾邮件检测,非常简单。思路如下:

    1. 收集一堆数据(电子邮件),并按类别(垃圾邮件或非垃圾邮件)标记它们
    2. 对于每封电子邮件,删除停用词,并获取该电子邮件中唯一词的列表
    3. 现在,对于每个单词,计算它在垃圾邮件和非垃圾邮件中出现的概率(即统计在垃圾邮件和非垃圾邮件中出现的次数)
    4. 现在您有一个模型 - 一封电子邮件是垃圾邮件的概率,假设它包含一个单词。但是,一封电子邮件包含许多单词。在朴素贝叶斯中,您假设单词彼此独立出现(事实证明这是一个好的假设),然后将电子邮件中所有单词的概率相乘。
    5. 您通常将数据分为训练数据和测试数据,因此您将拥有一组用于训练模型的电子邮件,然后是一组您测试的标记数据,用于计算准确率和召回率。

    我强烈推荐使用 NLTK,这是​​一个 Python 机器学习和 nlp 库。它非常用户友好,有很好的文档和教程,是熟悉该领域的好方法。

    编辑:Here's an explanation 如何使用代码构建简单的 NB 分类器。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-05-01
      • 2011-06-23
      • 2022-01-18
      相关资源
      最近更新 更多