ора в нашому університеті.
Таким чином, комбінуючи запропоновані вище варіанти, ми отримуємо всього дев'ять можливих відповідей на перше питання вправи. При використанні традиційних систем контролю знань, викладачеві би довелося під час створення вправи задати всі дев'ять варіантів, що призвело б до різкого падіння ефективності його праці. Якщо ж система буде сама генерувати всі можливі відповіді на питання, а потім порівнювати відповіді студента зі згенерованими відповідями, такої проблеми вдасться уникнути.
Крім того, система позиціонується не тільки як навчальний посібник, але і як тренажер для самостійного навчання. Подібний підхід може дозволити студентам без участі викладача перевірятимуть свої знання з цікавить їх частини граматики.
Щоб домогтися описаної вище інтелектуальності, потрібно використовувати засоби автоматичного лінгвістичного аналізу - лінгвістичні процесори.
Фактично, нам потрібно проводити перетворення питання у відповідь. Для цього нам потрібно мати можливість виконувати такі зміни пропозиції:
. Видаляти слова із заданою синтаксичною функцією. У наведеному вище прикладі можна помітити, що при відповіді на питання видаляється слово «де» - обставина місця, виражене займенником. Також видалятиметься і знак питання.
. Додавати нові слова. У даному прикладі відбувається додавання прийменника «в» після присудка. Крім того, додається знак пунктуації: на місце видаленого знаку питання ставиться крапка.
. Замінювати слова. Таке потрібно, наприклад, при відповіді на питання. Вище можна помітити, що слово «ви» змінюється чи на «ми», або на «я» (в залежності від того, як розуміти поставлене питання).
. Змінювати форму існуючих слів. Ми можемо бачити, що в прикладі змінюється форма слова «були» (залежно від заміни слова «ви»), а також відбувається схиляння слів з дужок. Тут слід звернути увагу, що в дужках стоїть не одне слово, а словосполучення, тобто при відмінюванні повинна враховуватися зв'язок слів.
. Переміщати слова. Ми бачимо, що слова з дужок ставляться після доданого раніше прийменника «в»: «були в нашому університеті».
Таким чином, від лінгвістичних процесорів потрібно наступне:
· повертати синтаксичну функцію слів, що може бути використано при видаленні слів із заданою функцією, вставці і переміщенні;
· повертати синтаксичні зв'язки між словами для можливості їх відмінювання;
· повертати морфологічні характеристики слів, що входять в пропозицію, зі знятою омонімією (тобто, в результатах аналізу не повинно бути неоднозначних інтерпретацій).
Правильне зняття омонімії дуже важливо для правильного відмінювання слів. Про те, які лінгвістичні процесори були розглянуті і як вони задовольняють заданим вимогам, розповідається в наступному розділі.
3. Лінгвістичні процесори
Лінгвістичний процесор - це комп'ютерна програма, яка будь-яким чином перетворює вхідний текст на природній мові. У літературі також використовується термін «аналізатор». Це поняття дещо вже. Під аналізатором в даній роботі розуміється програма, перетворююча вхідний пропозицію в деякий машинне подання. Умовно лінгвістичні аналізатори можна розділити на чотири види:
. Графематіческіе аналізатори.
. Морфологічні аналізатори.
. Синтаксичні аналізатори.
. Семантичні аналізатори.
Графематіческій аналіз являє собою початковий етап обробки тексту, в ході якого визначаються елементи граматичної структури (слова, знаки пунктуації, числа, скорочення і т. д.). Можна виділити наступні основні функції графематіческого аналізу [9]:
· розбиття тексту на графеми;
· визначення меж речень;
· розрізнення слів і службових графем (наприклад, знаків пунктуації);
· визначення регістра слів;
· розпізнавання власних імен;
· розпізнавання скорочень.
Морфологічні аналізатори служать для отримання початкової форми слів, виділених на етапі графематіческого аналізу, частини мови та їх морфологічних характеристик, а також для відмінювання слів. У даній роботі ми розглядаємо дві морфологічних аналізатора: морфологічний аналізатор з пакету АОТ і бібліотека pymorphy2.
На етапі синтаксичного аналізу визначаються синтаксичні зв'язки між словами, встановлюється, яку синтаксичну функцію виконує кожне слово. На виході зазвичай будується синтаксичне дерево, де вузли - це...