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_493868/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)
/home/ingeridd/prosjekter/DHLAB/dhlab/api/dhlab_api.py:58: 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.
df = pd.read_json(r.json())
result.ner
token | ner | frekv | |
---|---|---|---|
32 | Ask | PER | 476 |
3337 | pa | LOC | 223 |
2911 | nam | PER | 178 |
4437 | v | PER | 133 |
3339 | pa | ORG | 101 |
... | ... | ... | ... |
1709 | dristighet | PER | 1 |
1710 | dstd | MISC | 1 |
1711 | dstd rorre | PER | 1 |
1712 | dstren | MISC | 1 |
4649 | übestikkelighet | PER | 1 |
4650 rows × 3 columns
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_493868/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)
/home/ingeridd/prosjekter/DHLAB/dhlab/api/dhlab_api.py:74: 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.
df = pd.read_json(r.json())
res.pos
token | lemma | pos | dep | head | head_lemma | head_pos | head_head | head_head_lemma | head_head_pos | frekv | |
---|---|---|---|---|---|---|---|---|---|---|---|
1759 | , | , | PUNCT | punct | gjorde | gøre | VERB | sang | sang | NOUN | 6 |
5566 | , | , | PUNCT | punct | kraftig | kraftig | ADJ | kraftig | kraftig | ADJ | 4 |
163936 | « | « | PUNCT | punct | vxre | vxre | VERB | vxre | vxre | VERB | 4 |
9041 | , | , | PUNCT | punct | nar | nar | VERB | nar | nar | VERB | 4 |
164733 | « | « | PUNCT | punct | ineci | ineci | VERB | ineci | ineci | VERB | 4 |
... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... |
56782 | eller | eller | CCONJ | cc | inn | inn | PROPN | tillært | tillær | VERB | 1 |
56783 | eller | eller | CCONJ | cc | annen | annen | NOUN | en | en | DET | 1 |
56784 | eller | eller | CCONJ | cc | nar | nar | VERB | satt | satte | VERB | 1 |
56785 | eller | eller | CCONJ | cc | ømt | øm | ADJ | smilte | smile | VERB | 1 |
168428 | € | € | PROPN | nmod:poss | Frygisk | frygisk | NOUN | Frygisk | frygisk | NOUN | 1 |
168429 rows × 11 columns