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 1
----> 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'
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=300
)
bøker.frame.loc[:, ["title", "authors", "year"]]
title | authors | year | |
---|---|---|---|
0 | Tapte år : tilegnet Alma | Pasjkurov , Ivan | 1990 |
1 | Hvis Hitler hadde vunnet krigen : nazistenes p... | Giordano , Ralph / Seljelid , Åge | 1991 |
2 | Barn under krigen | Nøkleby , Berit / Hjeltnes , Guri / Gullvåg , ... | 2000 |
3 | De Nære årene : norske kvinner og menn fortell... | Jensen , Johan O. / Jensen , Johan O. | 1986 |
4 | Men arbeidet måtte gå : vegfolk forteller om k... | Hegdalstrand , Kjell | 1995 |
... | ... | ... | ... |
161 | Over grensen ? : Hjemmefrontens likvidasjoner ... | Moland , Arnfinn | 1999 |
162 | Russisk rulett | Bočarov , Gennadij / Fremming , Espen | 1990 |
163 | I Tordenskiolds kjølvann | Kavli , Guthorm | 1990 |
164 | Norsk krigsleksikon 1940-45 | Dahl , Hans Fredrik / Hagen , Eirin | 1995 |
165 | Nordmenn i fangenskap 1940-1945 : alfabetisk r... | Ottosen , Kristian / Knudsen , Arne | 1995 |
166 rows × 3 columns
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
100521520 | 100571027 | 100570822 | 100025743 | 100285115 | |
---|---|---|---|---|---|
. | 5199.0 | 3537.0 | 2521.0 | 6114.0 | 5406.0 |
, | 3362.0 | 2252.0 | 1424.0 | 3108.0 | 6932.0 |
og | 2090.0 | 1805.0 | 1001.0 | 3185.0 | 3443.0 |
var | 1989.0 | 1198.0 | 962.0 | 1396.0 | 1837.0 |
i | 1841.0 | 1150.0 | 891.0 | 3010.0 | 3245.0 |
... | ... | ... | ... | ... | ... |
Mona | 0.0 | 0.0 | 0.0 | 0.0 | 36.0 |
fait | 0.0 | 0.0 | 0.0 | 0.0 | 40.0 |
‘ | 0.0 | 0.0 | 0.0 | 0.0 | 70.0 |
’ | 0.0 | 0.0 | 0.0 | 0.0 | 95.0 |
seiv | 0.0 | 0.0 | 0.0 | 0.0 | 102.0 |
41977 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")
100521520 | 100571027 | 100570822 | 100025743 | 100285115 | |
---|---|---|---|---|---|
. | 5199.000000 | 3537.000000 | 2521.000000 | 6114.000000 | 5406.000000 |
, | 3362.000000 | 2252.000000 | 1424.000000 | 3108.000000 | 6932.000000 |
og | 2090.000000 | 1805.000000 | 1001.000000 | 3185.000000 | 3443.000000 |
var | 1989.000000 | 1198.000000 | 962.000000 | 1396.000000 | 1837.000000 |
i | 1841.000000 | 1150.000000 | 891.000000 | 3010.000000 | 3245.000000 |
det | 1783.000000 | 778.000000 | 683.000000 | 2044.000000 | 1304.000000 |
jeg | 1333.000000 | 695.000000 | 661.000000 | 111.000000 | 358.000000 |
på | 1302.000000 | 891.000000 | 556.000000 | 1180.000000 | 1527.000000 |
som | 1271.000000 | 725.000000 | 516.000000 | 1731.000000 | 1253.000000 |
en | 1269.000000 | 779.000000 | 517.000000 | 1549.000000 | 1154.000000 |
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 | |
---|---|
, | 1447361.0 |
. | 1239985.0 |
^ | 19453.0 |
og | 456573.0 |
til | 271849.0 |
... | ... |
Lovell | 21.0 |
Oldereid | 29.0 |
ZJIZJIN | 45.0 |
BELJAEV | 47.0 |
TITOV | 92.0 |
606954 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 | |
---|---|
løsl | 4833.190733 |
ovf. | 4008.252579 |
f.nr | 3966.797430 |
Møllergata | 755.385017 |
Østf | 677.497177 |
Sachsenhausen | 450.341807 |
Grini | 393.216739 |
Falstad | 341.167553 |
Hedm | 311.771917 |
Telem | 301.856473 |
f.m. | 282.470624 |
Vestf | 278.685051 |
Nordi | 267.663267 |
Dachau | 219.043036 |
Vollan | 205.069268 |
Finnm | 184.727016 |
gardsarbeider | 174.649182 |
Ara | 172.453373 |
freden | 158.993578 |
Løfsnes | 149.278587 |
ank. | 127.089557 |
lagerarbeider | 105.323230 |
Arr | 104.760437 |
Milorg | 104.653514 |
Soviet | 103.704604 |
Busk | 97.430041 |
An | 96.689206 |
Hjemmefrontens | 95.583670 |
SAK | 81.029599 |
Falkenhorst | 79.328393 |
Hjemmefronten | 78.466168 |
Furubotn | 75.899378 |
punds | 75.745245 |
hausen | 74.982654 |
Administrasjonsrådet | 72.241541 |
Auschwitz | 68.584370 |
Smst | 67.231753 |
Wiking | 66.845769 |
Wehrmacht | 65.885264 |
Sipo | 61.891449 |
Kristi- | 60.810208 |
Terboven | 57.830097 |
Tordenskiold | 57.486035 |
42. | 57.090582 |
43. | 56.681139 |
tveit | 56.098469 |
angivere | 55.031767 |
kompanier | 53.972696 |
NS-medlemmer | 50.756165 |
dekknavn | 50.696521 |
1.9.2. Visualiser som ordsky#
nb.cloud((bøker_typiske_ord/bøker_typiske_ord.sum()).head(50))
