【问题标题】:Using semantic word representation (e.g. word2vec) to build a classifier使用语义词表示(例如 word2vec)来构建分类器
【发布时间】:2015-10-02 03:48:02
【问题描述】:

我想为论坛帖子构建一个分类器,它会自动对这些帖子进行分类 发布到一些定义的类别(所以多类分类不仅是二进制 分类)通过使用语义词表示。对于这个任务,我想利用 word2vec 和 doc2vec 并检查使用这些模型支持快速 为分类器选择训练数据。目前我已经尝试了这两种模型和 他们像魅力一样工作。但是,因为我不想手动标记每个句子来预测 它描述了什么,我想把这个任务留给 word2vec 或 doc2vec 模型。所以, 我的问题是:我可以在 Python 中为分类器使用什么算法? ( 我刚在想 在 word2vec 或 doc2vec 上应用一些聚类 - 手动标记每个聚类(这 需要一些时间,并不是最好的解决方案)。以前,我利用 “LinearSVC”(来自 SVM)和 OneVsRestClassifier,但是,我标记了每个句子(通过 手动训练向量“y_train”)以预测新测试的类别 句子将属于。什么是python中一个好的算法和方法用于 这种分类器(利用语义词表示来训练数据)?

【问题讨论】:

  • @VigneshKalai 那个编辑太糟糕了,我以为这是一个测试 - 你是不是随便放了换行符?

标签: python classification word2vec


【解决方案1】:

诸如 word2vec/doc2vec 之类的东西(实际上是任何无监督分类器)的问题在于它只使用上下文。因此,例如,如果我有一个像“今天是热天”这样的句子,另一个像“今天是一个冷天”这样的句子,它认为冷热非常相似,应该在同一个集群中。

这使得标记非常糟糕。无论哪种方式,在 python 的 gensim 模块中都有一个很好的 Doc2Vec 和 Word2Vec 实现 - 您可以快速使用 google-news 数据集的预构建二进制文件并测试您是否获得有意义的集群。

您可以尝试的另一种方法是在您的计算机上实现一个简单的 lucene/solr 系统并开始随机标记几个句子。随着时间的推移,lucene/solr 会为您的文档建议清晰的标签,如果您的数据不是很糟糕,它们确实会成为相当不错的标签。

这里的问题是您要解决的问题不是特别容易,也不是完全可以解决 - 如果您有非常好的/清晰的数据,那么您可以自动分类大约 80-90% 的数据......但是如果不好,您将无法对其进行太多自动分类。

【讨论】:

    【解决方案2】:

    对于句子的多类分类问题,doc2vec 可以很好地工作,因为句子中的上下文很少发生很大变化。

    如果您只想使用 python,我会推荐 doc2vec(用于构建功能),然后是 xgboost(用于训练分类器),它在类似问题中对我有用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-03-19
      • 2019-04-23
      • 2014-12-21
      • 2018-05-13
      • 2022-10-08
      • 2018-05-19
      • 2018-09-17
      相关资源
      最近更新 更多