Reorganise Swedish language data

This commit is contained in:
ines 2017-05-08 15:54:29 +02:00
parent 50510fa947
commit 7b86ee093a
6 changed files with 115 additions and 204 deletions

View File

@ -1,11 +1,17 @@
# coding: utf8 # coding: utf8
from __future__ import unicode_literals, print_function from __future__ import unicode_literals
from .tokenizer_exceptions import TOKENIZER_EXCEPTIONS
from .stop_words import STOP_WORDS
from .morph_rules import MORPH_RULES
from .lemmatizer import LEMMA_RULES, LOOKUP
from ..language_data import BASE_EXCEPTIONS
from ..language import Language from ..language import Language
from ..attrs import LANG
from .language_data import *
from ..lemmatizerlookup import Lemmatizer from ..lemmatizerlookup import Lemmatizer
from .lemmatization import LOOK_UP from ..attrs import LANG
from ..util import update_exc
class Swedish(Language): class Swedish(Language):
lang = 'sv' lang = 'sv'
@ -14,12 +20,13 @@ class Swedish(Language):
lex_attr_getters = dict(Language.Defaults.lex_attr_getters) lex_attr_getters = dict(Language.Defaults.lex_attr_getters)
lex_attr_getters[LANG] = lambda text: 'sv' lex_attr_getters[LANG] = lambda text: 'sv'
tokenizer_exceptions = TOKENIZER_EXCEPTIONS tokenizer_exceptions = update_exc(BASE_EXCEPTIONS, TOKENIZER_EXCEPTIONS)
stop_words = STOP_WORDS stop_words = set(STOP_WORDS)
morph_rules = dict(MORPH_RULES)
@classmethod @classmethod
def create_lemmatizer(cls, nlp=None): def create_lemmatizer(cls, nlp=None):
return Lemmatizer(LOOK_UP) return Lemmatizer(LOOKUP)
EXPORT = Swedish __all__ = ['Swedish']

View File

