In [71]:
import os
import json
from pprint import pprint

In [72]:
with open('dictionary.json') as f:
    chunks = json.load(f)
with open('classes_indices.json') as f:
    classes = json.load(f)

In [73]:
cls_order = sorted(classes.keys())
for cls in cls_order:
    print(cls)
    pprint(chunks[classes[cls][0]])


aa_or_class
{'lex': 'ваңқасқор',
 'paradigms': ['N-obl', 'N-nom-0', 'N-pl-t'],
 'stem': ['ваңқасқаа', 'ваңқасқаа', 'ваңқасқор', 'ваңқасқаа'],
 'trans_ru': 'важенка двух лет'}
first_a_class
{'lex': 'аатгыр',
 'paradigms': ['N-obl', 'N-nom-0', 'N-pl-te'],
 'stem': ['аатгыр', 'аатгыр', 'аатгыр', 'аатгыр'],
 'trans_ru': '1) ручей в овраге; 2) овраг'}
first_a_g_j_class
{'lex': 'ёмромкықай',
 'paradigms': ['N-obl', 'N-nom-0', 'N-pl-te'],
 'stem': ['ёмромкықаг', 'ёмромкықаг', 'ёмромкықай', 'ёмромкықаг'],
 'trans_ru': 'куст'}
first_a_y_class
{'lex': 'вивыт',
 'paradigms': ['N-obl', 'N-nom-0', 'N-pl-yt'],
 'stem': ['вивт', 'вэвт', 'вивыт', 'вивт'],
 'trans_ru': 'китовый ус'}
first_a_y_n_to_ng_class
{'lex': 'йыңыр',
 'paradigms': ['N-obl', 'N-nom-0', 'N-pl-yt'],
 'stem': ['йынр', 'йынр', 'йыңыр', 'йынр'],
 'trans_ru': '(2) высокий обрывистый берег'}
first_b_class
{'lex': 'аңқы',
 'paradigms': ['N-obl', 'N-nom-0', 'N-pl-t'],
 'stem': ['аңқа', 'аңқа', 'аңқы', 'аңқа'],
 'trans_ru': 'море'}
first_c_class
{'lex': 'айкол',
 'paradigms': ['N-obl', 'N-nom-0', 'N-pl-t'],
 'stem': ['айколя', 'айколя', 'айкол', 'айколя'],
 'trans_ru': 'подстилка '}
first_c_ng_to_n_class
{'lex': "э'йңэвыткунэн",
 'paradigms': ['N-obl', 'N-nom-n', 'N-pl-t'],
 'stem': ["э'йңэвыткунэңэ",
          "а'йңавытконаңа",
          "э'йңэвыткунэн",
          "э'йңэвыткунэңэ"],
 'trans_ru': '* рожок; труба (музыкальный инструмент)'}
first_n_ending_class
{'lex': 'айголяткэгыргын',
 'paradigms': ['N-obl', 'N-nom-n', 'N-pl'],
 'stem': ['айголяткэгыргын',
          'айголяткэгыргын',
          'айголяткэгыргын',
          'айголяткэгыргын'],
 'trans_ru': 'невежество'}
five_v_class
{'lex': 'авээн',
 'paradigms': ['N-obl', 'N-nom-0', 'N-pl-yt'],
 'stem': ['авээнв', 'авээнв', 'авээн', 'авээнв'],
 'trans_ru': 'пастбище'}
five_v_reduced_class
{'lex': 'агнотваны',
 'paradigms': ['N-obl', 'N-nom-0', 'N-pl-yt'],
 'stem': ['агнотванв', 'агнотванв', 'агнотваны', 'агнотванв'],
 'trans_ru': 'лежбище моржей'}
fourth_class
{'lex': 'аръапаңы',
 'paradigms': ['N-obl', 'N-nom-0', 'N-pl-t'],
 'stem': ['аръапа', 'аръапа', 'аръапа', 'аръапа'],
 'trans_ru': 'бульон'}
