예제 #1
0
def கணக்கிடு( _தொடர் ):
        தமிழ்_உரை_தொடர் = re.sub('\s+',' ',_தொடர்)
        # செயல்சார்புகளை குறியீடுகளாக மாற்றவும்
        for பெயர்,குறியீடு in செயல்சார்புகள்.items():
            தமிழ்_உரை_தொடர் = தமிழ்_உரை_தொடர்.replace(பெயர்,குறியீடு[0])
        இடைநிலை0=list()
        இடைநிலை1=list()
        for துண்டு in தமிழ்_உரை_தொடர்.split(' '):
            if துண்டு in செயல்சார்புகள்_குறியீடுகள்:
                if துண்டு in ('(',')',) and len(இடைநிலை1) == 0:
                    இடைநிலை0.append(துண்டு)
                else:
                    மதிப்பு=tamil.numeral.tamilstr2num(இடைநிலை1)
                    இடைநிலை0.append('%g'%மதிப்பு)
                    இடைநிலை0.append(துண்டு)
                    இடைநிலை1=list()
            else:
                இடைநிலை1.append(துண்டு)
        # கடைசி செயல்சார்பின் எண் என்ன? விட்டுப்போகாமல் பாருங்கள்.
        if len(இடைநிலை1) > 0:
            மதிப்பு=tamilstr2num(இடைநிலை1)
            இடைநிலை0.append('%g'%மதிப்பு)
        # மீளமைப்பு செய்துகொள்ளுங்கள் ...
        தமிழ்_உரை_தொடர் = ' '.join(இடைநிலை0)
        if வழுநீகால்_இயக்கம்:
            அச்சிடு(தமிழ்_உரை_தொடர்)
        விடை = கணி(தமிழ்_உரை_தொடர்)
        # இருவகைகளில் எழுதிப்பார்க்கவும்.
        அச்சிடு(num2tamilstr( விடை ) )
        அச்சிடு(num2tamilstr_american( விடை ) )
        return விடை
예제 #2
0
def normalize_numeral_text(text_tokens):
    """
    Input @text_tokens = ["இரு","நண்பர்கள்","௹","100","கொடுத்து","உணவு","உண்டனர்."]
                                                                                      ^   - எண் 100 என்பது சொல்வடிவில் நூறு என்று
    வெளியிடப்படும்.
    """
    rval = []
    for word in text_tokens:
        if (word[0] in string.digits) or word[0] == '-':
            try:
                val = num2tamilstr(word)
                rval.append(val)
            except Exception as e:
                rval.append(word)
        else:
            rval.append(word)
    return rval
예제 #3
0
def கணக்கிடு(_தொடர்):
    """"
    @_தொடர் : Tamil sentence with number to be parsed and evaluated. Supported operators are +, -, /, * spelled out as
     கூட்டல், கழித்தல், பெருக்கல் and வகுத்தல்
    @return @விடை result variable of the computation
    """
    தமிழ்_உரை_தொடர் = re.sub('\s+', ' ', _தொடர்)
    # செயல்சார்புகளை குறியீடுகளாக மாற்றவும்
    for பெயர், குறியீடு in செயல்சார்புகள்.items():
        தமிழ்_உரை_தொடர் = தமிழ்_உரை_தொடர்.replace(பெயர், குறியீடு[0])
    இடைநிலை0 = list()
    இடைநிலை1 = list()
    for துண்டு in தமிழ்_உரை_தொடர்.split(' '):
        if துண்டு in செயல்சார்புகள்_குறியீடுகள்:
            if துண்டு in ('(', ')',) and len(இடைநிலை1) == 0:
                இடைநிலை0.append(துண்டு)
            else:
                மதிப்பு = tamil.numeral.tamilstr2num(இடைநிலை1)
                இடைநிலை0.append('%g' % மதிப்பு)
                இடைநிலை0.append(துண்டு)
                இடைநிலை1 = list()
        else:
            இடைநிலை1.append(துண்டு)
    # கடைசி செயல்சார்பின் எண் என்ன? விட்டுப்போகாமல் பாருங்கள்.
    if len(இடைநிலை1) > 0:
        மதிப்பு = tamilstr2num(இடைநிலை1)
        இடைநிலை0.append('%g' % மதிப்பு)
    # மீளமைப்பு செய்துகொள்ளுங்கள் ...
    தமிழ்_உரை_தொடர் = ' '.join(இடைநிலை0)
    if வழுநீகால்_இயக்கம்:
        அச்சிடு(தமிழ்_உரை_தொடர்)
    விடை = கணி(தமிழ்_உரை_தொடர்)
    # இருவகைகளில் எழுதிப்பார்க்கவும்.
    அச்சிடு(num2tamilstr(விடை))
    அச்சிடு(num2tamilstr_american(விடை))
    return விடை
 
if(num<=12000):
    f=open(r"venmurasu_tamil_word_file_13.txt",'r',encoding='utf8') #this file makes the sorting even faster
else:
    f=open(r"venmurasu_tamil_word_file_complete.txt",'r',encoding='utf8')
    
tamil_list=f.read().split(',') #reading from file and splitting based on comma
f.close()  
word_list=dict() #creating a dictionary
for val in tamil_list:
    letters = utf8.get_letters(val) #encoding to get correct tamil letters
    length = len(letters) #finding the length of letters
    if length!=0:
        key=length
        word_list.setdefault(length,[])
        word_list[length].append(val)#appending the word as value into a list inside a dictionary with length as key
