当前位置:  开发笔记 > 编程语言 > 正文

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

如何解决《我想要一台机器来学习对短文本进行分类》经验,为你挑选了3个好方法。

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

娱乐

餐饮

音乐

等等

我可以对其中的一大堆进行手工分类,但我希望实现机器学习以最终猜测类别.什么是最好的方法来解决这个问题?我应该使用机器学习的标准方法吗?我认为决策树不会很好,因为它是文本数据......我在这个领域是全新的.

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



1> bayer..:

一个天真的贝叶斯很可能会为你工作.方法是这样的:

修复了许多类别并获得(文档,类别)对的训练数据集.

您的文档的数据向量将像一袋文字.例如,除了"the","and"之类的单词之外,请使用100个最常用的单词.每个单词都会获得数据向量的固定组件(例如"食物"是位置5).然后,特征向量是布尔数组,每个布尔值指示该单词是否出现在相应的文档中.

训练:

对于您的训练集,计算每个特征和每个类的概率:p(C)= C类文档的数量/文档总数.

计算类中特征的概率:p(F | C)=具有给定特征的类的文档数(=文本中的"食物"字)/给定类中的文档数.

决定:

给定未分类的文档,其属于C类的概率与P(C | F1,...,F500)= P(C)*P(F1 | C)*P(F2 | C)*成比例. .*P(F500 | C).选择最大化此术语的C.

由于乘法在数值上是困难的,你可以使用日志的总和,在相同的C处最大化:log P(C | F1,...,F500)= log P(C)+ log P(F1 | C) )+ log P(F2 | C)+ ... + log P(F500 | C).



2> 小智..:

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

为了做tf-idf,我只是在perl中编写了一个快速脚本来标记非字母数字.然后,每个文件都包含一个单词.每个文档都表示为它包含的单词的向量.向量的每个索引的值是术语频率(tf)*逆文档频率(idf).它只是文档中该单词/术语计数乘以包含该单词的文档分数的倒数的乘积.(因为像"the"这样的词语非常缺乏信息.)

这种方法可以快速达到80%-90%的准确率.然后,您可以手动标记正确的(或更重要的是:错误的),然后根据您的选择进行监督学习.



3> sunqiang..:

我认为论文"自动文本分类中的机器学习"(你可以谷歌和下载PDF文件)值得一读.本文讨论了两个关键部分:一个用于特征选择(将文本转换为特征空间),另一个用于在特征空间上构建分类器.有很多特征选择方法,以及几种分类方法(决策树,朴素贝叶斯,kNN,SVM等).您可以尝试一些组合,看看它是否适用于您的数据集.
之前我做过类似的事情,我使用Python进行文本操作,功能选择和功能加权.和橙色的分类器.Orange和Weka已经包含了朴素贝叶斯,kNN ......,但是现在我可能直接用Python脚本编写分类器,它也不应该太难.
希望这可以帮助.

推荐阅读
保佑欣疼你的芯疼
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有