Keras - 文本分类 - LSTM - 如何输入文本?

5
我正在尝试理解如何使用LSTM对我拥有的某个数据集进行分类。
我进行了研究,并找到了keras和imdb的示例: https://github.com/fchollet/keras/blob/master/examples/imdb_lstm.py 然而,我对数据集必须如何处理才能输入感到困惑。
我知道keras有预处理文本方法,但我不确定要使用哪种方法。
x包含n行文本,y通过快乐/悲伤将文本分类。基本上,1.0表示100%快乐,而0.0表示完全悲伤。数字可能会有所变化,例如0.25〜〜等等。
所以我的问题是,我如何正确地输入x和y?我必须使用词袋吗? 任何提示都将不胜感激!
我编写了以下代码,但我一直收到相同的错误:
#('Bad input argument to theano function with name ... at index 1(0-based)', 
'could not convert string to float: negative')

import keras.preprocessing.text
import numpy as np

np.random.seed(1337)  # for reproducibility

from keras.preprocessing import sequence
from keras.models import Sequential
from keras.layers.core import Dense, Activation
from keras.layers.embeddings import Embedding
from keras.layers.recurrent import LSTM

print('Loading data...')
import pandas

thedata = pandas.read_csv("dataset/text.csv", sep=', ', delimiter=',', header='infer', names=None)

x = thedata['text']
y = thedata['sentiment']

x = x.iloc[:].values
y = y.iloc[:].values

###################################
tk = keras.preprocessing.text.Tokenizer(nb_words=2000, filters=keras.preprocessing.text.base_filter(), lower=True, split=" ")
tk.fit_on_texts(x)

x = tk.texts_to_sequences(x)


###################################
max_len = 80
print "max_len ", max_len
print('Pad sequences (samples x time)')

x = sequence.pad_sequences(x, maxlen=max_len)

#########################
max_features = 20000
model = Sequential()
print('Build model...')

model = Sequential()
model.add(Embedding(max_features, 128, input_length=max_len, dropout=0.2))
model.add(LSTM(128, dropout_W=0.2, dropout_U=0.2))
model.add(Dense(1))
model.add(Activation('sigmoid'))

model.compile(loss='binary_crossentropy', optimizer='rmsprop')

model.fit(x, y=y, batch_size=200, nb_epoch=1, verbose=1, validation_split=0.2, show_accuracy=True, shuffle=True)

# at index 1(0-based)', 'could not convert string to float: negative')

你正在使用CSV解析器来读取文本。你的数据集/text.csv设置为"句子,情感"了吗?如果没有,你需要将其设置为这样,或者重新考虑如何从你已有的结构中解析出这两个组件。 - Amw 5G
你是正确的!是我加载标签的方式有问题! - KenobiBastila
请添加一个答案,我会将其标记为正确的! - KenobiBastila
1个回答

3

请检查您使用的CSV解析器以读取文本的方式。确保字段格式为文本、情感,如果您希望按照代码中编写的方式使用解析器。


这是我加载标签的方式! - KenobiBastila

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接