fourth_or_class
{'lex': 'қораңы',
 'paradigms': ['N-obl', 'N-nom-0', 'N-pl-t'],
 'stem': ['қаа', 'қаа', 'қора', 'қаа'],
 'trans_ru': 'олень'}
second_a_full_redup_class
{'lex': 'виилвиил',
 'paradigms': ['N-obl', 'N-nom-0', 'N-pl-ti'],
 'stem': ['виил', 'вээл', 'виилвиил', 'виил'],
 'trans_ru': 'тень'}
second_b_redup_wo_last_letter_class
{'lex': "а'рэа'р",
 'paradigms': ['N-obl', 'N-nom-0', 'N-pl-t'],
 'stem': ["а'рэ", "а'рэ", "а'рэа'р", "а'рэ"],
 'trans_ru': 'торос, см. каалгын'}
singulative_lgyn_class
{'lex': 'аёпычьылгын',
 'paradigms': ['N-obl', 'N-nom-lgyn', 'N-pl-yt'],
 'stem': ['эюпычь', 'аёпычь', 'аёпычьы', 'эюпычь'],
 'trans_ru': 'колючка'}
singulative_lyng_class
{'lex': 'апаапаглыңын',
 'paradigms': ['N-obl', 'N-nom-n', 'N-pl-ti'],
 'stem': ['эпээпэг', 'апаапаг', 'апаапаглың', 'эпээпэг'],
 'trans_ru': 'паук'}
singulative_lyng_g_j_class
{'lex': 'ңойңойлыңын',
 'paradigms': ['N-obl', 'N-nom-n', 'N-pl-ti'],
 'stem': ['ңуйңуг', 'ңойңог', 'ңойңой', 'ңуйңуг'],
 'trans_ru': 'шерстинка'}
strange_star_first_a_class
{'lex': 'ваарват',
 'paradigms': ['N-obl', 'N-nom-0', 'N-pl-te'],
 'stem': ['ваарват', 'ваарват', 'ваарват', 'ваарват'],
 'trans_ru': '1) тетива; 2) прямая линия, соединяющая концы кривой'}
strange_star_singulative_class
{'lex': 'этъычьылгын',
 'paradigms': ['N-obl', 'N-nom-0', 'N-pl-yt'],
 'stem': ['итъычь', 'этъычь', 'этъычьылгын', 'итъычь'],
 'trans_ru': 'мелкий голец (рыба)'}
strange_star_third_class
{'lex': 'атанмыргын',
 'paradigms': ['N-obl', 'N-nom-0', 'N-pl'],
 'stem': ['атанмырг', 'атанмырг', 'атанмырг', 'атанмырыгрыг'],
 'trans_ru': 'грива (лошади)'}
strange_third_class
{'lex': 'айылгыгыргын',
 'paradigms': [],
 'stem': ['айылгыгырг', 'айылгыгырг', 'айылгыгырг', 'айылгыгырг'],
 'trans_ru': '1. боязнь; 2. страшный'}
strange_yn_except_absolutive_class
{'lex': 'вагыткын',
 'paradigms': ['N-obl', 'N-nom-n', 'N-pl-te'],
 'stem': ['вагыткын', 'вагыткын', 'вагытк', 'вагыткын'],
 'trans_ru': 'почка (у растения)'}
third_class
{'lex': 'авынральын',
 'paradigms': ['N-obl', 'N-nom-n', 'N-pl-t'],
 'stem': ['авынраль', 'авынраль', 'авынраль', 'авынраль'],
 'trans_ru': 'хозяин'}
third_false_lgyn_class
{'lex': 'вутилгын',
 'paradigms': ['N-obl', 'N-nom-lgyn', 'N-pl'],
 'stem': ['вути', 'вотэ', 'вути', 'вути'],
 'trans_ru': 'верёвка для привязи собак'}
