【问题标题】:Mixing text and numeric features for text classification using deep learning使用深度学习混合文本和数字特征进行文本分类
【发布时间】:2019-02-18 11:40:12
【问题描述】:

我有一个关于将文本分类为几个类别(主题)的问题。除了文本之外,我还有一些我认为可能有用的数字特征(这些特征中也有缺失值)。但是,最重要的信息当然是在文本中提供的。因此,我认为深度学习方法(使用通用管道:嵌入层 + CNN 或带有 dropout + Dense 层的 RNN)将是最佳选择。将仅适用于文本输入的当前模型与数字特征混合的最佳做法是什么?在这个领域是否有任何技巧、最佳常见做法、最先进的研究?有没有关于这个主题的论文/实验(可能在 GitHub 上)?

如果我们能概括地思考问题就好了,但是为了了解我们可以解决什么样的问题,我将举一个具体的例子。假设我们有来自用户的评论,他们描述了他们在接受服务或购买商品时遇到的问题。目标特征是多标签:与用户投诉相关联的一组标签(类别/主题)(我们应该在数百个可能的主题中选择相关的)。

然后除了用户评论本身(这是最重要的特征)之外,我们可能还想考虑一些数字特征,如价格、等待时间、评级(客户满意度得分)等。这可能很有用用于预测某些特定类别。

我们的想法是以某种方式在深度学习模型中混合所有这些特征以生成最终模型。不确定我是否知道如何做到这一点的最佳方法。解决此类问题的最佳做法/有用的技巧是什么?

【问题讨论】:

    标签: deep-learning text-mining feature-engineering natural-language-processing


    【解决方案1】:

    对于每个数字特征,在统计上都有一个表示(您可以使用 pandas.DataFrame.describe),同时绘制分布图会让您在视觉上更强大。

    在获得均值、标准差、最大值、最小值等值之后,您应该摆脱可能损害您的训练模型的异常值。例如,如果您的特征有 90% 的数值从 18 到 72,但也有 1.1 或 1200 等值,您应该通过将它们均衡为 18 或 72 来消除这些值,具体取决于侧面。你可以使用 np.clip()

    在得到合理分布后,您应该将这些数字特征转换为分类特征。例如,从 18 到 72 的数字分布可以分组为 18、27、36、......、72,取区间。您可以增加或减少分辨率,具体取决于您的理解和算法的性能。您可以使用 np.digitize() 或通过您可以编写的简单函数手动执行。

    最后你有一个分类特征,就像文本一样。 CNN 或 RNN 可以很好地处理数值的分类表示,并且您可以更好地利用特征交叉来提高性能。

    但如果你问更复杂的问题,我可能不明白你的问题,或者我可能不知道。不过,如果您想问更多或不同的问题,我很乐意提供帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-06-17
      • 2015-01-07
      • 2016-12-31
      • 2015-12-13
      • 2017-06-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多