count=num
file=open("sorted_words_file.txt",'a',encoding='utf8') #the sorted words will be appended in this file
i=1
for key in sorted(word_list,reverse=True): #sorting the keys of the dictionary and running a loop
    length=len(word_list[key])
    if count>0:
        print(numeral.num2tamilstr(key),u'எழுத்துக்கள்  :   ' ,key,'\n',i,':  ',end='')
        print(*word_list[key][:count],sep = '\n',end='\n\n') #printing list inside the dictionary
        i+=length
        file.write(str(key))
        file.write(str(word_list[key][:count])[1:-1]) #writing into a file
        count=count-length
        file.write(',')           
file.close()
#Time complexity based on algorithm : O(n) where n is the number of words in the file which is opened to read tamil words
def mainpart():
    num = int(number.get())
    #same as the main file
    if (num <= 12000):
        f = open(r"venmurasu_tamil_word_file_13.txt", 'r', encoding='utf8')
    else:
        f = open(r"venmurasu_tamil_word_file_complete.txt",
                 'r',
                 encoding='utf8')

    tamil_list = f.read().split(',')
    f.close()
    word_list = dict()
    for val in tamil_list:
        letters = utf8.get_letters(val)
        length = len(letters)
        if length != 0:
            key = length
            word_list.setdefault(length, [])
            word_list[length].append(val)

    count = num

    file = open("sorted_words_file.txt", 'a', encoding='utf8')
    userscreen.attributes('-topmost', False)
    global displayscreen  #displayscreen to display sorted words
    displayscreen = Toplevel(userscreen)
    scrollbar = Scrollbar(displayscreen)  #creating a scroll bar
    scrollbar.pack(side=RIGHT, fill=Y)
    textbox = Text(displayscreen,
                   width=100,
                   height=30,
                   bd=5,
                   font=("Cambria", '15'))
    textbox.pack()  #Text box to display words

    displayscreen.title("Displaying Longest Words")
    photo = ImageTk.PhotoImage(Image.open(r"sound2.png"))  #sound icon

    value = 1
    i = 0
    btn_list = []

    def onClick1(idx):
        mytext = btn_list[idx].cget("text")
        language = 'ta'  #tamil language
        myobj = gTTS(text=mytext, lang=language,
                     slow=False)  #tamil text to speech
        date_string = dt.datetime.now().strftime("%d%m%Y%H%M%S")
        filename = "voice" + date_string + ".mp3"
        myobj.save(filename)  #saving the audio with date time as filename
        playsound(filename)  #playing the audio

    def onClick2(idx):  #classification of letters
        mytext = btn_list[idx].cget("text")
        uyir, mei, uyirmei, ayutham, vada_mozhi, vallinam, mellinam, idayinam = user_defined_library_package.classify_words(
            mytext)

        class Table:
            def __init__(self, root):
                for i in range(rows):
                    for j in range(cols):
                        self.e = Entry(root,
                                       width=35,
                                       fg='black',
                                       font=('Cambria', 16, 'bold'))
                        self.e.grid(row=i, column=j)
                        self.e.insert(END, lst[i][j])

        lst = [(u"உயிரெழுத்து (Uyir)", int(uyir)),
               (u"மெய்யெழுத்து (Mei)", int(mei)),
               (u"உயிர் மெய் எழுத்து (UyirMei)", int(uyirmei)),
               (u"ஆய்த எழுத்து (Ayutha)", int(ayutham)),
               (u"வடமொழி  எழுத்து (Sanskrit)", int(vada_mozhi)), (' ', ' '),
               (u"வல்லினம் (Vallinam)", int(vallinam)),
               (u"மெல்லினம் (Mellinam)", int(mellinam)),
               (u"இடையினம் (Idayinam)", int(idayinam))]
        rows = len(lst)
        cols = len(lst[0])

        classify = Toplevel(displayscreen)  #classification screen
        classify.title(mytext)
        t = Table(classify)
        classify.mainloop()

    for key in sorted(word_list, reverse=True):
        if count > 0:
            textbox.insert(
                END,
                numeral.num2tamilstr(key) + u'  எழுத்துக்கள் : ' + str(key) +
                '\n\n')
            for val in word_list[key]:
                textbox.insert(
                    END,
                    str(value) + ' : ' + val + '  ({})   '.format(str(key)))
                file.write(str(key))
                file.write(val)  #storing in a file
                file.write('\n')
                btn1 = Button(textbox,
                              text=val,
                              image=photo,
                              borderwidth=3,
                              cursor="hand2",
                              command=lambda idx=i: onClick1(idx))
                btn2 = Button(textbox,
                              text=u"வகைப்படுத்து",
                              borderwidth=4,
                              cursor="hand2",
                              command=lambda idx=i: onClick2(idx))
                btn_list.append(btn1)
                i += 1
                textbox.window_create(textbox.index("end"),
                                      window=btn1)  #adding buttons to Text box
                textbox.window_create(textbox.index("end"), window=btn2)
                textbox.insert(END, '\n\n')
                value += 1
                count = count - 1

                if (count == 0):
                    break
            textbox.config(yscrollcommand=scrollbar.set)
            scrollbar.config(command=textbox.yview)  #configurations
    file.close()
    displayscreen.mainloop()