
1.9. Sammenlign metadata#
from dhlab.api.dhlab_api import get_document_frequencies
from dhlab import Corpus, Counts, totals
import dhlab.nbtext as nb
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 | Vardan og armenernes krig | Eghishē / Lindeman , Fredrik Otto | 1992 |
| 1 | Vi sloss for Norge : frontkjemper og motstands... | Bryne , Arvid | 2008 |
| 2 | Det skjedde i Norge . 1 : 1945-1952 : den varm... | Ustvedt , Yngvar | 1990 |
| 3 | Kampen om Norge : tyskernes bilder fra det nor... | Olsen , Per Erik | 2008 |
| 4 | Den kalde krigen | Gaddis , John Lewis / Carlsen , Carsten | 2007 |
| 5 | " Men seier ' n var vår " : søkelys på omveltn... | Gogstad , Anders Chr . | 2003 |
| 6 | Krig , krise og sjølberging : Leirfjord 1940-45 | Berntsen , Gunnar | 1995 |
| 7 | Fra Narvik til Normandie | Dalzel-Job , Patrick / Gudmundsen , Per Kristian | 1996 |
| 8 | 1983 : den kalde krigens høydepunkt | Dahlberg , Rasmus / Lie , Kåre A. | 2006 |
| 9 | Seksdagerskrigen : juni 1967 og hvordan det mo... | Oren , Michael B. / Andersen , Jon | 2008 |
| 10 | Lavangen 1940 : informasjonshefte om 2. verden... | Borren , Arne | 1998 |
| 11 | D-dagen : den allierte invasjonen i Normandie ... | Tamelander , Michael / Zetterling , Niklas / R... | 2004 |
| 12 | Fra krig til fred i Songdalen 1940-1945 | Fjermeros , Erik | 1995 |
| 13 | Skilles og møtes : en sann fortelling om tro ,... | Thureson , Birger / Viumdal , Jan-Kristian | 1991 |
| 14 | Det utrolige døgnet | Bjørnsen , Bjørn | 1977 |
| 15 | Mot Onsøy 1814 | Øy , Nils E. | 1991 |
| 16 | Fortielsen : den kalde krigen og Peder Furubotn | Titlestad , Torgrim | 1997 |
| 17 | Krigen i Norge 1940. [ 1 ] : Operasjonene i Ro... | 1952 | |
| 18 | Minner fra krigen : 1940-1945 | Strand , Karl Ivar Arktander / Aasjord , Hugo | 2008 |
| 19 | De som tapte krigen | Fjørtoft , Kjell | 1995 |
| 20 | Øst-Europa i forvandling | Johansen , Jahn Otto | 1965 |
| 21 | Kryssild : mitt liv som flyktning : Burundi - ... | Ngendakurio , John Bosco / Holmedahl , Jostein | 2009 |
| 22 | Det ringer for siste gang : fra mitt liv på ha... | Bjørnstad , Arne | 1969 |
| 23 | Kvinner under krigen : norske kvinners innsats... | Simensen , Siri Walen | 2009 |
| 24 | Sjøkrigens skjebner : deres egne beretninger | Bøe-Hansen , Ola | 2005 |
| 25 | To liv - e ́ n skjebne : Viggo Hansteen og Rol... | Berntsen , Harald | 1995 |
| 26 | Livvakt i helvete : Aleksandr og krigen i Tsje... | Mannes , Siri Lill | 2006 |
| 27 | Israel beleiret : situasjonen i Midtøsten det ... | Borchsenius , Poul / Grønvik , Torbjørn | 1970 |
| 28 | Den annen verdenskrig . 1 : Opptakten : " aldr... | Piekalkiewicz , Janusz | 1987 |
| 29 | Den skjulte hånd : historien om Einar Johansen... | Christensen , Dag | 1990 |
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
| 100562108 | 100038162 | 100115822 | 100131537 | 100377030 | |
|---|---|---|---|---|---|
| . | 5057 | 1681 | 2088 | 3004 | 4762 |
| og | 2541 | 1004 | 2937 | 1621 | 2468 |
| i | 2363 | 692 | 1263 | 1559 | 2387 |
| , | 2297 | 763 | 3504 | 2160 | 7484 |
| var | 1410 | 475 | 501 | 1147 | 1702 |
| ... | ... | ... | ... | ... | ... |
| Cripps | 0 | 0 | 0 | 1 | 0 |
| hjelmer | 0 | 0 | 1 | 0 | 0 |
| gudebildene | 0 | 0 | 1 | 0 | 0 |
| forløpet | 0 | 2 | 0 | 0 | 0 |
| realisering | 0 | 0 | 1 | 0 | 0 |
33944 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")
| 100562108 | 100038162 | 100115822 | 100131537 | 100377030 | |
|---|---|---|---|---|---|
| . | 5057 | 1681 | 2088 | 3004 | 4762 |
| og | 2541 | 1004 | 2937 | 1621 | 2468 |
| i | 2363 | 692 | 1263 | 1559 | 2387 |
| , | 2297 | 763 | 3504 | 2160 | 7484 |
| var | 1410 | 475 | 501 | 1147 | 1702 |
| det | 1382 | 290 | 819 | 689 | 1781 |
| som | 1223 | 299 | 1310 | 982 | 1769 |
| av | 1210 | 429 | 794 | 693 | 1449 |
| til | 1115 | 387 | 960 | 826 | 1553 |
| de | 1064 | 460 | 1290 | 562 | 958 |
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 | |
|---|---|
| . | 136769 |
| , | 115085 |
| i | 62682 |
| og | 71691 |
| det | 32170 |
| ... | ... |
| bord-alarm | 1 |
| saltverket | 1 |
| dropposisjon | 1 |
| kloven | 1 |
| innBiZelBer | 1 |
139055 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 | |
|---|---|
| Furubotn | 515.391408 |
| Dayan | 334.065624 |
| Shultz | 331.065087 |
| Crisis | 328.566845 |
| Andropov | 293.317402 |
| Hansteens | 238.932823 |
| Wickstrøm | 231.024789 |
| KRIGEN | 212.199792 |
| Oral | 190.211577 |
| Hansteen | 190.039781 |
| Nasser | 189.110622 |
| pp. | 181.931216 |
| Rabin | 177.890815 |
| Skabo | 177.148081 |
| stridsvognene | 173.570219 |
| Foreign | 159.047584 |
| Spørck | 155.194205 |
| Gilja | 144.356125 |
| fremrykningen | 141.612204 |
| partisanene | 141.598913 |
| Nassers | 139.883396 |
| ÉN | 134.68182 |
| files | 133.351206 |
| BERNTSEN | 121.394556 |
| Tirpitz | 119.933993 |
| Svenner | 119.718182 |
| Hjemmefronten | 119.623084 |
| syrerne | 116.657636 |
| Kalheim | 116.082217 |
| Sinai | 115.641996 |
| stridsvogner | 114.963862 |
| Tsjetsjenia | 113.682762 |
| SIMENSEN | 112.594871 |
| USSR | 111.408829 |
| Ministry | 107.564896 |
| jordanske | 106.908482 |
| Handelsflåten | 104.448192 |
| jagerne | 100.748805 |
| Terboven | 100.335717 |
| frontkjempere | 99.491356 |
| Huth | 99.230201 |
| D-dagen | 98.636608 |
| box | 98.114006 |
| Grenada | 96.089447 |
| ISA | 95.012092 |
| Hjemmefrontens | 92.858105 |
| jageren | 92.772245 |
| Memorandum | 92.244784 |
| tsjetsjenske | 91.945298 |
| Relations | 87.836661 |
1.9.2. Visualiser som ordsky#
nb.cloud((bøker_typiske_ord/bøker_typiske_ord.sum()).head(50))