Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import numpy as np
- import tensorflow as tf
- from keras import models
- from keras import layers
- from keras.datasets import imdb
- (training_data, training_targets), (testing_data, testing_targets) = imdb.load_data(num_words=10000)
- data = np.concatenate((training_data, testing_data), axis=0)
- targets = np.concatenate((training_targets, testing_targets), axis=0)
- def vectorize(sequences, dimension=10000):
- results = np.zeros((len(sequences), dimension))
- for i, sequence in enumerate(sequences):
- results[i, sequence] = 1
- return results
- def toFixed(numObj, digits=0):
- return f"{numObj:.{digits}f}"
- print(data[0])
- data = vectorize(data)
- targets = np.array(targets).astype("float32")
- test_x = data[:10000]
- test_y = targets[:10000]
- train_x = data[10000:]
- train_y = targets[10000:]
- model = models.Sequential()
- # Входной слой
- model.add(layers.Dropout(0.2, input_shape=(10000,)))
- model.add(layers.Dense(50, activation="relu", input_shape=(10000,)))
- # Скрытый слой и слои выбивания
- model.add(layers.Dropout(0.3, input_shape=(50,)))
- model.add(layers.Dense(50, activation="relu"))
- # Выходной слой
- model.add(layers.Dropout(0.2, input_shape=(50,)))
- model.add(layers.Dense(1, activation="sigmoid"))
- model.summary()
- model.compile(
- optimizer="adam",
- loss="binary_crossentropy",
- metrics=["accuracy"]
- )
- results = model.fit(
- train_x, train_y,
- epochs=10,
- batch_size=500,
- validation_split=0.2
- )
- score = model.evaluate(test_x, test_y)
- print("Test Потери: %.2f%%" % (score[0]*100))
- print("Test Точность: %.2f%%" % (score[1]*100))
- predictions = model.predict(test_x)
- print("Предсказание -- на самом деле")
- for i in range(10):
- print('%.6f -- %f' %(predictions[i], test_y[i]))
- words = tf.keras.datasets.imdb.get_word_index(path="imdb_word_index.json")
- print("Индексы слов согласно IMDB (первые 20шт)")
- i = 0
- for key, value in words.items():
- print(key,":", value),
- i+=1
- if(i>20): break
- text = "The Shawshank Redemption is written and directed by Frank Darabont. \n" \
- "It is an adaptation of the Stephen King novella Rita Hayworth and Shawshank Redemption. \n" \
- "Starring Tim Robbins and Morgan Freeman, the film portrays the story of Andy Dufresne (Robbins), \n" \
- "a banker who is sentenced to two life sentences at Shawshank State Prison for apparently murdering his wife \n" \
- "and her lover. Andy finds it tough going but finds solace in the friendship he forms with fellow inmate \n" \
- "Ellis Red Redding (Freeman). While things start to pick up when the warden finds Andy a \n" \
- "prison job more befitting his talents as a banker. However, the arrival of another inmate is going \n" \
- "to vastly change things for all of them."
- print("\nВходной текст рецензии\n\n", text,"\n\n")
- print("Секвенция слов из входной рецензии")
- from keras.preprocessing.text import text_to_word_sequence
- result = text_to_word_sequence(text)
- print(result)
- for i in range(len(result)):
- if(words.get(result[i]) == None or words.get(result[i]) > 10000):
- result[i] = 0
- else:
- result[i] = words.get(result[i])
- print("Длина секвенции")
- print(len(result))
- print("Преобразованная секвенция в индексы")
- print(result)
- vector = vectorize(result)
- newpredict = model.predict(vector)
- print('Уверенность нейросети в эмоциональности рецензии - %.6f ' %(newpredict[0]))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement