Övning – Använda det neurala nätverket för att analysera text baserat på attityd
Det verkliga testet är när du själv matar in text i modellen och ser hur den fungerar – det vill säga hur bra den är på att kvantifiera den attityd som uttrycks i texten. I den här enheten skriver du en Python-funktion som tar emot en textsträng som indata, skickar den till modellen och returnerar en attitydpoäng. Sedan använder du funktionen för att analysera den attityd som uttrycks i olika textsträngar.
Lägg till följande kod i en cell i slutet av notebook-filen och kör cellen:
import string import numpy as np def analyze(text): # Prepare the input by removing punctuation characters, converting # characters to lower case, and removing words containing numbers translator = str.maketrans('', '', string.punctuation) text = text.translate(translator) text = text.lower().split(' ') text = [word for word in text if word.isalpha()] # Generate an input tensor input = [1] for word in text: if word in word_dict and word_dict[word] < top_words: input.append(word_dict[word]) else: input.append(2) padded_input = sequence.pad_sequences([input], maxlen=max_review_length) # Invoke the model and return the result result = model.predict(np.array([padded_input][0]))[0][0] return result
De här instruktionerna definierar en funktion med namnet
analyze
som accepterar en sträng som indata och returnerar en siffra mellan 0,0 och 1,0, som kvantifierar den attityd som uttrycks i strängen. Ju högre siffra, det mer positiv är attityden. Funktionen rensar indatasträngen, konverterar den till en lista med heltal som refererar till ord i en ordlista som skapats av funktionenload_data
och slutligen anropar modellenspredict
-funktion för att poängsätta texten baserat på attityd.Använd notebook-filen för att köra följande instruktion:
analyze('Easily the most stellar experience I have ever had.')
Utdata är den attityd som uttrycks i indatatexten som en siffra mellan 0,0 och 1,0. Håller du med modellens utvärdering?
Prova nu den här instruktionen:
analyze('The long lines and poor customer service really turned me off.')
Hur kvantifierar modellen den attityd som uttrycks i den här texten?
Avsluta med att testa modellen med dina egna indatasträngar. Resultatet blir inte perfekt, men modellen bör vara ganska bra på att kvantifiera attityd. Modellen har tränats med filmrecensioner, men att analysera filmrecensioner är inte det enda den kan göra. Det är ganska logiskt eftersom det finns likheter mellan språk som uttrycker gillande eller ogillande av en film och ord som uttrycker känslor om andra, orelaterade ämnen.