Add preliminary support for Finnish

This commit is contained in:
Michael Wallin 2017-02-01 00:27:29 +02:00
parent 932aaba7de
commit 73f66ec570
6 changed files with 1094 additions and 1 deletions

View File

@ -31,6 +31,7 @@ PACKAGES = [
'spacy.pt', 'spacy.pt',
'spacy.nl', 'spacy.nl',
'spacy.sv', 'spacy.sv',
'spacy.fi',
'spacy.language_data', 'spacy.language_data',
'spacy.serialize', 'spacy.serialize',
'spacy.syntax', 'spacy.syntax',

View File

@ -13,7 +13,7 @@ from . import fr
from . import pt from . import pt
from . import nl from . import nl
from . import sv from . import sv
from . import fi
try: try:
basestring basestring
@ -31,6 +31,8 @@ set_lang_class(hu.Hungarian.lang, hu.Hungarian)
set_lang_class(zh.Chinese.lang, zh.Chinese) set_lang_class(zh.Chinese.lang, zh.Chinese)
set_lang_class(nl.Dutch.lang, nl.Dutch) set_lang_class(nl.Dutch.lang, nl.Dutch)
set_lang_class(sv.Swedish.lang, sv.Swedish) set_lang_class(sv.Swedish.lang, sv.Swedish)
set_lang_class(fi.Finnish.lang, fi.Finnish)
def load(name, **overrides): def load(name, **overrides):

17
spacy/fi/__init__.py Normal file
View File

@ -0,0 +1,17 @@
# encoding: utf8
from __future__ import unicode_literals, print_function
from ..language import Language
from ..attrs import LANG
from .language_data import *
class Finnish(Language):
lang = 'fi'
class Defaults(Language.Defaults):
lex_attr_getters = dict(Language.Defaults.lex_attr_getters)
lex_attr_getters[LANG] = lambda text: 'fi'
tokenizer_exceptions = TOKENIZER_EXCEPTIONS
stop_words = STOP_WORDS

17
spacy/fi/language_data.py Normal file
View File

@ -0,0 +1,17 @@
# encoding: utf8
from __future__ import unicode_literals
from .. import language_data as base
from ..language_data import update_exc, strings_to_exc
from .stop_words import STOP_WORDS
from .tokenizer_exceptions import TOKENIZER_EXCEPTIONS
STOP_WORDS = set(STOP_WORDS)
TOKENIZER_EXCEPTIONS = dict(TOKENIZER_EXCEPTIONS)
update_exc(TOKENIZER_EXCEPTIONS, strings_to_exc(base.EMOTICONS))
__all__ = ["TOKENIZER_EXCEPTIONS", "STOP_WORDS"]

854
spacy/fi/stop_words.py Normal file
View File

@ -0,0 +1,854 @@
# encoding: utf8
from __future__ import unicode_literals
# Source https://github.com/stopwords-iso/stopwords-fi/blob/master/stopwords-fi.txt
STOP_WORDS = set("""
aiemmin
aika
aikaa
aikaan
aikaisemmin
aikaisin
aikajen
aikana
aikoina
aikoo
aikovat
aina
ainakaan
ainakin
ainoa
ainoat
aiomme
aion
aiotte
aist
aivan
ajan
alas
alemmas
alkuisin
alkuun
alla
alle
aloitamme
aloitan
aloitat
aloitatte
aloitattivat
aloitettava
aloitettevaksi
aloitettu
aloitimme
aloitin
aloitit
aloititte
aloittaa
aloittamatta
aloitti
aloittivat
alta
aluksi
alussa
alusta
annettavaksi
annetteva
annettu
ansiosta
antaa
antamatta
antoi
aoua
apu
asia
asiaa
asian
asiasta
asiat
asioiden
asioihin
asioita
asti
avuksi
avulla
avun
avutta
edelle
edelleen
edellä
edeltä
edemmäs
edes
edessä
edestä
ehkä
ei
eikä
eilen
eivät
eli
ellei
elleivät
ellemme
ellen
ellet
ellette
emme
en
enemmän
eniten
ennen
ensi
ensimmäinen
ensimmäiseksi
ensimmäisen
ensimmäisenä
ensimmäiset
ensimmäisiksi
ensimmäisinä
ensimmäisiä
ensimmäistä
ensin
entinen
entisen
entisiä
entisten
entistä
enää
eri
erittäin
erityisesti
eräiden
eräs
eräät
esi
esiin
esillä
esimerkiksi
et
eteen
etenkin
etessa
ette
ettei
että
haikki
halua
haluaa
haluamatta
haluamme
haluan
haluat
haluatte
haluavat
halunnut
halusi
halusimme
halusin
halusit
halusitte
halusivat
halutessa
haluton
he
hei
heidän
heidät
heihin
heille
heillä
heiltä
heissä
heistä
heitä
helposti
heti
hetkellä
hieman
hitaasti
hoikein
huolimatta
huomenna
hyvien
hyviin
hyviksi
hyville
hyviltä
hyvin
hyvinä
hyvissä
hyvistä
hyviä
hyvä
hyvät
hyvää
hän
häneen
hänelle
hänellä
häneltä
hänen
hänessä
hänestä
hänet
häntä
ihan
ilman
ilmeisesti
itse
itsensä
itseään
ja
jo
johon
joiden
joihin
joiksi
joilla
joille
joilta
joina
joissa
joista
joita
joka
jokainen
jokin
joko
joksi
joku
jolla
jolle
jolloin
jolta
jompikumpi
jona
jonka
jonkin
jonne
joo
jopa
jos
joskus
jossa
josta
jota
jotain
joten
jotenkin
jotenkuten
jotka
jotta
jouduimme
jouduin
jouduit
jouduitte
joudumme
joudun
joudutte
joukkoon
joukossa
joukosta
joutua
joutui
joutuivat
joutumaan
joutuu
joutuvat
juuri
jälkeen
jälleen
jää
kahdeksan
kahdeksannen
kahdella
kahdelle
kahdelta
kahden
kahdessa
kahdesta
kahta
kahteen
kai
kaiken
kaikille
kaikilta
kaikkea
kaikki
kaikkia
kaikkiaan
kaikkialla
kaikkialle
kaikkialta
kaikkien
kaikkin
kaksi
kannalta
kannattaa
kanssa
kanssaan
kanssamme
kanssani
kanssanne
kanssasi
kauan
kauemmas
kaukana
kautta
kehen
keiden
keihin
keiksi
keille
keillä
keiltä
keinä
keissä
keistä
keitten
keittä
keitä
keneen
keneksi
kenelle
kenellä
keneltä
kenen
kenenä
kenessä
kenestä
kenet
kenettä
kennessästä
kenties
kerran
kerta
kertaa
keskellä
kesken
keskimäärin
ketkä
ketä
kiitos
kohti
koko
kokonaan
kolmas
kolme
kolmen
kolmesti
koska
koskaan
kovin
kuin
kuinka
kuinkan
kuitenkaan
kuitenkin
kuka
kukaan
kukin
kukka
kumpainen
kumpainenkaan
kumpi
kumpikaan
kumpikin
kun
kuten
kuuden
kuusi
kuutta
kylliksi
kyllä
kymmenen
kyse
liian
liki
lisäksi
lisää
lla
luo
luona
lähekkäin
lähelle
lähellä
läheltä
lähemmäs
lähes
lähinnä
lähtien
läpi
mahdollisimman
mahdollista
me
meidän
meidät
meihin
meille
meillä
meiltä
meissä
meistä
meitä
melkein
melko
menee
meneet
menemme
menen
menet
menette
menevät
meni
menimme
menin
menit
menivät
mennessä
mennyt
menossa
mihin
mikin
miksi
mikä
mikäli
mikään
mille
milloin
milloinkan
millä
miltä
minkä
minne
minua
minulla
minulle
minulta
minun
minussa
minusta
minut
minuun
minä
missä
mistä
miten
mitkä
mitä
mitään
moi
molemmat
mones
monesti
monet
moni
moniaalla
moniaalle
moniaalta
monta
muassa
muiden
muita
muka
mukaan
mukaansa
mukana
mutta
muu
muualla
muualle
muualta
muuanne
muulloin
muun
muut
muuta
muutama
muutaman
muuten
myöhemmin
myös
myöskin
myöskään
myötä
ne
neljä
neljän
neljää
niiden
niihin
niiksi
niille
niillä
niiltä
niin
niinä
niissä
niistä
niitä
noiden
noihin
noiksi
noilla
noille
noilta
noin
noina
noissa
noista
noita
nopeammin
nopeasti
nopeiten
nro
nuo
nyt
näiden
näihin
näiksi
näille
näillä
näiltä
näin
näinä
näissä
näissähin
näissälle
näissältä
näissästä
näistä
näitä
nämä
ohi
oikea
oikealla
oikein
ole
olemme
olen
olet
olette
oleva
olevan
olevat
oli
olimme
olin
olisi
olisimme
olisin
olisit
olisitte
olisivat
olit
olitte
olivat
olla
olleet
olli
ollut
oma
omaa
omaan
omaksi
omalle
omalta
oman
omassa
omat
omia
omien
omiin
omiksi
omille
omilta
omissa
omista
on
onkin
onko
ovat
paikoittain
paitsi
pakosti
paljon
paremmin
parempi
parhaillaan
parhaiten
perusteella
peräti
pian
pieneen
pieneksi
pienelle
pienellä
pieneltä
pienempi
pienestä
pieni
pienin
poikki
puolesta
puolestaan
päälle
runsaasti
saakka
sadam
sama
samaa
samaan
samalla
samallalta
samallassa
samallasta
saman
samat
samoin
sata
sataa
satojen
se
seitsemän
sekä
sen
seuraavat
siellä
sieltä
siihen
siinä
siis
siitä
sijaan
siksi
sille
silloin
sillä
silti
siltä
sinne
sinua
sinulla
sinulle
sinulta
sinun
sinussa
sinusta
sinut
sinuun
sinä
sisäkkäin
sisällä
siten
sitten
sitä
ssa
sta
suoraan
suuntaan
suuren
suuret
suuri
suuria
suurin
suurten
taa
taas
taemmas
tahansa
tai
takaa
takaisin
takana
takia
tallä
tapauksessa
tarpeeksi
tavalla
tavoitteena
te
teidän
teidät
teihin
teille
teillä
teiltä
teissä
teistä
teitä
tietysti
todella
toinen
toisaalla
toisaalle
toisaalta
toiseen
toiseksi
toisella
toiselle
toiselta
toisemme
toisen
toisensa
toisessa
toisesta
toista
toistaiseksi
toki
tosin
tuhannen
tuhat
tule
tulee
tulemme
tulen
tulet
tulette
tulevat
tulimme
tulin
tulisi
tulisimme
tulisin
tulisit
tulisitte
tulisivat
tulit
tulitte
tulivat
tulla
tulleet
tullut
tuntuu
tuo
tuohon
tuoksi
tuolla
tuolle
tuolloin
tuolta
tuon
tuona
tuonne
tuossa
tuosta
tuota
tuotä
tuskin
tykö
tähän
täksi
tälle
tällä
tällöin
tältä
tämä
tämän
tänne
tänä
tänään
tässä
tästä
täten
tätä
täysin
täytyvät
täytyy
täällä
täältä
ulkopuolella
usea
useasti
useimmiten
usein
useita
uudeksi
uudelleen
uuden
uudet
uusi
uusia
uusien
uusinta
uuteen
uutta
vaan
vahemmän
vai
vaiheessa
vaikea
vaikean
vaikeat
vaikeilla
vaikeille
vaikeilta
vaikeissa
vaikeista
vaikka
vain
varmasti
varsin
varsinkin
varten
vasen
vasenmalla
vasta
vastaan
vastakkain
vastan
verran
vielä
vierekkäin
vieressä
vieri
viiden
viime
viimeinen
viimeisen
viimeksi
viisi
voi
voidaan
voimme
voin
voisi
voit
voitte
voivat
vuoden
vuoksi
vuosi
vuosien
vuosina
vuotta
vähemmän
vähintään
vähiten
vähän
välillä
yhdeksän
yhden
yhdessä
yhteen
yhteensä
yhteydessä
yhteyteen
yhtä
yhtäälle
yhtäällä
yhtäältä
yhtään
yhä
yksi
yksin
yksittäin
yleensä
ylemmäs
yli
ylös
ympäri
älköön
älä
""".split())

View File

@ -0,0 +1,202 @@
# encoding: utf8
from __future__ import unicode_literals
from ..symbols import *
from ..language_data import PRON_LEMMA
# Source https://www.cs.tut.fi/~jkorpela/kielenopas/5.5.html
TOKENIZER_EXCEPTIONS = {
"aik.": [
{ORTH: "aik.", LEMMA: "aikaisempi"}
],
"alk.": [
{ORTH: "alk.", LEMMA: "alkaen"}
],
"alv.": [
{ORTH: "alv.", LEMMA: "arvonlisävero"}
],
"ark.": [
{ORTH: "ark.", LEMMA: "arkisin"}
],
"as.": [
{ORTH: "as.", LEMMA: "asunto"}
],
"ed.": [
{ORTH: "ed.", LEMMA: "edellinen"}
],
"esim.": [
{ORTH: "esim.", LEMMA: "esimerkki"}
],
"huom.": [
{ORTH: "huom.", LEMMA: "huomautus"}
],
"jne.": [
{ORTH: "jne.", LEMMA: "ja niin edelleen"}
],
"joht.": [
{ORTH: "joht.", LEMMA: "johtaja"}
],
"k.": [
{ORTH: "k.", LEMMA: "kuollut"}
],
"ks.": [
{ORTH: "ks.", LEMMA: "katso"}
],
"lk.": [
{ORTH: "lk.", LEMMA: "luokka"}
],
"lkm.": [
{ORTH: "lkm.", LEMMA: "lukumäärä"}
],
"lyh.": [
{ORTH: "lyh.", LEMMA: "lyhenne"}
],
"läh.": [
{ORTH: "läh.", LEMMA: "lähettäjä"}
],
"miel.": [
{ORTH: "miel.", LEMMA: "mieluummin"}
],
"milj.": [
{ORTH: "milj.", LEMMA: "miljoona"}
],
"mm.": [
{ORTH: "mm.", LEMMA: "muun muassa"}
],
"myöh.": [
{ORTH: "myöh.", LEMMA: "myöhempi"}
],
"n.": [
{ORTH: "n.", LEMMA: "noin"}
],
"nimim.": [
{ORTH: "nimim.", LEMMA: "nimimerkki"}
],
"ns.": [
{ORTH: "ns.", LEMMA: "niin sanottu"}
],
"nyk.": [
{ORTH: "nyk.", LEMMA: "nykyinen"}
],
"oik.": [
{ORTH: "oik.", LEMMA: "oikealla"}
],
"os.": [
{ORTH: "os.", LEMMA: "osoite"}
],
"p.": [
{ORTH: "p.", LEMMA: "päivä"}
],
"par.": [
{ORTH: "par.", LEMMA: "paremmin"}
],
"per.": [
{ORTH: "per.", LEMMA: "perustettu"}
],
"pj.": [
{ORTH: "pj.", LEMMA: "puheenjohtaja"}
],
"puh.joht.": [
{ORTH: "puh.joht.", LEMMA: "puheenjohtaja"}
],
"prof.": [
{ORTH: "prof.", LEMMA: "professori"}
],
"puh.": [
{ORTH: "puh.", LEMMA: "puhelin"}
],
"pvm.": [
{ORTH: "pvm.", LEMMA: "päivämäärä"}
],
"rak.": [
{ORTH: "rak.", LEMMA: "rakennettu"}
],
"ry.": [
{ORTH: "ry.", LEMMA: "rekisteröity yhdistys"}
],
"s.": [
{ORTH: "s.", LEMMA: "sivu"}
],
"siht.": [
{ORTH: "siht.", LEMMA: "sihteeri"}
],
"synt.": [
{ORTH: "synt.", LEMMA: "syntynyt"}
],
"t.": [
{ORTH: "t.", LEMMA: "toivoo"}
],
"tark.": [
{ORTH: "tark.", LEMMA: "tarkastanut"}
],
"til.": [
{ORTH: "til.", LEMMA: "tilattu"}
],
"tms.": [
{ORTH: "tms.", LEMMA: "tai muuta sellaista"}
],
"toim.": [
{ORTH: "toim.", LEMMA: "toimittanut"}
],
"v.": [
{ORTH: "v.", LEMMA: "vuosi"}
],
"vas.": [
{ORTH: "vas.", LEMMA: "vasen"}
],
"vast.": [
{ORTH: "vast.", LEMMA: "vastaus"}
],
"vrt.": [
{ORTH: "vrt.", LEMMA: "vertaa"}
],
"yht.": [
{ORTH: "yht.", LEMMA: "yhteensä"}
],
"yl.": [
{ORTH: "yl.", LEMMA: "yleinen"}
],
"ym.": [
{ORTH: "ym.", LEMMA: "ynnä muuta"}
],
"yms.": [
{ORTH: "yms.", LEMMA: "ynnä muuta sellaista"}
],
"yo.": [
{ORTH: "yo.", LEMMA: "ylioppilas"}
],
"yliopp.": [
{ORTH: "yliopp.", LEMMA: "ylioppilas"}
],
"ao.": [
{ORTH: "ao.", LEMMA: "asianomainen"}
],
"em.": [
{ORTH: "em.", LEMMA: "edellä mainittu"}
],
"ko.": [
{ORTH: "ko.", LEMMA: "kyseessä oleva"}
],
"ml.": [
{ORTH: "ml.", LEMMA: "mukaan luettuna"}
],
"po.": [
{ORTH: "po.", LEMMA: "puheena oleva"}
],
"so.": [
{ORTH: "so.", LEMMA: "se on"}
],
"ts.": [
{ORTH: "ts.", LEMMA: "toisin sanoen"}
],
"vm.": [
{ORTH: "vm.", LEMMA: "viimeksi mainittu"}
],
"siht.": [
{ORTH: "siht.", LEMMA: "sihteeri"}
],
"srk.": [
{ORTH: "srk.", LEMMA: "seurakunta"}
]
}