我想为论坛文章构建一个分类器,它将使用语义词表示自动将这些帖子分类为一些定义的类别(因此多类分类而不仅仅是二进制分类)。对于这个任务,我想利用word2vec和doc2vec来验证使用这些模型支持分类器快速选择训练数据的可行性。此时此刻,我尝试了这两种模式,它们都很有魅力。但是,由于我不想手动标记每句话来预测它所描述的内容,所以我希望将此任务留给word2vec或doc2vec模型。所以,我的问题是:在Python中我可以使用什么算法作为分类器?(我想在word2vec或doc2vec上应用一些集群--手动标记每个集群(这需要一些时间,并不是最好的解决方案)。在此之前,我使用了“LinearSVC”(来自支持向量机)和OneVsRestClassifier,但是,为了预测一个新的测试语句属于哪一类,我给每个句子贴上了标签(通过手动训练向量"y_train“)。对于这种类型的分类器(使用语义词表示来训练数据),python中有什么好的算法和方法?
发布于 2015-07-13 21:12:49
像word2vec/doc2vec之类的东西--实际上是任何一个非监督的分类器--的问题是它只使用上下文。所以,举个例子,如果我有一个句子,比如“今天是一个炎热的日子”,另一个像“今天是一个寒冷的日子”,它认为热和冷是非常相似的,应该是在一个集群中。
这对标签来说很不好。无论哪种方式,在python的gensim模块中都有一个很好的Doc2Vec和Word2Vec实现--您可以快速使用google数据集的预构建二进制文件,并测试您是否得到了有意义的集群。
您可以尝试的另一种方法是在计算机上实现一个简单的lucene/solr系统,并开始随机标记几个句子。随着时间的推移,lucene/solr会为您的文档建议标记,如果您的数据不是很糟糕的话,它们确实是相当不错的标记。
这里的问题是,你试图解决的问题不是特别容易,也不是完全可以解决的--如果你有非常好的/清晰的数据,那么你可以自动分类你的数据的80%-90%.但是,如果它是坏的,你将不能自动分类太多。
发布于 2015-07-24 21:02:16
对于句子的多类分类问题,doc2vec可以很好地工作,因为上下文在句子中很少有变化。
如果您只想使用python,我将推荐doc2vec (用于构建特性)和xgboost (用于训练分类器),这在类似的问题中对我起了作用。
https://stackoverflow.com/questions/31390838
复制相似问题