首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >我想要一台机器来学习对短文本进行分类

我想要一台机器来学习对短文本进行分类
EN

Stack Overflow用户
提问于 2010-04-23 13:23:43
回答 8查看 9.4K关注 0票数 20

我有一大堆大约500字的短篇小说,我想把它们分成20个类别之一:

  • Entertainment
  • Food
  • Music
  • etc

我可以手动对它们进行分类,但我想要实现机器学习来猜测最终的类别。解决这个问题的最好方法是什么?有没有我应该使用的机器学习的标准方法?我认为决策树不能很好地工作,因为它是文本数据……我在这个领域完全是个新手。

如有任何帮助,将不胜感激,谢谢!

EN

回答 8

Stack Overflow用户

回答已采纳

发布于 2010-04-23 16:11:32

naive Bayes很可能会为你工作。方法如下所示:

  • 修复多个类别,并获得(文档,类别)对的训练数据集。
  • 文档的数据向量就像一袋单词。例如,拿100个最常见的单词来说,除了" the "," and“之类的单词。每个单词都会得到数据向量的一个固定分量(例如,“食物”是位置5)。因此,特征向量是一个布尔值数组,每个布尔值表示该单词是否出现在相应的文档中。

培训:

  • 对于您的训练集,计算每个特征和每个类的概率: p(C) =C类的文档数/食物的总数特征在类中的概率: p(F|C) =具有给定特征的类的文档数(=文本中的单词“documents.
  • Calculate”)/给定类中的文档数。

决定:

对于给定的未分类文档,它属于类别C的概率与P(C|F1,...,F500) = P(C) * P(F1|C) * P(F2|C) * ... * P(F500|C)成正比。选择使该术语最大化的C。log

  • 由于乘法在数值上比较困难,您可以改用对数的总和,在相同的C时将其最大化:

P(C|F1,...,F500) = log P(C) + log P(F1|C) + log P(F2|C) + ... + log P(F500|C)。

票数 24
EN

Stack Overflow用户

发布于 2010-04-26 03:42:10

我已经对成千上万的短文本进行了分类。我最初做的是使用tf-idf向量空间模型,然后对这些向量进行k均值聚类。这是探索性数据分析的一个非常好的初始步骤,可以很好地处理您的数据集。我用来集群的包是cluto:http://glaros.dtc.umn.edu/gkhome/views/cluto/

为了执行tf-idf,我只用perl编写了一个快速脚本来对非字母数字进行标记化。然后,每个文档都由一袋单词组成。每个文档都表示为它所包含的单词的向量。向量的每个索引的值是词频(tf) *反文档频率(idf)。它就是文档中该单词/术语的计数乘以包含该单词的文档分数的倒数的乘积。(因为像"the“这样的词是非常缺乏信息的。)

这种方法很快就能让你达到80%-90%的准确率。然后,您可以手动标记正确的(或者更重要的是:错误的),然后进行监督学习(如果您选择)。

票数 10
EN

Stack Overflow用户

发布于 2010-04-23 15:16:54

我认为“自动文本分类中的机器学习”这篇论文(你可以在谷歌上搜索并下载PDF文件)值得一读。本文讨论了两个关键部分:一个是特征选择(将文本转换到特征空间),另一个是在特征空间上建立分类器。有很多种特征选择方法,以及几种分类方法(决策树、朴素贝叶斯、kNN、支持向量机等)。你可以尝试一些组合,看看它是否在你的数据集上起作用。

我之前做过类似的事情,我使用Python进行文本操作、特征选择和特征加权。分类器使用Orange。奥兰治和韦卡已经包含了朴素贝叶斯,kNN...,但现在我可能会直接用Python脚本编写分类器,这应该也不是很难。

希望这能有所帮助。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2696392

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档