- •Нижегородский Государственный Технический Университет им р.Е. Алексеева
- •Содержание
- •1.1.1.1 Шаблонные системы
- •1.1.1.2 Генерация текстов на основе базы данных
- •1.1.1.3 Генерация текстов из семантического представления
- •Морфологический разбор слов
- •1.3.3 Выбор средств реализации
- •2.2 Разработка алгоритма морфологического разбора
- •Выбор текста предметной области, на основе которого будет происходить синтез
- •Построение словарей для словосочетаний и триграмм
- •Считывание условий синтеза нового текста
- •Генерация текста
- •Вывод результата
- •2.4.3 Соглашение об именовании классов, переменных и методов
- •3 Расчеты и оценки качества получаемого текста
- •4 Разработка руководства пользователя
Выбор текста предметной области, на основе которого будет происходить синтез
Построение словарей для словосочетаний и триграмм
Считывание условий синтеза нового текста
Генерация текста
Вывод результата
Рисунок 2 – Основной поток
2.4.2 Разбор модулей
-
Модуль генерации текста
Основными функциями модуля генерации текста являются:
private Dictionary<string, WordPairsinDictionary> CreateDictionaryforTwo(string)
private Dictionary<string, WordPairsinDictionary> CreateDictionaryforThree(string)
private static string PrintDictionary(Dictionary<string, WordPairsinDictionary>)
private string CreateText(bool, int, bool, bool).
а) private Dictionary<string, WordPairsinDictionary> CreateDictionaryforTwo(string) и private Dictionary<string, WordPairsinDictionary> CreateDictionaryforThree(string). Данные функции аналогичны по структуре и рассматриваются вместе. Они предназначены для создания словарей словосочетаний и триграмм.
|
|
|
|
|
ВКР-НГТУ-230200.62-(07-КТ-2)-28-2010 ПЗ
|
Лист |
|
|
|
|
|
||
22 |
||||||
Изм. |
Лист |
№ докум. |
Подп. |
Дата |
В качестве операнда функциям передается строковая переменная, содержащая текст, считанный из исходного файла. Посредством регулярных выражений, из входного текста выделяются слова или словосочетания и составляются служебные словари. Тип возвращаемого значения - Dictionary<string, WordPairsinDictionary>.
Для ускорения обработки текста эти функции выводятся в отдельный поток, функционирующий параллельно основному потоку программы. Такая реализация так же исключает возможность зависания главного окна приложения при выполнении на одноядерной ЭВМ. Исходный код представлен в Приложении А.
б) private static string PrintDictionary(Dictionary<string, WordPairsinDictionary>). Данная функция предназначена для корректного отображения содержимого словарей. Применяется для вывода статистической информации по входному тексту. В качестве входных данных ей передается словарь, содержимое которого необходимо вывести на экран или в файл. Тип возвращаемого значения – строка.
в) Функция private string CreateText(bool frequency, int MaxCount, bool threes, bool synonims) служит для генерации нового текста. В качестве операндов принимает 3 логических значения и 1 целочисленное:
-
bool frequency – если значение истина, то используется алгоритм построения текста на основе частотных зависимостей, иначе – случайных;
-
int MaxCount – количество слов в выходном тексте;
-
bool threes – если значение истина, то при синтезе текста применяются оба служебных словаря, иначе – только словарь словосочетаний;
-
bool synonyms – если значение истина, то некоторые слова заменяются синонимами.
Тип возвращаемого значения – string. Исходный код представлен в Приложении А.
2.4.2.2 Модуль морфологического разбора и словарь синонимов
Морфологический анализ реализован с помощью функции
public string GetWordBase(string, MySqlConnection)
Функция предназначена для выделения основы слова (для поиска синонимов) и добавления правильного окончания к полученному синониму. В качестве параметров ей передается анализируемое слово и подключение к базе MySQL. Тип возвращаемого значения – строка. Исходный код представлен в Приложении А.
Словарь синонимов взят с ресурса http://www.blogka.ru/dictfree.php где он свободно распространяется. Собственно он состоит из двух частей, из самого словаря и из таблицы соответствия.
|
|
|
|
|
ВКР-НГТУ-230200.62-(07-КТ-2)-28-2010 ПЗ
|
Лист |
|
|
|
|
|
||
23 |
||||||
Изм. |
Лист |
№ докум. |
Подп. |
Дата |
Файлы являются сжатыми gzip-ом инструкциями MySQL. В словаре синонимов примерно 300000 слов, а таблица синонимов содержит порядка 1200000 связей. Для уменьшения объема базы удалим из словаря все слова для которых нет синонима и неиспользуемые поля. В результате получим структуру из двух таблиц sbsw и wrsyn.
Таблица sbsw используется как хранилище словоформ и некоторой морфологической информации о них. Поля таблицы:
-
row_id – тип int(11), not_null, auto_increment, primary key, index – уникальный номер записи в таблице. Индексация позволяет быстрее обнаружить отдельные записи в файле и сократить время выполнения запросов пользователей.
-
fwid – тип int(11) – фактический номер слова.
-
fword – тип char(50) кодировка cp1251_general_ci – само слово, приведенное к определенному стандартному виду.
-
fbsw – тип char(40) кодировка cp1251_general_ci – словарная база, то есть слово без окончания.
-
fsuff – тип char(10) кодировка cp1251_general_ci – суффикс слова.
-
fnmpart – тип char(5) кодировка cp1251_general_ci – обозначение части речи: «прил.», «сущ.» и т.п.
Таблица wrsyn применяется для отображения синонимических связей между словами. Поля таблицы:
-
row_id – тип int(11), not_null, auto_increment, primary key, index – уникальный номер записи в таблице. Индексация позволяет быстрее обнаружить отдельные записи в файле и сократить время выполнения запросов пользователей.
-
fwid – тип int(11) – фактический номер слова из словаря (слово для которого подбирается синоним).
-
fsyn – тип int(11) – фактический номер синонима слова из словаря.
Для коммуникации с базой данных используются функции:
internal void MakeConntect()
public string GetSynonim(string, MySqlConnection)
а) internal void MakeConntect(). Применяется для создания подключения к базе данных на сервере. Не принимает и не возвращает значений.
б) public string GetSynonim(string, MySqlConnection). Данная функция предназначена для получения синонимичной основы слова. В качестве операндов получает основу слова для которого требуется определить синоним и подключение к базе MySQL. Тип возвращаемого значения – строка. В зависимости от результата поиска синонима возвращает входное слово или синонимичную основу. Исходный код представлен в Приложении А.
|
|
|
|
|
ВКР-НГТУ-230200.62-(07-КТ-2)-28-2010 ПЗ
|
Лист |
|
|
|
|
|
||
24 |
||||||
Изм. |
Лист |
№ докум. |
Подп. |
Дата |