third_or_five_v_class
{'lex': 'анольатын',
 'paradigms': ['N-obl', 'N-nom-n', 'N-pl-yt'],
 'stem': ['анольатынв', 'анольатынв', 'анольат', 'анольатынв'],
 'trans_ru': 'летнее место пребывания кочевников'}

In [74]:
pprint(cls_order)


['aa_or_class',
 'first_a_class',
 'first_a_g_j_class',
 'first_a_y_class',
 'first_a_y_n_to_ng_class',
 'first_b_class',
 'first_c_class',
 'first_c_ng_to_n_class',
 'first_n_ending_class',
 'five_v_class',
 'five_v_reduced_class',
 'fourth_class',
 'fourth_or_class',
 'second_a_full_redup_class',
 'second_b_redup_wo_last_letter_class',
 'singulative_lgyn_class',
 'singulative_lyng_class',
 'singulative_lyng_g_j_class',
 'strange_star_first_a_class',
 'strange_star_singulative_class',
 'strange_star_third_class',
 'strange_third_class',
 'strange_yn_except_absolutive_class',
 'third_class',
 'third_false_lgyn_class',
 'third_or_five_v_class']

In [75]:
folder = 'lexicons'
if not os.path.exists(os.path.join('..', folder)):
    os.mkdir(os.path.join('..', folder))

dict_file = 'nominals.lexc'
with open(os.path.join('..', folder, dict_file), 'w') as f:
    f.write("""!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!                          L E X I C O N                                  !!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
""")
    f.write("""
LEXICON Nouns 

""")

In [76]:
# loan phonology

russ = 'январь февраль март апрель май июнь июль август сентябрь октябрь декабрь билет бригада бригадир буква \
понедельник вторник среда четверг пятница суббота воскресенье тетрадь ңэвучитель округ пионер революция порядка \
электричество элетростанция электроаак чернилаёчгын энанвалёматпункт'.split()

for i in range(len(chunks)):
    if chunks[i]['lex'] in russ:
        chunks[i]['stem'][0] = chunks[i]['stem'][0]+'%{☭%}'

#     for st in chunks[i]['stem']:
#         if set(st)&recessive and set(st)&dominant:
#             chunks[i]['stem'] = list(map(lambda x: x+'%{☭%}', chunks[i]['stem']))
#             break

In [77]:
# разметить архифонемы и loan phonology
# архифонемы - Æ и G
# G в g_j, Æ везде

# Æ
recessive = set('уюи')
dominant = set('аояё')

for i in range(len(chunks)):
    if not '☭' in chunks[i]['stem'][0]:
        if set(chunks[i]['stem'][0])&recessive or (set(chunks[i]['stem'][1])&dominant and not set(chunks[i]['stem'][0])&dominant):
            if 'э' in chunks[i]['stem'][0]:
                chunks[i]['stem'][0] = chunks[i]['stem'][0].replace('э', '%{Æ%}') # 0 bcs i will take 0 as stem
            elif 'ле' in chunks[i]['stem'][0]:
                chunks[i]['stem'][0] = chunks[i]['stem'][0].replace('е', '%{Æ%}')

In [78]:
# G
for i in classes['first_a_g_j_class']+classes['singulative_lyng_g_j_class']:
    chunks[i]['stem'][0] = chunks[i]['stem'][0][:-1]+'%{G%}'

In [79]:
# N
for i in classes['first_a_y_n_to_ng_class']+classes['first_c_ng_to_n_class']:
    chunks[i]['stem'][0] = chunks[i]['stem'][0][:-2]+'%{N%}'+chunks[i]['stem'][0][-1]

In [80]:
# epenthesis
cons = 'йцкнгшщзхъждлрпвфчсмтьбңқ'
for i in range(len(chunks)):
    if not '☭' in chunks[i]['stem'][0]:
        if chunks[i]['stem'][0][-1] in cons and chunks[i]['stem'][0][-2] in cons:
            chunks[i]['stem'][0] = chunks[i]['stem'][0][:-1]+'%{ы%}'+chunks[i]['stem'][0][-1]

