繁体   English   中英

如何在Keras中使用自定义功能进行文本分类

[英]How use custom features in Keras for text classification

我正在使用Keras在Python中使用文本分类器。 现在,我尝试使用bag of words只用数据集的单词来建立模型。 现在,我将在分类器中使用其他自定义功能(例如极性),但是我不知道如何在代码中添加这些功能。 我的数据集就像:

 Text                    | Polarity | Number of words | Classification 

 Hello my name is John   |    0,05  |        5        |        0
 How old are you?        |    0,00  |        4        |        1
 I'm very hungry         |   -0,05  |        4        |        0

中间的两个列是我想要添加到分类器中的自定义功能,但我不知道如何。

train_x = tokenizer.sequences_to_matrix(allWordIndices, mode='binary')
train_x2 = train_x

train_x = train_x[1000:]
test_x = train_x2[:1000]
train_y = keras.utils.to_categorical(train_y, 2)
train_y2 = train_y
train_y = train_y[1000:]
test_y = train_y2[:1000]


from keras.models import Sequential
from keras.layers import Dense, Dropout, Activation

model = Sequential()
model.add(Dense(30, input_shape=(max_words,), activation='relu'))
model.add(Dropout(0.45)) 
model.add(Dense(100, activation='softplus'))
model.add(Dropout(0.45))
model.add(Dense(2, activation='softmax'))

model.compile(loss='categorical_crossentropy',optimizer='RMSProp',metrics=['accuracy'])

history = model.fit(train_x,train_y,batch_size=32,epochs=10,verbose=1,validation_split=0.1,shuffle=True)

score = model.evaluate(test_x,test_y, batch_size=128)

在此示例中,我仅使用第一列内容的单词袋功能,我想添加其他两列,例如功能(极性,单词数)。 有人知道如何添加这些? 提前致谢。

对于字词包,您只需将数字特征连接到BoW向量上即可。 因此,您可以只使用numpy甚至更简单的熊猫。 然后,您有一个尺寸为max_words + custom_numerical_features的向量。

无论如何,我确实做了类似的事情,并且在诸如BoW和嵌入之类的几种方法上做了很多工作。

分散网络中的文本功能和数字功能是一个好主意。 为此,您可以使用多个输入模型。 我刚刚写了一个博客,你可以在这里看看。 有使用的嵌入,但通常它也适用于BoW。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM