Pattern Storage

Введение

Здравствуйте! Меня зовут Александр и сейчас я изложу идею проекта, который я назвал PatternStorage.

Мы часто сталкиваемся с каким либо ситуациями в жизни или работе. В них мы можем принимать эффективные или неэффективные решения. Сразу условимся, что эффективность принятого решения тем больше, чем выше вероятность достижения целей, которые перед нами стоят. Цели могут быть краткосрочными или долгосрочными. Они также могут быть более частными или более общими, но о целях мы подробнее поговорим позже.

Одни и те же (либо похожие по сути) ситуации имеют тенденцию повторяться. Таким образом вырабатываются наиболее эффективные варианты решения (другими словами – шаблоны поведения), подкрепленные опытом.

Приведем небольшой пример из повседневной жизни. Ситуация: человек долго работает, уже устал и его работоспособность значительно снижена, при этом задача еще не завершена. Цель – выполнить задачу как можно более качественно. Решение – сделать перерыв, отдохнуть, послушать любимую музыку, прогуляться и через какой-то промежуток времени продолжить работу над задачей.

Пример достаточно субъективный. Однако он наглядно демонстрирует что подразумевается под “ситуацией”, “целью” и “решением”. Все это сочетание я далее буду называть “паттерном”. На деле, терминологию можно подбирать любую, суть от этого не меняется.

Итак, можно предположить, что человек тем эффективнее, чем больше паттернов (в частности, с эффективными решениями) есть у него в опыте. Однако здесь есть следующеие моменты:
1. Человеческая память неидеальна и какие-то паттерны могут со временем просто напросто забываться.
2. Паттерны не всегда легко передать другому человеку (в бизнес контексте – сотруднику).
3. Не всегда просто идентифицировать текущую ситуацию с существующим в опыте паттерном, в частности как такую, для которой уже имеется паттерн с эффективным решением.

Что же делать? Как оптимизировать процесс сохранения, идентификации и передачи паттернов?

Предлагаемое решение

Давайте представим, что мы имеем информационную систему, в которую мы можем:
1. Сохранять наши паттерны, каждый из которых состоит из описания ситуации, целей и решения.
2. Задавать описание текущей ситуации, чтобы система идентифицировала нужные паттерны (описания ситуации в которых наиболее близки текущей ситуации) и соответственно выдавала предложение оптимального решения в данной ситуации. Также, если забежать наперед, в данной системе может реализоваться ранжирование, логика которого будет основываться на близости описания текущей ситуации к паттерну, на обратной связи, полученной при применении паттерна (например, в одной и той же ситуации могут быть сразу несколько хороших решений, но одно в большинстве случаев работает лучше) и так далее.

Кейс из бизнеса

Приведу реальный кейс использования системы в бизнесе. Например:
Ситуация: есть полезный тиражируемый ресурс, который вряд ли будет хорошо продаваться за деньги (например, электронная книга, видео и т.п.).
Цель: получить лиды (другими словами – контакты покупателей).
Решение: превратить тиражируемый ресурс в лид магнит (бесплатный бонус за оставленный пользователем email адрес для получения полезной электронной книги или видео на почту).

Возможно, кейс не самый удачный, однако как пример – вполне сойдет.

Сложности реализации

Безусловно, при реализации описанной системы мы столкнемся с техническими сложностями. Одной из основных технических сложностей является сопоставление текущей ситуации с существующими паттернами. Здесь хочу привлечь на помощь специалистов по так называемому Machine Learning, Natural Language Processing и т.п. В данный вопрос я немного углублялся, в частности, можно использовать технологию графовых баз данных (наподобие Neo4j). Также, могут пригодиться ассоциативные словари и словари синонимов, онтологии, алгоритмы ранжирования. Однако, технический аспект опять же оставим на потом.

“Велосипед”?

Также я понимаю, что подобные системы уже могут существовать. Возможно, это что то вроде экспертных систем. Буду благодарен, если подскажите примеры существующих реализаций.

Давайте обсуждать, критиковать, объединяться!

Буду рад, если посоветуете, как лучше организовать действия по исследованию предметной области и развитию проекта. Я пока планирую найти группу заинтересованных людей и с вложением совместных ресурсов (по большей части временных) продвигаться вперед.

Если кому либо интересно учавстсовать в разработке, изысканиях, просто обсудить или покритиковать (можно даже потроллить))) – буду очень рад. Задавайте вопросы под постом, комментируйте, добавляйтесь в группу Facebook или Google группу.