Овладение долгой краткосрочной памятью с помощью Python Раскройте силу LSTM в NLP
Улучшение долговеременной памяти с помощью Python Откройте потенциал LSTM в NLP
Полное руководство по пониманию и реализации LSTM слоев для обработки естественного языка с использованием Python
Эта работа является продолжением моей статьи о RNN и NLP с использованием Python. Естественным развитием нейронной сети глубокого обучения с простым рекуррентным слоем является нейронная сеть глубокого обучения с слоем Long Short Term Memory (сокращенно LSTM).
Как и в случае с RNN и NLP, я постараюсь подробно объяснить слой LSTM и написать код переднего прохода слоя с нуля.
Весь код можно посмотреть здесь: https://github.com/Eligijus112/NLP-python
Мы будем работать с тем же набором данных¹, что и в предыдущей статье:
- Облачная аналитика данных современный подход к анализу и моделированию данных
- Демократизация машинного обучения в Salesforce Data Cloud с помощью Amazon SageMaker Canvas без написания кода
- Упростите подготовку данных для генеративного искусственного интеллекта с помощью Amazon SageMaker Data Wrangler
# Обработка данных
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()
![Случайные строки из набора данных; Изображение автора](https://ai.miximages.com/miro.medium.com/v2/resize:fit:640/format:webp/1*IjyS8-yApypHJ2psO9sA2g.png)
Помните, что 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: словарь, сопоставляющий слова целым числам...