Skip to content

Instantly share code, notes, and snippets.

@kscanne
Forked from jimregan/irish.sbl
Created March 16, 2012 02:35
Show Gist options
  • Save kscanne/2048178 to your computer and use it in GitHub Desktop.
Save kscanne/2048178 to your computer and use it in GitHub Desktop.
Irish stemmer
routines (
R1 R2 RV
initial_morph
mark_regions
noun_sfx
deriv
verb_sfx
)
externals ( stem )
integers ( pV p1 p2 )
groupings ( v )
stringescapes {}
/* Latin 1 */
stringdef a' hex 'E1' // a-acute
stringdef e' hex 'E9' // e-acute
stringdef i' hex 'ED' // i-acute
stringdef o' hex 'F3' // o-acute
stringdef u' hex 'FA' // u-acute
define v 'aeiou{a'}{e'}{i'}{o'}{u'}'
define mark_regions as (
$pV = limit
$p1 = limit
$p2 = limit // defaults
do (
gopast v setmark pV
)
do (
gopast v gopast non-v setmark p1
gopast v gopast non-v setmark p2
)
)
define initial_morph as (
[substring] among (
'h-' 'n-' 't-' //nAthair -> n-athair, but alone are problematic
(delete)
// verbs
'd{'}'
(delete)
'd{'}fh'
(<- 'f')
// other contractions
'm{'}' 'b{'}'
(delete)
'sh'
(<- 's')
'mb'
(<- 'b')
'gc'
(<- 'c')
'nd'
(<- 'd')
'bhf'
(<- 'f')
'ng'
(<- 'g')
'bp'
(<- 'p')
'ts'
(<- 's')
'dt'
(<- 't')
// Lenition
'bh'
(<- 'b')
'ch'
(<- 'c')
'dh'
(<- 'd')
'fh'
(<- 'f')
'gh'
(<- 'g')
'mh'
(<- 'm')
'ph'
(<- 'p')
'th'
(<- 't')
)
)
backwardmode (
define RV as $pV <= cursor
define R1 as $p1 <= cursor
define R2 as $p2 <= cursor
define noun_sfx as (
[substring] among (
'amh' 'eamh' 'abh' 'eabh'
'aibh' 'ibh' 'aimh' 'imh'
'a{i'}ocht' '{i'}ocht' 'a{i'}ochta' '{i'}ochta'
(R1 delete)
'ire' 'ir{i'}' 'aire' 'air{i'}'
(R2 delete)
)
)
define deriv as (
[substring] among (
'acht' 'eacht' 'ach' 'each' 'eacht{u'}il' 'eachta' 'acht{u'}il' 'achta'
(R2 delete) //siopadóireacht -> siopadóir but not poblacht -> pobl
'arcacht' 'arcachta{i'}' 'arcachta'
(<- 'arc') // monarcacht -> monarc
'gineach' 'gineas' 'ginis'
(<- 'gin')
'grafa{i'}och' 'grafa{i'}ocht' 'grafa{i'}ochta' 'grafa{i'}ochta{i'}'
(<- 'graf')
'paite' 'patach' 'pataigh' 'patacha'
(<- 'paite')
'{o'}ideach' '{o'}ideacha' '{o'}idigh'
(<- '{o'}id')
)
)
define verb_sfx as (
[substring] among (
'imid' 'aimid' '{i'}mid' 'a{i'}mid'
'faidh' 'fidh'
(RV delete)
'ain'
'eadh' 'adh'
'{a'}il'
'tear' 'tar'
(R1 delete)
)
)
)
define stem as (
do initial_morph
do mark_regions
backwards (
do noun_sfx
do deriv
do verb_sfx
)
)
a
ab
ach
acu
ag
agaibh
againn
agam
agat
agus
aici
aige
air
aisti
ala
amhail
an
anall
ann
aon
aonú
ar
arae
araile
araon
arb
arbh
arna
arú
as
asaibh
asainn
asam
asat
astu
b'
ba
beirt
bhuel
bhur
cad
canad
caoga
caogadú
cathain
ceachtar
ceathair
ceathrar
ceathrú
ceithre
cha
chan
char
charbh
chomh
chucu
chugaibh
chugainn
chugam
chugat
chuici
chuig
chuige
chun
cibé
cois
conas
cumá
cár
cárb
cárbh
céad
céadú
céard
céardós
cén
cér
cérb
cérbh
cúig
cúigear
cúigiú
d'
daichead
daicheadú
daoibh
dar
dara
darb
darbh
de
deara
deich
deichiú
deichniúr
den
deo
dhea
dheoidh
dhá
di
diaidh
diair
do
dom
don
dtí
duit
dála
dár
déag
déin
díbh
dínn
díobh
díom
díot
dóibh
dóú
dúinn
ea
eadraibh
eadrainn
eatarthu
eisean
fairis
faoi
faoin
faoina
faoinar
faoinarb
faoinarbh
faoinár
fara
farae
faraibh
farainn
faram
farat
faru
fiche
fichid
fichiú
fud
fúibh
fúinn
fúithi
fúm
fút
fúthu
gach
gan
go
gur
gura
gurab
gurb
gurbh
haon
hob
hocht
i
iad
iadsan
idir
in
ina
inar
inarb
inarbh
inn
ins
inti
inár
ionaibh
ionainn
ionam
ionas
ionat
ionsair
ionsar
ionsoraibh
ionsorainn
ionsorm
ionsort
ionsorthu
ionsuirthi
iontu
is
ise
le
leat
leathchéadú
leis
leith
lena
lenar
lenarb
lenarbh
lenár
leo
libh
linn
liom
léi
m'
maidir
maille
mar
mba
milliún
milliúnú
mise
mo
moite
muid
muidne
mun
mura
murab
murach
murar
murarbh
más
míle
míliú
na
nach
naoi
naonúr
naoú
nuair
nár
nára
nárab
nárbh
níb
níba
níor
níorbh
níos
nócha
nóchadú
ocht
ochtar
ochtó
ochtódú
ochtú
oraibh
orainn
orm
ort
orthu
os
oth
re
roimh
roimhe
roimpi
romhaibh
romhainn
romham
romhat
rompu
sa
san
seach
seachas
seachnóin
seacht
seachtar
seachtó
seachtódú
seachtú
seasca
seascadú
seisean
seisear
seo
siad
siadsan
sibh
sibhse
sin
sinn
sinne
sise
siúd
sna
son
suas
sula
sular
sularb
sularbh
séú
tan
thairis
thairsti
thar
tharaibh
tharainn
tharam
tharat
tharstu
thusa
thú
toisc
trasna
treas
triúr
trí
tríbh
tríd
trína
trínar
trínarb
trínarbh
trínn
trínár
tríocha
tríochadú
tríom
tríot
tríothu
tríthi
tríú
tusa
uaibh
uaidh
uaim
uainn
uait
uaithi
uathu
uile
uime
uimpi
uirthi
um
umaibh
umainn
umam
umat
umpu
á
ár
é
éard
éigin
éindí
éineacht
éis
í
ó
óir
ón
óna
ónar
ónarb
ónarbh
ónár
ós
úd
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment