用Python掌握长短期记忆:释放LSTM在自然语言处理中的力量

玩转Python:探索长短期记忆(LSTM)在自然语言处理中的魅力

全面理解和实现使用Python进行自然语言处理的LSTM层的综合指南

Photo by Sven Brandsma on Unsplash

这篇文章是我关于使用Python进行RNN和NLP的文章的延续。深度学习网络中简单循环层的自然演化是具有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,正面为0d['SENTIMENT'] = d['SENTIMENT'].apply(lambda x: 0 if x == 'Positive' else 1)# 删除缺失值d = d.dropna()
Random rows from the dataset; Picture by author

请记住,SENTIMENT=1表示负面情感,SENTIMENT=0表示正面情感。

我们需要将文本数据转换为整数序列。不同于之前的文章,我们现在将创建一个字符序列,而不是单词序列。

例如,文本“Nice Game”可以转换为以下示例向量:

[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:将单词映射到整数的字典...