Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
53 changes: 31 additions & 22 deletions epitran/data/map/kab-Latn.csv

Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I disagree with removing v and vv since the goal of Epitran is not to adjudicate what graphemes do and do not belong in a language, but to be maximally robust to what might actually occur in data (and having these in the mapping should not negatively impact the performance of the module on native Kabyle).

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ah okay! Good to know :)

Original file line number Diff line number Diff line change
@@ -1,9 +1,37 @@
Orth,Phon
čč,t͡ʃː
ǧǧ,d͡ʒː
qq,qː
jj,ʒː
cc,ʃː
hh,hː
ww,wː
yy,jː
ḥḥ,ħː
bb,bː
dd,dː
ff,fː
gg,ɡː
kk,kː
ll,lː
mm,mː
nn,nː
rr,rː
ss,sː
tt,tː
xx,χː
zz,zː
ɣɣ,ʁː
ṣṣ,sˤː
ṭṭ,tˤː
ḍḍ,dˤː
ẓẓ,zˤː
ṛṛ,rˤː
θ,θ
a,a
i,i
u,u
e,ə
o,o
y,j
w,w
b,b
Expand All @@ -19,10 +47,9 @@ q,q
r,r
s,s
t,t
v,v

Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Add back

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I added back v at the end on the file.

x,χ
z,z
ɣ,ɣ
ɣ,ʁ
ḥ,ħ
ṣ,sˤ
ṭ,tˤ
Expand All @@ -33,22 +60,4 @@ z,z
ǧ,d͡ʒ
j,ʒ
c,ʃ
gh,ɣ
ch,ʃ
dj,d͡ʒ
tch,t͡ʃ
ts,t͡s
dz,d͡z
bb,bː
dd,dː
ff,fː
gg,ɡː
kk,kː
ll,lː
mm,mː
nn,nː
rr,rː
ss,sː
zz,zː
xx,χː
ɣɣ,ɣː
v,v
24 changes: 24 additions & 0 deletions epitran/data/post/kab-Latn.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
% Kabyle (kab-Latn) postprocessor for Epitran
% Author: Athmane MOKRAOUI
%
% This postprocessor cleans up phonological output after mapping.
%
% Current version is minimal - most Kabyle phonology is handled
% in the preprocessor. Future versions may add:
% - Schwa deletion in specific cluster environments
% - Emphatic spread effects on vowels
% - Vowel reduction rules

% ============================================================
% 1. SCHWA CLEANUP (optional)
% ============================================================
% Delete schwa between consonants in certain environments
% This is a conservative rule - uncomment if needed
% ə -> 0 / (b|d|f|g|ɣ|h|j|k|l|m|n|q|r|s|t|w|x|z|ʃ|ʒ|χ|ħ|θ) _ (b|d|f|g|ɣ|h|j|k|l|m|n|q|r|s|t|w|x|z|ʃ|ʒ|χ|ħ|θ)

% ============================================================
% 2. VOWEL LENGTH REMOVAL
% ============================================================
% Kabyle does not have phonemic vowel length.
% If length markers appear (from geminate mapping), they are
% consonantal length, not vocalic. No action needed here.
30 changes: 30 additions & 0 deletions epitran/data/pre/kab-Latn.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
% Kabyle (kab-Latn) preprocessor for Epitran
% Author: ButterflyOfFire

% ============================================================
% 0. RECOMPOSITION (fix Unicode decomposition issue)
% ============================================================
% Epitran decomposes ṭ to t+̣ internally. Recompose before other rules.
ṭ -> ṭ / _

% ============================================================
% 1. CONSONANT ASSIMILATION & ADAPTATIONS
% ============================================================
n -> m / _ (b|m|p)
p -> b / _

% ============================================================
% 2. GEMINATE SHIELDING
% ============================================================
ṭṭ -> W / _

% ============================================================
% 3. SPIRANTIZATION
% ============================================================
t -> θ / _ (a|e|i|u)
t -> θ / (a|e|i|u) _

% ============================================================
% 4. UNSHIELD
% ============================================================
W -> ṭṭ / _
11 changes: 6 additions & 5 deletions epitran/test/test_kabyle.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,11 +7,12 @@ def setUp(self):

def test_basic_words(self):
for i, o in [
("taqcict", "taqʃiʃt"),
("axxam", "aχːam"),
("Nniɣ", "nːiɣ"),
("abrid", "abrid"),
("tuwiḍ", "tuwidˤ"),
("taqcict", "θæqʃiʃθ"),
("tamellalt", "θæməlːælt"),
("axxam", "æχːæm"),
("Nniɣ", "nːiʁ"),
("abrid", "æβrid"),
("tewwiḍ", "θəwːidˤ"),
]:
tr = self.epi.transliterate(i)
self.assertEqual(tr, o)