vchilka.in.ua 1

Національний університет “Києво-Могилянська Академія”




Департамент комп’ютерних технологій


Кафедра інформатики


Лабораторна робота

з курсу

Лінгвістичне забезпечення інтелектуальних систем

за осінній триместр 1999/2000 н.р.


Алгоритм оброблення активних дієприкметникових зворотів при комп’ютеризованому перекладі

з російської мови на українську.


студента ДКТ-5

Бубенщикова Євгена

Керіник: доцент
І.Б. Штерн



Київ 1999

План

Тема завдання 3

Концепція 4

Тестовий матеріал 5

Змістовний опис основної процедури 7

Висновок 8

Тема завдання


Завдання полягало в тому, щоб правильно обробляти активні дієприкметникові звороти при перекладі з російської мови на українську.

Проблема полягає в тому. що при перекладі необхідно враховувати те, що в українській мові активні дієприкметникові звороти вживаються дуже рідко, і тільки в тих випадках, коли ці дієприкметники втратили дієслівні ознаки, і тепер власне є не дієприкметниками, а віддієслівними прикметниками. Тобто вони показують не процес дії, а сталу властивість. Як правило, дієприкметникові звороти перекладаються підрядними реченнями, описовими конструкціями.

Наприклад візьмемо такі речення (з російської мови):

Под лежащий камень вода не течет.

Я поднял лежащий камень.

Я увидел лежащую собаку.

Пьющий человек.

Человек, пьющий некипяченую воду, скоро умрет.

Подивимося, як їх перекладають такі перекладачі як Плай та Language Master:

Плай:

Під лежачий камінь вода не палить.

Я підняв лежачий камінь.

Я побачив лежачого собаку.


Питуща людина.

Людина, що п'є некип'ячену воду, незабаром помре.

Language Master:

Під лежачий камінь вода не тече.

Я підняв лежачий камінь.

Я побачив лежачу собаку.

П'юча людина.

Людина, що п'є некип'ячену воду, скоро помре.

Як ми можемо побачити Плай перекладає наші тестові приклади більш реально, проте невідомо, чому слово течет він розуміє як печет. А також чому автори цієї програми зробили правило, що слово лежащий, коли воно стоїть перед словом, до якого відноситься, перекладається як дієприкметник, а не як підрядне речення чи описова конструкція.

Зовсім незрозумілий переклад Плая такого речення:

Под камень лежащий вода не течет.

Плай

Під камінь лежача вода не палить.

Language Master:

Під камінь лежачий вода не тече.

Що мали на увазі розробники Плая під таким перекладом – я уявити не можу…

Проте треба віддячити Плаю за такий переклад, як питуща людина, та також за узгодженість родів собака та лежачий…

Концепція

Як я вважаю, ідеальна концепція перекладів дієприкметникових зворотів полягала б в тому, що треба аналізувати смисл речення: якщо активний дієприкметник насправді позначає ознаку об’єкту, а не дію, тоді його треба перекладати як дієприкметник. Якщо дію – тоді як підрядне речення. Взагалі, є багато конструкцій, в яких в більшості випадків дієприкметник перекладається дієприкметником(співаючий ліс, активуюче вугілля, благаючі руки, рішуче лезо, Під лежачий камінь вода не тече.). В цих прикладах, дієприкметники насправді є віддієслівними прикметниками. Але, наприклад дієприкметниковий зворот у реченні я поднял камень, лежащий на земле має перекладатися підрядним речення який лежав на землі. Як ми можемо спостерігати, якщо в реченні зустрічається не окремий дієприкметник, а дієприкметниковий зворот, він перекладається підрядним реченням. Коли зустрічається дієприкметник, причому який стоїть перед словом-об’єктом, до якого відноситься, тоді ймовірність перекладу його дієприкметником зростає. В будь-якому випадку, коли дієприкметниковий зворот має перекладатися підрядним реченням, воно має стояти після слово, яке описується (Собака, який лежав на землі).

Тестовий матеріал


Мною було вирішено розробити програму, яка коректно перекладає речення з дієприкметниковими зворотами. В зв’язку з тим, що спостерігати та оцінювати смисл речень для визначення того, чи є дієприкметник віддієслівним прикметником, чи ні, було б дуже складно, та враховуючи те, що це окрема велика робота, мною було вирішено трохи спростити сам процес автоматичного розпізнання того, як має перекладатися сам дієприкметниковий зворот, а значно більше уваги приділити такому аспекту, як узгодження родів та числа між іменниками та займенниками, і відповідними прикметниками, дієприкметниками та дієсловами. Переклад самих зворотів в моїй системі діалоговий, тобто можно вказувати, чи перекладати їх як підрядні речення. чи як дієприкметники.

Я взяв деякі, можливо безглузді, фрази:

Путь, лежащий на лежащую собаку.

Я поднял собаку, лежащую на полу.

Я поднял лежащую на полу собаку.

Лежащая на полу собака подняла лежащую монету.

Собака подняла лежащую на полу корову.

Переклад Плая:

Шлях, що лежить на лежачого собаку.

Я підняв собаку, що лежить на підлоги.

Я підняв лежачу на підлоги собаку.

Лежача на підлоги собака підняв лежачу монету.

Собака підняв лежачу на підлоги корову.

Переклад Language Master:

Шлях, лежачий на лежачу собаку.

Я підняв собаку, лежачу на підлозі.