In [81]:
chunks[220]


Out[81]:
{'lex': 'вивыт',
 'paradigms': ['N-obl', 'N-nom-0', 'N-pl-yt'],
 'stem': ['вив%{ы%}т', 'вэвт', 'вивыт', 'вивт'],
 'trans_ru': 'китовый ус'}

In [82]:
# oops

for i in range(len(chunks)):
    chunks[i]['lex'] = chunks[i]['lex'].replace('ң', 'ӈ')
    chunks[i]['lex'] = chunks[i]['lex'].replace('қ', 'ӄ')
    chunks[i]['lex'] = chunks[i]['lex'].replace('л', 'ԓ')
    chunks[i]['lex'] = chunks[i]['lex'].replace("'", 'ʼ')
    chunks[i]['stem'] = list(map(lambda x: x.replace('ң', 'ӈ'), chunks[i]['stem']))
    chunks[i]['stem'] = list(map(lambda x: x.replace('қ', 'ӄ'), chunks[i]['stem']))
    chunks[i]['stem'] = list(map(lambda x: x.replace('л', 'ԓ'), chunks[i]['stem']))
    chunks[i]['stem'] = list(map(lambda x: x.replace("'", 'ʼ'), chunks[i]['stem']))

In [83]:
# with open('dictionary.json', 'w') as f:
#     json.dump(chunks, f)

In [84]:
to_write = []
for i in classes['first_a_class']+classes['first_a_y_class']+classes['first_a_g_j_class']:
    x = chunks[i]
    to_write.append('{}:{} N-Ia-AATGYR ;    ! {}'.format(x['lex'], x['stem'][0], x['trans_ru']))

In [85]:
for i in classes['first_a_y_n_to_ng_class']:
    x = chunks[i]
    to_write.append('{}:{} N-Ia-JYNYR-ABS ;    ! {}'.format(x['lex'], x['stem'][2], x['trans_ru']))
    to_write.append('{}:{} N-OBL ;    ! {}'.format(x['lex'], x['stem'][0], x['trans_ru']))

In [86]:
for i in classes['first_b_class']:
    x = chunks[i]
    to_write.append('{}:{} N-Ib-ANGKY ;    ! {}'.format(x['lex'], x['stem'][0], x['trans_ru']))

In [87]:
for i in classes['first_c_class']:
    x = chunks[i]
    to_write.append('{}:{} N-Ic-AJKOL ;    ! {}'.format(x['lex'], x['stem'][0], x['trans_ru']))
to_write.append('\n')

In [88]:
for i in classes['first_c_ng_to_n_class']:
    x = chunks[i]
    to_write.append('{}:{} N-Ic-EJNETKUNEN-ABS ;    ! {}'.format(x['lex'], x['stem'][2], x['trans_ru']))
    to_write.append('{}:{} N-OBL ;    ! {}'.format(x['lex'], x['stem'][0], x['trans_ru']))
to_write.append('\n')

In [89]:
for i in classes['second_a_full_redup_class']:
    x = chunks[i]
    to_write.append('{}:{} N-IIa-VIIL-ABS ;    ! {}'.format(x['lex'], x['stem'][2], x['trans_ru']))
    to_write.append('{}:{} N-OBL ;    ! {}'.format(x['lex'], x['stem'][0], x['trans_ru']))

In [90]:
for i in classes['second_b_redup_wo_last_letter_class']:
    x = chunks[i]
    to_write.append('{}:{} N-IIb-VAJP-ABS ;    ! {}'.format(x['lex'], x['stem'][2], x['trans_ru']))
    to_write.append('{}:{} N-OBL ;    ! {}'.format(x['lex'], x['stem'][0], x['trans_ru']))
to_write.append('\n')

In [91]:
for i in classes['third_class']:
    x = chunks[i]
    to_write.append('{}:{} N-III-AVYNRAL ;    ! {}'.format(x['lex'], x['stem'][0], x['trans_ru']))


