Разработка подсистемы морфологического анализа информационной системы
Ниже перечислены все используемые граммемы:
мр, жр, ср – мужской, женский, средний род;
од, но – одушевленность, неодушевленность;
ед, мн – единственное, множественное число;
им, рд, дт, вн, тв, пр, зв – падежи: именительный, родительный, дательный, винительный, творительный, предложный, звательный;
2 – обозначает второй родительный или в
торой предложный падежи;
св, нс – совершенный, несовершенный вид;
пе, нп – переходный, непереходный глагол;
дст, стр. – действительный, страдательный залог;
нст, прш, буд – настоящее, прошедшее, будущее время;
пвл – повелительная форма глагола;
1 л, 2 л, 3 л – первое, второе, третье лицо;
0 – неизменяемое.
кр – краткость (для прилагательных и причастий).
сравн – сравнительная форма (для прилагательных).
имя, фам, отч – имя, фамилия, отчество.
кач – качественное прилагательное.
вопр, относ – вопросительность и относительность (для наречий).
дфст – слово обычно не имеет множественного числа.
жарг, арх, проф – жаргонизм, архаизм, профессионализм.
безл – безличный глагол.
Метод s_basean
Данный метод проводит поиск основы слова в массиве base. Если словоформа найдена, то вызывается метод s_flexan для анализа окончания. Если основа не найдена, выполняются методы поиска ошибки (first_err, second_err, third_err, fifth_err).
Описание заголовка метода s_basean
int s_basean (char **base, const int b_nstr, const int b_nstb, char **flex, const int f_nstr, const int f_nstb, char **morf, const int m_nstr, const int m_nstb, int &l, char *s_word);
В данный метод передаются указатели на массивы основ, окончаний и морфем, а также указатели на полученное для анализа слово и длинна этого слова.
Возвращает метод 1 в случае удачного выполнения (была найдена хотя бы одна словоформа), и 0 в случае неудачного выполнения (ни одной словоформы не было найдено).
Метод s_flexan
Данный метод вызывается из метода s_basean и проводит поиск окончания слова в массиве flex. Если окончание найдено, то вызывается метод s_mrf, для определения морфологических свойств слова.
Описание заголовка метода s_flexan:
void s_flexan (char **mas, const int str, const int stb, char *ok, const int a, char *w, char *s, int &id);
В данный метод переадются указатели на массив с окончаниями, его размерность, искомое окончание, номер строки с окончаниями, определённый в методе s_basean, и анализируемое слово.
Данный метод не возвращает никаких значений.
Метод s_mrf
Данный метод проводит поиск набора дескрипторов (морфологическая характеристика слова), в соответствии с проведённым анализом в методах s_basean и s_flexan. Метод s_mrf вызывается из метода s_flexan в случае, если было найдено окончание, и связка основа + окончание даёт анализируемое слово.
Описание заголовка метода s_mrf:
void s_mrf (char **mas, const int str, const int stb, char *mr, char *en);
В данный метод передаются указатели на массив дескрипторов mrf, размерности этого массива, и строка содержащая морфологическое описание данного слова. Так как у одного слова может быть несколько морфологических характеристик, то данная строка может содержать несколько наборов дескрипторов.
Метод first_err
Данный метод строит полное обратное отображение словоформы третьей категории ошибок. Метод последовательно удаляет букву из переданной словоформы.
Описание заголовка метода third_err
void first_err (char *s_word, char **ot, int &f, int q);
В данный метод передаётся полученное для анализа слово, и указатель на массив, в который будут передано множество полного обратного отображения словоформы. После построения данного множества, для каждого из обратного отображения вызывается метод s_basean и проводится попытка найти сгенерированную словоформу в словаре. Если словоформа найдена, дальнейшее выполнение останавливается и подсистема предлагает замену слова. Если словоформа не найдена то вызывается метод sec_err для поиска ошибки второй категории.
Метод sec_err
Данный метод строит полное обратное отображение словоформы по первой категории ошибок. Метод последовательно подставляет на каждое место в слове символ алфавита русского языка.
Описание заголовка метода fifth _err
void sec_err (char *s_word, char **ot, int &f, int q);
В данный метод передаётся полученное для анализа слово и указатель на массив, в который будут передано множество полного обратного отображения словоформы. После построения данного множества, для каждого из обратного отображения вызывается метод s_basean и проводится попытка найти сгенерированную словоформу в словаре. Если словоформа найдена, дальнейшее выполнение останавливается и подсистема предлагает замену слова. Если словоформа не найдена то считается, что для данной словоформы не удалось создать полное обратное отображение и данная словоформа помечается как не найденная в словаре.
2.7 Тестовые примеры
Для тестирования алгоритмов морфологического анализа были выбраны слова различных частей речи и с различными морфемными свойствами, также учитывается наличие словоформ имеющих различную морфологию, но не отличающихся друг от друга при написании.
Для тестирования алгоритмов исправления ошибок были составлены слова с ошибками первого и второго рода.
Результаты тестирования указаны в таблице 3.3.
Таблица 3.3. Результаты тестирования модуля морфологического анализа
Морфологический анализ частей речи | |||
Часть речи |
Тестовое слово |
Результат работы морфологического анализа | |
Существительное |
лес |
С мр, ед, им С мр, ед, вн С жр, мн, рд | |
мама |
С жр, ед, им | ||
люди |
С мр, мн, им | ||
дети |
С мр, мн, им | ||
Глагол |
ехать |
ИНФИНИТИВ дст | |
едешь |
Г дст, нст, 2 л, ед | ||
идти |
ИНФИНИТИВ дст | ||
приехал |
Г дст, прш, мр, ед | ||
Прилагательное |
красивый |
П мр, ед, им, од, но П мр, ед, вн, но | |
прекрасный |
П мр, ед, им, од, но П мр, ед, вн, но | ||
синий |
П мр, ед, им, од, но П мр, ед, вн, но | ||
Числительное |
пять |
ЧИСЛ им ЧИСЛ вн | |
восьмой |
ЧИСЛ-П мр, ед, им, од, но ЧИСЛ-П мр, ед, вн, но ЧИСЛ-П жр, ед, рд, од, но ЧИСЛ-П жр, ед, дт, од, но ЧИСЛ-П жр, ед, тв, од, но ЧИСЛ-П жр, ед, пр, од, но | ||
шестью |
ЧИСЛ тв Н | ||
Местоимения |
я |
МС 1 л, ед, им | |
ты |
МС 2 л, ед, им | ||
мы |
МС 1 л, мн, им | ||
наш |
МС-П мр, ед, им, од, но МС-П мр, ед, вн, но | ||
Предлоги |
под |
ПРЕДЛ | |
над |
ПРЕДЛ | ||
в |
ПРЕДЛ | ||
Союзы |
и |
СОЮЗ | |
но |
СОЮЗ | ||
Междометия |
ах |
МЕЖД | |
ух |
МЕЖД | ||
ой |
МЕЖД | ||
Причастие |
идущий |
ПРИЧАСТИЕ од, но, нст, дст, ед, мр, им ПРИЧАСТИЕ но, нст, дст, ед, мр, вн | |
смотревший |
ПРИЧАСТИЕ од, но, прш, дст, ед, мр, им ПРИЧАСТИЕ но, прш, дст, ед, мр, вн | ||
шедший |
ПРИЧАСТИЕ од, но, прш, дст, ед, мр, им ПРИЧАСТИЕ но, прш, дст, ед, мр, вн | ||
Деепричастие |
приехав |
ДЕЕПРИЧАСТИЕ дст, прш | |
уйдя |
ДЕЕПРИЧАСТИЕ дст, прш | ||
въехав |
ДЕЕПРИЧАСТИЕ дст, прш | ||
Наречие |
круто |
Н | |
однажды |
Н | ||
вкратце |
Н | ||
Словоформы, имеющие несколько значений части речи. | |||
стали |
Г дст, прш, мн С жр, ед, рд С жр, ед, дт С жр, ед, пр С жр, мн, им С жр, мн, вн | ||
мыла |
Г дст, прш, жр, ед С ср, ед, рд С ср, мн, им С ср, мн, вн | ||
странно |
КР_ПРИЛ ср, ед, од, но Н | ||
хвоя |
ДЕЕПРИЧАСТИЕ дст, нст С жр, ед, им | ||
семью |
ЧИСЛ тв С жр, ед, вн Н | ||
Исправление ошибок | |||
Категория ошибки |
Вводимое слово |
Найденная словоформа | |
1. (удвоение символа) |
клаввиатура |
клавиатура С жр, ед, им | |
оффис |
офис С мр, ед, им С мр, ед, вн | ||
лиист |
лист С мр, ед, им С мр, ед, вн | ||
теллефон |
телефон С мр, ед, им С мр, ед, вн | ||
2. (перестановка двух соседних символов) |
аглоритм |
алгоритм С мр, ед, им С мр, ед, вн | |
лсе |
лес С мр, ед, им С мр, ед, вн С жр, мн, рд | ||
1,2 |
сааш |
САШ С мр-жр, имя, мн, рд С мр-жр, имя, мн, вн | |
САША С мр-жр, имя, ед, им | |||
мрое |
РОЕ С мр, ед, пр С мр, имя, ед, пр | ||
МОРЕ С мр, ед, пр С жр, имя, ед, дт С жр, имя, ед, пр С ср, ед, им С ср, ед, вн С ср, ед, пр | |||
Другие рефераты на тему «Программирование, компьютеры и кибернетика»:
Поиск рефератов
Последние рефераты раздела
- Основные этапы объектно-ориентированного проектирования
- Основные структуры языка Java
- Основные принципы разработки графического пользовательского интерфейса
- Основы дискретной математики
- Программное обеспечение системы принятия решений адаптивного робота
- Программное обеспечение
- Проблемы сохранности информации в процессе предпринимательской деятельности