@ -1,6 +1,8 @@
# coding: utf8 # coding: utf8
from __future__ import unicode_literals from __future__ import unicode_literals
from .lookup import LOOKUP
LEMMA_RULES = { LEMMA_RULES = {
"noun": [ "noun": [

View File

@ -1,7 +1,8 @@
# coding: utf8 # coding: utf8
from __future__ import unicode_literals from __future__ import unicode_literals
LOOK_UP = {
LOOKUP = {
"A-bombens": "A-bomb", "A-bombens": "A-bomb",
"A-bomberna": "A-bomb", "A-bomberna": "A-bomb",
"A-bombers": "A-bomb", "A-bombers": "A-bomb",
@ -660310,4 +660311,4 @@ LOOK_UP = {
"övärlden": "övärld", "övärlden": "övärld",
"övärldens": "övärld", "övärldens": "övärld",
"övärlds": "övärld" "övärlds": "övärld"
} }

View File

@ -1,8 +1,9 @@
# coding: utf8 # coding: utf8
from __future__ import unicode_literals from __future__ import unicode_literals
from ..symbols import * from ..symbols import LEMMA
from ..language_data import PRON_LEMMA from ..deprecated import PRON_LEMMA
# Used the table of pronouns at https://sv.wiktionary.org/wiki/deras # Used the table of pronouns at https://sv.wiktionary.org/wiki/deras

View File

@ -3,31 +3,45 @@ from __future__ import unicode_literals
STOP_WORDS = set(""" STOP_WORDS = set("""
aderton adertonde adjö aldrig alla allas allt alltid alltså än andra andras annan annat ännu artonde arton åtminstone att åtta åttio åttionde åttonde av även aderton adertonde adjö aldrig alla allas allt alltid alltså än andra andras
annan annat ännu artonde arton åtminstone att åtta åttio åttionde åttonde av
även
båda bådas bakom bara bäst bättre behöva behövas behövde behövt beslut beslutat beslutit bland blev bli blir blivit bort borta bra båda bådas bakom bara bäst bättre behöva behövas behövde behövt beslut beslutat
beslutit bland blev bli blir blivit bort borta bra
dag dagar dagarna dagen där därför de del delen dem den deras dess det detta dig din dina dit ditt dock du dag dagar dagarna dagen där därför de del delen dem den deras dess det detta
dig din dina dit ditt dock du
efter eftersom elfte eller elva en enkel enkelt enkla enligt er era ert ett ettusen efter eftersom elfte eller elva en enkel enkelt enkla enligt er era ert ett
ettusen
fanns får fått fem femte femtio femtionde femton femtonde fick fin finnas finns fjärde fjorton fjortonde fler flera flesta följande för före förlåt förra första fram framför från fyra fyrtio fyrtionde fanns får fått fem femte femtio femtionde femton femtonde fick fin finnas
finns fjärde fjorton fjortonde fler flera flesta följande för före förlåt förra
första fram framför från fyra fyrtio fyrtionde
gälla gäller gällt går gärna gått genast genom gick gjorde gjort god goda godare godast gör göra gott gälla gäller gällt går gärna gått genast genom gick gjorde gjort god goda
godare godast gör göra gott
ha hade haft han hans har här heller hellre helst helt henne hennes hit hög höger högre högst hon honom hundra hundraen hundraett hur ha hade haft han hans har här heller hellre helst helt henne hennes hit hög
höger högre högst hon honom hundra hundraen hundraett hur
i ibland idag igår igen imorgon in inför inga ingen ingenting inget innan inne inom inte inuti i ibland idag igår igen imorgon in inför inga ingen ingenting inget innan inne
inom inte inuti
ja jag jämfört ja jag jämfört
kan kanske knappast kom komma kommer kommit kr kunde kunna kunnat kvar kan kanske knappast kom komma kommer kommit kr kunde kunna kunnat kvar
länge längre långsam långsammare långsammast långsamt längst långt lätt lättare lättast legat ligga ligger lika likställd likställda lilla lite liten litet länge längre långsam långsammare långsammast långsamt längst långt lätt lättare
lättast legat ligga ligger lika likställd likställda lilla lite liten litet
man många måste med mellan men mer mera mest mig min mina mindre minst mitt mittemot möjlig möjligen möjligt möjligtvis mot mycket man många måste med mellan men mer mera mest mig min mina mindre minst mitt
mittemot möjlig möjligen möjligt möjligtvis mot mycket
någon någonting något några när nästa ned nederst nedersta nedre nej ner ni nio nionde nittio nittionde nitton nittonde nödvändig nödvändiga nödvändigt nödvändigtvis nog noll nr nu nummer någon någonting något några när nästa ned nederst nedersta nedre nej ner ni nio
nionde nittio nittionde nitton nittonde nödvändig nödvändiga nödvändigt
nödvändigtvis nog noll nr nu nummer
och också ofta oftast olika olikt om oss och också ofta oftast olika olikt om oss
@ -37,11 +51,18 @@ på
rakt rätt redan rakt rätt redan
sade säga säger sagt samma sämre sämst sedan senare senast sent sex sextio sextionde sexton sextonde sig sin sina sist sista siste sitt sjätte sju sjunde sjuttio sjuttionde sjutton sjuttonde ska skall skulle slutligen små smått snart som stor stora större störst stort sade säga säger sagt samma sämre sämst sedan senare senast sent sex sextio
sextionde sexton sextonde sig sin sina sist sista siste sitt sjätte sju sjunde
sjuttio sjuttionde sjutton sjuttonde ska skall skulle slutligen små smått snart
som stor stora större störst stort
tack tidig tidigare tidigast tidigt till tills tillsammans tio tionde tjugo tjugoen tjugoett tjugonde tjugotre tjugotvå tjungo tolfte tolv tre tredje trettio trettionde tretton trettonde två tvåhundra tack tidig tidigare tidigast tidigt till tills tillsammans tio tionde tjugo
tjugoen tjugoett tjugonde tjugotre tjugotvå tjungo tolfte tolv tre tredje
trettio trettionde tretton trettonde två tvåhundra
under upp ur ursäkt ut utan utanför ute under upp ur ursäkt ut utan utanför ute
vad vänster vänstra var vår vara våra varför varifrån varit varken värre varsågod vart vårt vem vems verkligen vi vid vidare viktig viktigare viktigast viktigt vilka vilken vilket vill vad vänster vänstra var vår vara våra varför varifrån varit varken värre
varsågod vart vårt vem vems verkligen vi vid vidare viktig viktigare viktigast
viktigt vilka vilken vilket vill
""".split()) """.split())

View File

@ -1,11 +1,12 @@
# coding: utf8 # coding: utf8
from __future__ import unicode_literals from __future__ import unicode_literals
from ..symbols import * from ..symbols import ORTH, LEMMA, TAG, NORM
from ..language_data import PRON_LEMMA from ..deprecated import PRON_LEMMA
EXC = {} _exc = {}
# Verbs # Verbs
@ -17,188 +18,66 @@ for verb_data in [
{ORTH: "hajar", LEMMA: "förstår"}, {ORTH: "hajar", LEMMA: "förstår"},
{ORTH: "lever"}, {ORTH: "lever"},
{ORTH: "serr", LEMMA: "ser"}, {ORTH: "serr", LEMMA: "ser"},
{ORTH: "fixar"} {ORTH: "fixar"}]:
]:
verb_data_tc = dict(verb_data) verb_data_tc = dict(verb_data)
verb_data_tc[ORTH] = verb_data_tc[ORTH].title() verb_data_tc[ORTH] = verb_data_tc[ORTH].title()
for data in [verb_data, verb_data_tc]: for data in [verb_data, verb_data_tc]:
EXC[data[ORTH] + "u"] = [ _exc[data[ORTH] + "u"] = [
dict(data), dict(data),
{ORTH: "u", LEMMA: PRON_LEMMA, NORM: "du"} {ORTH: "u", LEMMA: PRON_LEMMA, NORM: "du"}]
]
ABBREVIATIONS = { for exc_data in [
"jan.": [ {ORTH: "jan.", LEMMA: "januari"},
{ORTH: "jan.", LEMMA: "januari"} {ORTH: "febr.", LEMMA: "februari"},
], {ORTH: "feb.", LEMMA: "februari"},
"febr.": [ {ORTH: "apr.", LEMMA: "april"},
{ORTH: "febr.", LEMMA: "februari"} {ORTH: "jun.", LEMMA: "juni"},
], {ORTH: "jul.", LEMMA: "juli"},
"feb.": [ {ORTH: "aug.", LEMMA: "augusti"},
{ORTH: "feb.", LEMMA: "februari"} {ORTH: "sept.", LEMMA: "september"},
], {ORTH: "sep.", LEMMA: "september"},
"apr.": [ {ORTH: "okt.", LEMMA: "oktober"},
{ORTH: "apr.", LEMMA: "april"} {ORTH: "nov.", LEMMA: "november"},
], {ORTH: "dec.", LEMMA: "december"},
"jun.": [ {ORTH: "mån.", LEMMA: "måndag"},
{ORTH: "jun.", LEMMA: "juni"} {ORTH: "tis.", LEMMA: "tisdag"},
], {ORTH: "ons.", LEMMA: "onsdag"},
"jul.": [ {ORTH: "tors.", LEMMA: "torsdag"},
{ORTH: "jul.", LEMMA: "juli"} {ORTH: "fre.", LEMMA: "fredag"},
], {ORTH: "lör.", LEMMA: "lördag"},
"aug.": [ {ORTH: "sön.", LEMMA: "söndag"},
{ORTH: "aug.", LEMMA: "augusti"} {ORTH: "Jan.", LEMMA: "Januari"},
], {ORTH: "Febr.", LEMMA: "Februari"},
"sept.": [ {ORTH: "Feb.", LEMMA: "Februari"},
{ORTH: "sept.", LEMMA: "september"} {ORTH: "Apr.", LEMMA: "April"},
], {ORTH: "Jun.", LEMMA: "Juni"},
"sep.": [ {ORTH: "Jul.", LEMMA: "Juli"},
{ORTH: "sep.", LEMMA: "september"} {ORTH: "Aug.", LEMMA: "Augusti"},
], {ORTH: "Sept.", LEMMA: "September"},
"okt.": [ {ORTH: "Sep.", LEMMA: "September"},
{ORTH: "okt.", LEMMA: "oktober"} {ORTH: "Okt.", LEMMA: "Oktober"},
], {ORTH: "Nov.", LEMMA: "November"},
"nov.": [ {ORTH: "Dec.", LEMMA: "December"},
{ORTH: "nov.", LEMMA: "november"} {ORTH: "Mån.", LEMMA: "Måndag"},
], {ORTH: "Tis.", LEMMA: "Tisdag"},
"dec.": [ {ORTH: "Ons.", LEMMA: "Onsdag"},
{ORTH: "dec.", LEMMA: "december"} {ORTH: "Tors.", LEMMA: "Torsdag"},
], {ORTH: "Fre.", LEMMA: "Fredag"},
"mån.": [ {ORTH: "Lör.", LEMMA: "Lördag"},
{ORTH: "mån.", LEMMA: "måndag"} {ORTH: "Sön.", LEMMA: "Söndag"},
], {ORTH: "sthlm", LEMMA: "Stockholm"},
"tis.": [ {ORTH: "gbg", LEMMA: "Göteborg"}]:
{ORTH: "tis.", LEMMA: "tisdag"} _exc[exc_data[ORTH]] = [dict(exc_data)]
],
"ons.": [
{ORTH: "ons.", LEMMA: "onsdag"}
],
"tors.": [
{ORTH: "tors.", LEMMA: "torsdag"}
],
"fre.": [
{ORTH: "fre.", LEMMA: "fredag"}
],
"lör.": [
{ORTH: "lör.", LEMMA: "lördag"}
],
"sön.": [
{ORTH: "sön.", LEMMA: "söndag"}
],
"Jan.": [
{ORTH: "Jan.", LEMMA: "Januari"}
],
"Febr.": [
{ORTH: "Febr.", LEMMA: "Februari"}
],
"Feb.": [
{ORTH: "Feb.", LEMMA: "Februari"}
],
"Apr.": [
{ORTH: "Apr.", LEMMA: "April"}
],
"Jun.": [
{ORTH: "Jun.", LEMMA: "Juni"}
],
"Jul.": [
{ORTH: "Jul.", LEMMA: "Juli"}
],
"Aug.": [
{ORTH: "Aug.", LEMMA: "Augusti"}
],
"Sept.": [
{ORTH: "Sept.", LEMMA: "September"}
],
"Sep.": [
{ORTH: "Sep.", LEMMA: "September"}
],
"Okt.": [
{ORTH: "Okt.", LEMMA: "Oktober"}
],
"Nov.": [
{ORTH: "Nov.", LEMMA: "November"}
],
"Dec.": [
{ORTH: "Dec.", LEMMA: "December"}
],
"Mån.": [
{ORTH: "Mån.", LEMMA: "Måndag"}
],
"Tis.": [
{ORTH: "Tis.", LEMMA: "Tisdag"}
],
"Ons.": [
{ORTH: "Ons.", LEMMA: "Onsdag"}
],
"Tors.": [
{ORTH: "Tors.", LEMMA: "Torsdag"}
],
"Fre.": [
{ORTH: "Fre.", LEMMA: "Fredag"}
],
"Lör.": [
{ORTH: "Lör.", LEMMA: "Lördag"}
],
"Sön.": [
{ORTH: "Sön.", LEMMA: "Söndag"}
],
"sthlm": [
{ORTH: "sthlm", LEMMA: "Stockholm"}
],
"gbg": [
{ORTH: "gbg", LEMMA: "Göteborg"}
]
}
TOKENIZER_EXCEPTIONS = dict(EXC) for orth in [
TOKENIZER_EXCEPTIONS.update(ABBREVIATIONS) "ang.", "anm.", "bil.", "bl.a.", "dvs.", "e.Kr.", "el.", "e.d.", "eng.",
"etc.", "exkl.", "f.d.", "fid.", "f.Kr.", "forts.", "fr.o.m.", "f.ö.",
"förf.", "inkl.", "jur.", "kl.", "kr.", "lat.", "m.a.o.", "max.", "m.fl.",
"min.", "m.m.", "obs.", "o.d.", "osv.", "p.g.a.", "ref.", "resp.", "s.a.s.",
"s.k.", "st.", "s:t", "t.ex.", "t.o.m.", "ung.", "äv.", "övers."]:
_exc[orth] = [{ORTH: orth}]
ORTH_ONLY = [ TOKENIZER_EXCEPTIONS = dict(_exc)
"ang.",
"anm.",
"bil.",
"bl.a.",
"dvs.",
"e.Kr.",
"el.",
"e.d.",
"eng.",
"etc.",
"exkl.",
"f.d.",
"fid.",
"f.Kr.",
"forts.",
"fr.o.m.",
"f.ö.",
"förf.",
"inkl.",
"jur.",
"kl.",
"kr.",
"lat.",
"m.a.o.",
"max.",
"m.fl.",
"min.",
"m.m.",
"obs.",
"o.d.",
"osv.",
"p.g.a.",
"ref.",
"resp.",
"s.a.s.",
"s.k.",
"st.",
"s:t",
"t.ex.",
"t.o.m.",
"ung.",
"äv.",
"övers."
]