使用语义词表示(例如word2vec)来构建分类器



我想为论坛帖子建立一个分类器,它将自动对这些帖子进行分类帖子分为一些定义的类别(所以多类分类不仅仅是二元分类)分类)通过使用语义词表示。为了完成这项任务,我想利用对word2vec和doc2vec进行了分析,并验证了使用这些模型支持的可行性为分类器选择训练数据。目前,两种型号我都试过了他们工作起来很有魅力。但是,由于我不想手动标记每个句子来预测它描述了什么,我想把这个任务留给word2vec或doc2vec模型。所以,我的问题是:我可以在Python中使用什么算法作为分类器?(我在想要在word2vec或doc2vec上应用一些集群,请手动标记每个集群(如这需要一些时间,也不是最好的解决方案)。之前,我使用了"LinearSVC"(来自SVM)和OneVsRestClassifier,然而,我标记了每个句子(由手动训练向量"y_train"),以预测新测试属于哪个类句子将属于。在python中使用什么是好的算法和方法这种类型的分类器(利用语义词表示来训练数据)?

像word2vec/doc2vec等——实际上是任何ussupervised分类器——的问题是它只使用上下文。例如,如果我有一个像"今天很热"的句子和另一个像"今天很冷"的句子,它认为热和冷非常非常相似,应该在同一个聚类中。

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

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

这里的问题是你试图解决的问题不是特别容易,也不是完全可以解决的-如果你有非常好的/清晰的数据,那么你可能能够自动分类大约80-90%的数据…但如果它是坏的,你就不能自动分类了。

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

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

最新更新