Я хотел бы закодировать мои входные буквы строк для методов машинного обучения.На данный момент мои данные поезда выглядят так:
score text
1 show photos
1 show photos
2 who are you
Как видите, все тексты имеют одинаковую длину.Внизу мой исходный код.Интересно, можно ли использовать разную длину векторов?Например:
score text
1 show my photos
1 show me my photos
2 can you tell me who are you?
Исходный код:
train_set = pd.read_csv("train3.tsv", sep="\t", header = None, names=['score', 'text'], skip_blank_lines=False, quoting=csv.QUOTE_NONE, error_bad_lines=False)
test_set = pd.read_csv("test.tsv", sep="\t", header = None, names=['text'], skip_blank_lines=False, quoting=csv.QUOTE_NONE, error_bad_lines=False)
dictionary = {}
i=0
for index, row in train_set.iterrows():
list2 = list(row.text.lower())
for n, key in enumerate(list2):
if key in dictionary:
list2[n] = dictionary[key]
else:
dictionary[key] = i
list2[n] = i
i += 1
train_set.set_value(index,'text', list2)
for index, row in test_set.iterrows():
list2 = list(row.text.lower())
for n, key in enumerate(list2):
if key in dictionary:
list2[n] = dictionary[key]
else:
dictionary[key] = i
list2[n] = i
i += 1
test_set.set_value(index,'text', list2)
# Create first network with Keras
score = np.array([np.array(xi) for xi in train_set.score.values.tolist()])
text = np.array([np.array(xi) for xi in train_set.text.values.tolist()])
test = np.array([np.array(xi) for xi in test_set.text.values.tolist()])
# create model
model = Sequential()
model.add(Dense(12, input_dim=11, init='uniform'))
model.add(Dense(11, init='uniform'))
model.add(Dense(1, init='uniform'))
# Compile model
model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])
# Fit the model
model.fit(text, score, epochs=150, batch_size=10, verbose=2)
# calculate predictions
predictions = model.predict(test)
print(predictions)