naturallanguage TODO.txt
2008-02-13 13:31Краткая формулировка плана работ по моему нейросетевому продукту, оставшемуся от прошлого.
Что надо сделать и что где есть
Об оформлении док и прочего
Во-1-ых, как ясно по виду этого текста, доки лучше писать в виде REST. Он непосредственно из сабвершен забирается в вики, поэтому можно ставить некие вики-конструкции, о которых я расскажу еще позже. С и C++ файлы, видимо, будут пропущены через автоматический стилизатор и регулярно пропускаться через него. Кажется назывался он astyle когда-то, может щаз то новое написали (astyle немного лажался с плюсами).
Документация
Документацию обещал посмотреть Егор, что бы помочь выудить из нее рациональное зерно и подготовить к публикации. Скорее всего документация уедет в отдельный пакет.
Первичная работа по C/C++ пакетам
Если я правильно помню, из всего наработанного, первое и главное что имеет самостоятельную ценность - это пакет categorizator. Надо попытаться его пересобрать. Сам по себе он не существует, для начало нужно собрать векторную библиотеку и библиотеку конфигуратора. Вот наверно так и начнем:
- libcfg
- библиотека поддержки конфигурации, для начала мы ее просто пересобираем, потом смотрим, как от нее отказаться, используя вместо нее питоновскую программу;
- libvector
- Это моя векторная библиотека. Я не уверен что она хорошо сделана, возможно ей нужен редизайн и весьма серьезный. Ну и опять-таки часть кода из нее (особенно типа ввод-вывод) в будущих версиях должно быть отчуждено и уйти либо во friend-классы (если я правильно помню что это такое) либо в питон. Скорее всего - и туда и туда.
- categorizator
- Это, с учетом вышесказанного, сравнительно простой алгоритм, там всего ничего строчек.
Все перечисленное выделяется в отдельные проекты и собирается вначале "как есть", т.е. в виде всеми нами любимого C++, потом к нему дописывается отдельная обертка для вызова из питона.
Собственно план
- Пересобрать libcfg под GCC 4.1 (сделано)
- Пересобрать libvector под GCC 4.1 (сделано)
- Пересобрать categorizator под GCC 4.1 member/tasman
- Решить как все это отмапить на python member/orlov
- Замена libcfg на некий питоновский модуль, вероятно со сменой логики (надо обсудить как);
- Предположительно биндинг на python libvector;
- Предположительно биндинг на python categorizator;
- Утилита на питоне выполняющая, например, категоризацию текстов;
В этом месте будет не венец творения, но можно будет сказать "хорошо потрудились". Собственно для категоризатора есть альтернативный алгоритм - конвенциональный - который я постараюсь зарелизить при наличии библиотеки libvector;
По дальнейшим планам, видимо, надо будет попробовать оживить "второй слой" и сделать какую-то замену activedictionary (вариантов много и они общеизвестны) и собрать классификатор текстов. Если это заработает - есть несколько полукоммерческих задач на которые мы можем сразу же нацелится.
Другие пакеты
С другими пакетами несколько сложнее. Большая часть из них работает и может реально применяться, но полезность, к сожалению, требует дополнительной оценки. Те данные, которые были получены при дипломном проектировании вполне удовлетворительны, но требуют дополнительной проверки. Далее по пакетам:
- activedictionary
- Активный словарь - это, насколько я понимаю, громкое рекламное название. Впрочем сама теория на конфе произвела фурор. Статус кода требует изучение, чем я займусь.
- correlator
- Построение корреляционной матрицы контекста слов - фактически это немножко неудачный эксперимент. Формально результаты были не хуже чем у оригинала, но на практике я не смог ими воспользоваться.
- libneural
- Нейросетевая библиотека -- не понимаю сейчас что это :).
- libtree
- Деревья и очереди, во-1-ых не используется, во-2-ых в STL такого добра навалом;
- preprocessors
- Препроцессоры для обработки текста: не понимаю сейчас что это.
summator
Паралельный сумматор (использует pvm, работает, но морально устарел), кажется был прототипом коррелятора.som_pack-3.1.patched
SOM_PAK патченный и улучшенный. Очень полезный диагностический инструмент. Разработан Кохоненом, надо посмотреть нет ли новой версии, если есть - пересобрать, подергать. В любом случае, надо написать какую-то статейку на сайт о том, какая это полезная штука что бы начать и продолжить.
Заключение
Ну вот, краткий обзор и план работы. Я думаю, ее результаты не будут чем то сногсшибательным, это все скорее что бы втянутся, вспомнить что было и не начинать с нуля.



