Поиск по блогу

среда, 8 декабря 2010 г.

Исследовательский инструментарий

Это первый из серии постов о программных средствах или сервисах, используемых мною для различных целей. В этом сообщении привожу обзор программных инструментов, которые упрощают (надеюсь!) повседневную исследовательскую работу.
  1. Программирование
  2. Обработка данных
  3. Анализ данных
  4. Работа с онтологическими моделями
  5. Создание схем данных
  6. Создание научных статей и презентаций
  7. Поиск информации
  8. Структурирование информации

Программирование

После нескольких лет метаний между ведущими средами для Java программирования - IntelliJ IDEA и Eclipse - все-таки остановился на второй. JetBrains тогда еще не выпустил community edition своей среды - это было одним из основных мотивов выбора. Да и с ростом производительности железа, имеющегося под рукой, прежняя медлительность Eclipse как-то перестала замечаться вовсе. А функционально Eclipse представляет собой, как известно, чрезвычайно мощную интегрированную среду разработки. Среди массы полезных плагинов выделю, пожалуй, следующие: Google Plugin (с поддержкой GWT, GAE), интеграция с Maven (импорт проектов, поиск зависимостей) и Subclipse (SVN).



Обработка данных


Для сопутствующих задач, связанных с чтением/трансформацией/записью (extract/transform/load - ETL) данных, использую Pentaho Data Integration CE. Этот кроссплатформенный инструмент содержит удобные средства для редактирования процесса трансформации с помощью графического интерфейса, а также позволяет читать/писать данные, работая с различными форматами (CSV, XML, Excel, СУБД). На рисунке - пример простой трансформации:


Кроме того, есть возможность запуска трансформаций из командной строки, что также удобно для работы с "тяжелыми" преобразованиями.


Анализ данных

Для анализа, связанного с обработкой естественного языка, пожалуй, ведущей платформой является архитектура GATE, основная мощь которой представлена в многочисленных плагинах: чтение данных разных форматов, токенайзеры, стеммеры, POS тэггеры, синтаксические анализаторы, работа с тезаурусом WordNet, онтологиями и много другого. Кроме того, удобный графический интерфейс, унифицированный формат аннотаций и система управления корпусами документов. Конечно, у всей функциональности имеется серьезное смещение в сторону английского языка, но, в принципе, сама по себе архитектура продумана очень гибко.
Для анализа данных средствами машинного обучения использую RapidMiner CE. Это мощное решение с реализацией широкого ряда различных моделей для обучения, тестирования, валидации, визуализации. Также имеется удобный графический интерфейс. Пример дерева процесса:


Некоторые алгоритмы из самых популярных в академическом мире библиотек, таких как Weka и R, также представлены в RapidMiner. Впрочем, указанные фреймворки заслуживают пристального внимания и сами по себе.
Еще одна мощная библиотека - LingPipe. В части компьютерной лингвистики функционал данной библиотеки пересекается с возможностями GATE (неслучайно существует LingPipe плагин для GATE). Но помимо этого, есть реализация и других интересных вещей: вычисление SVD (например, для латентно-семантического анализа), LDA (для задач кластеризации) и др.  Кроме того, поддерживается интересный блог и имеется набор полезных туториалов.


Работа с онтологическими моделями

Для этой цели лучше всего подходит редактор Protege. Среди его возможностей, поддерживаемых различными плагинами: просмотр/редактирование онтологий основных форматов (OWL, RDFS), загрузка механизмов логического вывода (DL reasoner), визуализация, редактирование правил логического вывода. Пример отображения иерархии классов:




Создание схем данных

Для визуализации графовых структур очень подходит язык DOT. Кстати, его используют в основе некоторые из уже приведенных программ. Например, Protege делает это через библиотеку Graphviz.  Ниже пример синтаксиса для простого ориентированного графа:
digraph relations {
Доказательство -> Теорема [label="доказывает"];
Теорема ->  Теория [label="принадлежит"];
Пример -> Теорема [label="относится"];
}
При наличии утилиты dot легко скомпилировать этот код в следующую картинку:


Естественно, DOT позволяет поиграться с цветами, формами вершин и ребер, вообщем, всячески настроить выводимый граф.
Для создания UML диаграмм очень подходит Dia, юниксовый аналог MS Visio (впрочем, согласно их сайту, имеется и версия под Windows). Здесь все просто: графический интерфейс позволяет редактировать атрибуты и операции, также нет проблем с экспортом диаграмм в различные форматы.


