Система контент-анализа естественно-языковых текстов

Дипломная работа - Компьютеры, программирование

Другие дипломы по предмету Компьютеры, программирование



?ми, составляющими собственно список, не напрямую, а через специальный объект "модель данных". Интерфейс ListModel определяет минимальный набор методов, который требуется классу JList от "модели данных". Эти методы позволяют узнать количество элементов в списке (метод getSize), выбрать элемент списка (метод getElementAt), а также зарегистрировать и отключить слушателей (методы addListDataListener и removeListDataListener ).

Класс DefaultListModel удовлетворяет интерфейсу ListModel, имеет методы для добавления элементов в список (методы add и addElement), модификации существующих элементов (setElementAt) и удаления из списка (ряд методов remove). Для реализации модифицируемого списка типа JList можно: построить объект класса DefaultListModel, построить объект класса JList с использованием конструктора public JList(ListModel dataModel), передав ему в качестве параметра построенный объект класса DefaultListModel. Выполнять модификации списка через объект класса DefaultListModel - визуальное представление списка при этом будет меняться автоматически.

2.5 Разработка архитектуры системы

.5.1 Разбиение задачи на подзадачи

В соответствии с требованиями технического задания задачу на дипломное проектирование можно разделить на следующие подзадачи:

-разработка библиотеки классов морфологического словаря,

-разработка библиотеки классов стоп-словаря,

-разработка модуля графематического анализа и создания таблицы лексем,

-разработка визуальной среды для контент-анализа текстов и работы со словарями.

Архитектуру системы можно представить в виде диаграммы пакетов, составляющих структуру проекта (рисунок 10).

Рисунок 10 - Диаграмма пакетов проекта

Пакет dictionaries содержит классы, реализующие структуру стоп-словаря и морфологического словаря, а также методы работы с ними.

Пакет analysis содержит классы реализующие разбор текста, а также ряд других вспомогательных классов.

Пакет interfaces содержит классы, через которые осуществляется взаимодействие пользователя с системой.

2.5.2 Разработка библиотеки классов словарей

Структуру библиотеки классов морфословаря и стоп-словаря можно представить в виде следующей диаграммы классов (рисунок 11).

Рисунок 11 - Диаграмма классов пакета dictionaries

В рамках программной модели классы Btree и Leaf являются реализацией морфологического словаря. При этом класс Btree предназначен для построения структуры сильноветвящегося дерева, в котором непосредственно хранятся словоформы языка. В свою очередь, объекты класса Leaf являются вершинами указанного дерева. В классе Hash реализована хеш-функция[6] и методы создания хеш-таблиц с её помощью. Класс StopMain отвечает за загрузку стоп-словаря в оперативную память и реализует метод поиска стоп-слов.

Управляющий класс MorphMain предназначен для загрузки морфословаря в оперативную память, создания необходимой структуры дерева, размещения словоформ; предоставляет метод поиска групп родственных слов, а также выполняет ряд других вспомогательных служебных функций.

Атрибуты класса представлены в таблице 5.

Таблица 5 - Атрибуты класса MorphMain

НазваниеНазначениеТипНачальное значениеMDУказатель на корень дереваBtreenulllistosnovВершина дерева, помеченная признаком основыLeafnullpostosnovАффикс текущей словоформыStringflagosnovУстанавливается во время поиска словоформ, свидетельствует о нахождении вложенных основBooleanFalseflagpostСвидетельствует, найден ли аффикс текущей словоформыBooleanFalseInfoХранит статистическую информацию о результатах последнего анализаString

Класс имеет ряд других вспомогательных атрибутов служебного назначения (для связи с формами и т. п.). Поиск родственных слов реализует метод getRelativeswords(). Его реализация приведена в разделе 2.6.3.

Спецификация класса MorphMain на языке OCL приведена на рисунке 12.

context MorphMain inv: self.MD != null

Рисунок 12 - Инвариант класса MorphMain

2.5.3 Разработка библиотеки классов разбора и частотного анализа

Структуру библиотеки классов разбора и анализа можно представить в виде следующей диаграммы классов (рисунок 13).

морфологический анализатор обработка текст

Рисунок 13 - Диаграмма классов пакета analysis

Класс SortTree используется для построения бинарного дерева сортировки, необходимого для корректного получения результатов анализа. Класс StartOptions содержит настройки работы системы, такие как пути к файлам словарей, а также порог частоты по умолчанию. Класс Parser реализует графематический разбор текста, и формирует таблицу лексем. Класс Union ялвяется управляющим классом и реализует алгоритм склеивания словоформ (см. приложение 1, стр. 57, метод Execute()), рассмотренный в подразделе 2.3. Объекты класса ForListElem является элементами списка таблицы лексем, использующегося для разрешения коллизий при хешировании.

Атрибуты класса ForListElem приведены в таблице 6.

Таблица 6 - Атрибуты класса ForListElem

НазваниеНазначениеТипНачальноезначениеwordХранит лексему(слово из текста)StringcountЧастота повторения лексемы в текстеint1count_wordКоличество словоформ, встречающихся в текстеInt1in_dictОтражает наличие текущей лексемы в морфологическом словареbooleanFalsedeletedОтражает признак удаления словоформы. Используется при свертке словоформBooleanFalse

Спецификация класса ForListElem на языке OCL приведена на рисунке 14.

context ForListElem inv:.word != null and.count_word >= 0 and.count >=0

Рисунок 14 - Инвариант класса ForListElem

2.5.4 Разработка библиотеки классов взаимодействия с пользователем

Структуру библиотеки интерфейсных классов можно представ