使用Tensorflow 2.0/Keras结合其他数据特征创建文本分类器

主要问题: 如何创建一个能够同时对文本数据和数值特征进行分类的神经网络?

这听起来很简单,但我一定是哪里理解错了。

背景

我正在尝试使用TensorFlow 2/Keras构建一个文本分类器(这是我第一次尝试),目的是分析应用商店的评论,并将它们分类到以下类别:happy, pricingIssue, techIssue, productIssue, miscIssue

我的数据集包含以下内容:star_rating, review_text以及相关的标签。

问题

根据TensorFlow的这个教程,我了解到需要使用tensorflow hub层将句子嵌入为固定形状的输出。

embedding = "https://tfhub.dev/google/tf2-preview/gnews-swivel-20dim/1"hub_layer = hub.KerasLayer(embedding, input_shape=[], dtype=tf.string, trainable=True)

然后我会使用这个作为输入层来构建模型。

model = tf.keras.Sequential()model.add(hub_layer)model.add(tf.keras.layers.Dense(16, activation='relu'))model.add(tf.keras.layers.Dense(1, activation='sigmoid'))

那么我的问题是,如何将数值评级插入到模型的数据中?

潜在解决方案?

使用两个输入层并以某种方式合并它们? 我认为我会希望使用hub层来嵌入数据,另一个输入层用于数值数据,然后将它们都导入到下一层?

先嵌入字符串然后附加评级? 我还可以考虑创建一个函数来预处理数据到数组中,并将评级附加到嵌入的字符串末尾,然后将整个东西用作输入对象。

我很困惑,任何指导都会有帮助!!


回答:

在咨询了专家之后,以上两种解决方案都可以使用,但各有不同的权衡:

  • 使用两个输入层:你可以这样做,但不能使用顺序模型,因为这不再是按顺序进行的。这是一个更传统的图形模型

  • 先附加字符串:因为嵌入层是预训练的,它不需要在模型内部进行,文本可以被嵌入然后与数值评级一起添加到张量中。

由于我对Tensorflow 2和Keras最为熟悉,我选择了第二种方法,这样我可以继续使用顺序模型。

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注