如何使用word2vec和keras对句子进行分类?
我有两个句子列表。第一个列表包含不同的问题,第二个列表包含不同的陈述 小例子:如何使用word2vec和keras对句子进行分类?,keras,recurrent-neural-network,gensim,word2vec,keras-layer,Keras,Recurrent Neural Network,Gensim,Word2vec,Keras Layer,我有两个句子列表。第一个列表包含不同的问题,第二个列表包含不同的陈述 小例子: 1st list: [ "What are cultures that are associated with core values?", "How do bumblebees fly?", "It is possible that avocado seed can be a tea?", ... ] 2nd list: [ "The population was 388
1st list:
[
"What are cultures that are associated with core values?",
"How do bumblebees fly?",
"It is possible that avocado seed can be a tea?",
...
]
2nd list:
[
"The population was 388 at the 2010 census.",
"Grevillea helmsiae is a tree which is endemic to Queensland in Australia.",
"He played youth football for Tynecastle Boys Club.",
...
]
我想写一个程序,将能够分类这两种类型的句子。为此,我可以创建神经网络并在我的2个列表中对其进行训练。我猜,这一定是递归神经网络
我已将每个句子转换为word2vec向量数组。现在我想用LSTM层建立keras递归神经网络。但我不知道如何正确地做到这一点。你能为这个问题编写keras模型吗
更新
以上句子经过word2vec转换后的形式如下:
[
[vector_of_floats_for_word_"what", vector_of_floats_for_word_"are", vector_of_floats_for_word_"cultures", vector_of_floats_for_word_"that", ...],
[vector_of_floats_for_word_"how", vector_of_floats_for_word_"do", vector_of_floats_for_word_"bumblebees", ...]
]
等等。每个向量有300维
这是我的模型:
X = []
Y = []
for i in range(1000):
X.append(questions_vectors[i])
Y.append([1, 0])
X.append(statements_vectors[i])
Y.append([0, 1])
model = Sequential()
model.add(LSTM(128, input_shape=(2000, None, 300)))
model.add(Dense(2, activation='softmax'))
model.compile(loss='binary_crossentropy', optimizer=RMSprop(lr=0.01))
在那里你可以看到神奇的数字2000和300。2000是1000个问题+1000个陈述,300字向量长度
但我确信我的模型是错误的。我还得到了一个错误:
ValueError: Input 0 is incompatible with layer lstm_1: expected ndim=3, found ndim=4
你真的需要一个神经网络来对陈述中的问题进行分类吗?查看数据集,仅最后一个字符就足以进行分类。无论如何,为了帮助您理解模型部分,我们需要查看您在开头使用的代码,以及您如何转换这些句子。当然,我删除了语句中的最后几个字符。@NassimBen我添加了更多描述。