繁体   English   中英

scikit的标准方法是什么 - 学习安排文本数据进行文本分类?

[英]What is the standard way in scikit-learn to arrange textual data for text classification?

我有一个NLP任务,基本上是监督文本分类 我用它的POS标签标记了一个语料库,然后我使用scikit-learn提供的不同的矢量化器来提供scikit-learn提供的一些分类算法。 我还有以前以无人监督的方式获得的语料库的标签(类别)。

首先我对语料库进行了POS标记,然后我获得了一些不同的双字母组合,它们具有以下结构:

bigram = [[('word','word'),...,('word','word')]]

显然,似乎我有一切可以归类(我已经准备好用一些小例子进行分类,但不能用所有语料库进行分类)。

我想使用bigrams作为功能,以便将它们呈现给分类算法(Multinomial naive bayes,SVM等)。

什么可以是标准(pythonic)方式来安排所有文本数据来分类和显示分类语料库的结果? 我正在考虑使用arff文件并使用numpy数组,但我想它可能会不必要地使任务复杂化。 另一方面,我正在考虑将数据拆分为火车和测试文件夹,但我没有想象如何在火车文件夹中设置标签。

你的问题非常模糊。 您可以访问有关该主题的书籍和课程。 看看这个博客的开始1和这些课程23

最简单的选项是load_files ,它需要一个目录布局

data/
    positive/     # class label
        1.txt     # arbitrary filename
        2.txt
        ...
    negative/
        1.txt
        2.txt
        ...
    ...

(这不是一个真正的标准 ,它只是方便和习惯。网上的一些ML数据集以这种格式提供。)

load_files的输出是一个包含数据的dict

1) larsmans已经提到了一种安排和存储数据的便捷方式。 2)当使用scikit时,numpy数组总是让生活更轻松,因为它们具有许多功能,可以轻松地更改数据的排列。 3)训练数据和测试数据以相同的方式标记。 所以你通常会有类似的东西:

bigramFeatureVector = [(featureVector0, label), (featureVector1, label),..., (featureVectorN, label)]

培训数据与测试数据的比例在很大程度上取决于数据的大小。 您应该确实学习n-fold cross validation 因为它会解决您的所有疑虑,并且很可能您必须使用它来进行更准确的评估。 简单地解释一下,对于进行10倍交叉验证,我们假设您将拥有一个数组,其中包含所有数据以及标签(类似于上面的示例)。 然后在循环运行10次,您将留下十分之一的数据用于测试,其余的用于培训。 如果您了解这一点,那么您就不会对培训或测试数据的外观产生任何混淆。 它们看起来应该完全一样。 4)如何可视化您的分类结果,取决于您想要使用的评估方法。 在你的问题中不清楚,但如果你有其他问题,请告诉我。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM