Аннотация. Данная работа заключается в создании системы автоматической идентификации непрерывной арабской речи с большим словарным запасом в режиме одного динамика. Основная идея заключалась в сравнении расшифрованной последовательности арабской речи и эталонной модели, которую мы будем вычислять, опираясь на биективную связь между речью и ее фонетической транскрипцией. Генерируются два вектора: один представляет собой эталон, обобщающий вероятность появления арабских бифонем, а другой дает представление о последовательности речи, произносимой как правильное. На основе этих двух векторов мы можем идентифицировать фонемы, которые создают проблемы с произношением для говорящих, и другие фонемы, которые появляются на их месте. Исправление — это всего лишь игра с подстановками и проверками на принадлежность к арабскому лексикону. Полученные результаты были обнадеживающими, они позволили достичь скорости идентификации 97% обнаруженных ошибок.

АРАБСКИЙ ЯЗЫК
Арабский язык, на котором говорят 445 миллионов человек, занимает 4-е место по количеству носителей и 8-е место по количеству страниц, циркулирующих в Интернете [1, 2]. Благодаря своим морфологическим и синтаксическим свойствам арабский язык считается сложным для изучения в области автоматической языковой обработки [3, 4], плохое произношение увеличивает эту трудность. В автоматическом исправлении речи мы находим средство, облегчающее понимание арабской речи.

Основная система:

Нейронный алгоритм:

Система корпуса:

КОД ВЕКТОРОВ, ГЕНЕРИРУЮЩИХ:

#*********библиотеки*********

импортировать нлтк

из математического импорта *

импортировать numpy как np

ядро класса:

#**********fn уборки************

#@классметод

деф чистый(продолжение):

здоровый=””

для i в диапазоне (0, len (продолжение)):

если cont[i].isalpha() или cont[i]==” “:

здоровый=здоровый+продолжение[i]

вернуться (здоровым)

#**********fn стандартизации********

#@классметод

деф стенд (здоровый):

n=len(здоровый)

спли=””

si=””

список=[]

для я в диапазоне (0, n):

си=си+здоровый[я]

если здоров[i]=="ئ" или здоров[i]=="ى" или здоров[i]=="ء" или здоров[i]=="آ" или здоров[i]=="إ" :

si=si.replace(здоровый[i],'ا')

Элиф Здраво[i]==”ة”:

si=si.replace(здоровый[i],'ت')

Элиф Здраво[i]==”ؤ”:

si=si.replace(здоровый[i],'ا')

для i в диапазоне (0, len (si) -1):

если si[i]!=” “ и si[i+1:i+2]!=” “:

spli=spli+si[i:i+2]

list.insert (я, си [я: я + 2])

возврат (список)

#*********fn вероятности*********

#@классметод

def proba(list,compte,phonetique):

для i в диапазоне (0, len (список)):

если список[i]!=” “ :

вычислить[список[i]]+= 1

для valeur in compte:

phonetique[valeur]=compte[valeur]/len(список)

#************fn моделирования***************

#@классметод

деф моделирование (список):

k=0

модель = []

lettre1=["ي","و","ه","ن","م","ل","ك","ق","ف","غ","ع","ظ" ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ث», «ب», «ت», «ا»]

lettre1.sort()

#toutes les combainaisons возможны

для i в диапазоне (0, len (lettre1)):

для j в диапазоне (0, len (lettre1)):

model.insert(k,lettre1[i]+lettre1[j])

k+=1

возврат (модель)

#рассчитать рефмодель

#@классметод

def refmodel(модель,список,refphonetique,compteur):

для i в диапазоне (0, len (модель)):

для j в диапазоне (0, len (список)):

если модель[i]==список[j]:

компьютер[модель[i]]+= 1

для valeur in compteur:

refphonetique[valeur]=compteur[valeur]/len(список)

#********************нашел*************

#@классметод

определение найдено (модель, компьютер1, компьютер2):

G=[]

k=0

для valeur в модели:

если compteur1[valeur]!=0 и compteur2[valeur]==0:

G.insert(k,значение)

k+=1

возврат (Г)

#*********************очистка последнего списка***************

#@классметод

Def Realist (G):

s=””

список=[]

для i в диапазоне (0, len (G)):

s=s+G[i]

для i в диапазоне (0, len (s)):

list.insert (я, с [я: я + 1])

возврат (список)

#******************************событие******************

#@классметод

деф окк (список):

сравнить = {}.fromkeys (набор (список), 0)

для i в диапазоне (0, len (список)):

если список[i]!=” “ :

сравнить[список[i]]+= 1

возврат (сравните)

#*********************лакуна*******************

#@классметод

def lacune (сравните):

лак=[]

k=0

для valeur в сравнении:

если круглый (сравните [значение]/57) == 1:

lac.insert(k,valeur)

k+=1

возврат (лак)

Тест ядра Jupyter:

Сравнение двух моделей: