resources/images/dhlab-logo-nb.png

1.8. N-gram og galakser#

Data kan hentes ut fra NB N-gram ved hjelp av klassen Ngram.

Ngram tar følgende parametre:

Ngram(     words=[         "han",          "hun"         ],     from_year=1950,     to_year=1990,     doctype="bok"     )

Ngram-obektetet inneholder en dataramme som kan analyseres, og metoder for visualisering og analyse.

Vi støtter N-gram basert på bøker eller aviser. Man kan velge hvilket korpus man vil bruke med å sette paramenteret doctype til "bok" eller "avis". Hvis ingen blir spesifisert brukes bokkorpuset.

import dhlab as dh
from dhlab import Ngram, NgramBook, NgramNews
from dhlab.ngram.nb_ngram import nb_ngram
from dhlab.api.nb_ngram_api import make_word_graph
from dhlab import graph_networkx_louvain as gnl
  • Ngram

  • NgramBook

  • NgramNews

  • nb_ngram

  • make_word_graph

    • clustre

1.8.1. Plotting#

# Ngram på 'han' og 'hun' på bøker utgitt 1950-1990
Ngram(
    words=[
        "han", 
        "hun"
        ],
    from_year=1950,
    to_year=1990,
    doctype="bok"
    )
../_images/f589dc8dd957ce07526b51ffa3ffc45aacd8e4c4db0f0bf46f4cc2b3fb48729e.png

Visualisering kan konfigurerers med Ngram.plot()

  • Ngram.plot har paramenteret smooth i tillegg til paramenterene til pandas.DataFrame.plot().

  • smooth er et parameter for glatting. Forekomsten av et ord er til en viss grad styrt av tilfeldigheter, for eks. hvilke bøker som ble utgitt ett bestemt år: For å rette noe på denne skjevheten, «glattes» resultatene ut før de vises. Glatting vil si at relativfrekvensen for ett år beregnes som et gjennomsnitt av frekvensen i dette og et visst antall forutgående og etterfølgende år: En glatting på fire innebærer at resultatene for fire år før og fire år etter legges sammen med dem for det aktuelle året, delt på ni (antall år totalt). Dette gjør kurvene jevnere enn i rådataene hvor det er langt mer spisse topper.

# Ngram på 'han' og 'hun' på bøker utgitt 1950-1990
# Glatting, plot-type, størrelse og strektykkelse
Ngram(
    words=[
        "han", 
        "hun"
        ],
    from_year=1950,
    to_year=1990,
    doctype="bok"
    ).plot(smooth=10, kind="line", figsize=(8, 4), lw=4)
../_images/00819c8047ff10c260418196b30146f20b2a82a79f25d5afc53b90671ef0c1d6.png

1.8.1.1. Dataramme#

# Adgang til N-grammet som dataramme gjennom Ngram.frame
Ngram(
    words=[
        "han", 
        "hun"
        ],
    from_year=1950,
    to_year=1990,
    doctype="bok"
    ).frame.head()
han hun
1950 0.961575 0.376442
1951 0.990294 0.370878
1952 0.946277 0.390889
1953 0.965377 0.377961
1954 0.803514 0.321345

1.8.1.2. Avis N-gram#

Lag N-gram basert på avis ved å sette doctype til "avis".

Ngram(
    ["det", "der"],
    doctype="avis",
    from_year=1810,
    to_year=2010
).plot(smooth=10, figsize=(10, 5), lw=5)
../_images/edfa6321b88e8d9877162aba65d8a517a4149c9381b5c681c36de8f660d2ce70.png

1.8.2. N-gram med jokertegn#

Ngram(
    ["arbeids*"],
    from_year=1810
).plot(figsize=(12, 6))
../_images/9633b24797aa4d1234c0420dc5bdc4b8150d07e6c7e019eb18f49df4d5c4d3ee.png
Ngram(
    ["demokrati*"],
    from_year=1800
    ).plot(smooth=4, figsize=(12,6), lw=5)
../_images/f60a1cf009a31e56b20ccb79ad7723cc61181ed991bc53cb3a3f7b38e2f66759.png

1.8.3. Galakser#

Galaksene måler koblinger mellom ord, og kan brukes for å lage sett av ord til forskjellige formål, som for eksempel sentimentanalyse, eller stedsnavn.

is_graf = make_word_graph("is", corpus='all', cutoff=16, leaves=0)

Grafer tegnes og analyseres med pakken networkx. Kommandoer er bygd over den pakken, og kommando for å vise grafen er show_graph fra modulen graph_networkx_louvain.

gnl.show_graph(is_graf, spread=5)
../_images/5ffa10a1dfaf4252a4934aeeee84e35e932eaa407d712154128e6c607673b1d8.png

Bruk kommando show_communities fra gnl for å se på clustre.

gnl.show_community(is_graf)
1 is, sno, Ski, Vatn, Vinter, hagl, Kulde, ), avkjøles, barfrost, vanskelige, skummes, nysne, isete, sne, fokksnø, hardpakket, slaps, eld, regn, kuldegrader, Agnsild, Sno, papir, tomtønner, glatt, snø, isdekke, Snø, kondens, skare, sjøis, ski, tomkasser, ising, allmennkunnskaper, dugg, ,, siles, dårlig, Sludd, snøbyger, holke, skiføre, hålke, Eld, stov, Glod, isdannelse, rim, kornsne, minusgrader, slud, sludd, granskog

2 Sne, Frost, Hagel, Regn, Hagl, Slud, Storm, lis, Is

3 søle, overvann, rok, svovel, småstykker, snøslaps, isvann, Blod, sørpe, røk, vann, røyk, isflak, ild

4 kulde, sult, varme, frost, snøstorm, væte, fuktighet, snestorm, vind, mørke

5 kontinenter, hav, fjell, land, kyst, fjord, himmel

6 hamburgarar, øl, skinker, koteletter, boller, Kaffe, polser, pinnebrød, godteri, hamburgere, pølser, kaker, pizza, brus, kaffe, lettøl, Pølser, vørterøl, mineralvann, snacks, burgere, karbonader, opskjær
True