Я підняв лежачу на підлозі собаку.

Лежача на підлозі собака підняла лежачу монету.

Собака підняла лежачу на підлозі корову.

Переклад моєї системи:

Путь що лежить на собаку що лежить .(у попередньому варіанті підрядне речення мало минулий час, якщо у реченні не було присудку і виглядало так


Путь що лежала на собаку що лежала .).(Слово путь в українській мові жіночого роду)

Я підняв собаку що лежав на підлозі .

Я підняв собаку що лежав на підлозі .

Собака що лежав на підлозі підняв монету що лежала .

Собака підняв корову що лежала на підлозі .

Як ми можемо побачити, в цілому речення були перекладені коректно. Я не приділяв уваги комам, хоч вони і можуть дати багато інформації про межі дієприкметникового звороту, проте реалізація їх виведення була не варта і не дуже суттєво.

Проте можемо помітити ПРАВИЛЬНИЙ переклад дієслів, рід яких відповідає роду іменника, який робить цю дію. Крім того, ця узгодженість спостерігається крізь весь текст.

Плай та LM з подібними прикладами впоралися “не зовсім правильно” хоч намагання Плая зробити це можна оцінити.

Змістовний опис основної процедури


Програму було написано мовою Visual Basic, яка є внутрішньою мовою такого популярного текстового редактору, як Microsoft Word. Словник зі словами – це таблиці у базі даних Microsoft Access. В нас є таблиця іменників, дієслів, прикметників (з дієприкметниками), прийменників. Прислівники я не враховував, бо їх переклад є не суттєвим, хоч взагалі його треба враховувати обов’язково, бо дієприкметниковий зворот може починатися і з них(быстро бегущий человек). Присутні таблиці для кожної мови. в яких вказується слово, корінь, закінчення у всіх відмінках, числах, час (для дієслів), ключовий переклад, рід та декілька допоміжних.

Алгоритм перекладу такий:

  1. читається у змінну речення

  2. за допомогою SQL запитів та виклику Access.Application у Word, знаходяться всі дані для кожного слова у таблицях, та заносять у спеціальний масив.

  3. знаходяться члени речення у відповідності до частин мови, відмінків.
  4. для всіх слів, які повинні узгоджуватися з іменниками та займенниками, шукається номер слова у реченні, з яким має йти узгодження.


  5. після того, як ми маємо всю детальну інформацію про кожне слово у реченні, шукаємо, чи є серед слів дієприкметники. Якщо дієприкметники є, питаємо, чи перебудувати дієприкметниковий зворот. Якщо так, ставимо об’єкт(слово), який описує дієприкметниковий зворот на перше місце. Додаємо слово “що” після нього, та знаходимо відповідне дієслово для дієприкметника. Узгоджуємо його з словом-об’єктом, який робить дію (рід, число), знаходимо час, у якому має бути дієслово (у відповідності з часом присудка), та корегуємо інформацію решти слів у реченні у відповідності зі зробленими змінами.

Після цього, власне і робимо переклад, враховуючи всі узгодження між словами.

Саме ця процедура приблизно виглядає так:

Sub TranslateNow()

For i = 1 To cnt

If MyArray(i, CPART) = "П" Then

If MsgBox("У реченні знайдені активні дієприкметники. Перебудувати речення ?", vbYesNo) = vbYes Then

Rebuild

Exit For

End If

End If

Next

Dim ss As String

For i = 1 To cnt

Application.StatusBar = "translation of " + MyArray(i, CWORD) + "..."

If MyArray(i, 15) = "t" Then 'Якщо слово вже перекладено, то переклад – це воно

wordnew = MyArray(i, CTRANS)

Else

ss = MyArray(i, CSEX) ‘новий рід

If MyArray(i, CSOGL) <> "" Then

For m = 1 To cnt ’шукаємо слово, з яким має узгоджуватись

If MyArray(i, CSOGL) = MyArray(m, CNUMBER) Then

If MyArray(m, CPART) = "С" Then ss = MyArray(m, 15) ’якщо це іменник, то беремо його рід

Exit For

End If

Next

End If

виклик процедури – розумного перекладу слова


wordnew = smarttransword(MyArray(i, CPART), MyArray(i, CTRANS), ss, _

MyArray(i, CPADEZH), MyArray(i, CHOWMANY), MyArray(i, CTIME))

End If

NewArr(i, 1) = wordnew

NewArr(i, 2) = MyArray(i, CNUMBER)

Next

End Sub


Тобто ми маємо “розумний пословний переклад”, який враховує узгодження між словами та можливість перебудови речення при наявності дієприкметникових зворотів або дієприкметників.

Висновок


Моя система комп’ютерізованого перекладу ще досить далека від тієї, яка дає “інтелектуальний” переклад. Крім того вона доволі спрощена і досить повільно працює, в зв’язку з тим, що використаний складний механізм пошуку слів у базі Microsoft Access за допомогою SQL-запитів. Проте ця система показує, що недоліки перекладу таких систем, як Плай чи Language Master, доволі легко виправити, і при наявності часу та бажання (яке завжди є), може бути легко розширена до такої, яка давала б максимально схожий до природної мови переклад.

Крім цього, можна додати те, що без врахування смислу, ця система ніколи не може дати правильний переклад, тому зрозуміло, що в ідеалі ця система має інтегрувати в собі таку модель, чи ідеї моделі, як “Смисл  Текст”.