【问题标题】:Assign a short text to one of two categories according to previous assignments (votes)根据之前的分配(投票)将短文本分配给两个类别之一
【发布时间】:2015-06-16 06:04:38
【问题描述】:

有一个短文本流。每个都有一条推文的大小,或者让我们假设它们都是推文。

用户可以对任何推文进行投票。因此,每条推文都具有以下三种状态之一:

相关(赞成票)

默认(中立,即不投票)

不相关(反对票)

每当有一组新推文出现时,它们都会按特定顺序显示。此顺序由用户对所有先前推文的投票决定。目的是为每条新推文分配一个分数。该分数是根据该推文的文本与用户之前投票的所有推文之间的单词相似度或匹配度计算得出的。换句话说,得分最高的推文将是包含先前投票为正面的单词数量最多和先前投票为负面的单词最少的推文。此外,具有高分的新推文将触发通知给用户,因为它们被认为非常相关。

最后一件事,最少的语义考虑(自然语言处理)会很棒。

我已经阅读了词频-逆文档频率,并提出了这个非常简单和基本的解决方案:

提醒:tf-idf 中的高权重是由词在整个集合中的高词频和低总频率达到的。

如果用户对一条推文投了赞成票,则这条推文的所有词都会得到一个肯定的分数(否定的情况也是如此)。这意味着我们将拥有大量单词,其中每个单词都有正点和负点的总数。

如果 (Tweet score > 0) 那么这条推文将触发通知。

推文得分 = 这条推文所有单词的得分之和

词得分 = 词频 * 逆总频

之前所有投票中的词频 =(该词的总 肯定 票 - 该词的总 否定 票)/ 票这个词

逆总频率 = log(所有字的总票数/这个字的总票数)

这个方法够吗?我愿意接受任何更好的方法和任何现成的 API 或算法。

【问题讨论】:

    标签: twitter nlp tf-idf text-classification document-classification


    【解决方案1】:

    一种可能的解决方案是在用户投票的推文上训练一个分类器,例如 Naive Bayes。您可以查看scikit-learn 的文档,这是一个 Python 库,它解释了如何轻松地 preprocess your text and train such a classifier

    【讨论】:

    • 非常感谢您的反馈。同时,我将阅读有关 scikit-learn 的信息,由于您是该领域的专家,您能告诉我您对我建议的 tf-idf 方法的看法吗?
    • 您对 tf-idf 的直觉基本正确,但您所描述的方法存在一些问题。例如,按文档频率归一化应该比您的“逆总频率”更好(如果我理解正确的话)。但是,您的解决方案与我在上面链接到的文档中找到的朴素贝叶斯方法非常接近。 CountVectorizerTfidfTransformerMultinomialNB 的 scikit-learn 管道应该会很快为您提供一个工作系统,所以我会坚持下去。
    • 我想在 Google App Engine 上运行这个分类功能。但是,我发现在 GAE 上运行 scikit-learn 是不可能的:stackoverflow.com/questions/22763165/…你能推荐任何其他可以与 Google App Engine 配合使用的工具吗?
    【解决方案2】:

    我会查看朴素贝叶斯,但在执行简单分类时我也会查看 K-Nearest Neighbors 算法 - 这包含在 Sci-kit Learn 库中并且记录良好。

    RE:“在 GAE 上运行 SKLearn 是不可能的”——你要么需要使用 Google Predict API,要么运行一个 VPS,作为工作人员来处理你的分类任务;不过,这显然必须存在于不同的系统上。

    不过我想说,如果您只希望在适当小的数据集上执行简单的分类,您实际上可以在 JavaScript 中实现一个分类器,例如

    `http://jsfiddle.net/bkanber/hevFK/light/`
    

    使用 JS 实现,如果数据集太大,处理时间将变得无法接受,但作为一个选项很好,在许多情况下甚至更可取。

    最终,GAE 不是我在构建任何可能需要除最基本的机器学习技术之外的所有东西时使用的平台。我会在 Digital Ocean、AWS 等地方查看 Heroku 或 VPS。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-08-12
      • 2019-09-02
      • 2018-07-09
      • 1970-01-01
      • 2014-02-14
      • 1970-01-01
      • 2019-12-11
      相关资源
      最近更新 更多