मैं समझने की कोशिश कर रहा हूं कि मेरे पास एक निश्चित डेटासेट को वर्गीकृत करने के लिए एलएसटीएम का उपयोग कैसे करें।केरास - पाठ वर्गीकरण - एलएसटीएम - पाठ इनपुट कैसे करें?
मैं शोध किया और keras के इस उदाहरण और आईएमडीबी पाया: https://github.com/fchollet/keras/blob/master/examples/imdb_lstm.py
हालांकि, im कैसे डेटा सेट इनपुट करने के लिए संसाधित किया जाना चाहिए के बारे में उलझन।
मुझे पता है कि केर्स में प्री-प्रोसेसिंग टेक्स्ट विधियां हैं, लेकिन मुझे यकीन नहीं है कि किस का उपयोग करना है।
एक्स में ग्रंथों के साथ एन लाइनें हैं और वाई खुशी/उदासी से पाठ को वर्गीकृत करता है। असल में, 1.0 का मतलब है 100% खुश और 0.0 का मतलब पूरी तरह उदास है। संख्या भिन्न हो सकती है, उदाहरण के लिए 0.25 ~~ और इसी तरह।
तो मेरा सवाल यह है कि, मैं एक्स और वाई को सही तरीके से कैसे इनपुट करता हूं? क्या मुझे शब्दों के बैग का उपयोग करना है? किसी भी टिप की सराहना की जाती है!
लिए मैंने नीचे कोडित लेकिन मैं अगर आप एक ही त्रुटि मिल रही है #('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 वाक्य, भावना के रूप में स्थापित है? यदि नहीं, तो आपको या तो इसे बनाने या फिर से सोचने की आवश्यकता होगी कि आप जिस संरचना को प्राप्त कर चुके हैं, उससे दो घटकों को कैसे पार्स करते हैं। –
आप सही थे! मैं जिस तरह से लेबल लोड कर रहा था! – KenobiShan
एक उत्तर जोड़ें मैं इसे सही के रूप में रखूंगा! – KenobiShan