我想为论坛帖子构建一个分类器,该分类器将通过使用语义词表示自动将这些帖子分类为一些定义的类别(因此多类分类不仅仅是二进制分类)。对于这个任务,我想利用 word2vec 和 doc2vec 并检查使用这些模型来支持快速选择分类器训练数据的可行性。此刻,我已经尝试了这两种模型,它们的工作方式非常有魅力。但是,由于我不想手动标记每个句子来预测它所描述的内容,我想将此任务留给 word2vec 或 doc2vec 模型。所以,我的问题是:我可以在 Python 中为分类器使用什么算法?(我正在考虑在 word2vec 或 doc2vec 上应用一些聚类 - 手动标记每个聚类(这需要一些时间并且不是最佳解决方案)。以前,我使用了“LinearSVC”(来自 SVM)和 OneVsRestClassifier,但是,我标记了每个句子(通过手动训练向量“y_train”)来预测新的测试句子属于哪个类。对于这种类型的分类器(利用语义词表示来训练数据),python 中的一个好的算法和方法是什么?
问问题
1103 次
2 回答
2
word2vec/doc2vec 之类的东西(实际上是任何无监督分类器)的问题在于它只使用上下文。因此,例如,如果我有一个像“今天很热”的句子和另一个像“今天很冷的天”这样的句子,它认为冷热非常相似,应该在同一个集群中。
这使得标记非常糟糕。无论哪种方式,在 python 的 gensim 模块中都有一个很好的 Doc2Vec 和 Word2Vec 实现 - 您可以快速使用 google-news 数据集的预构建二进制文件并测试您是否获得有意义的集群。
您可以尝试的另一种方法是在您的计算机上实现一个简单的 lucene/solr 系统并开始随机标记几个句子。随着时间的推移,lucene/solr 会为您的文档建议清晰的标签,如果您的数据不是很糟糕,它们确实会成为相当不错的标签。
这里的问题是您要解决的问题不是特别容易,也不是完全可以解决 - 如果您有非常好的/清晰的数据,那么您可以自动分类大约 80-90% 的数据......但如果是糟糕,您将无法对其进行太多自动分类。
于 2015-07-13T21:12:49.827 回答
0
对于句子的多类分类问题,doc2vec 可以很好地工作,因为句子中的上下文很少发生很大变化。
如果您只想使用 python,我会推荐 doc2vec(用于构建功能),然后是 xgboost(用于训练分类器),它在类似的问题中对我有用。
于 2015-07-24T21:02:16.857 回答