AI FÖR NATURLIGT SPRÅK

Kursinfo

Kursmaterial

FAQ

Kursmaterial

/

Kapitel

Deluppgift 1: Analysera data

Läs in och spara data

Följande filer används i uppgiften:

app_sentiment.csv - Recensioner av applikationer från Google Play Store.

För att spara filerna, högerklicka på länken och välj att spara filen. Du behöver inte ladda ned några filer för att genomföra uppgiften, utan de är per automatik tillgängliga för användning i kodcellerna nedan.


Vi kommer arbeta på ett dataset med recensioner av appar från Google Play Store. Totalt är det 93,322 recensioner som är sparade i en csv-fil. Koden för hur vi läser in filen till en Pandas DataFrame är given i nästa kodcell.

I Pandas är en DataFrame en tabell med indexerade rader och namngivna kolumner. Data i en DataFrame kan vi komma åt på olika sätt, inklusive efter rad och kolumn. För att ge ett exempel: kodcellen nedan räknar ut antalet rader för kolumnen review och därefter visas raderna 200-203.

Kör koden med Kör kod för att se resultatet. Du kan sedan spara ditt resultat genom Registrera svar.

Som du kan se så finns det tre namngivna kolumner: review (recensionen av appen), rating (om recensionen är positiv eller negativ), och app_id (vilken app som recenserats). Nästa kodcell visar hur vi kan komma åt ett fält för en specifik kolumn och rad.

Tränings- och testdata

Vi vill kunna skapa en modell som kan lära sig av data – med detta dataset skulle det kunna vara att bedöma om en recension är positiv eller negativ – och sedan använda modellen för att klassificera på ny data. Vi har gott om data för att träna en modell, men vi behöver också ett dataset för att utvärdera om modellen faktiskt har lärt sig något. För att kunna göra det behöver vi dela upp vårt dataset i ett för träning (training) och ett för utvärdering (test).

Genomgående i detta kapitlet är att vi kommer använda Scikit-learn, ett maskininlärnings-bibliotek för Python. Som vi kommer se så innehåller det massvis av användbara funktioner som förenklar vårt arbete. En sådan funktion är train_test_split(). Länken i föregående mening tar dig till dokumentationen för just den funktionen. Vi behöver ofta läsa dokumentationen av funktioner för att förstå hur de kan användas. recensionerFunktionens beteende varierar beroende på de argument som skickas in i funktionen.

Om vi inte specificerar vilken proportion vårt dataset ska uppdelas i så går 75% av data till träning och 25% till utvärdering (en 75/25-uppdelning). I nästa kodcell ska du lägga till ett argument för att dela upp vår data i 80/20.

Funktionen train_test_split() delar upp vår data slumpmässigt. Slumpmässighet är ett problem när vi vill ha reproducerbara resultat och en viktig parameter är därför random_state. När det sätts till ett specifikt värde kommer den slumpmässiga processen alltid vara likadan.

DataFrames är användbara för att spara data på ett strukturerat sätt och för att vi kan tillämpa funktioner på dem. Följande är några användbara funktioner och vad de returnerar:

app_reviews.head() - En överblick av de första raderna.
app_reviews.tail() - En överblick av de nedersta raderna.
app_reviews.shape - Vår DataFrames dimension (rader, kolumner).
app_reviews.dtypes - Datatyper på värdena sparade i varje kolumn.
app_reviews.rating.value_counts() - Unika värden i en kolumn och deras frekvenser.

Oftast returneras antingen en DataFrame eller en Pandas.Series. För att göra om en Pandas.Series till en Python-lista så kan vi använda oss funktions-tillägget .tolist().

I nästa kodcell ska du använda dig av DataFrame-funktioner för ta fram vilka unika klasser som finns i kolumnen rating och frekvensen för varje klass. Dessa ska sparas i två Python-listor. Det är också viktigt att den sparade klassen i den ena listan också har sin frekvensen på samma index i den andra listan.

Visualisera data

När vi arbetar med stora mängder data kan det vara svårt att få en överblick av vår data och en känsla för dess egenskaper. Det är då ofta tacksamt kunna visualisera vår data. Matplotlib är ett vanligt och användbart verktyg för att skapa visualiseringar av data.

I följande kodcell ska två stapeldiagram skapas och presenteras. Du ska använda listorna från föregående kodcell för att skapa ett stapeldiagram, där varje stapel representerar en unik klass och stapelns höjd är klassens frekvens.

Denna webbsajt innehåller kursmaterialet för kursen ETE335 AI för naturligt språk.
Materialet är licenserat under en Creative Commons Erkännande 4.0 Internationell licens.
Copyright © 2022, Marco Kuhlmann & Oskar Holmström