Академический Документы
Профессиональный Документы
Культура Документы
К защите допустить:
Зав. кафедрой радиофизики и
инфокоммуникационных технологий
_____________ д.т.н., проф. В.В. Данилов
«_____» ________________________
2020г.
ДИПЛОМНАЯ РАБОТА
Донецк 2020г.
2
СОДЕРЖАНИЕ 2
ВВЕДЕНИЕ 3
1. Архитектуры нейронных сетей для обработки текстов 6
1.1 Рекуррентные нейронные сети 6
1.2 Одномерные сверточные нейронные сети 13
1.3 Сети с вниманием 18
2. Конфигурация нейронной сети для обработки текстов 20
2.1 Функции активации 20
2.2 Функции потерь 27
2.3 Методы представление текста для обработки нейронной сетью
29
2.4 Обучение нейронной сети 31
3. Реализация нейронной сети 36
3.1 Нейронная сеть, обученная на датасете IMDb 44
3.2 Нейронная сеть, обученная на датасете Yelp 53
4. Охрана труда 55
4.1 Регулировочные операции 55
4.2 Электромонтажные работы 56
4.3 Работа с компьютером 57
ЗАКЛЮЧЕНИЕ 59
СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ 60
Приложение 1 63
Приложение 1 64
3
ВВЕДЕНИЕ
Широкое развитие компьютерных технологий и коммуникаций
привело к появлению мощных информационных массивов и потоков,
аналогов которым в прошлом не существовало. Например, ежедневный
объем публикаций электронных средств массовых информаций не позволяет
даже бегло с ними ознакомиться одному человеку. Распределение этой
задачи среди нескольких исполнителей приведет к проблеме коммуникации
и координирования работ между ними. В то же время анализ публикаций
может быть очень ценным средством получения актуальной информации,
ценной для получения компанией конкурентного преимущества. Многие
фирмы имеют специальные отделы информационной безопасности, которые
отслеживают и анализируют публикации, посвященные компании и
конкурентам. Те же методы могут использоваться, например, для проверки
новых сотрудников. Изучая след человека, оставленный в интернет-форумах,
блогах и социальных сетях, можно сделать определенные выводы о его
личности. [1]
Постоянное изучение всего потока информации по конкретной
тематике, более того, даже формирование такого потока без применения
автоматизированных средств – практически безнадежная задача. И – конечно
же – эти средства появляются. Они могут принимать разнообразные формы,
но нас интересуют методы, лежащие в основе этих средств. В течение
последних 20 лет активно развиваются методы интеллектуального анализа и
получения информации из массивов данных. Примером слабо
структурированных данных может служить простой текст. Другим примером
(так называемых полуструктурированных данных) служат XML-документы.
Текст является универсальным средством представления, накопления и
передачи знаний в человеческом обществе. Кроме того, преобразовать
текстовый документ в реляционное представление практически невозможно
4
1.3. Attention-сети
Attention представляет собой способ сообщить сети, на что стоит
обратить больше внимания, то есть сообщить вероятность того или иного
исхода в зависимости от состояния нейронов и поступающих на вход
данных. Выявление важных факторов осуществляется через метод обратного
распространения ошибки, подобно тому как это делается для свёрточных
сетей.[7]
При обучении, Attention демонстрирует свою вероятностную природу.
Сам по себе механизм формирует матрицу весов важности. Если бы мы не
обучали Attention, мы могли бы задать важность, например, эмпирически
(генерал важнее прапорщика). Но когда мы обучаем сеть на данных,
важность становится функцией вероятности того или иного исхода в
зависимости от поступивших на вход сети данных. Например, если бы
проживая в Царской России мы встретили генерала, то вероятность получить
шпицрутенов была бы высока. Удостоверившийся в этом можно было бы
через несколько личных встреч, собрав статистику. После этого наш мозг
выставит соответствующий вес факту встречи данного субъекта и поставит
маркеры на погоны и лампасы. Надо отметить, что выставленный маркер не
является вероятностью: сейчас встреча генерала повлечёт для вас
совершенно иные последствия чем тогда, кроме того вес может быть больше
единицы. Но, вес можно привести к вероятности, нормировав его.[7][13]
Вероятностная природа механизма Attention при обучении проявляется
в задачах машинного перевода. Например, сообщим сети, что при переводе с
русского на английский слово Любовь переводится в 90% случаев как Love, в
9% случаях как Sex, в 1% случаях как иное. Сеть сразу отметёт множество
вариантов, показав лучшее качество обучения. При переводе мы сообщаем
сети: «при переводе слова любовь обрати особое внимание на английское
слово Love, также посмотри может ли это всё же быть Sex”.
20
Это означает, что два слоя (или N слоев) могут быть заменены одним
слоем. В результате, вся нейронная сеть все равно будет подобна одному
слою с линейной функцией активации (комбинация линейных функций
линейным образом — другая линейная функция).[3][14]
Сигмоида
График сигмоидной функции представлен на рисунке 2.3.
1
f ( x )=
1+e− x
prediction= 0 , ^y <0.5
{
1 , ^y > 0.5
30
hour runtime is a tad steep, but for an absolute masterpiece like this, it's work
every second and the first act of undoubtedly the best trilogy in cinematic history!
Перевод третьего отзыва:
Я твердо убежден, что стандартные версии «Властелина колец»
должны быть отвергнуты в пользу расширенных выпусков повсеместно.
Конечно, 4 часа – это многовато, но в этом абсолютном шедевре прекрасна
каждая секунда и первый акт, несомненно, лучшей трилогии в истории
кинематографа!
Отзыв четвертый:
Banal, puerile, putrid rubbish entirely bereft of art or merit filled to vomit
point with the sickening ugly machinations of a diseased mind. How the
participants who found themselves involved in this gross festering blight will face
their folly in their old age hell only knows. The script and the acting is an
excruciating embarrassment to behold.
It is a disgrace to the film industry if that is where it claims its origins.
It deserves to do more than just flop it should sink without trace in the deepest
darkest cesspool imaginable never to see the light of day again, but no cesspool
owner with a trace of self-respect would admit such a vile despicable creation. A
monkey with a lobotomy could have come up with a better screenplay. My
colleagues consider my comments to be a tad mild.
Перевод четвертого отзыва:
Банальный, ребяческий, гнилостный мусор, полностью лишенный
искусства или заслуг, наполненных до рвоты острыми отвратительными
махинациями больного ума. Как участники, вовлеченные в этот мерзкий
гной, отреагируют на свою глупость, когда будут постарше, только черт
знает. Сценарий и действие - мучительное смущение, чтобы созерцать.
Это позор для киноиндустрии, если именно там она заявляет о своем
происхождении.
42
Acting just broke the pattern. Earlier, I was sure that it’s impossible for a
person not to change their facial expression for a long time. However, the leading
actress proved the opposite. Bravo.
As we can see, it is enough to be a snotty clichéd pseudo-drama in order to
become a bestseller, which gives us a rather unpleasant picture of the demand of a
modern average spectator.
Перевод пятого отзыва:
Поразительно! Восхитительно! Невероятно! Это воистину гениальный
фильм, достойный стоять в одном ряду с такими шедеврами, как "Голодные
игры", "Дивергент" и "50 оттенков серого".
Фильм действительно сломал ожидания и смог по-настоящему
удивить: я ожидал сопливой непроработанной фейспалмовой недодрамы для
двенадцатилетних девочек, а получил сопливую непроработанную
фейспалмовую недодраму для двенадцатилетних девочек.
Такое совпадение "ожидание-реальность" меня крайне впечатлило.
Сценарий же, определенно написанный одаренным человеком, поразил
меня своей оригинальностью: наша главная героиня – девушка-одиночка, у
которой проблемы с отцом, переезжает в другой город, встречает
загадочного парня, который потом оказывается вампиром, и у них
начинается любовь, что в целом неплохо так намекает на целевую
аудиторию. Если дальнейшее развитие сюжета для вас не очевидно, то
(осторожно, спойлер) это: сопли, слюни, слезы, и, наконец, дебильный
финал.
Драма же тут получилась отменная, правда, в плане своей убогости.
Создатели фильма не сочли нужным раскрывать персонажей и давить на
эмпатию их проработкой, а решили просто взять на одну из главных ролей
красавчика и ждать отклика со стороны непритязательных зрителей, и, судя
по популярности и статуса «культовости», этого было достаточно.
44
0 – отзыв отрицательный
1 – отзыв положительный
4. ОХРАНА ТРУДА
4.1Регулировочные операции
ЗАКЛЮЧЕНИЕ
Предложенные в работе модели нейронных сетей имеют
удовлетворительную точность – доля верных ответов достигает 96%.
Наилучшие результаты достигаются при использовании сверточных и LSTM-
сетей. Обучение сетей с помощью датасета Yelp привело к лучшим
результатам, чем обучение с помощью датасета IMDb, что объясняется
гораздо большим количеством данных.
Нейронные сети без проблем распознают тональность отзыва в том
случае, если она совпадает с тональностью используемых в отзыве слов.
Однако, если в тексте используется большое количество слов с
положительной окраской, хотя сам отзыв при этом – отрицательный, сеть не
сможет правильно определить тональность. Объясняется это тем, что
нейронные сети не в состоянии определить иронию и сарказм, а также не
всегда правильно интерпретируют контекст слов и фраз.
64
1. Хайкин С. Нейронные сети: полный курс, 2-е издание.: Пер. с анг. – М.:
Издательский дом «Вильямс», 2006. – 1104 с.
2. colah’s blog [Электронный ресурс] - Understanding LSTM networks. Режим
доступа: http://colah.github.io/posts/2015-08-Understanding-LSTMs/ (дата
обращения: )
3. David Kriesel – A Brief Introduction to Neural Networks, 2007 – 226 с
4. University of Montreal – Deep Learning Tutorial Release 0.1 LISA lab -–167 с
5. Haohan Wang, Bhiksha Raj – On the Origin of Deep Learning, 2017 – 72с
6. Каллан Р. Основные концепции нейронных сетей. Пер. с анг. – М.:
Издательский дом «Вильямс», 2001. – 288 с
7. colah’s blog [Электронный ресурс] – Deep Learning, NLP, and Representations
Режим доступа: http://colah.github.io/posts/2014-07-NLP-RNNs-Representations/
(дата обращения: )
8. Kim, Y. [Электронный ресурс] Convolutional Neural Networks for Sentence
Classification. Proceedings of the 2014 Conference on Empirical Methods in
Natural Language Processing (EMNLP 2014), 2014. 1746–1751 с. Режим
доступа: https://www.aclweb.org/anthology/D14-1181/ (дата обращения: )
9. Heigold, G., Neumann, G., & van Genabith, J. [Электронный ресурс] Neural
morphological tagging from characters for morphologically rich languages, 2016.
Режим доступа: arxiv.org/abs/1606.06640 (дата обращения: )
10. Xiang Zhang, Junbo Zhao, Yann LeCun [Электронный ресурс] Character-
level Convolutional Networks for Text Classification, 2016. Режим доступа:
arxiv.org/abs/1509.01626 (дата обращения: )
11. A Conneau, H Schwenk, L Barrault, Y Lecun [Электронный ресурс] Very
Deep Convolutional Networks for Text Classification, 2017. Режим доступа:
arxiv.org/abs/1606.01781 (дата обращения: )
12. T Semwal, G Mathur, P Yenigalla, SB Nair [Электронный ресурс] A
Practitioners’ Guide to Transfer Learning for Text Classification using
Convolutional Neural Networks, 2018. Режим доступа: arxiv.org/abs/1801.06480
65
Приложение 1
Код нейронной сети LSTM на датасете IMDB
from tensorflow.keras.datasets import imdb
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense, Embedding, LSTM
from tensorflow.keras import utils
from tensorflow.keras.preprocessing.sequence import pad_sequences
import numpy as np
import matplotlib.pyplot as plt
max_words=10000
(x_train, y_train), (x_test, y_test) = imdb.load_data(num_words=max_words)
maxlen = 300
x_train = pad_sequences(x_train, maxlen=maxlen)
x_test = pad_sequences(x_test, maxlen=maxlen)
model = Sequential()
model.add(Embedding(max_words, 8, input_length=maxlen))
model.add(LSTM(32, recurrent_dropout = 0.2))
model.add(Dense(1, activation='sigmoid'))
model.compile(optimizer='adam',
loss='binary_crossentropy',
metrics=['accuracy'])
history = model.fit(x_train,
y_train,
epochs=15,
batch_size=128,
validation_split=0.1)
scores = model.evaluate(x_test, y_test, verbose=1)
a=[1]
message = ''
arr=message.split(' ')
for word in arr:
code = (word_index.get(word, -1)+3)
if code>10000:
code=2
a.append(code)
data = np.array([a], dtype=int)
result = model.predict(data)
if result[[0]] < 0.5:
print('Отзыв отрицательный')
else:
print('Отзыв положительный')
68
Приложение 2
Код одномерной сверочной нейронной сети LSTM на датасете Yelp
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense, Embedding, GRU, LSTM
from tensorflow.keras import utils
from tensorflow.keras.preprocessing.sequence import pad_sequences
from tensorflow.keras.preprocessing.text import Tokenizer
from tensorflow.keras.callbacks import ModelCheckpoint
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
num_words = 10000
max_review_len = 300
train = pd.read_csv('yelp_review_polarity_csv/train.csv',
header=None,
names=['Class', 'Review'])
reviews = train['Review']
y_train = train['Class'] - 1
tokenizer = Tokenizer(num_words=num_words)
tokenizer.fit_on_texts(reviews)
sequences = tokenizer.texts_to_sequences(reviews)
x_train = pad_sequences(sequences, maxlen=max_review_len)
model = Sequential()
model.add(Embedding(num_words, 64, input_length=max_review_len))
model.add(LSTM(128))
model.add(Dense(1, activation='sigmoid'))
model.compile(optimizer='adam',
loss='binary_crossentropy',
metrics=['accuracy'])
model_save_path = 'best_model.h5'
checkpoint_callback = ModelCheckpoint(model_save_path,
monitor='val_accuracy',
save_best_only=True,
verbose=1)
history = model.fit(x_train,
y_train,
epochs=5,
batch_size=128,
validation_split=0.1,
69
callbacks=[checkpoint_callback])
model.load_weights(model_save_path)
test = pd.read_csv('yelp_review_polarity_csv/test.csv',
header=None,
names=['Class', 'Review'])
test_sequences = tokenizer.texts_to_sequences(test['Review'])
x_test = pad_sequences(test_sequences, maxlen=max_review_len)
y_test = test['Class'] - 1
model.evaluate(x_test, y_test, verbose=1)
text = ‘‘‘ ’’’
sequence = tokenizer.texts_to_sequences([text])
data = pad_sequences(sequence, maxlen=max_review_len)
result = model.predict(data)
if result[[0]] < 0.5:
print('Отзыв отрицательный')
else:
print('Отзыв положительный')