Gör detta innan lektion

Läs R4DS kapitel 14.

Lös kapitlen String basics, Introduction to stringr och Pattern matching with regular expressionsDataCamp.

Under lektion

Motioner

Data från denna uppgift är hämtad från Riksdagens öppna data och innehåller grundläggande data om motioner från den nuvarande mandatperioden, läs in med

motioner <- read_csv("data/mot-2014-2017.csv", 
                     col_names = c("hangar_id", "dok_id", "rm", "beteckning", 
                                   "typ", "subtyp", "doktyp", "dokumentnamn",  "organ", 
                                   "mottagare", "nummer", "datum", "systemdatum", 
                                   "titel", "subtitel", "status"))

Det finns två källor till information om partitillhörigheten, genom variabeln dokumentnamn och genom subtitel. Använd t.ex. str_extract tillsammans med regex för att ta fram parti från båda källor. En komplikation är att motionen kan vara ställd från flera personer med eventuellt olika partibeteckning, du väljer själv om/hur du hanterar detta. Plotta antalet motioner per månad färglagt efter parti (funktionen floor_date i paketet lubridate är ett smidigt sätt att trunkera datumvariabler).

csv-läsare

Kombinera readLines och str_split till en enkel .csv-filläsare som genererar en sträng-matris med filens innehåll.

HTML-tabeller

textsträngen tabell nedan innehåller en enkel tabell i HTML-kod,

tabell <- "<table>
  <tr>
    <th>Förnamn</th>
    <th>Efternamn</th> 
    <th>Ålder</th>
  </tr>
  <tr>
    <td>Kalle</td>
    <td>Karlsson</td> 
    <td>25</td>
  </tr>
  <tr>
    <td>Lisa</td>
    <td>Larsson</td> 
    <td>17</td>
  </tr>
</table>"

som i webbläsaren blir

Förnamn Efternamn Ålder
Kalle Karlsson 25
Lisa Larsson 17

Använd regex för att extrahera vektorn

## [1] "Förnamn"   "Efternamn" "Ålder"     "Kalle"     "Karlsson"  "25"       
## [7] "Lisa"      "Larsson"   "17"

ur tabell.

Hemsöborna

Strindbergs Hemsöborna kan laddas ner från Projekt Gutenberg med

text <- readLines("http://www.gutenberg.org/cache/epub/30078/pg30078.txt") %>% .[93:5129]

Gör om texten till en data.frame med variabeln ord som innehåller textens alla ord i gemener med skiljetecken bortplockade. Lägg till variablerna nr = 1:n() och kapitel = cumsum(ord == "kapitel"). Vid textanalys brukar man ta bort s.k. stoppord som binder ihop texten men är ganska betydelsefattiga i sig själv. En lista på svenska sådana hittade jag på

stoppord <- read_table("https://raw.githubusercontent.com/stopwords-iso/stopwords-sv/master/stopwords-sv.txt",
                       col_names = "ord")

Ta bort stopporden från Hemsöborna med anti_join. Att kvantifiera känslostämningar i texter är populärt, specialkurser finns på DataCamp för den som vill lära sig mer. För att göra så behövs ett sentimentlexikon som värderar ord, ett svenskt sådant finns på Språkdatabanken och kan laddas ner med

sentiment <- read_csv("https://svn.spraakdata.gu.se/sb-arkiv/pub/lmf/sentimentlex/sentimentlex.csv")

Koppla ihop med Hemsöborna genom inner_join. Känslostämning hos de återstående orden kan kanske kvantifieras som strength * confidence i sentimentlexikonet, avsluta genom att visualisera hur denna förändras under romanens gång (som funktion av kapitel eller nr).