| import subprocess
|
| import sys
|
|
|
| def cat(file_path):
|
| with open(file_path, 'r') as file:
|
| return file.read()
|
|
|
| def head(text, lines):
|
| text_split = text.split('\n')
|
| return '\n'.join(text_split[:lines])
|
|
|
| def tail(text, lines):
|
| text_split = text.split('\n')
|
| return '\n'.join(text_split[-lines:])
|
|
|
| def process_word_file(word_file_path):
|
| if len(sys.argv) != 2:
|
| print("arg --> word file")
|
| exit(0)
|
|
|
|
|
| char = cat(sys.argv[1])[1]
|
|
|
| f1 = 0
|
| with open("lists/alphabets", 'r') as alphabets_file:
|
| f1 = sum(1 for line in alphabets_file if char in line.split())
|
|
|
| if f1 == 0:
|
| with open("lists/out_word", 'w') as out_word_handle:
|
|
|
|
|
| command = ["scripts/tamil_trans_py", "lists/tamil_map", sys.argv[1], "lists/trans_word"]
|
| try:
|
|
|
| return_code = subprocess.run(command)
|
|
|
|
|
|
|
|
|
|
|
| except Exception as e:
|
| print(f"An error occurred: {e}")
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| try:
|
| result = subprocess.run(["python", "scripts/ortho_to_phonetic1.py", "lists/trans_word", "lists/phone_list", "phn"],
|
| capture_output=True, text=True, check=True)
|
|
|
|
|
| except subprocess.CalledProcessError as e:
|
| print("Subprocess Error:", e.stderr)
|
| print("Return Code:", e.returncode)
|
|
|
| phn_lines = cat("phn").split('\n')
|
| count = len(phn_lines)
|
| start = 2
|
| phn = tail(head(cat("phn"), 1), 1)
|
|
|
| if phn == "c":
|
| out_word_handle.write(" s")
|
| else:
|
| out_word_handle.write(f" {phn}")
|
|
|
| while start <= count:
|
| phn = tail(head(cat("phn"), start), 1)
|
| c0 = start - 1
|
| c1 = start + 1
|
| c2 = start + 2
|
| phn_1 = tail(head(cat("phn"), c0), 1)
|
| phn_2 = tail(head(cat("phn"), c1), 1)
|
|
|
| if (
|
| (phn == "c" and phn_1 == "c") or
|
| (phn == "c" and phn_2 == "c") or
|
| (phn == "c" and phn_1 == "tx")
|
| ):
|
| out_word_handle.write(f" {phn}")
|
| elif phn == "c" and phn_1 == "nj":
|
| out_word_handle.write(" j")
|
| elif phn == "c" and phn_1 != "c":
|
| out_word_handle.write(" s")
|
| elif (phn == "rx" and phn_2 == "rx"):
|
| out_word_handle.write(" tx")
|
| else:
|
| temp_vuv_lines = cat("lists/vuv_list").split('\n')
|
| with open("lists/tmp", 'w') as list_temp:
|
| for line1 in temp_vuv_lines:
|
| line_temp = line1.split()
|
| if line_temp:
|
| list_temp.write(line_temp[0] + '\n')
|
|
|
| temp_vuv = cat("lists/tmp").split('\n')
|
| flg = sum(1 for line in temp_vuv if phn in line.split())
|
| phn0 = tail(head(cat("phn"), c0), 1)
|
| phn1 = tail(head(cat("phn"), c1), 1)
|
| phn2 = tail(head(cat("phn"), c2), 1)
|
|
|
| if phn == "u":
|
| flg_1 = sum(1 for line in cat("lists/u_list").split('\n') if phn1 in line.split())
|
| if (start == count) or (flg_1 != 0 and c1 == count) or (phn1 == "k" and phn2 == "k" and c0 != 1):
|
| out_word_handle.write(" eu")
|
| else:
|
| out_word_handle.write(f" {phn}")
|
| elif phn == "c":
|
| if phn0 == "c" or phn1 == "c" or c1 == count:
|
| out_word_handle.write(f" {phn}")
|
| elif phn0 == "nj":
|
| out_word_handle.write(" j")
|
| else:
|
| out_word_handle.write(" s")
|
| elif flg == 1:
|
| temp_lines = cat("lists/vuv_list").split('\n')
|
| with open("lists/nasal", 'w') as list_nasal:
|
| for line_nasal in temp_lines:
|
| line_temp = line_nasal.split()
|
| if len(line_temp) >= 3:
|
| list_nasal.write(line_temp[2] + '\n')
|
|
|
|
|
| flg1 = sum(1 for line in cat("lists/vowel_list").split('\n') if phn0 in line.split())
|
| flg2 = sum(1 for line in cat("lists/vowel_list").split('\n') if phn1 in line.split())
|
| flg3 = sum(1 for line in cat("lists/nasal").split('\n') if phn0 in line.split())
|
| flg4 = sum(1 for line in cat("lists/sv").split('\n') if phn0 in line.split())
|
|
|
| if phn == "p":
|
| if (flg1 == 1 and flg2 == 1) or (flg3 == 1 and phn0 != phn) or (phn0 == "n"):
|
| phn_v_tmp = next(line.split() for line in cat("lists/vuv_list").split('\n') if phn in line.split())
|
| phn_v = phn_v_tmp[1]
|
| out_word_handle.write(f" {phn_v}")
|
| else:
|
| out_word_handle.write(f" {phn}")
|
| elif (flg1 == 1 and flg2 == 1) or (flg3 == 1 and phn0 != phn) or (flg4 == 1 and flg2 == 1):
|
| temp_phn_v = next(line.split() for line in cat("lists/vuv_list").split('\n') if phn in line.split())
|
| phn_v = temp_phn_v[1]
|
| out_word_handle.write(f" {phn_v}")
|
| else:
|
| out_word_handle.write(f" {phn}")
|
| else:
|
| out_word_handle.write(f" {phn}")
|
|
|
| start += 1
|
|
|
|
|
| import os
|
| import pdb
|
| if __name__ == "__main__":
|
| if len(sys.argv) != 2:
|
| print("arg --> word file")
|
| exit(0)
|
|
|
| process_word_file(sys.argv[1])
|
|
|