Packages
text_stemmer
0.1.0
Pre-compiled Snowball stemmers for Elixir. Ships 36 stemming algorithms covering a wide range of natural languages, accessible through a single `Text.Stemmer.stem/2` entry point.
Current section
Files
Jump to
Current section
Files
src/algorithms/norwegian.sbl
routines (
mark_regions
main_suffix
consonant_pair
other_suffix
)
externals ( stem )
integers ( p1 x )
groupings ( v s_ending )
stringescapes {}
/* special characters */
stringdef ae '{U+00E6}'
stringdef ao '{U+00E5}'
stringdef e^ '{U+00EA}' // e-circumflex
stringdef o` '{U+00F2}' // o-grave
stringdef o' '{U+00F3}' // o-acute
stringdef o^ '{U+00F4}' // o-circumflex
stringdef o/ '{U+00F8}'
define v 'ae{e^}io{o`}{o'}{o^}uy{ae}{ao}{o/}'
define s_ending 'bcdfghjlmnoptvyz'
define mark_regions as (
$p1 = limit
test ( hop 3 setmark x )
gopast v gopast non-v setmark p1
try ( $p1 < x $p1 = x )
)
backwardmode (
define main_suffix as (
setlimit tomark p1 for ([substring])
among(
'a' 'e' 'ede' 'ande' 'ende' 'ane' 'ene' 'hetene' 'en' 'heten' 'ar'
'er' 'heter' 'as' 'es' 'edes' 'endes' 'enes' 'hetenes' 'ens'
'hetens' 'ets' 'et' 'het' 'ast'
(delete)
'ers'
(
among (
'amm' 'ast' 'ind' 'kap' 'kk' 'lt' 'nk' 'omm' 'pp' 'v'
'{o/}st'
()
'giv' 'hav' 'skap' ''
(delete)
)
)
's'
(s_ending or ('r' not 'e') or ('k' non-v) delete)
'erte' 'ert'
(<-'er')
)
)
define consonant_pair as (
test (
setlimit tomark p1 for ([substring])
among(
'dt' 'vt'
)
)
next] delete
)
define other_suffix as (
setlimit tomark p1 for ([substring])
among(
'leg' 'eleg' 'ig' 'eig' 'lig' 'elig' 'els' 'lov' 'elov' 'slov'
'hetslov'
(delete)
)
)
)
define stem as (
do mark_regions
backwards (
do main_suffix
do consonant_pair
do other_suffix
)
)