Овладение долгой краткосрочной памятью с помощью Python Раскройте силу LSTM в NLP

Улучшение долговеременной памяти с помощью Python Откройте потенциал LSTM в NLP

Полное руководство по пониманию и реализации LSTM слоев для обработки естественного языка с использованием Python

Фото автора Sven Brandsma на Unsplash

Эта работа является продолжением моей статьи о RNN и NLP с использованием Python. Естественным развитием нейронной сети глубокого обучения с простым рекуррентным слоем является нейронная сеть глубокого обучения с слоем Long Short Term Memory (сокращенно LSTM).

Как и в случае с RNN и NLP, я постараюсь подробно объяснить слой LSTM и написать код переднего прохода слоя с нуля.

Весь код можно посмотреть здесь: https://github.com/Eligijus112/NLP-python

Мы будем работать с тем же набором данных¹, что и в предыдущей статье:

# Обработка данных
import pandas as pd
# Чтение данных
d = pd.read_csv('input/Tweets.csv', header=None)
# Добавление столбцов
d.columns = ['INDEX', 'GAME', "SENTIMENT", 'TEXT']
# Оставляем только положительные и отрицательные настроения
d = d[d['SENTIMENT'].isin(['Positive', 'Negative'])]
# Кодирование настроений таким образом, что отрицательное будет 1, а положительное 0
d['SENTIMENT'] = d['SENTIMENT'].apply(lambda x: 0 if x == 'Positive' else 1)
# Удаление отсутствующих значений
d = d.dropna()
Случайные строки из набора данных; Изображение автора

Помните, что SENTIMENT=1 является отрицательным настроением, а SENTIMENT=0 является положительным настроением.

Нам необходимо преобразовать текстовые данные в последовательность целых чисел. Отличие от предыдущей статьи заключается в том, что теперь мы создадим последовательность не из слов, а из отдельных символов.

Например, текст “Неплохая игра” может быть преобразован в следующий вектор:

[1, 2, 3, 4, 5, 6, 7, 8, 3]

Каждый отдельный символ, включая пробелы и знаки пунктуации, будет иметь свой индекс.

def create_word_index(    x: str,     shift_for_padding: bool = False,     char_level: bool = False) -> Tuple[dict, dict]:     """    Функция, которая сканирует заданный текст и создает два словаря:    - word2idx: словарь, сопоставляющий слова целым числам...