
Una guida completa per comprendere e implementare i livelli LSTM per l’elaborazione del linguaggio naturale con Python
Questo lavoro è una continuazione del mio articolo su RNN e PNL con Python. Una progressione naturale di una rete di deep learning con un semplice livello ricorrente è una rete di deep learning con a lon Short Tehm Mmemoria (LSTM in breve) strato.
Come con RNN e PNL, cercherò di spiegare lo strato LSTM in grande dettaglio e di codificare il passaggio in avanti dello strato da zero.
Tutti i codici possono essere visualizzati qui: https://github.com/Eligijus112/NLP-python
Lavoreremo con lo stesso set di dati¹ dell’articolo precedente:
# Data wrangling
import pandas as pd# Reading the data
d = pd.read_csv('input/Tweets.csv', header=None)
# Adding the columns
d.columns = ('INDEX', 'GAME', "SENTIMENT", 'TEXT')
# Leaving only the positive and the negative sentiments
d = d(d('SENTIMENT').isin(('Positive', 'Negative')))
# Encoding the sentiments that the negative will be 1 and the positive 0
d('SENTIMENT') = d('SENTIMENT').apply(lambda x: 0 if x == 'Positive' else 1)
# Dropping missing values
d = d.dropna()
Ricorda che SENTIMENT=1 è un sentimento negativo e SENTIMENT=0 è un sentimento positivo.
Dobbiamo convertire i dati di testo in una sequenza di numeri interi. A differenza dell’articolo precedente, però, ora creeremo una sequenza non di parole ma di singoli caratteri.
Ad esempio, il testo “Bel gioco” potrebbe essere convertito nel seguente vettore di esempio:
(1, 2, 3, 4, 5, 6, 7, 8, 3)
Ogni singolo carattere, compresi gli spazi bianchi e la punteggiatura, avrà un indice.
def create_word_index(
x: str,
shift_for_padding: bool = False,
char_level: bool = False) -> Tuple(dict, dict):
"""
Function that scans a given text and creates two dictionaries:
- word2idx: dictionary mapping words to integers…
Fonte: towardsdatascience.com