【问题标题】:Classifying text documents using nltk使用 nltk 对文本文档进行分类
【发布时间】:2017-04-11 02:29:02
【问题描述】:

我目前正在处理一个项目,我正在接收电子邮件,使用电子邮件包剥离消息正文,然后我想使用体育、政治、技术等标签对它们进行分类......

我已经成功地从我的电子邮件中删除了邮件正文,现在我正在寻找开始分类。我使用 move_reviews 语料库将文档分为正面和负面评论,完成了情感分析分类的经典示例。

我只是想知道如何将这种方法应用到我的项目中?我可以创建多个课程,例如体育、技术、政治、娱乐等吗?我在这里遇到了障碍,正在寻找正确的方向。

如果这不是一个适合 SO 的问题,我很乐意将其删除。

编辑:大家好,我看到这篇文章有点受欢迎,我最终成功完成了这个项目,这里是项目 GitHub Repo 中代码的链接: https://github.com/codyreandeau/Email-Categorizer/blob/master/Email_Categorizer.py

【问题讨论】:

  • 你看过 gensim python 库吗?
  • 要开始分类,您需要先标记数据集。它可以是手动注释或基于规则的。当然,您可以为数据集创建多类。对于您的案例类型的电子邮件,请确保您拥有多类。然后你就可以开始学习和分类你的数据了。使用 cv 或拆分火车测试。就像你对电影评论所做的那样。
  • 正如其他人提到的,gensim 进行主题建模。链接:radimrehurek.com/gensim/tutorial.html Gensim 发现文档之间的语义相似性并将它们聚类。通过查看特定集群中的文档,您可以将存储桶识别为体育、政治、技术等。

标签: python machine-learning nltk text-classification document-classification


【解决方案1】:

要创建分类器,您需要一个包含您要查找的类的训练数据集。在您的情况下,您可能需要:

  1. 创建您自己的数据集
  2. 使用预先存在的数据集

brown corpus 是一个开创性的文本,其中包含您所谈论的许多类别。这可能是帮助您使用 gensim 之类的包对您的电子邮件进行分类以查找语义相似的文本的起点。

一旦您对电子邮件进行了分类,您就可以训练一个系统来预测每封未见过的电子邮件的标签。

【讨论】:

  • 谢谢你,超级有帮助!
【解决方案2】:

文本分类任务是一个监督机器学习问题。这意味着您需要有标记的数据。当您处理 movie_review 问题时,您使用 +1/-1 标​​签来训练您的情绪分析系统。

回到你的问题:

  1. 如果您有数据标签,请以同样的方式解决问题。我建议你使用 scikit-learn 库。你可以从这里获得一些灵感:Scikit-Learn for Text Classification

  2. 如果您没有标签,您可以尝试无监督学习方法。如果您对拥有多少个类别(称为数字 K)有任何线索,您可以尝试使用 KMeans 方法。这意味着,根据电子邮件的相似程度将电子邮件分为 K 个类别。类似的电子邮件最终会出现在类似的存储桶中。然后用手检查集群并拿出一个标签。将新电子邮件分配给最相似的集群。如果您需要有关 KMeans 的帮助,请查看此快速食谱:Text Clustering Recipe

建议:获取电子邮件标签可能比您想象的要容易。例如,Gmail 允许您导出包含文件夹信息的电子邮件。如果您对电子邮件进行了分类,则可以利用这一点。

【讨论】:

    猜你喜欢
    • 2018-05-13
    • 2014-01-06
    • 2014-03-08
    • 1970-01-01
    • 2013-05-17
    • 2015-02-03
    • 2016-03-20
    • 2011-07-29
    • 1970-01-01
    相关资源
    最近更新 更多