Разработка базы данных на MySQL MySQL является относительно небольшой и быстрой реляционной СУБД основанной на традициях Hughes Technologies Mini SQL (mSQL).
Приемущества использования MySQL:
Многопоточность. Поддержка нескольких одновременных запросов.
Оптимизация связей с присоединением многих данных за один проход.
Записи фиксированной и переменной длины.
ODBC драйвер в комплекте с исходником
Гибкая система привилегий и паролей. До 16 ключей в таблице. Каждый ключ может иметь до 15 полей.
Поддержка ключевых полей и специальных полей в операторе CREATE.
Все операции работы со строками не обращают внимания на регистр символов в обрабатываемых строках.
Псевдонимы применимы как к таблицам, так и к отдельным колонкам в таблице.
Легкость управления таблицей, включая добавление и удаление ключей и полей
Наиболее простой способ работы с MySQL сводится к использованию программы MySQL. Это клиентская часть СУБД MySQL. Можно выполнять команды SQL непосредственно из командной строки системы unix или из интерактивного режима MySQL. Также доступен 32-битный ODBC драйвер для MySQL. Он позволяет запрашивать и получать данные из других источников с поддержкой ODBC.
Визуализация с помощью CallGraph CallGraph - это проект исследования алгоритмов для оптимальной расстановки вершин любых связных графов в трехмерном пространстве, а также создания библиотек и разработки приложений для отображения графов в трехмерном пространстве. Целью проекта является создать методы визуализации больших связных графов в трехмерном Граф- это множество вершин и связей между вершинами, поэтому требуется хороший алгоритм для визуализации оптимального расположения вершин.
Из курса физики известно, что каждая система в природе пытается достичь минимума потенциальной энергии (глобальная характеристика, определяющая состояние системы) Рассмотрим потенциальную энергию связного графа и создадим оптимальное расположение его вершин, при этом минимизировав общую энергию системы. Для того чтобы определить потенциальную энергию системы, надо ввести некое взаимодействие частей системы. Пусть в графе на месте вершин окажутся электростатические заряды, а связи в графе заменим их взаимодействием. Тогда потенциальную энергию системы можно определить как сумму потенциальных энергий ее частей (сумма энергий всех пар вершин). Далее нужно будет минимизировать потенциальную энергию каждой пары вершин.
Для работы с программой CallGraph был разработан формат файла, в котором хранится описание графа для визуализации.
Формат файла:
{{[i], (x, y, z), q, "название", r}, {[j], m, k}, ...} ...
i – номер вершины, начиная с 0
x, y, z – координаты i вершины
q – заряд i вершины
name - имя i вершины (не требуется, по умолчанию "")
r - радиус i вершины (не требуется, по умолчанию 0.5)
j – номер вершины для связи i -> j
m – коэффициент взаимодействия i -> j
k – коэффициент электростатического взаимодействия i -> j (не требуется, по умолчанию 1)
Примеры визуализации графов:
Рис. 7 Первоначальная случайная расстановка
Рис.8 Расположение после обработки
Описание реализации сетевого агента Для того, чтобы продемонстрировать применение созданной модели агента, был написан сетевой агент, работающий в социальной сети и осуществляющий сбор научной информации для социологического исследования в рамках социальной сети LiveJournal.
Для разработки обучаемого агента, работающего с полноценным информационным пространством, нужно точно представлять себе те функции, которые должен реализовать данный агент. Другими словами, необходима четкая постановка задачи. Так как цель нашего агента – лишь демонстрация созданной теории, то речь будет вестись именно с этой позиции, то есть мы создадим лишь макет, иллюстрирующий возможности предложенной методики.
Выбор социальной сети для исследований Для проведения исследования лучше выбрать одно из социальных сетей. Одной из наиболее популярных и в тоже время открытых сетей является LiveJournal. Выбор этой сети обусловлен тем, что данные пользователей в ней открыты, таким образом можно избежать проблем, связанных с сохранением конфиденциальности личных данных участников сети. С чисто технической точки зрения намного проще не проходить аутентификацию, т.к. это усложняет работу программы. Собственно нашей задачей является написание агента, который не может быть использован во вредоносных целях.
Проектирование информационного пространства Для работы агента необходимо построить базу данных, в которой будут сохраняться результаты исследования. В рамках модельной реализации будем исследовать взаимодействие участников сети между собой и взаимодействие в группах. Для этого будем хранить в базе данных объекты двух видов:
ОБЪЕКТ типа участники, который в нашем случае будет содержать:
Уникальный идентификатор
Имя участника
Местоположение
Интересы
Идентификаторы друзей
Количество друзей
Идентификаторы групп
Количество групп
ОБЪЕКТ типа группы, с полями:
Уникальный идентификатор
Имя группы
Дата последнего сообщения
Для формирования связи многие ко многим используем таблицу участники-группы, как было описано выше. Важным в такой ситуации является определить в результате, какой итерации поиска были получены данные. Это даст возможно в последующем сравнивать данные полученные в разное время. Поэтому необходим идентификатор поиска. В рамках моей реализации идентификатор будет определяться как:
‘Дата поиска’ + ‘индекс последней записи+1’
Поскольку индексация в таблице предполагается сквозная, такой идентификатор будет уникальным.
Реализация функций агента На стороне клиента у пользователя есть возможность задать параметры поиска. Интересным в данном случае является передача параметров от клиента агенту. Это происходит по средствам использования метода POST, который позволяет передать данные из формы на сервер.
form.htm:
run.asp:
var1 = Request("var1")
var2 = Request("var2")
…
После того как параметры будут переданы. Агент начинает поиск информации. Поскольку проводится социологическое исследование и у нас нет предпочтений в выборе профиля, с которого начинается исследование, то будем выбирать первый профиль случайным образом. Далее с помощью компоненты ActiveX ickhttp получим страничку html кода, который собственно и содержит профиль пользователя. Далее за счет регулярных выражений можно получить информацию, которая будет удовлетворять фильтрам, установленным пользователем. При таком подходе возникает проблема интерпретации страницы профиля участника, т.к. в разных социальных сетях формат хранения профиля различен. В модельной реализации используется только одна социальная сеть, поэтому в данном случае проблема решена. После того, как из кода страницы получены необходимые данные, происходит их сохранение в базу данных. Затем поиск ведется по друзьям участника, профиль которого был выбран случайно. Таким образом, получается некий ориентированный граф, где вершины – это участники, а ребра – это их связи. Из-за особенностей построения профиля в Живом Журнале есть возможность определить взаимных друзей. Кроме этого можно определить принадлежность участника сети к разным группам. В результате поиска пользователь, либо просмотрит выбранное им количество профилей, либо поиск может завершиться аварийно. После этого, если необходимо визуализировать полученные данные, то можно будет использовать программу CallGraph. Т.к. она работает с файлом определенной структуры, то была написана соответствующая процедура, формирующая такой файл.
Модельное исследование Для модельного исследования были выбраны следующие параметры:
Работа с социальной сетью LiveJournal
Пользовательские параметры: местоположение, интересы, друзья, группы
Визуализация полученного результата
Количество обработанных профилей=40.
Полученный результат показывает сложную структуру сети (рис.7). В рамках модельного исследования рассматривалась, только одна группа. По полученным результатам сложно судить о сильной связности в данной группе. Как видно в ней преобладают сильные связи. Более детальное исследование группы можно провести только с учетом не только фактора связи участников, но и других параметров.
рис. 9
Подведение итогов В начале исследования нами была поставлена задача: облегчить работу пользователя с большими объемами данных при помощи агента – программы, анализирующей информацию в хранилище данных. Стремление сделать программу анализа информации более сообразительной и полезной пользователю заставило искать пути обучения и самообучения агента. Результатом явилась модель сетевого агента, построенного на основе применения фильтров, задаваемых пользователем, которые в свою очередь преобразовывались в агентские функции. Модель получила название «сетевой агент», т.к. выполняются не все критерии, необходимые для того, чтобы назвать агента интеллектуальным в смысле, вкладываемом в это понятие в рамках терминологии искусственного интеллекта.
Для демонстрации модели сетевого агента был реализован информационный агент, работающий в информационном пространстве профилей участников социальной сети, задачей которого было определить структуру организации групп пользователей. Работа с ним продемонстрировала процесс формирования функций агента путем применения пользовательских фильтров.
Практическое применение такой модели агента показало также важность «правильного» проектирования исходных данных – информационного пространства и пространства функций. То есть такого проектирования, при котором объекты информационного пространства использовались бы достаточно эффективно.
Следует отметить, что хотя созданный сетевой агент применяется для социологического исследования социальной сети. Модель сетевого агента может быть использована и в других областях знаний. Так, например, можно разработать сетевого агента, который будет работать в информационном пространстве корпоративной базы данных, хранящей информацию о клиентах банка. Известно, что с точки зрения банка некоторые клиенты являются неблагонадежными, в этом случае они становятся нежелательными клиентами, с финансовой точки зрения. Мониторингом таких клиентов занимается отдельное подразделение. В рамках этой задачи в качестве пользовательских фильтров, можно использовать финансовые критерии проводимых клиентом операций, на основе которых можно строить функции для работы агента. Для такого типа задач схема работы агента будет та же, специфической в данном случае должна стать подсистема визуализации, например, система написания отчетов, т.к. необходимо учитывать специфику работы пользователей.
ЛИТЕРАТУРА Michael David Travers, Programming with Agents: New metaphors for thinking about computation. - © Massachusetts Institute of Technology, 1996
Toru Ishida, Q: A Scenario Description Language for Interactive Agents - Department of Social Informatics, Kyoto University JST CREST Digital City Project IEEE Computer October 2002 (to appear)
Backstrom, L., Huttenlocher, D., Kleinberg, J., and Lan, X. (2006.) Group formation in large social networks: membership, growth, and evolution. In Proceedings of the 12th ACM SIGKDD International Conference on Knowledge Discovery and Data Mining. ACM Press: Philadelphia, PA, USA.
Butler, B. (2001.) Membership size, communication activity, and sustainability: a resource-based model of online social structures. Information Systems Research, 12 (4), p. 26.
Cai, D., Shao, Z., He, X., Yan, X., and Han, J. (2005) Mining hidden community in heterogeneous social networks. In Proceedings of the 3rd International Workshop on Link Discovery. ACM Press: Chicago, Illinois. Freeman, L. C. (1979.) Centrality in social networks conceptual clarification. Social Networks, 1 pp. 215-239.
Garton, L., C. Haythornthwaite and B. Wellman. (1997.) Studying online social networks. Journal of Computer Mediated Communication, 3 (1).
Granovetter, M. S. (1973) The strength of weak ties. American Journal of Psychology, 78 (6), pp. 1360-1380. Johnson, B., Lorenz, E. and Lundvall, B. (2002.) Why all this fuss about codified and tacit knowledge? Industrial and Corporate Change, 11 (2), pp. 245-262.
Kumar, R., J. Novak and A. Tomkins. (2006.) Structure and evolution of online social networks. Proceedings of the 12th ACM SIGKDD International Conference on Knowledge Discovery and Data Mining, pp. 611-617. ACM Press: Philadelphia, PA, USA.
N. Kasabov, Introduction: Hybrid intelligent adaptive systems. International Journal of Intelligent Systems, Vol.6, (1998) 453—454.
Haag, Stephen. «Management Information Systems for the Information Age», 2006. Pages 224—228
|