resources/images/dhlab-logo-nb.png

1.9. Sammenlign metadata#

from dhlab.api.dhlab_api import get_document_frequencies
from dhlab import Corpus, Counts, totals
import dhlab.nbtext as nb
---------------------------------------------------------------------------
ModuleNotFoundError                       Traceback (most recent call last)
Cell In[1], line 3
      1 from dhlab.api.dhlab_api import get_document_frequencies
      2 from dhlab import Corpus, Counts, totals
----> 3 import dhlab.nbtext as nb

ModuleNotFoundError: No module named 'dhlab.nbtext'

1.9.1. Undersøk korpus med metadata#

En viktig metode i undersøkelse av metadata og tekster er grafer og nettverk.

Metadata er alt som er om teksten, fra forfatter til forlag. Også innholdsord kan sees på som metadata.

1.9.1.1. Bygg korpus#

Korpuset defineres med metadata som dewey, emneord, navn , år, etc. Her kan Webdewey være til god hjelp.

Se eksempelfil om Korpusbygging for ulike måter å definere korpus.

bøker = Corpus(
   doctype="digibok",
   freetext="krig OR krigen OR soldater",
   from_year=1950,
   to_year=2010,
   ddk="9*",
   lang='nob',
   limit=30
)
bøker.frame.loc[:, ["title", "authors", "year"]]
title authors year
0 Krabbekrigen og gjenerobringen av Jämtland 165... Johnsen , Arne Odd 1967
1 Kvinne blant krigsherrer : Afghanistans modigs... Joya , Malalai / O ' Keefe , Derrick / Jensen ... 2009
2 Kongsvingeravtalen 1809 : spiren til norsk sel... Alnæs , Karsten / Hagerud , Trond 2009
3 Nordens løve : Karl 12. i Norge : felttogene i... Bjerke , Alf E. / Hauge , Andreas 1992
4 Biafra : som jeg ser det Rosen , Carl Gustaf von / Norstrøm , Øyvind 1969
5 Militær motstand i nord 1940-45 : jakten på Ti... Pedersen , Gunnar 1982
6 Tortur , flukt og gisler til tross : hemmelige... Nygaard , Herluf 1982
7 Kavaleristen Aarset , Ane-Charlotte Five / Revhaug , Bernt ... 2007
8 Brystkaramellene : fra XU til Grini Fodstad , Bjørg 2001
9 Fellesskap i krig og fred : erindringer 1940-45 Gerhardsen , Einar 1982
10 Frederikshalds krigshistorie : 1658 , 1659 , 1... Krag , Hans Peter Schnitler 2003
11 Minner fra Solferino Dunant , Henri / Thorvaldsen , Siren 1999
12 Sola 1930-2000 . B. 1 : Hverdagsliv , krigen 1... Skjørestad , Per 2002
13 Så kom krigen til Brandbu : et 50 års minne Stenersen , Helge 1990
14 Fra hesterygg til stridsvogn Frøystad , Ivar 1979
15 Kristiansand i krig 9. april 1940 Mæsel , Knut 1995
16 Mer enn 1000 dager : blant fanger og voktere i... Viken , Kaare 1984
17 Tyske soldater på flukt Heide , Eivind 1988
18 Norge i krig Auberg , Arne 1965
19 Kodenavn Curveball : om spioner , løgner og kr... Drogin , Bob / Fosser , Per Einar / Aspen , Nina 2008
20 [ Sør-Varangers historie ] . [ 4 ] : Sør-Varan... 1999
21 Etterkrigshistorie : emner fra norsk historie ... 1973
22 Kald krig og varme vennskap : erindringer fra ... Johansen , Jahn Otto 2000
23 Norge i krig 1940-1945 : frigjøringsjubileet 1... 1995
24 Tordenskiold : Peter Wessel og hans tid Eilstrup , Per / Hegland , Jon Rustung 1968
25 Balkan-ekspressen : fragmenter fra den andre s... Drakulić , Slavenka / Henriksen , Ginni Schuls... 1994
26 " Men seier ' n var vår " : søkelys på omveltn... Gogstad , Anders Chr . 2003
27 Hvem kan glemme dette ? : barn i Terezín 1941-... Gaarder , Inger Margrethe / Zdekauerova , Dori... 1984
28 Den tredje front Liversidge , Douglas / Schøning , Einar Th . 1961
29 Minner fra krigen : Våpenstaben / D 13 og 100 ... Graff , Kjell 1991

