首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Twitter/一般分类培训语料库

Twitter/一般分类培训语料库
EN

Stack Overflow用户
提问于 2016-03-02 15:45:41
回答 2查看 376关注 0票数 4

有谁知道twitter有什么好的分类吗?

我正在寻找广泛的类别,如:

  • 运动
  • 科学/技术
  • 食物
  • 健康
  • 娱乐
  • 音乐
  • 游戏
  • 金融
  • 教育
  • 政坛
  • 电视
  • 宗教
  • 马达
  • 冲突

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

有非常好的资源链接了这里,但是它们是特定的:

  • 路透社是商品和自然资源特有的。
  • 20新闻组看上去像是美国报纸的
  • 心血管医学数据的中医师

编辑

这太令人兴奋了。我是通过数据库 雪橇找到这个的。这是所有类别的清单。好像里面有我要找的东西。我得学会怎么做,然后再实现它,所以如果成功的话,我得给你们回电.

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-03-07 10:44:51

主要是成功!虽然这不是twitter优化的培训数据集,但似乎更适合于一般的文本分类。

好吧,这比预期的尴尬多了。首先,

代码语言:javascript
复制
from sklearn.datasets import fetch_rcv1
rcv1 = fetch_rcv1()

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

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

代码语言:javascript
复制
lyrl2004_tokens_train.dat, 
lyrl2004_tokens_test_pt0.dat, 
lyrl2004_tokens_test_pt1.dat, 
lyrl2004_tokens_test_pt2.dat, 
lyrl2004_tokens_test_pt3.dat, 

有一个包含所有分类的文件:

代码语言:javascript
复制
rcv1-v2.topics.qrels

作为一个有用的附带说明,对于这样的大量文件,只需要查看一些数据就可以了解您正在处理的内容。例如,在linux中,您可以通过head -5 rcv1-v2.topics.qrels查看分类数据的前5行。

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

我的字典是这样的:

代码语言:javascript
复制
 dTrainingData = {'2286': {lsTokens: [...], lsCats: [...]}}

然后,我创建两个numpy数组,一个用于令牌,另一个用于类别。必须首先处理这些问题。所以,你可以把模型训练成这样:

代码语言:javascript
复制
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字典添加标记/类别就很容易了。

票数 1
EN

Stack Overflow用户

发布于 2016-06-13 19:13:35

我找到了另一种更简单的方法来做到这一点。有一个名为意云的服务,它通过一个非常好的API对您发送的文本进行分类。

这里是一个演示,但用我自己的话来说,它适用于python:

代码语言:javascript
复制
import requests

sUrl = "http://api.meaningcloud.com/class-1.1"
sKey = #your key - Need to sign up
sText = #your text of type str that you want categorized.
sModel = "IPTC_en"  #or whatever other model you want to use. 

sPayload = "key={}&txt={}&model={}".format(sKey, sText, sModel)
dHeaders = {'content-type': 'application/x-www-form-urlencoded'}

oResponse = requests.request("POST", sUrl, data=sPayload, headers=dHeaders)

dResponse = json.loads(oResponse.text)

更多关于模型的信息

您需要注册才能使用它,您可以每秒执行2次请求,最多每月40k次,免费。你需要付出更多,但我认为这是不公平的。

下面是解决方案空间的良好的可视化树表示一些一般信息表表示列表

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

https://stackoverflow.com/questions/35751874

复制
相关文章

相似问题

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