|
import gradio as gr |
|
from transformers.utils import logging |
|
import time |
|
import joblib |
|
import re |
|
import numpy as np |
|
|
|
logging.set_verbosity_info() |
|
logger = logging.get_logger("transformers") |
|
|
|
western_stop = ['ենք', 'էի', 'թ', 'ին', 'մենք', 'որոնք', 'պիտի', 'և', 'որպեսզի', 'վրայ', 'կ՚', 'կը', 'մը', 'մըն', |
|
'անոր', 'ալ', 'ան', 'քեզ', 'եթէ', 'թէ', 'որպէս'] |
|
|
|
grabar_stop = ['դու', 'եք', 'ըստ', 'նա', 'պիտի', 'վրայ', 'զի', 'ընդ', 'քո', 'քեզ', 'եթէ', 'թէ', 'որպէս'] |
|
|
|
eastern_stop = ['դու', 'ենք', 'եք', 'էի', 'ըստ', 'ին', 'հետո', 'մենք', 'մեջ', 'նա', 'նաև', 'նրա', 'նրանք', 'որը', |
|
'որոնք', 'որպես', 'ում', 'վրա', 'և', 'որպեսզի'] |
|
|
|
western_stop = set(western_stop) |
|
grabar_stop = set(grabar_stop) |
|
eastern_stop = set(eastern_stop) |
|
|
|
def get_lexical_desc(words): |
|
intersect_western = len(set(words) & western_stop) / len(western_stop) |
|
intersect_grabar = len(set(words) & grabar_stop) / len(grabar_stop) |
|
intersect_eastern = len(set(words) & eastern_stop) // len(eastern_stop) |
|
|
|
return np.array([intersect_western, intersect_grabar, intersect_eastern]) |
|
|
|
grabar_suffixes = ['աւք', 'եալ', 'եան', 'իւք', 'ոյց', 'ովք', 'ուց', 'ուցան'] |
|
|
|
grabar_prefixes = ['ապա', 'արտ', 'բաղ', 'բաղա', 'դեր', 'ենթ', 'ենթա', 'ընթա', ' համ', 'համա', 'հան', 'հոմ', 'հոմա', |
|
'տար', 'տարա'] |
|
|
|
eastern_suffixes = ['աբար', 'ագին', 'ագույն', 'ածո', 'ածու', 'ական', 'ակերտ', 'ային', 'անակ', 'անի', 'անոց', 'անք', |
|
'ապան', 'ապանակ', 'ապատ', 'ապես', 'աստան', 'ավետ', 'ավուն', 'արան', 'արար', 'արեն', 'արք', 'ացի', |
|
'ացն-', 'ացու', 'բան', 'բար', 'գին', 'գույն', 'եղեն', 'ենի', 'երեն', 'երորդ', 'եցն-', 'լիկ', 'կերտ', |
|
'կոտ', 'մունք ', 'յալ', 'յակ', 'յան', 'յանց', 'յուն նախա-', 'ներ', 'նոց', 'ոնք', 'ովին', 'որդ', |
|
'որեն', 'ոցի', 'ուք', 'պան', 'պանակ', 'ստան', 'ված', 'վածք', 'ավոր', 'վոր', 'ություն', 'ուլ', 'ուկ', |
|
'ուհի', 'ում', 'ույթ', 'ույր', 'ուն', 'ուտ', 'ուրդ', 'ուց'] |
|
|
|
eastern_prefixes = ['ամենա', 'այսր', 'անդր', 'ապա', 'ավտո', 'արտ', 'արտա', 'բենզա', ', գեր', 'գերա', 'դեր', 'ենթա', |
|
'եվրա', ' էլեկտրա', 'թեր', 'թերա', 'կենս', 'կինո', 'հակ', 'հակա', 'համ', 'համա', 'հար', 'հարա', |
|
'հեռա', 'հեռուստա', 'հոմա', 'մակ', 'մակրո', 'միկրո', 'միջ', 'նախ', 'ներ', 'ստոր', 'վեր', 'վերա', |
|
'տար', 'տարա', 'փոխ', 'քառ', 'քառա'] |
|
|
|
western_reform = ['իլ', 'իուն', 'եան', 'յ', 'օ', 'է', 'յ', 'վո', 'ոյ', 'եա', 'եօ', 'իւ', 'ու', 'ւ,' 'յե', 'եյ', 'զի', |
|
'եւ', 'ել', 'յուն', 'յան', 'ում', 'ո', 'ե', 'հ', 'ո', 'ույ', 'յա', 'յո', 'յու', 'վ', 'ե', ] |
|
|
|
morphems=[] |
|
morphems.extend(grabar_suffixes) |
|
morphems.extend(grabar_prefixes) |
|
morphems.extend(eastern_suffixes) |
|
morphems.extend(eastern_prefixes) |
|
morphems.extend(western_reform) |
|
|
|
def get_morphemic_desc(words): |
|
res=[] |
|
for morphema in morphems: |
|
positions = [] |
|
for word in words: |
|
pos = word.find(morphema) |
|
if pos != -1: |
|
positions.append((pos+1)/len(word)) |
|
if len(positions)==0: |
|
|
|
res.append(0) |
|
else: |
|
|
|
res.append(np.mean(positions)) |
|
|
|
return np.array(res) |
|
|
|
|
|
def preprocess(text): |
|
punctuation=['.','-',',','!','?','(','—',')','՛','։','՝','՜','’','«','»','*','\n','=',':','[',']','/',';','․','`','\t','%','$','\xa0','\r','_','●','՜', ',', '.', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', ':', '-', '—', '։','՞'] |
|
text=text.lower() |
|
|
|
for spaced in punctuation: |
|
text = text.replace(spaced, '') |
|
|
|
text = re.sub(" +", " ", text) |
|
txt = text.split(' ') |
|
words = [t for t in txt if t != ''] |
|
return words |
|
|
|
|
|
|
|
|
|
|