1.9.1.2. Undersøk forskjeller#

1.9.1.2.1. Undersøk forskjeller internt i korpuset#

Her samler vi sammen alle bøkene i korpus og summerer. Men først la oss se på en del av korpuset som en dokument term matrise

# tar de fem første og henter frekvensene for alle bøkene

bøker_dtm = Counts(bøker.head(5))
bøker_dtm 
100035999 100039493 100134522 100191584 100271808
, 1501 6235 4095 1804 1173
. 1438 10111 4695 3299 1324
og 1002 3547 2933 1641 978
i 943 4049 2590 1801 868
som 799 1318 1643 919 408
... ... ... ... ... ...
flodbølge 0 0 0 1 0
slottene 0 0 0 0 1
rennestenene 0 0 0 1 0
hollåndsk-engelska 0 1 0 0 0
luksusbil 0 0 1 0 0

35275 rows × 5 columns

1.9.1.2.2. Visualiser med varmekart#

Et varmekart gjør det enklere å få øye på likhet og variasjon i tallene.

nb.heatmap(bøker_dtm.frame.head(10), color="#045599")
  100035999 100039493 100134522 100191584 100271808
, 1501 6235 4095 1804 1173
. 1438 10111 4695 3299 1324
og 1002 3547 2933 1641 978
i 943 4049 2590 1801 868
som 799 1318 1643 919 408
å 629 1541 2186 803 313
av 593 2004 1748 990 419
til 588 2826 1689 1040 472
en 530 1253 1316 786 418
den 509 1280 772 948 355

1.9.1.3. Undersøk forskjeller med frekvenser fra bokhylla#

Vi teller opp tokens i korpuset med Counts. Dette kan ta litt tid.

count_corpus = Counts(bøker)

Referansekorpus Kommandoen under lager et referansekorpus av de 150 000 vanligste tokenene i vår samling.

totals = totals(150000)
# Summer tokens fra korpus
bøker_total = count_corpus.frame.sum(1).to_frame("count")
# Frekvensliste for korpus
bøker_total
count
. 113658
, 81227
og 57715
i 52350
var 32667
... ...
newsarticle.aspx 1
30.9.44 1
etser 2
Sipos 1
ambulante 1

133530 rows × 1 columns

For å lette arbeidet med å tolke forskjeller normaliserer vi frekvensene til tall mellom 0 og 1.

nb.normalize_corpus_dataframe(totals)
nb.normalize_corpus_dataframe(bøker_total)
True
forskjell = bøker_total.loc[:, "count"] / totals.freq
bøker_typiske_ord = forskjell.sort_values(ascending=False).to_frame("ratio")
bøker_typiske_ord.head(50)
ratio
1657 531.189402
Tordenskiold 272.705875
1658 226.553103
Krabbe 217.375454
riksrådet 213.979122
Bohuslån 210.198293
kompanier 198.486381
Fæstningen 186.544702
Tirpitz 177.537529
CIAs 175.219649
Farah 173.697664
Saddams 169.374295
Vadim 164.000476
Tordenskiolds 162.935491
Jåmtland 159.034506
Brahe 158.314895
Odderøya 141.466729
DRA 137.719762
kavaleri 135.580456
skansen 133.631634
Bjelkes 128.494624
afghanere 125.808732
masseødeleggelsesvåpen 124.502088
Hjemmefrontens 120.398465
feltmarskalk 116.194677
NRA 115.949008
fellesprogrammet 115.182968
Stake 113.766603
Fosby 111.838386
Altafjorden 109.539505
Afghanistans 109.214731
1716 108.30952
Northland 107.734601
Sipo 105.649754
Eda 103.957965
Iraq 94.681898
Kyllingmark 92.743272
CIA 92.691701
Moursund 92.177354
Mappe 91.143264
Milorg 90.737028
Trolle 89.014351
Bjelke 87.287726
1660. 87.118671
Langley 86.616419
hjemmestyrkene 86.51474
rettsoppgjøret 86.493476
Luftwaffe 85.788077
1656 84.570521
Hjemmefronten 84.452247

1.9.2. Visualiser som ordsky#

nb.cloud((bøker_typiske_ord/bøker_typiske_ord.sum()).head(50))
../_images/0048d00eca7a299d9aeaf5e6364d31c701d9b55930599a3e74b4437ed6004c02.png