Keras 中具有数千个输出类的文本分类

数据挖掘 机器学习 神经网络 深度学习 喀拉斯 nlp
2021-09-17 11:06:59

任务:

我有一个包含职位和描述的数据集。任务是通过职位和描述来预测职位的标签。

每个职位发布都有几个标签。因此,模型的标签数量将以数万计。

职位发布数量= 78042

唯一类(标签)的数量= 1369

在此处输入图像描述

在此处输入图像描述

问题:

您能否建议神经网络的工作类型(在 Keras 中是理想的)?

或者,也许您知道如何借助经典机器学习算法来解决这个问题?

我仍然非常感谢解决类似问题的文章的链接。

3个回答

示例数与类数之比并不大。很少有类的出现次数很高(来自第二张图),并且分布似乎遵循幂律。

在这种情况下,我会建议以下策略,

  1. 按出现次数对标签进行排序,并丢弃出现次数很少的标签。这将使问题更容易处理。
  2. 您可以对从经典机器学习技术中获得的准确性进行基准测试。许多经典方法支持多标签输出,您可以在此处查看scikit-learn 库中的支持文档
  3. 您可以混合使用无监督学习和最近邻方法。例如,在您的数据中学习 doc2vec 嵌入,包括标签,并从最近的匹配文档中建议标签以用于新输入。根据 doc2vec 标准,文档数量很少,您需要仔细调整 doc2vec 参数。
  4. 使用神经网络,您可以使用更合适的损失函数,例如多标签软边距损失

我建议您从经典技术开始,首先对潜在准确性进行基准测试。

实际上,您可以通过深度学习轻松解决这些类型的问题。想一想一个聊天机器人,它可以在给定问题的情况下生成答案。如果我们认为每次都像您提到的那样,最终的 softmax 层应该预测类似于词汇量大小的概率分布。但事实并非如此。我们使用称为噪声对比估计 (NCE_LOSS) 的损失函数。在这里,我们对最可能的单词进行采样并使用它们来计算 softmax 层。这里我会提一下Tensorflow之类的来理解这个场景。

您可以了解讲师 Rick Scavetta 如何将短新闻项目的“路透社新闻专线数据集”处理成 46 个新闻类别(例如,体育棒球)。政治/美国)。我认为这与您的问题非常相似。

R 降价文件

  • 视频教程目前正在制作中。我喜欢这种风格。
  • 使用深度学习和 Keras 的 R 接口,他只为每个新闻站点分配 1 个类,而不是 4 个或更多
  • 测试准确率为 77%(但也许你可以用更好的词汇做得更好)
  • 据我所知,您需要一个带有单词排名的词典(它们有多重要。诸如“the”之类的停用词和超稀有词需要排名较低)