Проблема:
Мне дается длинный список различных наименований позиций для работы в ИТ-индустрии (поддержка или развитие); Мне нужно автоматически классифицировать их на основе общего типа работы, которую они представляют. Например, аналитик ИТ-поддержки, аналитик службы поддержки... и т.д. Все они могут принадлежать группе IT-поддержки.
Текущий подход:
В настоящее время я вручную создаю шаблоны регулярных выражений для этого, которые меняются, когда я сталкиваюсь с новыми заголовками, которые должны быть включены в группу. Например, я изначально использовал шаблон:
"(HELP | SERVICE) DESK"
чтобы соответствовать заданиям типа поддержки IT, и это в конечном итоге стало:
"(ПОМОЩЬ | ПОДДЕРЖКА | СЕРВИС) (DESK | ANALYST)"
что было еще более инклюзивным.
Вопрос:
Я чувствую, что должен быть достаточно интуитивно понятный способ автоматического создания этих шаблонов регулярных выражений с помощью какого-то алгоритма, но я не знаю, как это может работать... Я читал о НЛП вкратце в прошлом, но его чрезвычайно чуждый мне... Любые предложения о том, как я мог бы реализовать такой алгоритм с/без НЛП?
EDIT:
Я рассматриваю использование дерева решений, но у него есть некоторые ограничения, которые мешают ему работать (в этой ситуации) "из коробки"; например, если я построил следующее дерево:
(Сервис) → (Стол) → (Поддержка) ИЛИ → (Аналитик)... где Поддержка и аналитик являются детьми Desk
Скажем, я получаю строку "Level-1 Service Desk Analyst"... Это должно быть категоризировано с использованием дерева решений выше, но оно не будет соответствующим образом соответствовать дереву (так как нет корня node с именем "Уровень" ) или "Уровень-1" ).
Я считаю, что сейчас иду в правильном направлении, но мне нужна дополнительная логика. Например, если мне заданы следующие гипотетические строки:
- Аналитик службы поддержки ИТ
- Аналитик службы поддержки уровня 1
- Поддержка службы поддержки компьютеров
Я бы хотел, чтобы мой алгоритм создал что-то вроде ниже:
(Служба или Справка) → (Стол) → (Поддержка аналитика ИЛИ)... где Служба и Справка являются корневыми узлами, и оба аналитика и поддержки являются дочерними элементами Desk
В принципе, мне нужно следующее: Я хотел бы, чтобы этот алгоритм соответствия мог уменьшить строки, которые он представляет, до минимального количества подстрок, которые эффективно соответствуют всем строкам в данной категории ( предпочтительно с использованием дерева решений).
Если я не буду достаточно ясен, просто дайте мне знать!