Разработка программного обеспечения системы синтеза парадигм слов английского языка
Декларативные методы машинной морфологии. Создание базы данных английских словоформ, содержащей полную морфологическую информацию каждой формы. Описание функциональных возможностей системы и взаимодействия ее модулей. Формат входных и выходных данных.
Рубрика | Иностранные языки и языкознание |
Вид | курсовая работа |
Язык | русский |
Дата добавления | 13.05.2015 |
Размер файла | 346,8 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Исходя из перечисленных правил, приведем алгоритм для глаголов третьего лица единственного числа образования времени Present Indefinite.
Алгоритм образования Present Indefinite для третьего лица единственного числа
Входные данные
str - строка (инфинитив глагола)
Выходные данные
res - строка (словоформа -Present Indefinite третье лицо единственное число для str)
Промежуточные переменные
l - целое, длина строки str
Consonant = {b, c, d, f, g, h, j, r, l, m, n, p, q, r, s, t, v, w, x, z} множество элементов символьного типа (множество согласных английского алфавита);
начало
1 Инициализация
res = str;
2 если (str[l]=='s') или (str[l]=='x') или ((str[l-1]=='s') и (str[l]==' s')) или
((str[l]=='h') и ((str[l-1]=='s') или (str[l-1]=='c')))
то
2.1 res = res + `es'
2.2 выход из алгоритма
3 если (str[l]=='y') и (str[l-1] принадлежит множеству Consonant)
то
3.1 res [l] ='i'
3.2 res = res + `es'
3.3 выход из алгоритма
4 если (str[l]=='o')
то
4.1 res = res + `es'
4.2 выход из алгоритма
5 Результат res
конец
По способу образования -ed форм все глаголы делятся на правильные и неправильные. Неправильными глаголами называются глаголы, которые образуют -ed формы особыми способами. Количество неправильных глаголов невелико, но к ним относятся самые употребительные глаголы. Разработать алгоритмы образования словоформ для таких глаголов невозможно, поэтому базу данных этих словоформ пришлось заполнять вручную. Для занесения словоформ неправильных глаголов в базу данных использовалась таблица [7] неправильных глаголов, содержащая все неправильные глаголы английского языка.
4.2 Описание классов, реализованных в системе, и их функций
В ходе разработки был реализован ряд классов. Ниже, на рисунке 4.1, приведена схема классов с учетом их взаимодействия между собой и принадлежности к функциональному модулю.
Размещено на http://www.allbest.ru
Размещено на http://www.allbest.ru
- класс, реализованный в модуле TABLE |
Размещено на http://www.allbest.ru
- стандартный класс библиотеки C++ |
Размещено на http://www.allbest.ru
- класс, реализованный в консольном приложении |
Размещено на http://www.allbest.ru
- класс библиотеки РДМА_ИПИИ |
||
Размещено на http://www.allbest.ru
- ссылка на класс, который используется в данном классе
Размещено на http://www.allbest.ru
- наследование класса
Рисунок 4.1 - Схема организации классов ПО системы синтеза парадигм слов английского языка
Класс CTableDlg содержит в себе реализацию главного окна программы, пользовательский интерфейс и обработчики событий от элементов управления. В таблице 4.4 приведен список основных методов класса.
Таблица 4.4 - Список основных методов класса CTableDlg
Метод |
Описание |
|
void CTableDlg::OnCreate_Tree() |
Добавляет к дереву по строке элементы парадигмы начиная с 0 |
|
void CTableDlg::OnAddTree() |
Добавляет к существующей таблице данные из текстового файла |
|
void CTableDlg::OnSave_Tree() |
Сохраняет дерево |
|
void CTableDlg::OnLoad_Tree() |
Загружает дерево |
|
void CTableDlg::OnLemma_Find() |
Поиск леммы слова в дереве |
|
void CTableDlg::OnFind_Paradigm() |
Поиск парадигмы слова в дереве |
|
void CTableDlg::OnDel() |
Удаление из существующей таблицы данных, из текстового файла |
|
void CTableDlg::OnCancel() |
Выход |
Класс english_paradigm предназначен для формирования файла парадигм английского языка. Входными данными является файл со словарем начальных форм английских слов с метками для их словоизменения. В результате работы методов этого класса (см. табл. 4.5) на выходе консольного приложения создается файл в формате, требуемом библиотекой РДМА_ИПИИ, для добавления полученных словоформ в дерево.
Таблица 4.5 - Список основных методов класса english_paradigm
Метод |
Описание |
|
bool Noun_paradigm(char *str) |
Формирование парадигм существительных |
|
bool Verb_paradigm(char *str) |
Формирование парадигм глаголов |
|
bool Adj_paradigm(char *str) |
Формирование парадигм прилагательных |
Класс CTable2 принадлежит библиотеке РДМА_ИПИИ, разработанной отделом распознавания речи ИПИИ. В таблице 4.6 приведены функции очистки, загрузки, модификации и сохранения словарной базы, реализованные в этом классе.
Таблица 4.6 - Список основных методов класса CTable2
Метод |
Описание |
|
Функции очистки, загрузки и сохранения словарной базы (в случае успешного завершения возвращают нулевое значение) |
||
void Release() |
очищает словарную базу |
|
UINT LoadMem(char * Path). |
загружает в память дерево строк, сокращенную таблицу парадигм, таблицу связи дерева и сокращенной таблицы парадигм, а также индексы к ним |
|
UINT LoadDisk(char * Path) |
загружает таблицу связи дерева и сокращенной таблицы парадигм, а также индексы в память и устанавливает флажок, указывающий на то, что остальные данные читаются с диска. При этом переменная Path указывает путь к папке, хранящей файлы словарной базы: tab.dat, tree.dat, connect.dat. |
|
UINT SaveMem(char * Path) - функция |
сохраняет в папку по указанному пути Path данные словарной базы, хранимые в памяти. |
|
UINT SaveDisk(char * Path) |
сохраняет в папку по указанному пути Path данные словарной базы, частично хранимые в памяти, а частично на диске |
|
Функции модификации словарной базы |
||
UINT InsertRows (MyChar* wrdBud,MyChar* wrdUd,UINT LemmaNum,UINT MI,BOOL InsertRows); |
функция добавления словоформы в словарную базу. Параметры: wrdBud - строка написания словоформы без ударения, wrdUd - строка написания словоформы с учётом ударения, LemmaNum - номер в словарной базе леммы данной словоформы, MI - число, в котором с помощью набора битовых полей закодирована морфологическая информация о словоформе. При добавлении словоформы, которая является собственной леммой, в поле LemmaNum должен фигурировать номер записи в таблице словоформ, в которую будет помещена эта добавляемая словоформа. Для получения этого значения вызывают вспомогательную функцию UINT GetNextLemNum(). |
|
Метод |
Описание |
|
UINT DeleteRow (UINT Index,BOOL f) |
функция удаляет словоформы из словарной базы. Параметры: Index - номер словоформы в базе. |
|
Функции получения информации о словоформах |
||
UINT FindLemma(MyChar *word, CStringArray& Lemma,CUIntArray &ResLemm,CUIntArray &MI) |
Находит леммы для строки word. Результаты выполнения функции: Lemma - массив написаний леммы для словоформ, чьё написание совпадает со строкой word, ResLemm - массив номеров лемм в словарной базе (необходим для установления принадлежности словоформы конкретной парадигме), MI - массив значений морфологической информации словоформ с указанным написанием. |
|
void TranslateMI(UINT Mi, char*str) |
записывает в строку str текстовую расшифровку числового значения морфологической информации. |
|
UINT FindParadigm(MyChar *word, CStringArray& ParadigmBud,CStringArray& ParadigmUd,CUIntArray &MI,CUIntArray &TabNums,CUIntArray &LemmNums) |
находит парадигмы, содержащие словоформы с написанием word. Результаты выполнения функции: ParadigmBud (ParadigmUd) - массив написаний словоформ найденных парадигм без учёта ударения (с учётом ударения), MI - массив значений морфологической информации этих словоформ, LemmNums - массив номеров лемм в словарной базе (необходим для установления принадлежности словоформы конкретной парадигме). |
|
UINT GetWordNum (char* word) |
возвращает уникальный номер написания словоформы в базе. Возвращаемое значение - 0, если база не содержит словоформы с написанием word, или положительное число - идентификатор строки word в базе. |
|
UINT GetWord (UINT treeNum, char* str, int &buff_Size) |
возвращает написание словоформы, которое имеет в базе идентификатор treeNum. Передаваемые параметры: treeNum - идентификатор искомой строки; str - буффер для искомой строки; buff_Size - размер буфера для искомой строки. Возвращаемое значение: 0 - при успешном завершении функции, при этом str - содержит искомую строку; положительное число - в случае ошибки, когда параметр treeNum превышает значение наибольшего идентификатора строки в базе; -1 - в случае ошибки, когда размер буфера buff_Size меньше или равен длине искомой строки, при этом в параметр buff_Size функция записывает нужный размер буфера; -2 - в случае ошибки, когда база не содержит ни одной строки. |
|
Метод |
Описание |
|
Функции получения информации о словарной базе |
||
UINT GetTreeSize() |
позволяет определить количество строковых величин, хранимых в дереве строк. |
|
UINT GetRowsCount() |
возвращает количество словоформ в словарной базе. |
|
void Evaluate(char *FilePath) |
функция сохраняет в файл по указанному пути информацию о затратах памяти на хранение различных структур данных словарной базы. |
|
Служебные функции |
||
ReleasestringArr( vector<string>* &ParadigmUd) |
используются для очистки заполняемых функциями библиотеки переменных-указателей на vector<string> и vector<unsigned int>, соответственно. |
|
ReleaseCUIntArr( vector <unsigned int>*& TabNums) |
Вызов функций класса CTable2 происходит в методах класса CTableDlg, фрагменты листинга, содержащего обращения к функцям библиотеки РДМА_ИПИИ, приведены в приложении Б.
5. Анализ результатов функционирования системы
Комплексное тестирование необходимо для поисков несоответствия системы ее исходным целям. На стадии тестирования были проверены все «исключительные» ситуации, которые могут возникнуть при дальнейшем использовании данного программного продукта, будь то попытка открыть файл неверного формата, попытки синтеза парадигмы для леммы без указания или некорректного указания грамматической информации для словобразования и т.д. В основе обработки «исключительных» ситуаций, было предприняты следующие меры: неверные шаги пользователей будут сопровождаться появлением модальных диалоговых окон с информацией об ошибках пользователя или отключением соответствующих элементов управления. Ниже приведено более детальное описание тестирования.
Для запуска консольного приложения необходимо запустить исполняемый файл english_paradigm.exe. Для его корректной работы необходим размеченный словарь начальных форм слов английского языка, хранящийся в файле Engl_lem.txt в той же директории, что и english_paradigm.exe, формат разметки приведен в описании формата входных данных (пункт 3.2). Возможны следующие исключительные ситуации:
1) файл Engl_lem.txt не найден;
2) в файле словаря есть некорректно введенные записи (например, неверно введен буквенный символ, стоящий после слова, указывающий на его принадлежность к определенной части речи).
В первом случае система выдаст сообщение об ошибке (рис. 5.1), во втором -некорректные записи не обрабатываются, но предусмотрен их вывод файл Erorr.txt.
Рисунок 5.1 - Сообщение системы в случае отсутствия словаря начальных форм
Если файл Engl_lem.txt не содержит ошибок, то консольное приложение строит парадигмы слов словаря начальных форм, формирует файл Engl_par.dat в текущей директории и автоматически закрывается.
Для формирования базы данных словоформ в виде цифрового дерева, хранящего строковые величины, необходимо запустить исполняемый файл table.exe. Откроется диалоговое окно приложения TABLE (рис. В.1), содержащее поле ввода и кнопки «Создать/Добавить», «Загрузить», «Сохранить», «Найти парадигму» и «Выход».
В режиме наполнения на основе парадигм, считываемых из файла Engl_par.dat, создается дерево строк, сокращенная таблица парадигм, таблица связи дерева и сокращенной таблицы парадигм, которые хранятся в подкаталоге «Tree» в файлах tab.dat, tree.dat, connect.dat соответственно. Исключительная ситуация возможна при отсутствии Engl_par.dat, т.е. если консольное приложение не отработало. В этом случае по нажатии на кнопку
- «Создать/Добавить» появляется сообщение об ошибке (рис. 5.2);
- «Загрузить» загружается последняя сохраненная в файлах tab.dat, tree.dat, connect.dat база словоформ;
- «Сохранить» сохраняется пустое дерево строк;
- «Найти парадигму» появляется сообщение об ошибке (рис. 5.3).
Рисунок 5.2 - Сообщение системы об отсутствии файла Engl_par.dat, содержащего парадигмы слов английского языка
Рисунок 5.3 - Сообщение системы в случае отсутствия леммы в словаре начальных форм
Если файл Engl_par.dat сформирован, то на его основе можно создать базу словоформ в виде дерева с помощью кнопки «Создать/Добавить», чтобы ее сохранить, необходимо нажать кнопку «Сохранить». Созданную базу словоформ можно также добавить в предварительно загруженное дерево с помощью той же кнопки «Добавить». Для чего необходимо выполнить последовательность команд «Загрузить»-« Создать/Добавить»-«Сохранить».
В режиме поиска парадигмы, в который система переходит по нажатии на кнопку «Найти парадигму», возможны следующие исключительные ситуации:
1) нет базы словоформ;
2) нет введенной леммы в базе словоформ;
В обоих случаях система выдаст сообщение об ошибке (рис. 5.3).
Если парадигма успешно найдена, то в поле вывода появится список всех словоформ, образующих эту парадигму, с соответствующей МИ (рис. В.2).
Выводы
В результате выполнения курсовой работы был сделан достаточно полный обзор методов машинной морфологии и способов представления МИ, сформулирована постановка задачи, спроектирована и программно реализована система синтеза парадигм слов английского языка, проведено комплексное тестирование результатов ее работы, что необходимо для выявления ошибок в структуре алгоритмов программы, структуре входных и внутренних данных, а также для ликвидации конфликтных ситуаций с другим программным обеспечением. Это позволило сделать следующие выводы.
Морфологический компонент - неотъемлемая частью интеллектуальных АОТ-систем. Морфологический анализ/синтез неосуществим без машинного грамматического словаря, его использование позволяет проводить полный анализ словоформы, оперируя большим числом грамматических признаков, и повысить его точность. В связи с этим актуальность выбранной темы не вызывает сомнений.
Наиболее оптимальный способ представления МИ, сочетающий в себе удобства обработки и экономное хранение, - в виде битовых полей. Этот способ задания МИ реализован в модуле декларативного морфологического анализа слов русского языка РДМА_ИПИИ. Модуль снабжен средствами быстрого поиска строковых величин в большом массиве строк. В связи с этим для создания и хранения базы словоформ английского языка, а также быстрого поиска парадигм в созданной базе использовались функции библиотеки РДМА_ИПИИ.
Разработанное в результате выполнения курсовой работы ПО состоит из трех модулей. Помимо библиотеки РДМА_ИПИИ в систему входят: консольное приложение, позволяющее загрузить словарь начальных форм английских слов, содержащий грамматическую информацию, необходимую для словоизменения, и выполняющее синтез парадигм лемм этого словаря; приложение TABLE, предназначенное для адаптации под английский язык функций хранения базы словоформ и быстрого поиска парадигм в ней, реализованных в библиотеке РДМА_ИПИИ. ПО, имеющее такую архитектуру, обеспечивает следующие возможности: чтение и загрузка файла начальных форм английских слов; очистка, загрузка, модификация и сохранение базы английских словоформ; получение парадигмы с указанием МИ каждой словоформы по введенной пользователем лемме.
Тестирование ПО система синтеза парадигм английского языка не выявило несоответствие системы ее исходным целям, ошибок в структуре алгоритма программы, структуре входных и внутренних данных, а также конфликтных ситуаций с другим ПО.
Разработанный программный продукт может использоваться при создании средств морфологической обработки интеллектуальных систем понимания и автоматического анализа текстов на английском языке. Кроме того, созданную базу данных английских словоформ можно использовать для точной оценки морфологической информации словоформы в задачах поверхностного семантико-синтаксического анализа.
Список ссылок
1. Чесебиев И.А. Понимание и синтез текста компьютером. [Электронный ресурс]. URL : http//yabs. yandex.ru/ /resourse/bb/dif
2. Ножов И.М. Процессор автоматизированного морфологического анализа без словаря. Деревья и корреляция. //Диалог'2000. Труды конференции - Протвино, 2000. Т.2. С. 284-290.
3. А. А. Зализняк. Грамматический словарь русского языка. Словоизменение. -4-е изд., испр. и доп., М.: Русские словари, 2003. - 880 с.
4. Патент України № 78806 «Пристрій для збереження і пошуку рядкових величин та спосіб збереження і пошуку рядкових величин» Власник: Інститут проблем штучного інтелекту, винихідник Дорохіна Г.В. // Промислова власність. Бюл. № 5, 25.04.2007.
5. Английский язык - Словари. Электронный ресурс]. URL : http://babylonians.narod.ru/english/dict5.html
6. Английский язык. - Грамматика - Глагол. [Электронный ресурс]. URL : http://www.alleng.ru/mybook/3gram/6verb_01.htm
7. Английская грамматика с примерами бесплатно. Практическая грамматика английского языка/ Английский онлайн. [Электронный ресурс]. URL : http://www.en365.ru/irregular.htm
Приложение А
Способ представления морфологической информации
Таблица А.1 - Представление морфологической информации в модуле морфологического анализа РДМА
Значение |
Категория |
Значение |
||
Числовое |
Макроопределения |
|||
0x00000001 |
Nominative |
Падеж |
Именительный |
|
0x00000002 |
_Genitive |
Родительный |
||
0x00000003 |
_Dative |
Дательный |
||
0x00000004 |
_Accusative |
Винительный |
||
0x00000005 |
_Ablative |
Творительный |
||
0x00000006 |
_Locative |
Предложный |
||
0x00000007 |
_Vocative |
Звательный |
||
0x00000008 |
_Masculine |
Род |
Мужской |
|
0x00000010 |
_Feminine |
Женский |
||
0x00000018 |
_Neuter |
Средний |
||
0x00000020 |
_Singular |
Число |
Единственное |
|
0x00000040 |
_Plural |
Множественное |
||
0x00000080 |
_Past |
Время |
Прошедшее |
|
0x00000100 |
_Future |
Будущее |
||
0x00000180 |
_Continius |
Настоящее |
||
0x00000200 |
_FaceFir |
Лицо |
1-е |
|
0x00000400 |
_FaceSec |
2-е |
||
0x00000600 |
_FaceThi |
3-е |
||
0x00000800 |
_Active |
Залог |
Действительный |
|
0x00001000 |
_Passive |
Страдательный |
||
0x00002000 |
_ComparativeFormOfAdj |
Степень сравнения, краткость |
Сравнительная |
|
0x00004000 |
_ExellentFormOfAdj |
Превосходная |
||
0x00006000 |
_ShortFormOfAdj |
Краткая форма |
||
0x00008000 |
_Verb |
Часть речи |
Глагол |
|
0x00010000 |
_Participle |
Причастие |
||
0x00018000 |
_Gerund |
Деепричастие |
||
0x00020000 |
_Adjective |
Прилагательное |
||
0x00028000 |
_Noun |
Существительное |
||
0x00030000 |
_Pronoun |
Местоимение |
||
0x00038000 |
_Numeral |
Числительное |
||
0x00040000 |
_AdVerb |
Наречие |
||
0x00048000 |
_Preposition |
Предлог |
||
0x00050000 |
_Conjunction |
Союз |
||
0x00058000 |
_Particle |
Частица |
||
0x00060000 |
_Interjection |
Междометие |
||
0x00068000 |
_Predicate |
Предикатив |
||
0x00070000 |
_Poslelog |
Послелог |
||
0x00078000 |
_ComparativeWord |
Сравнительное слово |
||
0x00080000 |
_Animate |
Одушевленность |
Одушевленное |
|
0x00100000 |
_NotAnimate |
Неодушевленное |
||
Значение |
Категория |
Значение |
||
Числовое |
Макроопределения |
|||
0x00200000 |
_Imperative |
Наклонение |
Повелительное |
|
0x00400000 |
_Accomplished |
Вид глагола |
Совершенный |
|
0x00800000 |
_Incomplete |
Несовершенный |
||
0x00C00000 |
_Accompl_Incompl |
Совершенный/несовершенный |
||
0x01000000 |
_Count |
Тип числительного |
Количественное |
|
0x02000000 |
_Ordinal |
Порядковое |
||
0x03000000 |
_PlurLive |
Собирательное одушевлённое |
||
0x04000000 |
_PronNoun |
Тип местоимения |
Местоимение-существительное |
|
0x08000000 |
_PronAdject |
Местоимение-прилагательное |
||
0x0C000000 |
_PronPersonal |
Личное местоимение |
||
0x10000000 |
_PronImpersonal |
Безличное |
||
0x10000000 |
_VerbIntransitive |
Непереходный глагол |
||
0x10000000 |
_VerbReflexive |
Возвратная форма глагола |
||
0x80000000 |
_Introductory |
Вводное слово |
Таблица А.2 - Маски категорий морфологической информации в модуле морфологического анализа РДМА
Числовое значение |
Макроопределение |
Маска категории |
|
0x00000007 |
case_mask |
Падеж |
|
0x00000018 |
rod_mask |
Род |
|
0x00000060 |
count_mask |
Число |
|
0x00000180 |
time_mask |
Время |
|
0x00000600 |
face_mask |
Лицо |
|
0x00001800 |
active_passive_mask |
Залог |
|
0x00006000 |
adjfrm_mask |
Степень сравнения,краткость |
|
0x00078000 |
part_of_speech_mask |
Часть речи |
|
0x00180000 |
animate_mask |
Одушевлённость |
|
0x00C00000 |
aspect_of_verb_mask |
Вид глагола |
|
0x03000000 |
number_type_mask |
Тип числительного |
|
0x1C000000 |
pron_type_mask |
Тип местоимения |
Таблица А.3 - Представление морфологической информации английских словоформ
Значение |
Катего-рия |
Значение |
||
Числовое |
Макроопределения |
|||
0x00000001 |
_Nominative_en |
Падеж |
Именительный |
|
0x00000002 |
_Prityag_en |
Притяжательный |
||
0x00000008 |
Singular_en |
Число |
Единственное |
|
0x00000010 |
_Plural_en |
Множественное |
||
0x00000020 |
_Active_en |
Залог |
Действительный |
|
0x00000040 |
_Passive_en |
Страдательный |
||
0x00000080 |
_ComparativeFormOfAdj_en |
Степень |
Сравнительная |
|
0x00000100 |
_ExellentFormOfAdj_en |
Превосходная |
||
Значение |
Катего-рия |
Значение |
||
Числовое |
Макроопределения |
|||
0x00000200 |
_Verb_en |
Часть речи |
Глагол |
|
0x00000400 |
_Participle_en |
Причастие |
||
0x00000600 |
_Gerund_en |
Деепричастие |
||
0x00000800 |
_Adjective_en |
Прилагательное |
||
0x00000А00 |
_Noun_en |
Существительное |
||
0x00000С00 |
_Pronoun_en |
Местоимение |
||
0x00000Е00 |
_Numeral_en |
Числительное |
||
0x00001000 |
_AdVerb_en |
Наречие |
||
0x00001200 |
_Preposition_en |
Предлог |
||
0x00001400 |
_Conjunction_en |
Союз |
||
0x00001600 |
_Particle_en |
Частица |
||
0x00001800 |
_Interjection_en |
Междометие |
||
0x00002000 |
_1st_Verb_form_en |
Простые глаголь-ные формы |
Инфинитив |
|
0x00004000 |
_2st_Verb_form_en |
Прошедшее неопределенное (Past Indefinite) |
||
0x00006000 |
_3st_Verb_form_en |
причастие прошедшего времени (Participle II) |
||
0x00008000 |
_4st_Verb_form_en |
причастие настоящего времени (Participle I) |
||
0x0000А000 |
_5st_Verb_form_en |
Настоящее неопределенное (Present Indefinite) 3-его лица ед. числа |
Таблица А.4 - Маски категорий морфологической информации английских словоформ
Числовое значение |
Макроопределение |
Маска категории |
|
0x00000007 |
case_mask_eng |
Падеж |
|
0x00000018 |
count_mask_eng |
Число |
|
0x00000060 |
active_passive_mask_eng |
Залог |
|
0x00000180 |
adjfrm_mask_eng |
Степень сравнения |
|
0x00001F00 |
part_of_speech_mask_eng |
часть речи |
|
0x0000E000 |
aspect_of_verb_mask_en |
Вид глагола |
Приложение Б
Фрагменты листинга
Загрузка словарной базы
GetCurrentDirectory(MAX_PATH,path);
strcat(path,"\\");
strcat(path,"Tree\\");
LoadDisk(path);
Создание новой базы
Release() //очистить базу;
FILE* f=fopen(“paradigms.txt”,"rt");
if (!f){AfxMessageBox("Ошибка открытия файла paradigms.txt” );return;}
while(!feof(f)){
memset(str,0,600);
fgets(str,599,f);
if(str[0]==0)continue;
sscanf(str,"%s\t%d\t%d",wrdBud,&lemm,&MI);// слова без ударения
if(lemm!=0) // получаем номер леммы следующей парадигмы в базе
LemmNumber = GetNextLemNum();
count++;
InsertRows(wrdBud,"",LemmNumber,MI,false)// добавляем в таблицу записи для всех словоформ этой словоформы;
}
fclose(f);
Добавление парадигм в базу отличается от приведенного выше фрагмента листинга отсутствием вызова функции Release().
Морфологический синтез, проверка наличия словоформы в словаре
// Объявляем указатели на массивы возвращаемых значений и присваиваем им значение NULL
vector<string>*Lemma=NULL
vector<string> *ResLemms=NULL;
vector<unsigned int> *MI=NULL;
vector <string>* ParadigmBud=NULL
vector<unsigned int> *LemmNum=NULL;
char word[300];
char str_Mi[300], str[600];
sprintf(word,"отсеки");
UINT res=FindLemma(word, ResLemms,LemmNum,MI);
i=0;
if (ResLemms->size()==0)
MessageBox("Лемма слова не найдена", NULL,MB_OK);
else{
for (i=0; i<ResLemms->size(); i++){
memset(str_Mi,0,MAX_PATH); // копируем данные из массивов возвращаемых значений
TranslateMI((*MI)[i],str_Mi);
printf("%s %s %d",(*ResLemms)[i].c_str(),str_Mi,(*LemmNum)[i]);
}
}
// Очистка указателей на массивы возвращаемых значений
ReleasestringArr(ResLemms);
ReleaseCUIntArr(LemmNum);
ReleaseCUIntArr(MI);
Приложение В
Инструкция пользователя
В каталоге, где хранится english_paradigm.exe (в дальнейшем будем называть этот каталог текущим), формируется размеченный словарь начальных форм в виде файла Engl_lem.txt, представляющий собой массив строк, каждая из которых содержит начальную форму английского слова, после чего следует метка, содержащая МИ: буквенный символ, соответствующий части речи, и дополнительная метка, которая может отсутствовать в записи (см. пункт 3.2.).
После создания словаря начальных форм необходимо запустить исполняемый файл english_paradigm.exe, являющийся консольным приложением, которое для каждой леммы словаря формирует парадигму. Сформированные парадигмы записываются в файл Engl_par.dat, хранящийся в текущем каталоге. После создания Engl_par.dat консольное приложение автоматически закрывается.
Приложение Table, предназначенное для построения дерева словоформ, его модификации и поиска в нем парадигм, запускается с помощью исполняемого файла Table.exe. Появляется главное окно приложения, изображенное на рисунке В.1.
Рисунок В.1 - Главное окно приложения Table.exe
Для создания дерева словоформ на основе парадигм, сохраненных в файле Engl_par.dat, необходимо нажать кнопку «Создать/Добавить». Созданное дерево хранится в кэше до закрытия программы. При желании его можно сохранить на диск нажатием на кнопку «Сохранить». При этом дерево автоматически сохраняется в файлах tab.dat, tree.dat, connect.dat, которые находятся в подкаталоге «Tree» и изначально являются пустыми.
Для модификации словаря словоформ (в случае изменения словаря начальных форм Engl_lem.txt путем добавления/удаления записей и перезапуска консольного приложения), необходимо загрузить существующее дерево с помощью кнопки «Загрузить», после чего нажатием на кнопку «Создать/Добавить» в загруженное дерево добавляются парадигмы из обновленного файла Engl_par.dat. Полученный результат сохраняется на диск нажатием на кнопку «Сохранить».
Поиск парадигмы осуществляется в загруженном дереве, в случае его отсутствия - в кэше. Для чего пользователю в поле ввода необходимо ввести лемму и нажать на кнопку «Найти парадигму». В случае успешного поиска парадигма выводится в поле вывода в виде списка словоформ с соответствующей МИ (рис. В.2). Если лемма отсутствует в базе начальных форм, то появляется сообщение об ошибке.
Рисунок В.2 - Успешное завершение поиска парадигмы для леммы «round»
Размещено на Allbest.ru
Подобные документы
Работа с текстом, повторение правил пунктуации и грамматики русского языка. Порядок определения и доказательства частеречной принадлежности слов. Морфологический анализ данных словоформ. Анализ и доказательство частеречной омонимии исследуемых слов.
контрольная работа [12,1 K], добавлен 13.05.2010Общие закономерности перевода и делового английского языка в устной и письменной речи. Нюансы перевода деловой переписки. Грамматические особенности письменного английского языка делового общения. Существующие нюансы в употреблении английских слов.
курсовая работа [49,9 K], добавлен 07.01.2014История английского языка. Классификация грамматики английского языка, его морфология и стилистика. Язык как индикатор этнического менталитета. Авторские методы изучения английской грамматики. Формы личных местоимений. Времена английского глагола.
курсовая работа [51,4 K], добавлен 10.09.2010Значение и функции английских предлогов. Языковая картина мира. Роль предлога в предложении. Сравнительный анализ предлогов, взаимовлияние британского и американского диалектов английского языка. История появления американского варианта английского языка.
курсовая работа [49,0 K], добавлен 25.11.2011Грамматические категории английского глагола. Категория времени английского глагола. Специальные формы английского глагола. Времена глагола. Применение английских глаголов в определенном контексте. Технические отличия английского языка от русского.
курсовая работа [212,7 K], добавлен 30.10.2008Понятие инференциальности в лингвистике и ее семантический объем. Средства выражения этого понятия в английском языке. Лексическое значение модальных слов английского языка "maybe" и "possibly", их параллелизм при репрезентации инференциальной семантики.
статья [14,0 K], добавлен 15.08.2013Тенденции языка к упрощению орфографии. Исследование трансформаций английского языка у его носителей. Лингвистический анализ американского, шотландского, ирландского, индийского, африканского, австралийского вариантов. Лексика английских канадизмов.
реферат [45,1 K], добавлен 20.02.2015Целенаправленное и неосознанное влияние общества на систему языка. Языковая политика. Роль социальных факторов в развитии системы языка. Классификация социолингвистических факторов. Влияние социальных факторов на фонетическую и морфологическую систему.
курсовая работа [75,3 K], добавлен 23.03.2015Изучение орфографии и пунктуации английского языка, правила расстановки знаков пунктуации, верное написание слов, применение правила переноса. Различия в написании между американским и британским вариантами английского языка. Образцы составления писем.
доклад [17,9 K], добавлен 09.10.2009Ознакомление с историей развития английского языка; основы древнеанглийского языка. Рассмотрение этимологической структуры лексики. Скандинавское влияние на литературу. Латинские и греческие элементы в говоре. Реанимация греческой и латинской учености.
курсовая работа [52,8 K], добавлен 25.06.2014