В данной статье представлены проблемы и решения в разработке казахско-английского машинного переводчика основанные на правилах двух языков, в механико-математическом факультете Казахского Национального Университета им. аль-Фараби. В статье также подробно описаны пункты такие как работа со строками и возможности регулярных выражений при обработке текстовых данных. Описание регулярных выражений для грамматических ситуаций казахского языка: по количеству слов, участвующих в них (2-словные и 1-словные) и по частям речи. Также в таблице приведены регулярные выражения, которые описывают аналогичные конструкции для английского языка.
Ключевые слова: регулярные выражения, синтаксис регулярных выражений, метасимволы, морфологический и синтаксический анализ входного предложения, машинный перевод, структура казахского языка.
Resume
This paper presents the problems and solutions in the development of Kazakh- English machine translation based on the rules of the two languages in the Mechanics and Mathematics Department of the Al-Farabi named Kazakh National University. The article also described in detail items such as working with strings and regular expressions possible when processing text data. Description of regular expressions for the Kazakh language grammatical situations: the number of words involved in them (like a 2-words and 1-words) and by parts of speech. They also show the regular expressions that describe similar constructions for English.
Буквально в начале прошлого столетия, культурным и грамотным человеком мог себя считать только тот, кто знал не менее трех иностранных языков. В наше время одной из главных образовательных задач, поставленной нашим Президентом Нурсултаном Назарбаевым, стал переход к трехязычию.
Изучение государственного языка - жизненно необходимый фактор, свидетельствующий о культуре многих народов, проживающих на огромной территории. Русский язык на протяжении веков стал языком дружбы и взаимопонимания. А говоря о значимости иностранных языков, нельзя не вспомнить слова великого И.Гете: «Кто не знает иностранных языков, тот ничего не смыслит и в своем родном языке».
Поднимать собственную культуру, развиваться и идти вперед – это жизненная необходимость нашего молодого столетия и государства. Такой же жизненной необходимостью является и изучение не только государственного, но и других языков, чтобы просто идти в ногу со временем.
Таким образом, трех язычные крайне востребовано для того, чтобы поднять квалификационный уровень казахстанских специалистов. Ведь без знания технической терминологии на русском и английском языках невозможно работать на современном производстве.
На сегодняшний день одно из актуальных и перспективных направлений применения искусственного интеллекта – автоматический перевод с одного естественного языка на другой или по-другому машинный перевод. Над качественным машинным переводом уже несколько десятилетий бьются переводчики, математики, лингвисты и программисты.
Машинный перевод - это автоматический перевод текстов с одного языка на другой (например, пословный перевод научно-технической информации, патентов, документов, инструкций, перевод программ ЭВМ с алгоритмического языка на машинный язык), а также научное направление, охватывающее круг проблем, которые возникают при автоматизации перевода.
Сначала ознакомимся со структурой казахского языка и обратим внимание на его характерные особенности:
- В казахском предложении сказуемое обычно стоит на последнем месте независимо от того, какой частью речи оно выражено.
- Отсутствуют приставки. Новые слова и различные формы слова образуются главным образом путем присоединения к корню различных словообразовательных и формообразующих аффиксов. При этом корень слова остается без изменений, аффиксы гармонируют с корнем.
- Отсутствует категория рода.
- Нет согласования прилагательного с существительным.
- Многие казахские слова, особенно относящиеся к общеупотребительной лексике, многозначны. Например: бас – 1. голова; 2. верхушка (горы); 3. старший; 4. главный; 5. начало и др.
- Встречаются интернациональные термины, заимствованные через русский язык, и слова из русского языка. Они в большинстве своем пишутся и произносится так же, как и в русском языке.
- Если существительное сочетается с количественным числительным, оно не принимает окончания множественного числа: он екі студент – двенадцать студентов; екі еркек – двое мужчин.
Новые слова и различные формы слова образуются главным образом путем присоединения к корню различных словообразовательных и формообразующих аффиксов. При этом корень слова остается без изменений, аффиксы гармонируют с корнем.
Первый основной закон казахского языка – «приклеивание» аффиксов.
Не удивляйтесь, встретившись с длинными словами, имеющими много аффиксов, - постарайтесь разобраться, из каких аффиксов состоит слово и что обозначает каждый из них.
Например:
1. Ата отец, дед.
2. Ата + лар отцы, деды (+аффикс мн.ч.).
3. Ата + лар + ым мои отцы (+аффикс принадлежности 1-го л. ед.ч.).
4. Ата-лар-ым + ыз наши отцы (+аффикс принадлежности 1-го л. мн.ч.).
5. Ата-лар-ым-ыз + да у наших отцов (+аффикс местного падежа).
6. Ата-лар-ым-ыз-да + ғынаходящийся у наших отцов (+аффикс, образующий имя прилагательное).
7. Ата-лар-ым-ыз-да-ғы + лар находящиеся у наших отцов (вторично + аффикс мн.ч.).
8. Ата-лар-ым-ыз-да-ғы-лар + дікі то, что имеется у предметов, принадлежащих нашим отцам (+ аффикс принадлежности). Здесь наблюдается начало нарушения гармонии звуков в послежних логах.
9. Ата-лар-ым-ыз-да-ғы-лар-дікі + н (+ аффикс винительного падежа).
- Это основополагающее отличие казахского языка от известных вам европейских языков, относящихся к индоевропейской семья языков.
Шеше + лер + ім + із + де + гі + лер + дікі + н то, что имеется у предметов, находящихся у наших матерей.
С поручением главы государства Н.А. Назарбаева о внедрений трех язычные во все образовательные сферы чтобы наши будущие молодые специалисты были востребованными на рынке труда во всем мире. Рассматриваемая тема «Разработка и исследование моделей, алгоритмов и программ казахско-английского машинного перевода». Главной целью этой научно-исследовательской работы - объяснить общий смысл текста на том или ином языке. В связи с этим с помощью метода основанных на правилах двух языков было исследовано много работ для полного морфологического анализа текста на казахском входном языке.
Когда было разработано несколько правил прикрепления аффиксов к корню, мы описали с помощью «if-else» оператора множество строк кода, далее используя «switch-case» оператор сократили длину кода, что в итоге способствовало экономии времени и памяти.
Целю статьи является описание оптимального подхода по работе с конечными текстами с помощью регулярных выражений. Используя регулярные выражения, весь этот код можно сократить буквально до нескольких строк. Это колоссальное преимущество в кодировке кода, в экономии времени и памяти при обработке данных.
Регулярные выражения — это часть небольшой технологической области, невероятно широко используемой в огромном диапазоне программ. Регулярные выражения можно представить себе, как мини-язык программирования, имеющий одно специфическое назначение: находить подстроки в больших строковых выражениях. Это не новая технология; изначально она появилась в среде UNIX и обычно используется в языке программирования Perl. Разработчики из Microsoft перенесли ее в Windows, где до недавнего времени эта технология применялась в основном со сценарными языками. Однако теперь регулярные выражения поддерживаются множеством классов .NET из пространства имен System.Text.RegularExpressions. Случаи применения регулярных выражений можно встретить во многих частях среды .NET Framework.
С помощью регулярных выражений можно выполнять достаточно сложные и высокоуровневые действия над строками. Например:
- Идентифицировать (и возможно, помечать к удалению) все повторяющиеся слова в строке
- Сделать заглавными первые буквы всех слов
- Преобразовать первые буквы всех слов длиннее трех символов в заглавные
- Обеспечить правильную капитализацию предложений
- Выделить различные элементы в URI (например, имея http://www.professorweb.ru, выделить протокол, имя компьютера, имя файла и т.д.)
Разумеется, все эти задачи можно решить на С# с использованием различных методов System.String и System.Text.StringBuilder. По сути, создается экземпляр объекта System.Text.RegularExpressions.RegEx (или, что еще проще, вызываете статический метод RegEx()), ему передается строка для обработки, а также само регулярное выражение (строку, включающую инструкции на языке регулярных выражений).
Синтаксис регулярных выражений:
Главным преимуществом регулярных выражений является использование метасимволов — специальные символы, задающие команды, а также управляющие последовательности, которые работают подобно управляющим последовательностям С#. Это символы, предваренные знаком обратного слеша (\) и имеющие специальное назначение. Некоторые из данных метасимволов перечислены ниже:
^ - Начало входного текста
$ - Конец входного текста
. - Любой одиночный символ кроме символа перевода строки (\n)
* - Предыдущий символ может повторяться 0 или более раз
+ - Предыдущий символ может повторяться 1 или более раз
? - Предыдущий символ может повторяться 0 или 1 раз
\s - Любой пробельный символ
\S - Любой символ, не являющийся пробелом
\b - Граница слова
\B - Любая позиция, кроме границы слова
[…] - один из перечисленных символов
a-z - диапазон от a до z
Подобные регулярные выражения были составлены для различных грамматических категорий казахского языка. И, используя код, аналогично приведенному выше, осуществляется морфологический и частично синтаксический анализ казахского языка. Описание регулярных выражений для грамматических ситуаций казахского языка разбито по количеству слов, участвующих в них (2-словные и 1-словные) и по частям речи. Также в таблице приведены регулярные выражения, которые описывают аналогичные конструкции для английского языка.
1-словные ситуации
№ |
Казахский язык |
Английский язык |
Глаголы |
||
1 |
Ауыспалы осы-келер шақ [АӘБВГҒДЕЁЖЗИЙКҚЛМНҢОӨПРСТУҮҰФХҺЦЧШЩЪЫІЬЭЮЯаәбвгғдеёжзийкқлмнңоөпрстуүұфхһцчшщъыіьэюя]+(а|е|й)(мын|мін|сын|сін|сыз|сіз|ды|ді|мыз|міз|сындар|сіндер|сыздар|сіздер)? Ауыспалы осы-келер шақ чередование йа-я [АӘБВГҒДЕЁЖЗИЙКҚЛМНҢОӨПРСТУҮҰФХҺЦЧШЩЪЫІЬЭЮЯаәбвгғдеёжзийкқлмнңоөпрстуүұфхһцчшщъыіьэюя]+я(мын|мін|сын|сін|сыз|сіз|ды|ді|мыз|міз|сындар|сіндер|сыздар|сіздер)? |
Present simple (I|you|we|they) [a-z]+ (he|she|it) [a-z]+s Future simple (I|we|you|they) shall [a-z]+ (you|he|she|it) will [a-z]+ |
2 |
Жедел өткен шақ [АӘБВГҒДЕЁЖЗИЙКҚЛМНҢОӨПРСТУҮҰФХҺЦЧШЩЪЫІЬЭЮЯаәбвгғдеёжзийкқлмнңоөпрстуүұфхһцчшщъыіьэюя]+(ді|ды|ті|ты)(м|н|ныз|ніз|к|қ|ндар|ндер|ныздар|ніздер)? |
Past simple (I|you|he|she|it|we|they) [a-z]+ed глаголы-исключения (PP1) |
3 |
Бұрынғы өткен шақ 1 [АӘБВГҒДЕЁЖЗИЙКҚЛМНҢОӨПРСТУҮҰФХҺЦЧШЩЪЫІЬЭЮЯаәбвгғдеёжзийкқлмнңоөпрстуүұфхһцчшщъыіьэюя]+(ып|іп|п)(пын|пін|сын|сін|сыз|сіз|ты|ті|пыз|піз|сындар|сіндер|сыздар|сіздер) Бұрынғы өткен шақ 2 [АӘБВГҒДЕЁЖЗИЙКҚЛМНҢОӨПРСТУҮҰФХҺЦЧШЩЪЫІЬЭЮЯаәбвгғдеёжзийкқлмнңоөпрстуүұфхһцчшщъыіьэюя]+(ған|ген|қан|кен)(мын|мін|сын|сін|сыз|сіз|мыз|міз|сындар|сіндер|сыздар|сіздер)? |
Past simple (I|you|he|she|it|we|they) [a-z]+ed глаголы-исключения (PP1) |
4 |
Ауыспалы өткен шақ 1 [АӘБВГҒДЕЁЖЗИЙКҚЛМНҢОӨПРСТУҮҰФХҺЦЧШЩЪЫІЬЭЮЯаәбвгғдеёжзийкқлмнңоөпрстуүұфхһцчшщъыіьэюя]+(атын|етін|йтін|ытын)(мын|мін|сын|сін|сыз|сіз|мыз|міз|сындар|сіндер|сыздар|сіздер) |
Past simple (I|you|he|she|it|we|they) [a-z]+ed глаголы-исключения (PP1) |
5 |
Мақсатты келер шақ [АӘБВГҒДЕЁЖЗИЙКҚЛМНҢОӨПРСТУҮҰФХҺЦЧШЩЪЫІЬЭЮЯаәбвгғдеёжзийкқлмнңоөпрстуүұфхһцчшщъыіьэюя]+(мақ|мек|бақ|бек|пақ|пек)(пын|пін|сын|сін|сыз|сіз|пыз|піз|сындар|сіндер|сыздар|сіздер)? |
Present Continious (I am|you are|he is|she is|it is|we are|they are) going to [a-z]+ |
2-словные ситуации
№ |
Казахский язык |
Английский язык |
Существительные |
||
1 |
Тәуелдік жалғау со словами «оның», «олардың» (оның|олардың) [аәбвгғдеёжзийкқлмнңоөпрстуүұфхһцчшщъыіьэюя]+ |
(his|her|its) [a-z]+ (their) [a-z]+ |
2 |
Притяжательные местоимения и тәуелдік жалғау (менің|сенің|сіздің|біздің|сендердің|сіздердің) [аәбвгғдеёжзийкқлмнңоөпрстуүұфхһцчшщъыіьэюя]+ |
(my|your|our) [a-z]+ |
Глаголы |
||
3 |
Бұрынғы өткен шақ 3 [АӘБВГҒДЕЁЖЗИЙКҚЛМНҢОӨПРСТУҮҰФХҺЦЧШЩЪЫІЬЭЮЯаәбвгғдеёжзийкқлмнңоөпрстуүұфхһцчшщъыіьэюя]+(ған|ген|қан|кен) екен(мін|сін|сіз|біз|сіндер|сіздер) |
Past simple (I|you|he|she|it|we|they) [a-z]+ed глаголы-исключения (PP1) |
4 |
Ауыспалы өткен шақ 2 [АӘБВГҒДЕЁЖЗИЙКҚЛМНҢОӨПРСТУҮҰФХҺЦЧШЩЪЫІЬЭЮЯаәбвгғдеёжзийкқлмнңоөпрстуүұфхһцчшщъыіьэюя]+(атын|етін|йтін|ытын) еді(м|н|ніз|к|ндер|ніздер) |
Past simple (I|you|he|she|it|we|they) [a-z]+ed глаголы-исключения (PP1) |
5 |
Нақ осы шақ [АӘБВГҒДЕЁЖЗИЙКҚЛМНҢОӨПРСТУҮҰФХҺЦЧШЩЪЫІЬЭЮЯаәбвгғдеёжзийкқлмнңоөпрстуүұфхһцчшщъыіьэюя]+(ып|іп|п|а|е|я) (отыр|тұр|жүр|жатыр)(мын|мін|сын|сін|сыз|сіз|мыз|міз|сындар|сіндер|сыздар|сіздер)? |
Present Continious (I am|you are|he is|she is|it is|we are|they are) [a-z]+ing |
Таким образом с помощью регулярных выражений мы существенно сократили объём кода на языке С#. А также сократили время обработки данных для анализа заданного или другого текста. Сократили общую память рабочего кода заменив условные операторы «if-else» и операторы «switch-case», которые позволяют заменить сложный «if-else» оператор и сделать программу более читаемой на регулярных выражениях, тем самым облегчив общий объем работы при обработке анализа больших текстовых информаций.
Литература:
1. Хадиша Кожахметова «40 уроков казахского языка» Алма-Ата «Жалын» 1989, 4-5 страница.
2. http://ru.wikipedia.org/wiki/Регулярные_выражения