Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Бакалавр_Рамки_07.doc
Скачиваний:
10
Добавлен:
27.03.2015
Размер:
1.22 Mб
Скачать

Выбор текста предметной области, на основе которого будет происходить синтез

Построение словарей для словосочетаний и триграмм

Считывание условий синтеза нового текста

Генерация текста

Вывод результата

Рисунок 2 – Основной поток

2.4.2 Разбор модулей

        1. Модуль генерации текста

Основными функциями модуля генерации текста являются:

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

Изм.

Лист

докум.

Подп.

Дата