如何以编程方式对对象列表进行分类

时间:2012-07-29 19:37:31

标签: python machine-learning artificial-intelligence classification

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

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

2 个答案:

答案 0 :(得分:3)

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

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

  1. 收集大量数据(电子邮件),并按类标记(垃圾邮件或非垃圾邮件)
  2. 对于每封电子邮件,请删除停用词,并获取该电子邮件中唯一字词的列表
  3. 现在,对于每个单词,计算它在垃圾邮件中的显示概率,与非垃圾邮件相比(即计算垃圾邮件数量与非垃圾邮件数量)
  4. 现在你有一个模型 - 电子邮件是垃圾邮件的概率,因为它包含一个单词。但是,电子邮件包含许多单词。在Naive Bayes中,您假设单词彼此独立地发生(结果证明是一个正确的假设),并将电子邮件中所有单词的概率相乘。
  5. 您通常会将数据划分为培训和测试,因此您将获得一组电子邮件,用于训练您的模型,然后是一组标记的内容,您可以根据计算精度和召回的位置进行测试。
  6. 我强烈推荐使用NLTK,一个python机器学习和nlp库。它非常用户友好,并且有很好的文档和教程,是熟悉该领域的好方法。

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

答案 1 :(得分:2)

可能不是。您需要做一些工作来提取某些可用形式的数据(例如名称),并且在一天结束时,可能没有足够的类别可以更容易地手动识别列表每个类别的关键字,并在标题/描述上设置解析器。

例如,您可以查看六个生物学应用程序,并意识到在名称/描述/您可以访问的任何内容中,“细胞”,“生命”和“成长”这两个词经常出现 - 而不是由于一些机器学习,但由于你自己的人类直觉。因此,构建一个解析器,将这些单词作为生物学应用程序进行分类,并为其他类别做类似的事情。

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