Twitter/ 通用分类训练语料库

有人知道哪里有好的Twitter通用分类语料库吗?

我正在寻找广泛的分类,例如:
– 运动
– 科学/技术
– 食品
– 健康
– 娱乐
– 音乐
– 游戏
– 金融
– 教育
– 政治
– 电视
– 宗教
– 汽车
– 冲突

(我认为这几乎涵盖了一切)

这里链接了一些非常好的资源,但它们过于具体:

  • Reuters 专门用于商品和自然资源
  • 20Newsgroups 看起来是为美国报纸准备的
  • Medir 用于心血管医学数据

编辑
这非常令人兴奋。我通过sklearn找到了这个数据库。这是所有类别的列表。看起来它包含了我想要的东西。我得学习如何使用,然后实现它,所以如果它有效的话,我会再回来告诉你们的…


回答:

大体上成功了!虽然这不是针对Twitter优化的训练数据集,但似乎更适合通用的文本分类。
好吧,这比预期的要尴尬得多。首先,

from sklearn.datasets import fetch_rcv1rcv1 = fetch_rcv1()

创建了一个我不知道如何处理的数据集。数据是47236维的向量,而不是文本标记,也没有明显的或我能找到的文档说明如何处理这些数据。所以我不得不走迂回路线。

查看数据源,可以下载标记文件。它们被分成5部分:

lyrl2004_tokens_train.dat, lyrl2004_tokens_test_pt0.dat, lyrl2004_tokens_test_pt1.dat, lyrl2004_tokens_test_pt2.dat, lyrl2004_tokens_test_pt3.dat, 

一个文件包含所有分类:

rcv1-v2.topics.qrels

作为一个有用的补充说明,对于这些大型文件,最好先查看一些数据以了解你正在处理什么内容。例如,在Linux中,你可以使用head -5 rcv1-v2.topics.qrels来查看分类数据的前5行。

这些文件可以通过id链接。因此,我创建了一个包含所有id及其对应文本标记和分类的字典。我之所以使用字典来做这件事,这是一个相当慢的过程,而不是简单地创建两个包含所有值和错误的列表,是因为我不知道数据文件是否100%匹配。

我的字典看起来像这样:
dTrainingData = {‘2286’: {lsTokens: […], lsCats: […]}}

然后,我创建了两个numpy数组,一个用于标记,一个用于分类。这些需要先处理。因此,你可以这样训练模型:

def categorize(sText):    import numpy as np    aTokens = np.array([d['lsTokens'] for d in dTrainingData.values()], str)    lCats = [d['lsCats'] for d in dTrainingData.values()]    print("creating binary cats")    from sklearn import preprocessing    oBinarizer = preprocessing.MultiLabelBinarizer()    aBinaryCats = oBinarizer.fit_transform(lCats)    from sklearn.multiclass import OneVsRestClassifier    from sklearn.feature_extraction.text import TfidfTransformer    from sklearn.svm import LinearSVC    from sklearn.feature_extraction.text import CountVectorizer    from sklearn.pipeline import Pipeline    oClassifier = Pipeline([        ('vectorizer', CountVectorizer()),        ('tfidf', TfidfTransformer()),        ('clf', OneVsRestClassifier(LinearSVC()))])    print("fitting data to classifier...")    oClassifier.fit(aTokens, aBinaryCats)    aText = np.array([sText])    aPredicted = oClassifier.predict(aText)    lAllCats = oBinarizer.inverse_transform(aPredicted)

结果喜忧参半。如果你查看类别列表,你会注意到很多类别都是金融相关的,而不是我想要的均匀分布。所以我有很多失误。然而,它建立了一个坚实的基础,并且使用上述框架,很容易向dTrainingData字典中添加标记/类别以实现更具体的分类。

Related Posts

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注