I’m (trying) to annotate a fairly large data set with the udpipe package.
For efficiency, I’ve got my data in a data.table, and am looping over the data set in smaller batches. Like so (data sample at end):
library(here)
library(data.table)
library(udpipe)
udpipe_model <- udpipe_download_model("danish")
ft_speeches <- fread(here("data/folketinget_1953_2019_raw.csv"))
ft_annotation <- ft_speeches[,
udpipe(
.SD,
udpipe_model$file_model,
parallel.cores = 4,
),
by = .groups,
.SDcols = c("text", "doc_id")]
So: take ft_speeches, pass the doc_id and text columns to udpipe(), grouped by .groups.
I'm processing Danish parliamentary speeches from 1953 till now, of which there are over 800,000. So big-ish data. .groups is a byproduct of the data gathering, where the data was processed in 100 batches.
My code errors out partway through the second group though:
Column 1 of result for group 2 is type ‘integer’ but expecting ‘double’. Column types must be consistent for each group.
So, I gather this is a part of why data.table is efficient - it preallocates column types for all groups.
If I understand correctly, the problem is the udpipe annotation returns integers sometimes in a column that’s perceived as mostly doubles. Can I do something about this? Manipulate the output of the group manipulation?
udpipe should only return integers or characters, per ?udpipe:
The columns paragraph_id, sentence_id, term_id, start, end are integers, the other fields are character data in UTF-8 encoding.
I guess I could do the groups one at a time in a loop, and either write to disk or do data.table::rbindlist on it.
Letting udpipe loose on all data at once gobbles up all my RAM, and eventually crashes my computer.
data sample (in this case I'm only using doc_id and text):
Title,id,Samling,Nr,Titel,Dato,speaker_id,text,Date,doc_id,Name,Year,Parti,Period,.groups
Ninn-Hansen,19581_M84_referat,19581,84,Referat af møde nr. 84 den 15. april 1959 kl. 13:00,15-04-1959,0,". under upolitisk maske forsøger en gruppe studerende, der kun midlertidigt er boende inden for kassens område, at besætte de 13 pladser i repræsentantskabet og de 13 stedfortrædere, som valget drejer sig om. en sådan urimelighed bør ikke finde sted. vi henstiller derfor indtrængende til alle vore medlemmer, der står som medlem af sygekassen strand, om at deltage i afstemningen og derved medvirke til at umuliggøre sådanne forsøg på kup. der kunne knyttes mange kommentarer til denne mærkværdige henvendelse. ordvalget 홢under upolitisk maske forstår man jo ikke. jeg mente i hvert fald, at en sygekasse er upolitisk, og at det ikke er noget monopol for en socialdemokratisk vælgerforening at lede den. talen om 홢midlertidigt boende medlemmer og den hånlige måde, det er gjort på, synes heller ikke at betyde en anerkendelse af, at der til medlemsrettighederne knytter sig også dette, at man har lov til at stemme: udtrykket 홢kup synes jeg heller ikke er velvalgt. efter hvad der er oplyst, er den pågældende skrivelse fundet liggende i valglokalet: at der også har været andre uregelmæssigheder, som man ikke accepterer ved almindelige valg, er bl. a. blevet oplyst i dagbladet b.t. for den 7. april. jeg vil gerne vide, hvad den højtærede socialminister har foretaget i anledning af disse oplysninger om uregelmæssigheder ved valget. det har altid interesse at få standset ethvert tilløb til tilsidesættelse, af de aner- 4259 15 4 59: spørgsmål tit ministrene.",1959-04-15T00:00:00Z,1,Erik Ninn-Hansen,1959,Det Konservative Folkeparti,1957-1960,1
Knud Østergaard,19871_M15_referat,19871,15,Referat af møde nr. 15 den 10. november 1987 kl. 13:00,10-11-1987,100009,": jeg minder om, at tiltaleformen er: hr. preben møller hansen.",1987-11-10T00:00:00Z,10,Knud Østergaard,1987,Konservative Folkeparti,1987-1988,1
Glistrup,19871_M15_referat,19871,15,Referat af møde nr. 15 den 10. november 1987 kl. 13:00,10-11-1987,100090,": det regnestykke holder ikke, for på det sted, jeg henviste til, kan man direkte læse, at der henvises til fremskridtspartiets forslag om forhøjet bundfradrag. det vil sige et bundfradrag på 48.000 kr. , 60.000 kr. og 75.000 1578 kr. for hver person. derfor holder det standpunkt heller. ikke. hermed sluttede forhandlingen. afstemning lovforslagets overgang til anden behandling vedtoges uden afstemning.",1987-11-10T00:00:00Z,100,Mogens Glistrup,1987,Fremskridtspartiet,1987-1988,1
Inge Krogh,19781_M13_referat,19781,13,Referat af møde nr. 13 den 25. oktober 1978 kl. 13:00,25-10-1978,10089,": kristeligt folkeparti kan gå ind for det foreliggende lovforslag, der er formet som en bemyndigelse for ministeren til at udforme regler for advokater fra andre ef-lande. da advokatuddannelserne i de forskellige lande er så vidt forskellige, har man afstået fra at give regler for etablering, for, at efadvokater kan etablere sig. det drejer sig. altså kun om tjenesteydelser, herunder ret til at møde for danske domstole og til rådgivning, og vi ser med sympati på det. det er en forpligtelse, som danmark har, idet man herved opfylder et ef-direktiv fra 1977.",1978-10-25T00:00:00Z,1000,Inge Krogh,1978,Kristeligt Folkeparti,1977-1979,1
Gade,19872_M18_referat,19872,18,Referat af møde nr. 18 den 1. juli 1988 kl. 10:00,01-07-1988,108978,": jeg forstod, at udtalelsen om organisationerne var provokerende, men det har ikke fået mig til at tro, at den ikke er fuldstændig rigtig. jeg vil selvfølgelig ikke danne en særlig forening. jeg vil tale med dem, der findes. i øvrigt vil jeg fastslå, at den politiske beslutning ligger her i folketinget efter dets egne overvejelser og ikke de kompromiser, man laver bag lukkede døre blandt organisationer, som har reelt modstridende interesser. jeg vil have modsætningerne tydeligt frem - og her i salen. dernæst sagde de konservatives ordfører, at vi skal have anden del af skuespillet til efteråret. ja, jeg frygter netop, at vi skal have anden akt med fremskridtspartiet til efteråret. og det er så blevet beskræftet. jeg vil gerne spørge hr. larsen-ledet: hvad betyder punkt 5, der hedder: liberalisering af reglerne om erhvervelse af landbrugsejendomme i §§ 20-21«, når der i punkt 6 står: ligestilling af gruppelandbrug og lignende med andelsbrug, jf. § 21, stk. 3«? hvad er der så tilbage andet end aktieselskaber? det er det kritiske punkt i dette papir om ejerformer. vi kan drøfte alting, ja vist, men det, vi taler om, er det, der er aftalt, og det er det, jeg skal have oplyst af partierne. hvad er 1097 1 7 88: 3. beh. af f. 1.1. vedr. realkreditlån m.v. i landbrugsejendomme der aftalt om aktieselskaber? for det kan da ikke være sådan, at man har lavet et punkt 5 i aftalen uden at vide, hvad det er, man har aftalt at drøfte, og hvad man skal lave forslag om, for det er jo ikke bare et spørgsmål om at drøfte: der står, at man skal lave forslag om det, og at man skal liberalisere. hvad er det, der står her? det er især vigtigt at få det klargjort af det radikale venstre. jeg håbede, at hr. larsen-ledet ville have sagt noget i retning af det, der står i politiken om, at det radikale venstre var villigt til at blokere, men det fik jeg ingen markering af. kort bemærkning .",1988-07-01T00:00:00Z,10000,Steen Gade,1988,Socialistisk Folkeparti,1988-1990,1