NER og POS med Spacy

resources/images/dhlab-logo-nb.png

1.10. NER og POS med Spacy#

Hent ut navn og steder fra en tekst i Nasjonalbibliotekets samling med NER.

Finn ordklasser med POS.

import dhlab as dh
from dhlab import Corpus
from dhlab.text.parse import NER, POS, Models

Hent ut en urn

# Bygg et korpus basert Agnar Mykle og hent ut urn-kolonnen som liste
urns = Corpus(doctype="digibok", author="mykle", title="røde").frame.urn
# Hent ut en urn
my_urn = urns[1]
/tmp/ipykernel_98975/3202258208.py:4: FutureWarning: Series.__getitem__ treating keys as positions is deprecated. In a future version, integer keys will always be treated as labels (consistent with DataFrame behavior). To access a value by position, use `ser.iloc[pos]`
  my_urn = urns[1]

Oversikt over modeller:
Dhlab støtter Per januar 2023 språkene norsk, dansk og engelsk. Tilgjengelige modeller finnes ved å bruke Models. Man kan lese mer om de enkelte modellene på Spacys hjemmesider.

nb_core_news_sm er et bra utgangspunkt for en norskspråklig bok eller avis.

l = Models()
l.models
['nb_core_news_lg',
 'da_core_news_lg',
 'nb_core_news_sm',
 'en_core_web_lg',
 'en_core_web_md',
 'da_core_news_trf']

1.10.1. NER#

NER (Named Entity Recognition) brukes for å finne navngitte entiteter, som personer, steder, osv. i teksten.

result = NER(urn=my_urn, model="nb_core_news_sm", start_page=0, to_page=1000000)
/mnt/data/magbb/.virtualenvs/dhlab/lib/python3.12/site-packages/dhlab/api/dhlab_api.py:80: FutureWarning: Passing literal json to 'read_json' is deprecated and will be removed in a future version. To read from a literal string, wrap it in a 'StringIO' object.
  return pd.read_json(resp.json())
result.ner
token ner frekv
0 Ask PER 18
9 Embla MISC 10
40 Sangen om den røde rubin MISC 5
29 Mykle PER 4
77 norsk MISC 3
36 Pedagogisk opplegg ORG 3
24 Kompetansemål ORG 2
23 Kjærligheten MISC 2
81 r ORG 2
10 Finner PER 2
2 Asks PER 2
54 Vedlegg PER 1
71 kua kjut LOC 1
70 kristendommen MISC 1
69 jSff LOC 1
68 j < MJ PER 1
55 aaatoaV.kaa aaakks PER 1
56 ai tart air ha * ORG 1
57 apa ORG 1
67 j PER 1
66 ilhiatttt4 MISC 1
59 fe.l MISC 1
65 il bjran nf ut MISC 1
64 ijilatol LOC 1
72 kunsters MISC 1
63 hsHJt PER 1
62 gjeldedne normene LOC 1
61 fr. k PER 1
60 fet ORG 1
52 Ute PER 1
58 av sentrale LOC 1
89 tauuiM it MISC 1
95 wm eaakt il tine a PER 1
94 visuell PER 1
93 vg 3 ) MISC 1
92 vg 2 ) MISC 1
91 verdt MISC 1
90 vedlegg PER 1
88 tat * lt LOC 1
87 tart . MISC 1
86 tanas MISC 1
53 Uten en tråd MISC 1
84 t ORG 1
83 r s PER 1
82 r d ORG 1
80 pedagogisk PER 1
79 norske MISC 1
78 norsk Kompetansemål ORG 1
76 n mi ORG 1
75 mann PER 1
74 makthavernes ORG 1
73 las aadra LOC 1
85 t lm Ul fe MISC 1
25 Les romanen MISC 1
22 Kjærlighet er noe ikke andre ikke vet om . MISC 1
21 Karl Ove Knausgårds PER 1
20 Jens Bjørneboe PER 1
19 Jan PER 1
18 J PER 1
17 Ina PER 1
16 Hl4.Ua kas fp ORG 1
15 High eten MISC 1
14 Hai PER 1
96 Øystein Rottem PER 1
12 Frankrike LOC 1
11 Fordypningsoppgaver PER 1
1 Ask Burlefot PER 1
8 Dramaets ORG 1
7 Den Økonomiske . ORG 1
6 Den Økonomiske LOC 1
5 Clsfatasj oat hias ORG 1
4 Christian Krogh PER 1
3 Bergen LOC 1
97 ♦ t MISC 1
13 Gjennomføre MISC 1
51 Ut PER 1
50 UntaM LOC 1
49 Ulpk aSart fe ORG 1
48 Ul LOC 1
47 Studentlag LOC 1
46 Sosialistisk MISC 1
45 Sosialisme PER 1
44 Snl ORG 1
43 Skjønnlitterært PER 1
42 Sangen om den røde rubin utleverte sine litterære MISC 1
26 Mia PER 1
39 Samfunnets LOC 1
38 Sak UthtWn PER 1
37 RIKSTEATRET PER 1
35 Pedagogisk PER 1
34 Parken LOC 1
33 Norge LOC 1
32 Nord-Norge LOC 1
31 Nasjonalbiblioteket PER 1
30 Mykles PER 1
28 Mt w Iwnwtt PER 1
27 Mr ORG 1
41 Sangen om den røde rubin forbudt i MISC 1

1.10.2. POS – Ordklassetagging#

Finn ordklasser og dependens for en tekst med POS

res = POS(urn=urns[1], model=l.models[2], to_page=10000)
/tmp/ipykernel_98975/4208546902.py:1: FutureWarning: Series.__getitem__ treating keys as positions is deprecated. In a future version, integer keys will always be treated as labels (consistent with DataFrame behavior). To access a value by position, use `ser.iloc[pos]`
  res = POS(urn=urns[1], model=l.models[2], to_page=10000)
/mnt/data/magbb/.virtualenvs/dhlab/lib/python3.12/site-packages/dhlab/api/dhlab_api.py:100: FutureWarning: Passing literal json to 'read_json' is deprecated and will be removed in a future version. To read from a literal string, wrap it in a 'StringIO' object.
  return pd.read_json(resp.json())
res.pos
token lemma pos dep head head_lemma head_pos head_head head_head_lemma head_head_pos frekv
107 , , PUNCT punct farlig farlig ADJ rørende rørende ADJ 4
2316 » » PUNCT punct l l X krl krl NOUN 3
74 * * SYM punct enti■eter NOUN # # PROPN 3
111 , , PUNCT punct ikke ikke ADV klar klar ADJ 3
2325 » » PUNCT punct U U PROPN aka aka ADV 2
... ... ... ... ... ... ... ... ... ... ... ...
806 både både ADV advmod kvinnefrigjøring kvinnefrigjøring NOUN tanker tanke NOUN 1
807 bøkene bøk NOUN nmod av av X Sangen sang NOUN 1
808 bør burde AUX aux være være VERB oppfatninger oppfatning NOUN 1
809 bøyest bøyest ADV advmod setter sette VERB setter sette VERB 1
800 bryllupet bryllupet NOUN nmod Embla Embla PROPN holder holde VERB 1

2369 rows × 11 columns