mirror of
https://github.com/explosion/spaCy.git
synced 2025-01-26 09:14:32 +03:00
Add norwegian lemmatizer and tag_map
This commit is contained in:
parent
fe4748fc38
commit
b9b3a40c78
|
@ -7,6 +7,8 @@ from .morph_rules import MORPH_RULES
|
||||||
|
|
||||||
from ..tokenizer_exceptions import BASE_EXCEPTIONS
|
from ..tokenizer_exceptions import BASE_EXCEPTIONS
|
||||||
from ..norm_exceptions import BASE_NORMS
|
from ..norm_exceptions import BASE_NORMS
|
||||||
|
from .lemmatizer import LOOKUP
|
||||||
|
from .tag_map import TAG_MAP
|
||||||
from ...language import Language
|
from ...language import Language
|
||||||
from ...attrs import LANG, NORM
|
from ...attrs import LANG, NORM
|
||||||
from ...util import update_exc, add_lookups
|
from ...util import update_exc, add_lookups
|
||||||
|
@ -18,6 +20,8 @@ class NorwegianDefaults(Language.Defaults):
|
||||||
lex_attr_getters[NORM] = add_lookups(Language.Defaults.lex_attr_getters[NORM], BASE_NORMS)
|
lex_attr_getters[NORM] = add_lookups(Language.Defaults.lex_attr_getters[NORM], BASE_NORMS)
|
||||||
tokenizer_exceptions = update_exc(BASE_EXCEPTIONS, TOKENIZER_EXCEPTIONS)
|
tokenizer_exceptions = update_exc(BASE_EXCEPTIONS, TOKENIZER_EXCEPTIONS)
|
||||||
stop_words = STOP_WORDS
|
stop_words = STOP_WORDS
|
||||||
|
tag_map = TAG_MAP
|
||||||
|
lemma_lookup = LOOKUP
|
||||||
|
|
||||||
|
|
||||||
class Norwegian(Language):
|
class Norwegian(Language):
|
||||||
|
|
164
spacy/lang/nb/lemmatizer.py
Normal file
164
spacy/lang/nb/lemmatizer.py
Normal file
|
@ -0,0 +1,164 @@
|
||||||
|
# coding: utf8
|
||||||
|
from __future__ import unicode_literals
|
||||||
|
|
||||||
|
LOOKUP = {
|
||||||
|
'a':'a',
|
||||||
|
'aabakken':'aabakken',
|
||||||
|
'aabakkens':'aabakkens',
|
||||||
|
'aarbakke':'aarbakke',
|
||||||
|
'aarum':'aarum',
|
||||||
|
'aase':'aase',
|
||||||
|
'ab':'ab',
|
||||||
|
'abitanti':'abitanti',
|
||||||
|
'abitazione':'abitazione',
|
||||||
|
'ablegøyer':'ablegøyer',
|
||||||
|
'absolutt':'absolutt',
|
||||||
|
'absorberes':'absorberes',
|
||||||
|
'ad':'ad',
|
||||||
|
'adgang':'adgang',
|
||||||
|
'adgangen':'adgangen',
|
||||||
|
'adkomst':'adkomst',
|
||||||
|
'adkomstdokument':'adkomstdokument',
|
||||||
|
'adkomstdokumenter':'adkomstdokumenter',
|
||||||
|
'adkomsten':'adkomsten',
|
||||||
|
'adlyde':'adlyde',
|
||||||
|
'adlyder':'adlyder',
|
||||||
|
'adm':'adm',
|
||||||
|
'administrasjon':'administrasjon',
|
||||||
|
'administrasjonen':'administrasjonen',
|
||||||
|
'administrasjonsdepartementet':'administrasjonsdepartementet',
|
||||||
|
'administrasjonskostnadene':'administrasjonskostnadene',
|
||||||
|
'administrativ':'administrativ',
|
||||||
|
'administrative':'administrative',
|
||||||
|
'administrativt':'administrativt',
|
||||||
|
'administrere':'administrere',
|
||||||
|
'administrerende':'administrerende',
|
||||||
|
'administreres':'administreres',
|
||||||
|
'administrert':'administrert',
|
||||||
|
'adopsjon':'adopsjon',
|
||||||
|
'adopsjonspenger':'adopsjonspenger',
|
||||||
|
'adresse':'adresse',
|
||||||
|
'adresser':'adresser',
|
||||||
|
'adskillelse':'adskillelse',
|
||||||
|
'adskilt':'adskilt',
|
||||||
|
'advare':'advare',
|
||||||
|
'advarselen':'advarselen',
|
||||||
|
'advart':'advart',
|
||||||
|
'advokat':'advokat',
|
||||||
|
'advokatar':'advokatar',
|
||||||
|
'advokatfirmaet':'advokatfirmaet',
|
||||||
|
'advokatfullmektig':'advokatfullmektig',
|
||||||
|
'agder':'agder',
|
||||||
|
'agenter':'agenter',
|
||||||
|
'agenturer':'agenturer',
|
||||||
|
'aggregeres':'aggregeres',
|
||||||
|
'aggregert':'aggregert',
|
||||||
|
'agn':'agn',
|
||||||
|
'agnar':'agnar',
|
||||||
|
'agreement':'agreement',
|
||||||
|
'ajourføring':'ajourføring',
|
||||||
|
'akademikerne':'akademikerne',
|
||||||
|
'akademikernes':'akademikernes',
|
||||||
|
'ake':'ake',
|
||||||
|
'akershus':'akershus',
|
||||||
|
'akkord':'akkord',
|
||||||
|
'akkumulerte':'akkumulerte',
|
||||||
|
'akkurat':'akkurat',
|
||||||
|
'aksept':'aksept',
|
||||||
|
'akseptabel':'akseptabel',
|
||||||
|
'akseptabelt':'akseptabelt',
|
||||||
|
'akseptable':'akseptable',
|
||||||
|
'aksepterast':'aksepterast',
|
||||||
|
'akseptere':'akseptere',
|
||||||
|
'aksepteres':'aksepteres',
|
||||||
|
'akseptert':'akseptert',
|
||||||
|
'aksjane':'aksjane',
|
||||||
|
'aksjar':'aksjar',
|
||||||
|
'aksje':'aksje',
|
||||||
|
'aksjeandel':'aksjeandel',
|
||||||
|
'aksjeavkastning':'aksjeavkastning',
|
||||||
|
'aksjebrev':'aksjebrev',
|
||||||
|
'aksjebustader':'aksjebustader',
|
||||||
|
'aksjeeigar':'aksjeeigar',
|
||||||
|
'aksjeeigarane':'aksjeeigarane',
|
||||||
|
'aksjeeigarar':'aksjeeigarar',
|
||||||
|
'aksjeeigaravtale':'aksjeeigaravtale',
|
||||||
|
'aksjeeigaren':'aksjeeigaren',
|
||||||
|
'aksjegevinster':'aksjegevinster',
|
||||||
|
'aksjeinnskot':'aksjeinnskot',
|
||||||
|
'aksjekapital':'aksjekapital',
|
||||||
|
'aksjekapitalen':'aksjekapitalen',
|
||||||
|
'aksjelov':'aksjelov',
|
||||||
|
'aksjelova':'aksjelova',
|
||||||
|
'aksjeloven':'aksjeloven',
|
||||||
|
'aksjelovens':'aksjelovens',
|
||||||
|
'aksjelovgjeving':'aksjelovgjeving',
|
||||||
|
'aksjelovgjevinga':'aksjelovgjevinga',
|
||||||
|
'aksjer':'aksjer',
|
||||||
|
'aksjerettslig':'aksjerettslig',
|
||||||
|
'aksjeselskap':'aksjeselskap',
|
||||||
|
'aksjeselskaper':'aksjeselskaper',
|
||||||
|
'aksjeselskapet':'aksjeselskapet',
|
||||||
|
'aksjeselskapsformen':'aksjeselskapsformen',
|
||||||
|
'aksjeselskapsrettslege':'aksjeselskapsrettslege',
|
||||||
|
'aksjonær':'aksjonær',
|
||||||
|
'aksjonæroppgaver':'aksjonæroppgaver',
|
||||||
|
'aktersetet':'aktersetet',
|
||||||
|
'aktes':'aktes',
|
||||||
|
'aktiv':'aktiv',
|
||||||
|
'aktiva':'aktiva',
|
||||||
|
'aktivaklasser':'aktivaklasser',
|
||||||
|
'aktivasammensetning':'aktivasammensetning',
|
||||||
|
'aktive':'aktive',
|
||||||
|
'aktivitet':'aktivitet',
|
||||||
|
'aktivitetane':'aktivitetane',
|
||||||
|
'aktivitetar':'aktivitetar',
|
||||||
|
'aktiviteten':'aktiviteten',
|
||||||
|
'aktivitetene':'aktivitetene',
|
||||||
|
'aktiviteter':'aktiviteter',
|
||||||
|
'aktivitetsøkning':'aktivitetsøkning',
|
||||||
|
'aktivt':'aktivt',
|
||||||
|
'aktlaust':'aktlaust',
|
||||||
|
'aktløyse':'aktløyse',
|
||||||
|
'aktsemd':'aktsemd',
|
||||||
|
'aktsemdplikta':'aktsemdplikta',
|
||||||
|
'aktualisere':'aktualisere',
|
||||||
|
'aktuar':'aktuar',
|
||||||
|
'aktuell':'aktuell',
|
||||||
|
'aktuelle':'aktuelle',
|
||||||
|
'aktuelt':'aktuelt',
|
||||||
|
'aktør':'aktør',
|
||||||
|
'aktørane':'aktørane',
|
||||||
|
'aktørar':'aktørar',
|
||||||
|
'aktørene':'aktørene',
|
||||||
|
'aktørenes':'aktørenes',
|
||||||
|
'aktørens':'aktørens',
|
||||||
|
'aktører':'aktører',
|
||||||
|
'aktørers':'aktørers',
|
||||||
|
'aktørgruppe':'aktørgruppe',
|
||||||
|
'aku':'aku',
|
||||||
|
'alarmsignalet':'alarmsignalet',
|
||||||
|
'aldeles':'aldeles',
|
||||||
|
'alder':'alder',
|
||||||
|
'alderdom':'alderdom',
|
||||||
|
'alderdommen':'alderdommen',
|
||||||
|
'alderen':'alderen',
|
||||||
|
'alderkilde':'alderkilde',
|
||||||
|
'alderpensjonen':'alderpensjonen',
|
||||||
|
'alderpensjonskapital':'alderpensjonskapital',
|
||||||
|
'alders':'alders',
|
||||||
|
'aldersdifferanse':'aldersdifferanse',
|
||||||
|
'aldersforskjellen':'aldersforskjellen',
|
||||||
|
'aldersgrense':'aldersgrense',
|
||||||
|
'aldersgrensen':'aldersgrensen',
|
||||||
|
'aldersgrensene':'aldersgrensene',
|
||||||
|
'aldersgrupper':'aldersgrupper',
|
||||||
|
'alderspensjon':'alderspensjon',
|
||||||
|
'alderspensjonen':'alderspensjonen',
|
||||||
|
'alderspensjoner':'alderspensjoner',
|
||||||
|
'alderspensjonist':'alderspensjonist',
|
||||||
|
'alderspensjonistene':'alderspensjonistene',
|
||||||
|
'alderspensjonister':'alderspensjonister',
|
||||||
|
'alderspensjonsforsikring':'alderspensjonsforsikring',
|
||||||
|
'alderspensjonsforsikringen':'alderspensjonsforsikringen',
|
||||||
|
}
|
25
spacy/lang/nb/punctuation.py
Normal file
25
spacy/lang/nb/punctuation.py
Normal file
|
@ -0,0 +1,25 @@
|
||||||
|
# coding: utf8
|
||||||
|
"""Punctuation stolen from Danish"""
|
||||||
|
from __future__ import unicode_literals
|
||||||
|
|
||||||
|
from ..char_classes import LIST_ELLIPSES, LIST_ICONS
|
||||||
|
from ..char_classes import QUOTES, ALPHA, ALPHA_LOWER, ALPHA_UPPER
|
||||||
|
from ..punctuation import TOKENIZER_SUFFIXES
|
||||||
|
|
||||||
|
|
||||||
|
_quotes = QUOTES.replace("'", '')
|
||||||
|
|
||||||
|
_infixes = (LIST_ELLIPSES + LIST_ICONS +
|
||||||
|
[r'(?<=[{}])\.(?=[{}])'.format(ALPHA_LOWER, ALPHA_UPPER),
|
||||||
|
r'(?<=[{a}])[,!?](?=[{a}])'.format(a=ALPHA),
|
||||||
|
r'(?<=[{a}"])[:<>=](?=[{a}])'.format(a=ALPHA),
|
||||||
|
r'(?<=[{a}]),(?=[{a}])'.format(a=ALPHA),
|
||||||
|
r'(?<=[{a}])([{q}\)\]\(\[])(?=[\{a}])'.format(a=ALPHA, q=_quotes),
|
||||||
|
r'(?<=[{a}])--(?=[{a}])'.format(a=ALPHA)])
|
||||||
|
|
||||||
|
_suffixes = [suffix for suffix in TOKENIZER_SUFFIXES if suffix not in ["'s", "'S", "’s", "’S", r"\'"]]
|
||||||
|
_suffixes += [r"(?<=[^sSxXzZ])\'"]
|
||||||
|
|
||||||
|
|
||||||
|
TOKENIZER_INFIXES = _infixes
|
||||||
|
TOKENIZER_SUFFIXES = _suffixes
|
55
spacy/lang/nb/tag_map.py
Normal file
55
spacy/lang/nb/tag_map.py
Normal file
|
@ -0,0 +1,55 @@
|
||||||
|
# coding: utf8
|
||||||
|
"""Based on Garman tag map, converted using
|
||||||
|
https://pdfs.semanticscholar.org/87b9/24e2134f6782acc59ab567f6bf87cb5e5d9f.pdf"""
|
||||||
|
from __future__ import unicode_literals
|
||||||
|
|
||||||
|
from ...symbols import POS, PUNCT, ADJ, CONJ, CCONJ, SCONJ, SYM, NUM, DET, ADV, ADP, X, VERB
|
||||||
|
from ...symbols import NOUN, PROPN, PART, INTJ, SPACE, PRON, AUX
|
||||||
|
|
||||||
|
|
||||||
|
TAG_MAP = {
|
||||||
|
"$(": {POS: PUNCT, "PunctType": "PUNCT"},
|
||||||
|
"$)": {POS: PUNCT, "PunctType": "PUNCT"},
|
||||||
|
# <parentes-slutt> PUNCT
|
||||||
|
# <parentes-beg> PUNCT
|
||||||
|
"$,": {POS: PUNCT, "PunctType": "PUNCT"},
|
||||||
|
"$.": {POS: PUNCT, "PunctType": "PUNCT"},
|
||||||
|
"$\"": {POS: PUNCT, "PunctType": "PUNCT"},
|
||||||
|
"$-": {POS: PUNCT, "PunctType": "PUNCT"},
|
||||||
|
|
||||||
|
'NOUN': {POS: NOUN},
|
||||||
|
'PROPN': {POS: PROPN},
|
||||||
|
'VERB': {POS: VERB},
|
||||||
|
'PUNCT': {POS: PUNCT},
|
||||||
|
'ADJ': {POS: ADJ},
|
||||||
|
'ADP': {POS: ADP},
|
||||||
|
'PART': {POS: PART},
|
||||||
|
'DET': {POS: DET},
|
||||||
|
'AUX': {POS: AUX},
|
||||||
|
'PRON': {POS: PRON},
|
||||||
|
'CCONJ': {POS: CCONJ},
|
||||||
|
'NUM': {POS: NUM},
|
||||||
|
'ADV': {POS: ADV},
|
||||||
|
'SCONJ': {POS: SCONJ},
|
||||||
|
'SYM': {POS: SYM},
|
||||||
|
'X': {POS: X},
|
||||||
|
'INTJ': {POS: INTJ},
|
||||||
|
|
||||||
|
# <anf> PUNCT
|
||||||
|
# 'adj': {POS: ADJ},
|
||||||
|
# 'adv': {POS: ADV},
|
||||||
|
# 'clb': {POS: PUNCT}, # SYM
|
||||||
|
# 'det': {POS: DET}, # NUM
|
||||||
|
# 'konj': {POS: CONJ},
|
||||||
|
# 'interj': {POS: INTJ},
|
||||||
|
# 'inf-merke': {POS: PART},
|
||||||
|
# 'prep': {POS: ADP},
|
||||||
|
# # 'prep': {POS: ADV},
|
||||||
|
# 'pron': {POS: PRON},
|
||||||
|
# 'sbu': {POS: SCONJ}, #
|
||||||
|
# 'subst': {POS: NOUN}, #, PROPN
|
||||||
|
# 'symb': {POS: SYM}, #
|
||||||
|
# 'ukjent': {POS: X}, #
|
||||||
|
# 'verb': {POS: AUX}, #, VERB
|
||||||
|
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user