Övning – Använda det neurala nätverket för att analysera text baserat på attityd

Slutförd

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.

  1. 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 funktionen load_data och slutligen anropar modellens predict-funktion för att poängsätta texten baserat på attityd.

  2. 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?

  3. 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.