
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.iloc[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)
/home/tita/koding/dhlab_stuff/digital_tekstanalyse/.venv/lib/python3.13/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 | |
|---|---|---|---|
| 27 | Ask | PER | 781 |
| 134 | Daniel | PER | 115 |
| 281 | Gud | PER | 84 |
| 1335 | mann | PER | 80 |
| 196 | Embla | MISC | 68 |
| ... | ... | ... | ... |
| 14 | Anders Taraldsen | PER | 1 |
| 17 | Arbeideravisen | LOC | 1 |
| 18 | Arbeiderbevegelsen | PER | 1 |
| 19 | Arbeiderbladet | ORG | 1 |
| 20 | Arbeideren | PER | 1 |
1983 rows × 3 columns
1.10.2. POS – Ordklassetagging#
Finn ordklasser og dependens for en tekst med POS
res = POS(urn=urns.iloc[1], model=l.models[2], to_page=10000)
/home/tita/koding/dhlab_stuff/digital_tekstanalyse/.venv/lib/python3.13/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 | |
|---|---|---|---|---|---|---|---|---|---|---|---|
| 106602 | nu | nu | ADV | advmod | lukker | lukke | VERB | sier | sie | VERB | 4 |
| 4860 | , | , | PUNCT | punct | lagt | lægge | VERB | lagt | lægge | VERB | 4 |
| 153445 | » | » | PUNCT | punct | syk | syk | ADV | syk | syk | ADV | 4 |
| 15677 | . | . | PUNCT | punct | Ja | ja | INTJ | Ja | ja | INTJ | 4 |
| 2067 | , | , | PUNCT | punct | lykkelig | lykkelig | ADJ | Matt | Matt | PROPN | 4 |
| ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... |
| 52838 | en | en | DET | det | lavvokst | lavvokst | NOUN | inngav | inngav | VERB | 1 |
| 52839 | en | en | DET | det | vever | veve | VERB | virket | virke | VERB | 1 |
| 52840 | en | en | DET | det | måte | måte | NOUN | kontrasterte | kontrastert | NOUN | 1 |
| 52841 | en | en | DET | det | aura | aura | NOUN | latiner | latin | NOUN | 1 |
| 52832 | en | en | DET | det | pung | pung | NOUN | pung | pung | NOUN | 1 |
156536 rows × 11 columns