python - 推特/通用分类训练语料库

标签 python twitter machine-learning categorization

有人知道任何好的广泛的 Twitter 分类语料库吗?

我正在寻找广泛的类别,例如:
- 运动
- 科学/技术
- 食物
- 健康
- 娱乐
- 音乐
- 游戏
- 财务
- 教育
- 政治
- 电视
- 宗教
- 马达
- 冲突

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

有很好的资源链接here ,但它们是具体的方式:

编辑
这非常令人兴奋。我找到了这个 database通过sklearn .这是 list of all categories .看起来它包含我正在寻找的东西。 我将不得不学习如何做,然后实现它,所以如果它有效,我必须回复你们......

最佳答案

主要是成功!虽然这不是推特优化的训练数据集,但似乎更适合一般文本分类。
好吧,这比希望的要尴尬得多。首先,

from sklearn.datasets import fetch_rcv1
rcv1 = fetch_rcv1()

创建了一个我不知道如何使用的数据集。数据是 47236 维向量而不是文本标记,没有明显或记录(我能找到)的方式来处理它。所以我不得不走很长的路。

查看 datasource ,可以下载 token 文件。它们分为 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: [...]}}

然后,我创建了 2 个 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)

结果喜忧参半。如果您查看 list of categories ,你会注意到很多类别都是金融类的,而不是我想要的漂亮的均匀分布。所以我确实有很多想念。但是,它创建了一个坚实的基础,并且使用上面突出显示的脚手架,看起来很容易将标记/类别添加到 dTrainingData 字典以获取更具体的类别。

关于python - 推特/通用分类训练语料库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35751874/

相关文章:

android - 在 Facebook/Twitter 注册之前检查现有用户解析 Android SDK

java - 从 Java 应用程序发布推文

javascript - 如何将主题标签添加到自定义推文按钮?

.net - AWS AmazonComprehend 示例在 .net C# 中运行时遇到问题

python - 如何使用 scikit 线性回归查找系数的特征名称?

c++ - Boost.Python 找不到 pyconfig.h。它需要去哪里?

Python Socket 接收大量数据

python - 无法安装pyethereum模块

Python Dropbox 应用程序,我应该如何处理应用程序 key 和应用程序 secret ?

machine-learning - 如何将分类数据映射到 python pandas dataframe 中的category_encoders.OrdinalEncoder