3 Проектирование программы
3.1 Анализ языка программирование программирования Java
Язык программирования Java – это высокоуровневый объектно-ориентированный язык, разработанный в компании Sun Microsystems. С момента появления языка Java его возможности и сферы использования значительно увеличились. В настоящее время принято говорить о Java не как об отдельном языке программирования, а как о целом семействе технологий.
К преимуществам языка программирования Java можно отнести следующее:
скорость разработки;
кроссплатформенность;
позиционируется как язык с обратной совместимостью;
использование JIT-компилятора;
оптимизация байт кода компилятором.
Недостатки Java:
ресурсоемкость;
обратная совместимость поддерживается не везде.
Java – наиболее подходящий язык для разработки масштабных коммерческих проектов, требующих обработки огромных потоков данных, что весьма способствует облегчению масштабируемости системы.
3.2 Архитектура приложения
Для построение эффективной масштабируемой системы необходимо продумать пути транзакций данных внутри системы, исходя из перспективы расширения приложения, увеличения объема получаемых данных, необходимой легкости модификации без значительных изменений в коде системы с целью повышения точности классификации и оптимизации работы приложения с учетом возможности разработки новых, более эффективных разрабатываемых алгоритмов обработки данных, и удобном порядке взаимодействия пользователя с системой.Начальным шагом на пути к построению такой системы есть построение общей модели архитектуры приложения, изображенной на рисунке 3.1.
Рисунок 3.1 – Структура программы
Разделение системы на четыре основные подчасти позволит вносить изменения в систему в определенном модуле, улучшая его работу или заменяя на другой, при сохраняющемся интерфейсе взаимодействия с данным подмодулем.
Главным собирающим всю систему воедино модулем есть блок «Оболочка». В данном модуле происходит взаимодействие с пользователем с целью получения от него ссылки на библиотеку классифицируемых данных и выдачи пользователю данных о принадлежности к определенному классу некоторой текстовой информации. Более детально структура передачи данных изображена на рисунке 3.2.
Рисунок 3.2 – Передача данных в системе
Для проектирования эффективной оболочки для системы необходимо определить круг возможных действий пользователя в системе показный рисунке 3.3.
Рисунок 3.3 –Диаграмма прецедентов системы
Алгоритмы описывающие взаимодействие модулей в программе представлены на рис. 3.4 – 3.7.
Рисунок 3.4 –Блок-схема алгоритма использования программы
Рисунок 3.5 –Блок-схема алгоритма построение структуры библиотеки
Рисунок 3.6 –Блок-схема алгоритма определения функции классификации данных в системе
Рисунок 3.7 – Блок-схема алгоритма классификации текста
4 ПрактическАя реализация и анализ результатов работы классификатора
4.1Демонстрация работы системы
Для запуска программы на выполнение необходимо запустить исполняемый файл java-машины под названием BookerV.jar
Рисунок 4.1 – Файловая структура конечного продукта
Интерфейс программы, показанный на рисунке 4.2, построен с помощью визуальных средств проектирования в среде разработки NetBeans с помощью технологии jxml.
Рисунок 4.2 – Визуальный интерфейс программного модуля
Визуальная оболочка программы состоит из четырех основных структурых блоков:
блок загрузки библиотеки;
блок системных настроек;
блок ввода информации на классификацию;
блок вывода информации.
4.1.1 Блок загрузки библиотеки
Для оптимизации и эргономики был предпринят подход универсализации входной информации через один шлюз, с возможностью дополнительных настроек. Блок отмечен выделением на рисунке 4.3.
Рисунок 4.3 –Блок загрузки библиотеки
В качестве библиотеки может выступать файл или директория операционной системы. При этом есть возможность подгрузки библиотеки из десериализованного файла библиотеки который сохраняется с расширением .data.
При выборе файла (LIB_NAME.data / struct.cvs) или директории необходимо сделать правильные преднастройки для анализа библиотеки. Пример настроек приведен на рисунке 4.4.
а) б)
Рисунок 4.4 – Настройки для системы: а) для cvs подобных структур б) для директорий операционной системы
4.1.2 Блок системных настроек
Для более гибкой настройки программы был реализован блок системных настроек, показанный на рисунке 4.5. В нем можно указать путь к дирректории храненния стоп-слов, имя десериализованой библиотеки и имя файла, в который будет заноситься результат классификации.
Если поля оставить открытыми, они сгенерируются автоматически, кроме поляStop-Words. Пользовательские стоп-слова будут учитываться, если поставить соответствующую галочку, однако это сильнозамедляет работусистемы.
Рисунок 4. 5 – Блок системных настроек
4.1.3 Блок ввода данных для классификации
Для упрощения взаимодействия с системой был реализован алгоритм определения тип входящей информации перед её классификацией,что позволяет вводить информацию для классификации следующим образом:
ссылки на файлы в расширениях .txt и .cvs;
списки ссылок воспринимаемый построчно;
текст в одну строчку;
текст многострочный (для этого необходимо стереть разделитель);
текстовые сvs-подобные структуры.
Расположение блока ввода было выбрано из соображений эргономики (рис. 4.6).
Для запуска классификатора необходимо нажать клавишуClassify, которая становится доступной,если в активной памяти приложения есть данные о библиотеке.
Рисунок 4.6–Блок ввода информации для классификации
Пример использования блока ввода при разных вариантах вводимых данных отоборажен на рисунке 4.7.
а)
б)
Рисунок 4.7 –Пример ввода данных: а) однострочного текста; б) многострочного текста
4.1.4 Блок вывода результатов классификации
В данном блоке отображаются результаты классификации. Первое, что классифицируется – это файлы в корне библиотеки и не классифицированные тексты из файла.
Рисунок 4.9 – Блок вывода информации
Для сохранения полученного результата необходимо нажать кнопку интерфейса «Saveresult». Структура библиотеки сохраняется самостоятельно по окончании сканирования указанного источника.Для выбора пользовательского имени десериализованного файла библиотекинеобходимо ввести его заранее, используя полный путь к желаемому создаваемому файлу.При отсутствии пользовательского файла файл создается в корне хранимого источника библиотеки..
4.2Примерыи выборки
Приложение создано с целью обработки большого количества текстовой информации, его можно использовать на серверных платформах, в различных библиотеках, а также в различных учереждениях где присутвует большой объем документооборота.В качестве обучающей выборки выбраны несколько вариантов бесплатных библиотек один из которых изображен на рисунке 4.10.
Рисунок 4.10– Пример части обучающей выборки
Поскольку в системе реализована возможность пользовательского создания или редактирования личных списков стоп-слов путем указания путихранения текстовых файлов с их наборами,каждый отдельный файл считается отдельной группой и проход по группам пользовательских стоп-слов происходит в порядке их хранения в директории.
Система тестировалась на основе свободно распространяемых списков стоп-слов от компании Google. Часть выборки групп стоп-слов изображена на рисунке 4.11.
Рисунок 4.11– Пример части библиотеки стоп-слов
Каждое шумовое слов в коллекции стоп-слов находится в отдельной строке для простоты програмной обработки. Пример хранимых стоп-слов изображен на примере 4.1.
а
и
ж
м
о
на
не
ни
об
но
он
мне
мои
мож
она
Пример 4.1 – Пример части выборки стоп слов
На разных выборках библиотек получаются персональные наборы дексрипторов двух видов: аббревиатуры, образец которых можно увидеть впримере 4.2 и общие ключевые слова,представленные в примере 4.3.
CoVer, ECL, HDL, IP, JPEG, MIMO, OFDM, PACKAGE, QAM, QoS, RTO, TCP, WiMAX, ZnSe, xDSL, xZnxTe, АВИС, АКФ, АН, АПС, АРСС, АРФ, АСУ, АСУП, АТ, АТС, АЧХ, АЭС, БА, БИС, БПИС, БТС, ВА, ВЗ, ВКАС, ВОЛС, ВОСП, ВТСП, ВУЗа, ВЦКП, ВЧ, ГАМОВ, ГАМОС, ГДН, ГДС, ГЗК, ГИ, ГИАСУ, ГНСС, ГПВЯ, ГР, ГТС, ДНФ, ДОЛ, ДОС, ДП, ЕК, ЕО, ЕСКД, ЕлектроМир, ЖКТ, ЗD, ИВК, ИВПИ, ИК, ИКСМД, ИНС, ИС, ИУС, ИЭТ, КВЧ, КИС, КЛС, КНФ, КП, СТА, СТЗ, СТИС, СУКП, СФ, ТАП, ТВ, ТКС, ТО, ТП, ТС, ТСС, ТТЗ, ТТК, УБП, УЗК, УКВ, УКС, УПР, УРАН, ФКБ, ФС, ХГЕ, ХНУРЭ, ЦВМ, ЦППроцессоры, ЦРИ, ЦС, ЦСПИ, ЦУ, ЭВА, ЭВМ, ЭКГ, ЭЛТ, ЭМА, ЭМИ, ЭМО, ЭМС, ЭХЛ, ЭЦВМ, ЮЕРО, ЯОА, хDSL
Пример 4.2 – Пример части выборки дескрипторов аббревиатур, полученой из реальных данных
Высокочастотные дескрипторы приводятся в нижний регистр для уменьшения размеров выборки дескрипторов и увеличения точности классификации, убирая таким образом смысловые коллизии по наличию двух абсолютно идентичных слов в качестве двух разных лингвистических дескрипторов с собственной частотой встречаемости.
елементів, еліптичних, емкой, емкости, емкостью, енергетичних, енергетичному, ео, ескд, естественная, естественно, естественного, ефект, ефективне, ефективний, ефективних, ефективно, ефективності, желудочно, жестком, животноводства, животных, жидких, жидкой, жидкости, жизнедеятельности, жизненного, жизнеспособности, жизни, жилищным, жилого, жилой, жкт, жодна, зd, за, забезпечення, забезпеченням, забезпеченні, забезпечу, забезпечують, заболеваний, завад, завадового, завадової
Пример 4.3 – Пример части выборки высокочастотных дескрипторов полученой из реальных данных
4.3 Описание реализации программы
Для разработки программной реализации метода Naive Bayes и алгоритмов выделения наиболее значимых атрибутов была использована объектно-ориентированный язык программирования Java, и среды программной разработки (IDE), такие как Eclipce и NetBeans.
Рисунок 4.12 – Структура проекта реализаци иметода Naive Bayes
Проект состоит из двух основных частей: первая содержит исходный код модуля, интерфейсы взаимодействия с данными и реализацию классификатора, вторая содержит визуальную оболочку для используемого модуля.
Таким образом, первая часть проекта содержит в себе весь функционал, а вторая часть содержит принцип пересылки данных между функциональными модулями и пользователем.
Каждый файл с расширением .java, реализует различные функции программы: обучениена различных видах выборки, классификация текстовых документов, анализ производительности реализованных методов на тестовых выборках.
Визуальный интерфейс реализован с помощью технологии jxml для качественого отображения информации и простоты использования на различных платформах включая OS-X и Android. Таким образом используется преимущество выбранной технологии.
В ходе выполнения анализа былареализована полиномиальная модель метода Naive Bayes, которая была описана выше. Главное отличие полиномиальной модели от модели Бернулли состоит в том, что вычисление условной вероятности принадлежности терма к какому-либо классу производится по разным формулам: в полиномиальной модели учитывается количество вхождений терма в документ, и не учитывается отсутствующие термы, а в модели Бернулли наоборот – влияеттолько факт наличия терма в документе или же его отсутствие. Реализация вычисления априорной вероятности для полиномиального алгоритма NaiveBayes показа на примере 4.4.
double[] categories = newdouble[library.folderList.size()];
for (inti = 0; i<categories.length; i++) {
categories[i] = Math.log( (double)library.folderList.get(i).wordTreeMap.size() / library.wordTreeMap.size());
}
Пример 4.4– Вычисление априорной вероятности для каждого класса
Важными функциями, необходимыми для реализации метода Naive Bayes, есть:
выделение дескрипторов виде аббревиатур;
выделение высокочастотных дескрипторов;
очистка текста от шумовых слов и символов.
Определение двух видов дескрипторов ввиде аббревиатур, представленных кирилическим и латинским алфавитом, показано в примере 4.5.
regex = "[a-zа-яії]*[A-ZА-ЯІЇ]{1,}[a-zа-яії]*[A-ZА-ЯІЇ]{1,}[a-zа-яії]*";
Пример 4.5– Regexpвыражение для выделенияаббревиатур
Для более полного исследования метода NaiveBayes были программнореализованы дваметода тестирования выборки. Данные функции вызываются после обучения классификатора на обучающей выборке, когдаклассификатор будет тестироваться на данных. Это позволяет сократить вычислительноевремя благодаря сокращению числа слов,учитываемых в каждом классе.
Также данные методы уменьшают возможность переобучения и не позволяют выбросам и шумам значительно влиять на результат классификации.
Также происходит подбор наилучшего коэффициента размытия по Лапласу, основываясь на данных полученных в результате тестирования выборки в процентномсоотношении ошибочных срабатываний.
За десять итераций подбора коэффициентов Лапласа выделяется наиболее эффективное значение показателя размытия по Лапласу для текущей выборки, полученное в результате работы программы.
4.4 Статистические данные и эмпирические выводы
accuracywords: 8 / 1077 = 99.25719591457754
Пример 4.6 – Результат подбора коефициента Лапласа программой на выборке научных текстов
Рисунок 4.13 – График роста объема собираемых ключевых атрибутов и повышения точности классификации данных
Объем хранимой выборки дескрипторов библиотеки для 21 Гб информации представлен на рисунке 4.14.
Рисунок 4.14 – Объем выборки ключевых слов
4.4.1 Зависимость точности классификации от значений параметра переменной размытия по Лапласу
Метод Naive Bayes хорошо показывает себя в классификации текстовых документов, достигая практически 100% результата при большом объеме, но при этом существует возможность его улучшения на тестовых примерах меньшего объема. Использование методов выбо разначимых атрибутов позволяет сократить множество исследуемых термов и выделить из них только наиболее важные, тем самым повысив точность классификации.
Рисунок 4.15 – График на основе 1000 итераций подбора коэффициента сглаживания по Лапласу
Прослеживается влияние коэффициента размытия по Лапласу на точность системы. Данный коэффициент имеет особенноважное значение для качества обработки и классификации сгенерированного примера.
На небольшой обучающей выборке с малым объемом классифицируемых данных проценто шибочных классификаций близился к 14%, и при попытке увеличить значения данного коэффициента результат даже усугублял положение, однако после 30-й итерации получается выстроить удачную тенденцию из менения коэффициента размытия по Лапласу.
Наилучшее значение коэффициента Лапласа, способствующего уменьшению количества ошибок для данной выборки находится на отметке близкой к 550. Далее позитивная тенденция практически не наблюдается. При этих значениях точность системы на примерах с малым количеством текста составляет 97%.
4.4.2 Зависимость точности классификации от объема тестового текста
Целью данного подраздела является выявление оптимального количества строк в тестовом сообщении, достаточных для получения хорошей точности результатов в процессе классификации. При малом количестве строк высока вероятность, что тестовый пример представляет собой некую общеизвестную конструкцию, характерную для нескольких классов.
Получение данных о библиотеке возможно как из структурированных файлов данных таблиц, так и из файловой структуры операционной системы. Основным препятствием при адаптивной обработке данных является обработка однофайловых структурных библиотек с выбором уникального разделителя, который не встречается в тексте библиотеки.
Проведенный анализ показывает, что абсолютно достаточно 5 слов в тексте для хорошего результата при классификации на два пользовательских класса – точность классификации в этом случае составляет 89%. С увеличение мобъема тестовых данных растет и точность классификации, которая достигает своего максимума на отметке около 100 слов втексте.
Также стоит обратить внимание на то, что даже при чрезвычайно малом количестве слов втексте (1-2 слова) точность классификации остается удовлетворительной (около70%), не смотря на содержание в них нехарактерных для языкаконструкций и выражений.
Из практического анализа выбора наиболее релевантного значения коэффициента размытия по Лапласу можно сделать вывод, что в рядеслу чаев этот метод действительно улучшает точность классификации, но только придостаточном объеме выборки. На приведенном выше примере точность класси фикации улучшилась при значениях атрибута количества слов выборки от 5 до 30 слов.
Для каждого классификатора со своей обучающей выборкой выбирается свой коэффициент Лапласа для повышения общей точности. И их значение должно быть установлено экспериментально в ходе анализа различных значений и различных выборок. Для области классификации анотаций диссертаций наилучшим количеством значимых атрибутов является совокупность термов из 100 из каждого класса текстов.
Рисунок 4.16 – График зависимости точности классификации от количества слов в тексте
Таким образом в дипломной работе был реализован метод классификации текстовых документов на основе баесовского классификатора текстов с дополнительным повышением точности с помощью размытия по Лапласу и выделению для классификации низкочастотных декскрипторов – аббревиатур.
