具有大量意图类别的意图分类

时间:2019-02-24 09:50:31

标签: python tensorflow nlp text-classification

我正在处理大约3000个问题的数据集,并且想要执行意图分类。 该数据集尚未标记,但是从业务角度来看,需要识别大约 80种不同的意图类别。假设我的训练数据每个班级的人数大致相等,并且不偏向某些班级。我打算将文本转换为word2vec或Glove,然后输入到我的分类器中。

我熟悉的意图类数量较少,例如8或10,并且选择了机器学习分类器,例如SVM,朴素的bais或深度学习(CNN或LSTM)。

我的问题是,如果您以前曾经有过如此大量的意图类经验,那么您认为哪种机器学习算法会合理地执行?您是否认为如果我使用深度学习框架,鉴于上述培训数据,仍然会有大量标签会导致性能下降?

我们需要开始为数据加标签,要想出80种标签,然后意识到它表现不佳是很费力的,因此我想确保我对如何做出正确的决定我应该考虑很多类别的意图最大值,您建议使用哪种机器学习算法?

预先感谢...

1 个答案:

答案 0 :(得分:0)

首先,word2vec和GloVe几乎死亡。您可能应该考虑使用较新的嵌入,例如BERT或ELMo(它们对上下文都是敏感的;换句话说,对于在不同上下文中的同一个单词,您会获得不同的嵌入)。目前,BERT是我自己的偏好,因为它是完全开源的并且可用(gpt-2是几天前发布的,显然更好一些。但是,它并不完全对公众开放)。

第二,当您使用BERT的预训练嵌入时,您的模型具有看到大量文本(Google大量)的优势,因此可以对少量数据进行训练,这将大大提高其性能。

最后,如果您可以将意图分类为一些粗粒度类,则可以训练分类器以指定实例属于这些粗粒度类中的哪一个。然后,对于每个粗粒度类,训练另一个分类器以指定细粒度类。这种层次结构可能会改善结果。同样对于分类器的类型,我相信在BERT之上的一个简单的完全连接层就足够了。