for i in classes['third_false_lgyn_class']:
    x = chunks[i]
    to_write.append('{}:{}ԓг N-III-AVYNRAL ;    ! {}'.format(x['lex'], x['stem'][0], x['trans_ru']))
to_write.append('\n')

In [92]:
for i in classes['fourth_class']:
    x = chunks[i]
    to_write.append('{}:{} N-IV-ARAPA ;    ! {}'.format(x['lex'], x['stem'][0], x['trans_ru']))

for i in classes['fourth_or_class']:
    x = chunks[i]
    to_write.append('{}:{} N-IV-QORA-ABS ;    ! {}'.format(x['lex'], x['stem'][2], x['trans_ru']))
    to_write.append('{}:{} N-OBL ;    ! {}'.format(x['lex'], x['stem'][0], x['trans_ru']))

to_write.append('\n')

In [93]:
for i in classes['five_v_class']:
    x = chunks[i]
    to_write.append('{}:{} N-Vv-AVEEN ;    ! {}'.format(x['lex'], x['stem'][0][:-1], x['trans_ru']))

for i in classes['five_v_reduced_class']:
    x = chunks[i]
    to_write.append('{}:{} N-Vvy-AGNOTVAN ;    ! {}'.format(x['lex'], x['stem'][0][:-1], x['trans_ru']))
    
to_write.append('\n')

In [94]:
for i in classes['singulative_lgyn_class']:
    x = chunks[i]
    to_write.append('{}:{} N-SING-AJOPYCH ;    ! {}'.format(x['lex'], x['stem'][0], x['trans_ru']))
to_write.append('\n')

In [95]:
for i in classes['singulative_lyng_class']+classes['singulative_lyng_g_j_class']:
    x = chunks[i]
    to_write.append('{}:{} N-SING-EPEEPEG ;    ! {}'.format(x['lex'], x['stem'][0], x['trans_ru']))
to_write.append('\n')

In [96]:
for i in classes['aa_or_class']:
    x = chunks[i]
    to_write.append('{}:{} N-VANGQASQOR-ABS ;    ! {}'.format(x['lex'], x['stem'][2], x['trans_ru']))
    to_write.append('{}:{} N-OBL ;    ! {}'.format(x['lex'], x['stem'][0], x['trans_ru']))
to_write.append('\n')

In [97]:
to_write.append('\n')

In [98]:
to_write.append('! this one may be III \n')
for i in classes['first_n_ending_class']:
    x = chunks[i]
    to_write.append('{}:{} N-Ia-AATGYR ;    ! {}'.format(x['lex'], x['stem'][0], x['trans_ru']))
to_write.append('\n')

In [99]:
to_write.append('! either Vv or III \n')
for i in classes['third_or_five_v_class']:
    x = chunks[i]
    to_write.append('{}:{} N-Vv-AVEEN ;    ! {}'.format(x['lex'], x['stem'][0][:-1], x['trans_ru']))
to_write.append('\n')

In [100]:
to_write.append('! this one may be III \n')
for i in classes['strange_yn_except_absolutive_class']:
    x = chunks[i]
    to_write.append('{}:{} N-Ia-AATGYR ;    ! {}'.format(x['lex'], x['stem'][0], x['trans_ru']))
to_write.append('\n')

In [101]:
to_write.append('! either third or sing, either ending with ы or not \n')
for i in classes['strange_third_class']:
    x = chunks[i]
    to_write.append('{}:{} N-III-AVYNRAL ;    ! {}'.format(x['lex'], x['stem'][0], x['trans_ru']))
to_write.append('\n')

In [102]:
len(to_write)


Out[102]:
2388

In [103]:
with open(os.path.join('..', folder, dict_file), 'a') as f:
    f.write('\n'.join(to_write))

In [104]:
len(to_write)/len(chunks)


Out[104]:
0.8772961058045555

In [ ]: