Skip to content


Switch branches/tags

Latest commit



Failed to load latest commit information.
Latest commit message
Commit time

Ashaninka-Morph (AshMorph for short)

This is a morphological analyzer for pan-Ashaninka that is written using Finite State technology with a multilingual lexicon (Ashaninka, English, Spanish and Portuguese), some entries in Quechua and Italian are provided in a lesser quantity.

Pan-Ashaninka is the general term used to refer to a cluster of Arawak-dialects spoken in Peru and Acre-Brazil, the aforementioned cluster specifically comprises Ashéninka Pichis (Pi), Alto Perené (Pe), Ashéninka Pajonal (Paj), Ucayali-Yurua Ashéninka (U-Y), Ajyininka (or Ashéninka) Apucurayali (Apu), Ashaninka (Asha).

Pan-Ashaninka is a polysynthetic and head-marking language spoken in the central adjoining Amazonian regions between Peru and Brazil (Acre State). It is spoken by approximately 70,000 people (2002).


Because it is often possible to find a word that combines several word stems with a very specific semantic meaning (noun-incorporation and verbal classifiers).

Noun incorporation: tsapya ''

apaani asheninka isaikatsapyaatziro inkaare
=apaani *** =asheninka *** i- =saik -a =tsapya -atz -i =ro *** =inkaare 
=one *** =man *** 3m.A- -EP -PROG -IRR =3n.m.O *** =lake 
EN: 'a man who lived near a lake'; Lit.: 'one man who lived in the lake bank'
ES: 'un hombre que vivía cerca de una cocha' 
Verbal classifier: ha 'liquid'

katsinkajari /NMZ> katsinkahari
=katsinka -ha -ri -cl:liquid -rel 
EN: 'cold.water; lit.:'
ES: 'agua.fría; lit.: líquido.que.está.frio' 


Ashaninka possesses extensive agreement or cross-refencing. Heads such as verbs and nouns agree with the properties of their arguments, for instance, gender markers on the verb indicate properties, such as masculine (+m.) or not-masculine (+n.m.), of both the subject and the object.

Verbal reduplication

Verbal reduplication indicates urgency (1), repetition/countinued-action (3), intensity (2), or plurality of paticipants (4).

1) ma '' -> ma~ma '' 

Our analysis of the collected text corpus, shows that pan-Ashaninka presents both partial reduplication 'bounded copy' (2) and total reduplication 'unbounded copy' (1, 3) as productive morphological operations.

2) kov 'to.want' -> ko~kov 'to.prefer.strongly' 

3) koniha 'to.appear' -> koniha~koniha 'to.appear.again-and-again'

There are particular cases where verbal roots with prefixes are reduplicated in both partial and total modes.

Normalization process 'NMZ'

In order to give this project a certain amount of robustness, we used a normalized version of the alphabet developed by Elena Mihas to write every lexicon entry and all the affixes. In addition to this, normalization rules have been implemented, this means that every letter in an input entry is mapped to its equivalent in the normalized alphabet before being fully analyzed.

Compiling with XFST or FOMA

$ xfst -f asheninka.script 
$ echo "ashaninka" | lookup asheninka.bin -flags cnKv29TT

  *****  LEXICON LOOK-UP  *****

ashaninka	[a-][NPers][1PL.poss+][--][=shani][VRoot][][--][-nka][NS][+NMZ.QLTY]nka
ashaninka	[a-][NPers][1PL.poss+][--][=shani+m.][NRoot][=anteater (ES: oso.hormiguero; sci.nm.: myrmecophaga.tridactyla)][--][-nka][NS][+NMZ.QLTY][=abstract.qlty.noun]
ashaninka	[=ashaninka][NRoot][]

LOOKUP STATISTICS (success with different strategies):
strategy 0:	1 times 	(100.00 %)
not found:	0 times 	(0.00 %)

corpus size:	1 word
execution time:	0 sec
speed:		1 word/sec

  *****  END OF LEXICON LOOK-UP  *****

$ foma -f asheninka.script 

$ echo "ashaninka" | flookup asheninka.bin
ashaninka       [=ashaninka][NRoot][]
ashaninka       [a-][NPers][1PL.poss+][--][=sha+gndr@n.m.+sem@plant][NRoot][=palm.tree.sp. (; ES: ungurahui, unguravi, ungurabe, ungurague; PT: patoá)][--][-ni+sem@place.][+CL:watercourse][=watercourse, running.water.feature][--][-nka][NS][+NMZ.QLTY][=abstract.qlty.noun]
ashaninka       [a-][NPers][1PL.poss+][--][=sha+gndr@n.m.+sem@plant][NRoot][=palm.tree.sp. (; ES: ungurahui, unguravi, ungurabe, ungurague; PT: patoá)][--][-ni][DEGR][+AUG][=AUG (EN: too; ES: demasiado); INTNS][--][-nka][NS][+NMZ.QLTY][=abstract.qlty.noun]
ashaninka       [a-][NPers][1PL.poss+][--][=sha+poss@ni.+sem@wild.anim.][NRoot][=anteater (ES: piampía; PT: tamanduá)][--][-ni+sem@place.][+CL:watercourse][=watercourse, running.water.feature][--][-nka][NS][+NMZ.QLTY][=abstract.qlty.noun]
ashaninka       [a-][NPers][1PL.poss+][--][=sha+poss@ni.+sem@wild.anim.][NRoot][=anteater (ES: piampía; PT: tamanduá)][--][-ni][DEGR][+AUG][=AUG (EN: too; ES: demasiado); INTNS][--][-nka][NS][+NMZ.QLTY][=abstract.qlty.noun]
ashaninka       [a-][NPers][1PL.poss+][--][=shani+gndr@m.+sem@wild.anim.][NRoot][=anteater (ES: oso.hormiguero; sci.nm.: myrmecophaga.tridactyla; PT: tamanduá)][--][-nka][NS][+NMZ.QLTY][=abstract.qlty.noun]
ashaninka       [a-][NPers][1PL.poss+][--][=shani][VRoot][][--][-nka][NS][+NMZ.QLTY]nka

How to download the source code

  • Using wget
$ wget 
  • Cloning this repository
$ git clone

Software prerequisites

In order to run AshMorph finite state transducer, you will need either Foma or XFST, the download links for these are provided below:

  • Foma: (In order to run Foma on a Linux OS you will need to install the following packages first: zlib1g-dev, flex, bison, libreadline-dev, termcap).
$ sudo apt-get update
$ sudo apt install make
$ sudo apt install build-essential
$ sudo apt-get install zlib1g-dev flex bison libreadline-dev
$ git clone

Note: Foma compilations have some issues.