Создание научных статей и презентаций

Ни для кого не секрет, что LaTeX является де-факто стандартом языка для написания научных статей во всем мире, особенно это касается публикаций по естественным наукам. Более того, использование LaTeX зачастую диктуется самим процессом принятия материалов для публикации на уровне программных комитетов конференций или журналов. Можно привести пример стилевых файлов Springer LNCS или ACM. Традиционные преимущества LaTeX следующие: переносимость, расширяемость, поддержка математической нотации, механизм ссылок и цитат.
Что касается цитат, то их поиск - один из самых частых сценариев. Дело в том, что при создании LaTeX документов принято выделять цитаты в отдельные BibTeX файлы, где каждая цитата согласно своему типу (статья, книга, тезис, онлайн ресурс) представлена набором полей (ключ, автор, название, издатель, год публикации и т.д.).  Собственно, не так давно узнал о функции импорта цитат в Google Scholar (можно настроить в Scholar Preferences).  До этого искал по таким ресурсам, как DBLPCiteULike и BibSonomy.
Безусловно, стоит отметить несколько пакетов LaTeX, которые особенно полезны при написании статей. Помимо традиционного AMS, выделяются:

  • PGFPlots - создание графиков и диаграмм;
  • algorithmic - форматированный вывод описания алгоритмов на псевдокоде;
  • beamer - создание слайдов презентаций;
  • todonotes - маленький, но полезный пакет для создания пометок.

Для редактирования меня устраивает Kile - TeX/LaTeX редактор для оболочки KDE с возможностями традиционной подсветки синтаксиса, механизмом автодополнения, WYSIWYG редактирования, быстрого просмотра скомпилированного документа и навигации по структуре документа.
В заключение отмечу еще вот это обсуждение по данной тематике. В ходе него перечисляется множество средств, далеко не все из которых удалось апробировать самому. Так весьма многообещающим выглядит использование распределенных систем контроля версий, таких как Git, в процессе колаборативного создания статьи. Это позволило бы работать с версионным репозиторием документов и в оффлайн режиме.


Поиск информации

Для поиска научных статей среди открытых и бесплатных средств особенно выделяется Google Scholar, который индексирует различные научные коллекции, находящиеся не только в открытом, но и ограниченном доступе. Помимо традиционного полнотекстового поиска по содержимому и метаданным документов, Google Scholar содержит неплохие дополнительные сервисы: поиск среди похожих статей или статей, ссылающихся на данную. Вообщем, это надежный, стабильно работающий продукт от мирового лидера в области поиска. Еще один тип ресурсов, который сейчас набирает обороты - это Q&A сайты. В известном смысле, они начинают составлять конкуренцию Wikipedia. Их принцип таков, что любой желающий может задать вопрос по соответствующей тематике и в довольно короткий срок получить адекватный ответ. У этих ресурсов есть продуманный механизм продвижения хороших вопросов и ответов, поощрения "экспертов" (людей, которые дают большое количество качественных ответов). Тенденция последних лет - это развитие тематических сайтов, посвященных, в том числе, научным или техническим областям. В частности, отмечу:
Отдельный пункт - отслеживание актуальной информации в динамично развивающихся исследовательских областях. В этой связи, особый интерес представляют публикации R&D подразделений ведущих IT компаний. Ниже приведен список RSS каналов некоторых из них:


Структурирование информации

Для хранения материалов, документации и связанных заметок используется ПО на базе wiki технологии. Наверно, это самый простой способ хранить и аннотировать такую информацию. Также удобно, когда такой ресурс доступен онлайн на работе и дома.
С недавнего времени осваиваю технологию создания диаграмм связей (mind mapping). Например, бывает удобно фиксировать темы обсуждения или идеи из только что прочитанной статьи в форме таких диаграмм. FreeMind - вполне удобная программа, служащая этим целям. Пример диаграммы для одной из научных статей:


-------------

Пожалуй, все. А какие средства используете вы?

Рекомендую сайт для изобретателей, инноваторов и для тех, кто ищет партнеров и инвесторов для продвижения своих идей и ноу-хау.